/*! fineui */
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 accDiv ( arg1 , arg2 ) { var t1 = 0 , t2 = 0 , r1 , r2 ; try { t1 = arg1 . toString ( ) . split ( "." ) [ 1 ] . length } catch ( e ) { } try { t2 = arg2 . toString ( ) . split ( "." ) [ 1 ] . length } catch ( e ) { } with ( Math ) return r1 = Number ( arg1 . toString ( ) . replace ( "." , "" ) ) , r2 = Number ( arg2 . toString ( ) . replace ( "." , "" ) ) , t2 > t1 ? r1 / r2 * pow ( 10 , t2 - t1 ) : r1 / r2 / pow ( 10 , t1 - t2 ) } function _classCallCheck ( a , b ) { if ( ! ( a instanceof b ) ) throw new TypeError ( "Cannot call a class as a function" ) } ! function ( a , b ) { function c ( a ) { var b = a . length , c = ia . type ( a ) ; return ! ia . isWindow ( a ) && ( ! ( 1 !== a . nodeType || ! b ) || ( "array" === c || "function" !== c && ( 0 === b || "number" == typeof b && b > 0 && b - 1 in a ) ) ) } function d ( a ) { var b = xa [ a ] = { } ; return ia . each ( a . match ( ka ) || [ ] , function ( a , c ) { b [ c ] = ! 0 } ) , b } function e ( a , c , d , e ) { if ( ia . acceptData ( a ) ) { var f , g , h = ia . expando , i = "string" == typeof c , j = a . nodeType , k = j ? ia . cache : a , l = j ? a [ h ] : a [ h ] && h ; if ( l && k [ l ] && ( e || k [ l ] . data ) || ! i || d !== b ) return l || ( j ? a [ h ] = l = _ . pop ( ) || ia . guid ++ : l = h ) , k [ l ] || ( k [ l ] = { } , j || ( k [ l ] . toJSON = ia . noop ) ) , "object" != typeof c && "function" != typeof c || ( e ? k [ l ] = ia . extend ( k [ l ] , c ) : k [ l ] . data = ia . extend ( k [ l ] . data , c ) ) , f = k [ l ] , e || ( f . data || ( f . data = { } ) , f = f . data ) , d !== b && ( f [ ia . camelCase ( c ) ] = d ) , i ? ( g = f [ c ] , null == g && ( g = f [ ia . camelCase ( c ) ] ) ) : g = f , g } } function f ( a , b , c ) { if ( ia . acceptData ( a ) ) { var d , e , f , g = a . nodeType , i = g ? ia . cache : a , j = g ? a [ ia . expando ] : ia . expando ; if ( i [ j ] ) { if ( b && ( f = c ? i [ j ] : i [ j ] . data ) ) { ia . isArray ( b ) ? b = b . concat ( ia . map ( b , ia . camelCase ) ) : b in f ? b = [ b ] : ( b = ia . camelCase ( b ) , b = b in f ? [ b ] : b . split ( " " ) ) ; for ( d = 0 , e = b . length ; d < e ; d ++ ) delete f [ b [ d ] ] ; if ( ! ( c ? h : ia . isEmptyObject ) ( f ) ) return } ( c || ( delete i [ j ] . data , h ( i [ j ] ) ) ) && ( g ? ia . cleanData ( [ a ] , ! 0 ) : ia . support . deleteExpando || i != i . window ? delete i [ j ] : i [ j ] = null ) } } } function g ( a , c , d ) { if ( d === b && 1 === a . nodeType ) { var e = "data-" + c . replace ( za , "-$1" ) . toLowerCase ( ) ; if ( d = a . getAttribute ( e ) , "string" == typeof d ) { try { d = "true" === d || "false" !== d && ( "null" === d ? null : + d + "" === d ? + d : ya . test ( d ) ? ia . parseJSON ( d ) : d ) } catch ( f ) { } ia . data ( a , c , d ) } else d = b } return d } function h ( a ) { var b ; for ( b in a ) if ( ( "data" !== b || ! ia . isEmptyObject ( a [ b ] ) ) && "toJSON" !== b ) return ! 1 ; return ! 0 } function i ( ) { return ! 0 } function j ( ) { return ! 1 } function k ( a , b ) { do a = a [ b ] ; while ( a && 1 !== a . nodeType ) ; return a } function l ( a , b , c ) { if ( b = b || 0 , ia . isFunction ( b ) ) return ia . grep ( a , function ( a , d ) { var e = ! ! b . call ( a , d , a ) ; return e === c } ) ; if ( b . nodeType ) return ia . grep ( a , function ( a ) { return a === b === c } ) ; if ( "string" == typeof b ) { var d = ia . grep ( a , function ( a ) { return 1 === a . nodeType } ) ; if ( Ra . test ( b ) ) return ia . filter ( b , d , ! c ) ; b = ia . filter ( b , d ) } return ia . grep ( a , function ( a ) { return ia . inArray ( a , b ) >= 0 === c } ) } function m ( a ) { var b = Ua . split ( "|" ) , c = a . createDocumentFragment ( ) ; if ( c . createElement ) for ( ; b . length ; ) c . createElement ( b . pop ( ) ) ; return c } function n ( a , b ) { return a . getElementsByTagName ( b ) [ 0 ] || a . appendChild ( a . ownerDocument . createElement ( b ) ) } function o ( a ) { var b = a . getAttributeNode ( "type" ) ; return a . type = ( b && b . specified ) + "/" + a . type , a } function p ( a ) { var b = eb . exec ( a . type ) ; return b ? a . type = b [ 1 ] : a . removeAttribute ( "type" ) , a } function q ( a , b ) { for ( var c , d = 0 ; null != ( c = a [ d ] ) ; d ++ ) ia . _data ( c , "globalEval" , ! b || ia . _data ( b [ d ] , "globalEval" ) ) } function r ( a , b ) { if ( 1 === b . nodeType && ia . hasData ( a ) ) { var c , d , e , f = ia . _data ( a ) , g = ia . _data ( b , f ) , h = f . events ; if ( h ) { delete g . handle , g . events = { } ; for ( c in h ) for ( d = 0 , e = h [ c ] . length ; d < e ; d ++ ) ia . event . add ( b , c , h [ c ] [ d ] ) } g . data && ( g . data = ia . extend ( { } , g . 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 != e : Ha . test ( c ) ? a [ ia . camelCase ( "default-" + c ) ] : ! ! e : a . getAttributeNode ( c ) ; return f && f . value !== ! 1 ? c . toLowerCase ( ) : b } , set : function ( a , b , c ) { return b === ! 1 ? ia . removeAttr ( a , c ) : Ja && Ia || ! Ha . test ( c ) ? a . setAttribute ( ! Ia && ia . propFix [ c ] || c , c ) : a [ ia . camelCase ( "default-" + c ) ] = a [ c ] = ! 0 , c } } , Ja && Ia || ( ia . attrHooks . value = { get : function ( a , c ) { var d = a . getAttributeNode ( c ) ; return ia . nodeName ( a , "input" ) ? a . defaultValue : d && d . specified ? d . value : b } , set : function ( a , b , c ) { return ia . nodeName ( a , "input" ) ? void ( a . defaultValue = b ) : Aa && Aa . set ( a , b , c ) } } ) , Ia || ( Aa = ia . valHooks . button = { get : function ( a , c ) { var d = a . getAttributeNode ( c ) ; return d && ( "id" === c || "name" === c || "coords" === c ? "" !== d . value : d . specified ) ? d . value : b } , set : function ( a , c , d ) { var e = a . getAttributeNode ( d ) ; return e || a . setAttributeNode ( e = a . ownerDocument . createAttribute ( d ) ) , e . value = c += "" , "value" === d || c === a . getAttribute ( d ) ? c : b } } , ia . attrHooks . contenteditable = { get : Aa . get , set : function ( a , b , c ) { Aa . set ( a , "" !== b && b , c ) } } , ia . each ( [ "width" , "height" ] , function ( a , b ) { ia . attrHooks [ b ] = ia . extend ( ia . attrHooks [ b ] , { set : function ( a , c ) { if ( "" === c ) return a . setAttribute ( b , "auto" ) , c } } ) } ) ) , ia . support . hrefNormalized || ( ia . each ( [ "href" , "src" , "width" , "height" ] , function ( a , c ) { ia . attrHooks [ c ] = ia . extend ( ia . attrHooks [ c ] , { get : function ( a ) { var d = a . getAttribute ( c , 2 ) ; return null == d ? b : d } } ) } ) , ia . each ( [ "href" , "src" ] , function ( a , b ) { ia . propHooks [ b ] = { get : function ( a ) { return a . getAttribute ( b , 4 ) } } } ) ) , ia . support . style || ( ia . attrHooks . style = { get : function ( a ) { return a . style . cssText || b } , set : function ( a , b ) { return a . style . cssText = b + "" } } ) , ia . support . optSelected || ( ia . propHooks . selected = ia . extend ( ia . propHooks . selected , { get : function ( a ) { var b = a . parentNode ; return b && ( b . selectedIndex , b . parentNode && b . parentNode . selectedIndex ) , null } } ) ) , ia . support . enctype || ( ia . propFix . enctype = "encoding" ) , ia . support . checkOn || ia . each ( [ "radio" , "checkbox" ] , function ( ) { ia . valHooks [ this ] = { get : function ( a ) { return null === a . getAttribute ( "value" ) ? "on" : a . value } } } ) , ia . each ( [ "radio" , "checkbox" ] , function ( ) { ia . valHooks [ this ] = ia . extend ( ia . valHooks [ this ] , { set : function ( a , b ) { if ( ia . isArray ( b ) ) return a . checked = ia . inArray ( ia ( a ) . val ( ) , b ) >= 0 } } ) } ) ; var Ka = /^(?:input|select|textarea)$/i , La = /^key/ , Ma = /^(?:mouse|contextmenu)|click/ , Na = /^(?:focusinfocus|focusoutblur)$/ , Oa = /^([^.]*)(?:\.(.+)|)$/ ; ia . event = { global : { } , add : function ( a , c , d , e , f ) { var g , h , i , j , k , l , m , n , o , p , q , r = ia . _data ( a ) ; if ( r ) { for ( d . handler && ( j = d , d = j . handler , f = j . selector ) , d . guid || ( d . guid = ia . guid ++ ) , ( h = r . events ) || ( h = r . events = { } ) , ( l = r . handle ) || ( l = r . handle = function ( a ) { return typeof ia === V || a && ia . event . triggered === a . type ? b : ia . event . dispatch . apply ( l . elem , arguments ) } , l . elem = a ) , c = ( c || "" ) . match ( ka ) || [ "" ] , i = c . length ; i -- ; ) g = Oa . exec ( c [ i ] ) || [ ] , o = q = g [ 1 ] , p = ( g [ 2 ] || "" ) . split ( "." ) . sort ( ) , k = ia . event . special [ o ] || { } , o = ( f ? k . delegateType : k . bindType ) || o , k = ia . event . special [ o ] || { } , m = ia . extend ( { type : o , origType : q , data : e , handler : d , guid : d . guid , selector : f , needsContext : f && ia . expr . match . needsContext . test ( f ) , namespace : p . join
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 ) { return ia . dir ( a , "parentNode" , c ) } , next : function ( a ) { return k ( a , "nextSibling" ) } , prev : function ( a ) { return k ( a , "previousSibling" ) } , nextAll : function ( a ) { return ia . dir ( a , "nextSibling" ) } , prevAll : function ( a ) { return ia . dir ( a , "previousSibling" ) } , nextUntil : function ( a , b , c ) { return ia . dir ( a , "nextSibling" , c ) } , prevUntil : function ( a , b , c ) { return ia . dir ( a , "previousSibling" , c ) } , siblings : function ( a ) { return ia . sibling ( ( a . parentNode || { } ) . firstChild , a ) } , children : function ( a ) { return ia . sibling ( a . firstChild ) } , contents : function ( a ) { return ia . nodeName ( a , "iframe" ) ? a . contentDocument || a . contentWindow . document : ia . merge ( [ ] , a . childNodes ) } } , function ( a , b ) { ia . fn [ a ] = function ( c , d ) { var e = ia . map ( this , b , c ) ; return Pa . test ( a ) || ( d = c ) , d && "string" == typeof d && ( e = ia . filter ( d , e ) ) , e = this . length > 1 && ! Ta [ a ] ? ia . unique ( e ) : e , this . length > 1 && Qa . test ( a ) && ( e = e . reverse ( ) ) , this . pushStack ( e ) } } ) , ia . extend ( { filter : function ( a , b , c ) { return c && ( a = ":not(" + a + ")" ) , 1 === b . length ? ia . find . matchesSelector ( b [ 0 ] , a ) ? [ b [ 0 ] ] : [ ] : ia . find . matches ( a , b ) } , dir : function ( a , c , d ) { for ( var e = [ ] , f = a [ c ] ; f && 9 !== f . nodeType && ( d === b || 1 !== f . nodeType || ! ia ( f ) . is ( d ) ) ; ) 1 === f . nodeType && e . push ( f ) , f = f [ c ] ; return e } , sibling : function ( a , b ) { for ( var c = [ ] ; a ; a = a . nextSibling ) 1 === a . nodeType && a !== b && c . push ( a ) ; return c } } ) ; var Ua = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video" , Va = / jQuery\d+="(?:null|\d+)"/g , Wa = new RegExp ( "<(?:" + Ua + ")[\\s/>]" , "i" ) , Xa = /^\s+/ , Ya = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi , Za = /<([\w:]+)/ , $a = /<tbody/i , _a = /<|&#?\w+;/ , ab = /<(?:script|style|link)/i , bb = /^(?:checkbox|radio)$/i , cb = /checked\s*(?:[^=]|=\s*.checked.)/i , db = /^$|\/(?:java|ecma)script/i , eb = /^true\/(.*)/ , fb = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g , gb = { option : [ 1 , "<select multiple='multiple'>" , "</select>" ] , legend : [ 1 , "<fieldset>" , "</fieldset>" ] , area : [ 1 , "<map>" , "</map>" ] , param : [ 1 , "<object>" , "</object>" ] , thead : [ 1 , "<table>" , "</table>" ] , tr : [ 2 , "<table><tbody>" , "</tbody></table>" ] , col : [ 2 , "<table><tbody></tbody><colgroup>" , "</colgroup></table>" ] , td : [ 3 , "<table><tbody><tr>" , "</tr></tbody></table>" ] , _default : ia . support . htmlSerialize ? [ 0 , "" , "" ] : [ 1 , "X<div>" , "</div>" ] } , hb = m ( W ) , ib = hb . appendChild ( W . createElement ( "div" ) ) ; gb . optgroup = gb . option , gb . tbody = gb . tfoot = gb . colgroup = gb . caption = gb . thead , gb . th = gb . td , ia . fn . extend ( { text : function ( a ) { return ia . access ( this , function ( a ) { return a === b ? ia . text ( this ) : this . empty ( ) . append ( ( this [ 0 ] && this [ 0 ] . ownerDocument || W ) . createTextNode ( a ) ) } , null , a , arguments . length ) } , wrapAll : function ( a ) { if ( ia . isFunction ( a ) ) return this . each ( function ( b ) { ia ( this ) . wrapAll ( a . call ( this , b ) ) } ) ; if ( this [ 0 ] ) { var b = ia ( a , this [ 0 ] . ownerDocument ) . eq ( 0 ) . clone ( ! 0 ) ; this [ 0 ] . parentNode && b . insertBefore ( this [ 0 ] ) , b . map ( function ( ) { for ( var a = this ; a . firstChild && 1 === a . firstChild . nodeType ; ) a = a . firstChild ; return a } ) . append ( this ) } return this } , wrapInner : function ( a ) { return ia . isFu
return null == a ? Ee : 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 = a . length , d = 0 ; c -- ; ) a [ c ] === b && ++ d ; return d } function z ( a , b ) { return null == a ? Ee : a [ b ] } function A ( a ) { return yg . test ( a ) } function B ( a ) { for ( var b , c = [ ] ; ! ( b = a . next ( ) ) . done ; ) c . push ( b . value ) ; return c } function C ( a ) { var b = - 1 , c = Array ( a . size ) ; return a . forEach ( function ( a , d ) { c [ ++ b ] = [ d , a ] } ) , c } function D ( a , b ) { return function ( c ) { return a ( b ( c ) ) } } function E ( a , b ) { for ( var c = - 1 , d = a . length , e = 0 , f = [ ] ; ++ c < d ; ) { var g = a [ c ] ; g !== b && g !== Ke || ( a [ c ] = Ke , f [ e ++ ] = c ) } return f } function F ( a , b ) { return "__proto__" == b ? Ee : a [ b ] } function G ( a ) { var b = - 1 , c = Array ( a . size ) ; return a . forEach ( function ( a ) { c [ ++ b ] = a } ) , c } function H ( a , b , c ) { for ( var d = c - 1 , e = a . length ; ++ d < e ; ) if ( a [ d ] === b ) return d ; return - 1 } function I ( a ) { return A ( a ) ? K ( a ) : Rg ( a ) } function J ( a ) { return A ( a ) ? L ( a ) : l ( a ) } function K ( a ) { for ( var b = xg . lastIndex = 0 ; xg . test ( a ) ; ) ++ b ; return b } function L ( a ) { return a . match ( xg ) || [ ] } function M ( a ) { if ( Qd ( a ) && ! oi ( a ) && ! ( a instanceof P ) ) { if ( a instanceof O ) return a ; if ( Yg . call ( a , "__wrapped__" ) ) return Uc ( a ) } return new O ( a ) } function N ( ) { } function O ( a , b ) { this . _ _wrapped _ _ = a , this . _ _actions _ _ = [ ] , this . _ _chain _ _ = ! ! b , this . _ _index _ _ = 0 , this . _ _values _ _ = Ee } function P ( a ) { this . _ _wrapped _ _ = a , this . _ _actions _ _ = [ ] , this . _ _dir _ _ = 1 , this . _ _filtered _ _ = ! 1 , this . _ _iteratees _ _ = [ ] , this . _ _takeCount _ _ = hf , this . _ _views _ _ = [ ] } function Q ( ) { var a = new P ( this . _ _wrapped _ _ ) ; return a . _ _actions _ _ = Nb ( this . _ _actions _ _ ) , a . _ _dir _ _ = this . _ _dir _ _ , a . _ _filtered _ _ = this . _ _filtered _ _ , a . _ _iteratees _ _ = Nb ( this . _ _iteratees _ _ ) , a . _ _takeCount _ _ = this . _ _takeCount _ _ , a . _ _views _ _ = Nb ( this . _ _views _ _ ) , a } function R ( ) { if ( this . _ _filtered _ _ ) { var a = new P ( this ) ; a . _ _dir _ _ = - 1 , a . _ _filtered _ _ = ! 0 } else a = this . clone ( ) , a . _ _dir _ _ *= - 1 ; return a } function S ( ) { var a = this . _ _wrapped _ _ . value ( ) , b = this . _ _dir _ _ , c = oi ( a ) , d = b < 0 , e = c ? a . length : 0 , f = rc ( 0 , e , this . _ _views _ _ ) , g = f . start , h = f . end , i = h - g , j = d ? h : g - 1 , k = this . _ _iteratees _ _ , l = k . length , m = 0 , n = wh ( i , this . _ _takeCount _ _ ) ; if ( ! c || ! d && e == i && n == i ) return zb ( a , this . _ _actions _ _ ) ; var o = [ ] ; a : for ( ; i -- && m < n ; ) { j += b ; for ( var p = - 1 , q = a [ j ] ; ++ p < l ; ) { var r = k [ p ] , s = r . iteratee , t = r . type , u = s ( q ) ; if ( t == bf ) q = u ; else if ( ! u ) { if ( t == af ) continue a ; break a } } o [ m ++ ] = q } return o } function T ( a ) { var b = - 1 , c = null == a ? 0 : a . length ; for ( this . clear ( ) ; ++ b < c ; ) { var d = a [ b ] ; this . set ( d [ 0 ] , d [ 1 ] ) } } function U ( ) { this . _ _data _ _ = Eh ? Eh ( null ) : { } , this . size = 0 } function V ( a ) { var b = this . has ( a ) && delete this . _ _data _ _ [ a ] ; return this . size -= b ? 1 : 0 , b } function W ( a ) { var b = this . _ _data _ _ ; if ( Eh ) { var c = b [ a ] ; return c === Ie ? Ee : c } return Yg . call ( b , a ) ? b [ a ] : Ee } function X ( a ) { var b = this . _ _data _ _ ; return Eh ? b [ a ] !== Ee : Yg . call ( b , a ) } function Y ( a , b ) { var c = this . _ _data _ _ ; return this . size += this . has ( a ) ? 0 : 1 , c [ a ] = Eh && b === Ee ? Ie : b , this } function Z ( a ) { var b = - 1 , c = null == a ? 0 : a . length ; for ( this . clear ( ) ; ++ b < c ; ) { var d = a [ b ] ; this . set ( d [ 0 ] , d [ 1 ] ) } } function $ ( ) { this . _ _data _ _ = [ ] , this . size = 0 } function _ ( a ) { var b = this . _ _data _ _ , c = va ( b , a ) ; if ( c < 0 ) return ! 1 ; var d = b . length - 1 ; return c == d ? b . pop ( ) : kh . call ( b , c , 1 ) , -- this . size , ! 0 } function aa ( a ) { var b = this . _ _data _ _ , c = va ( b , a ) ; return c < 0 ? Ee : b [ c ] [ 1 ] } function ba ( a ) { return va ( this . _ _data _ _ , a ) > - 1 } function ca ( a , b ) { var c = this . _ _data _ _ , d = va ( c , a ) ; return d < 0 ? ( ++ this . size , c . push ( [ a , b ] ) ) : c [ d ] [ 1 ] = b , this } function da ( a ) { var b = - 1 , c = null == a ? 0 : a . length ; for ( this . clear ( ) ; ++ b < c ; ) { var d = a [ b ] ; this . set ( d [ 0 ] , d [ 1 ] ) } } function ea ( ) { this . size = 0 , this . _ _data _ _ = { hash : new T , map : new ( Ah || Z ) , string : new T } } function fa ( a ) { var b = nc ( this , a ) [ "delete" ] ( a ) ; return this . size -= b ? 1 : 0 , b } function ga ( a ) { return nc ( this , a ) . get ( a ) } function ha ( a ) { return nc ( this , a ) . has ( a ) } function ia ( a , b ) { var c = nc ( this , a ) , d = c . size ; return c . set ( a , b ) , this . size += c . size == d ? 0 : 1 , this } function ja ( a ) { var b = - 1 , c = null == a ? 0 : a . length ; for ( this . _ _data _ _ = new da ; ++ b < c ; ) this . add ( a [ b ] ) } function ka ( a ) { return this . _ _data _ _ . set ( a , Ie ) , this } function la ( a ) { return this . _ _data _ _ . has ( a ) } function ma ( a ) { var b = this . _ _data _ _ = new Z ( a ) ; this . size = b . size } functio
zg [ Gf ] = zg [ Hf ] = zg [ If ] = zg [ Jf ] = zg [ Kf ] = zg [ Lf ] = zg [ Mf ] = zg [ Nf ] = zg [ Of ] = ! 0 , zg [ kf ] = zg [ lf ] = zg [ Ef ] = zg [ nf ] = zg [ Ff ] = zg [ of ] = zg [ pf ] = zg [ qf ] = zg [ sf ] = zg [ tf ] = zg [ vf ] = zg [ yf ] = zg [ zf ] = zg [ Af ] = zg [ Df ] = ! 1 ; var Ag = { } ; Ag [ kf ] = Ag [ lf ] = Ag [ Ef ] = Ag [ Ff ] = Ag [ nf ] = Ag [ of ] = Ag [ Gf ] = Ag [ Hf ] = Ag [ If ] = Ag [ Jf ] = Ag [ Kf ] = Ag [ sf ] = Ag [ tf ] = Ag [ vf ] = Ag [ yf ] = Ag [ zf ] = Ag [ Af ] = Ag [ Bf ] = Ag [ Lf ] = Ag [ Mf ] = Ag [ Nf ] = Ag [ Of ] = ! 0 , Ag [ pf ] = Ag [ qf ] = Ag [ Df ] = ! 1 ; var Bg = { "&" : "&" , "<" : "<" , ">" : ">" , '"' : """ , "'" : "'" } , Cg = parseFloat , Dg = parseInt , Eg = "object" == typeof global && global && global . Object === Object && global , Fg = "object" == typeof self && self && self . Object === Object && self , Gg = Eg || Fg || Function ( "return this" ) ( ) , Hg = "object" == typeof exports && exports && ! exports . nodeType && exports , Ig = Hg && "object" == typeof module && module && ! module . nodeType && module , Jg = Ig && Ig . exports === Hg , Kg = Jg && Eg . process , Lg = function ( ) { try { return Kg && Kg . binding && Kg . binding ( "util" ) } catch ( a ) { } } ( ) , Mg = Lg && Lg . isDate , Ng = Lg && Lg . isMap , Og = Lg && Lg . isRegExp , Pg = Lg && Lg . isSet , Qg = Lg && Lg . isTypedArray , Rg = q ( "length" ) , Sg = r ( Bg ) , Tg = Array . prototype , Ug = Function . prototype , Vg = Object . prototype , Wg = Gg [ "__core-js_shared__" ] , Xg = Ug . toString , Yg = Vg . hasOwnProperty , Zg = 0 , $g = function ( ) { var a = /[^.]+$/ . exec ( Wg && Wg . keys && Wg . keys . IE _PROTO || "" ) ; return a ? "Symbol(src)_1." + a : "" } ( ) , _g = Vg . toString , ah = Xg . call ( Object ) , bh = Gg . _ , ch = RegExp ( "^" + Xg . call ( Yg ) . replace ( Uf , "\\$&" ) . replace ( /hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g , "$1.*?" ) + "$" ) , dh = Jg ? Gg . Buffer : Ee , eh = Gg . Symbol , fh = Gg . Uint8Array , gh = dh ? dh . allocUnsafe : Ee , hh = D ( Object . getPrototypeOf , Object ) , ih = Object . create , jh = Vg . propertyIsEnumerable , kh = Tg . splice , lh = eh ? eh . isConcatSpreadable : Ee , mh = eh ? eh . iterator : Ee , nh = eh ? eh . toStringTag : Ee , oh = function ( ) { try { var a = pc ( Object , "defineProperty" ) ; return a ( { } , "" , { } ) , a } catch ( b ) { } } ( ) , ph = Math . ceil , qh = Math . floor , rh = Object . getOwnPropertySymbols , sh = dh ? dh . isBuffer : Ee , th = Gg . isFinite , uh = D ( Object . keys , Object ) , vh = Math . max , wh = Math . min , xh = Date . now , yh = Math . random , zh = ( Tg . reverse , pc ( Gg , "DataView" ) ) , Ah = pc ( Gg , "Map" ) , Bh = pc ( Gg , "Promise" ) , Ch = pc ( Gg , "Set" ) , Dh = pc ( Gg , "WeakMap" ) , Eh = pc ( Object , "create" ) , Fh = Dh && new Dh , Gh = { } , Hh = Sc ( zh ) , Ih = Sc ( Ah ) , Jh = Sc ( Bh ) , Kh = Sc ( Ch ) , Lh = Sc ( Dh ) , Mh = eh ? eh . prototype : Ee , Nh = Mh ? Mh . valueOf : Ee , Oh = Mh ? Mh . toString : Ee , Ph = function ( ) { function a ( ) { } return function ( b ) { if ( ! Pd ( b ) ) return { } ; if ( ih ) return ih ( b ) ; a . prototype = b ; var c = new a ; return a . prototype = Ee , c } } ( ) ; M . prototype = N . prototype , M . prototype . constructor = M , O . prototype = Ph ( N . prototype ) , O . prototype . constructor = O , P . prototype = Ph ( N . prototype ) , P . prototype . constructor = P , T . prototype . clear = U , T . prototype [ "delete" ] = V , T . prototype . get = W , T . prototype . has = X , T . prototype . set = Y , Z . prototype . clear = $ , Z . prototype [ "delete" ] = _ , Z . prototype . get = aa , Z . prototype . has = ba , Z . prototype . set = ca , da . prototype . clear = ea , da . prototype [ "delete" ] = fa , da . prototype . get = ga , da . prototype . has = ha , da . prototype . set = ia , ja . prototype . add = ja . prototype . push = ka , ja . prototype . has = la , ma . prototype . clear = na , ma . prototype [ "delete" ] = oa , ma . prototype . get = pa , ma . prototype . has = qa , ma . prototype . set = ra ; var Qh = Tb ( Ja ) , Rh = Ub ( ) , Sh = Ub ( ! 0 ) , Th = Fh ? function ( a , b ) { return Fh . set ( a , b ) , a } : se , Uh = oh ? function ( a , b ) { return oh ( a , "toString" , { configurable : ! 0 , enumerable : ! 1 , value : re ( b ) , writable : ! 0 } ) } : se , Vh = Ch && 1 / G ( new Ch ( [ , - 0 ] ) ) [ 1 ] == df ? function ( a ) { return new Ch ( a ) } : xe , Wh = Fh ? function ( a ) { return Fh . get ( a ) } : xe , Xh = rh ? function ( a ) { return null == a ? [ ] : ( a = Object ( a ) , e ( rh ( a ) , function ( b ) { return jh . call ( a , b ) } ) ) } : ze , Yh = rh ? function ( a ) { for ( var b = [ ] ; a ; ) i ( b , Xh ( a ) ) , a = hh ( a ) ; return b } : ze , Zh = Oa ; ( zh && Zh ( new zh ( new ArrayBuffer ( 1 ) ) ) != Ff || Ah && Zh ( new Ah ) != sf || Bh && Zh ( Bh . resolve ( ) ) != wf || Ch && Zh ( new Ch ) != zf || Dh && Zh ( new Dh ) != Df ) && ( Zh = function ( a ) { var b = Oa ( a ) , c = b == vf ? a . constructor : Ee , d = c ? Sc ( c ) : "" ; if ( d ) switch ( d ) { case Hh : return Ff ; case Ih : return sf ; case Jh : return wf ; case Kh : return zf ; case Lh : return Df } return b } ) ; var $h = Qc ( Th ) , _h = Qc ( Uh ) , ai = Ic ( function ( a ) { var b = [ ] ; return 46 === a . charCodeAt ( 0 ) && b . push ( "" ) , a . replace ( Tf , function ( a , c , d , e ) { b . push ( d ? e . replace ( Zf , "$1" ) : c || a ) } ) , b } ) , bi = sb ( function ( a , b ) { return Id ( a ) ? Ea ( a , Ia ( b , 1 , Id , ! 0 ) ) : [ ] } ) , ci = sb ( function ( a ) { var b = h ( a , Bb ) ; return b . length && b [ 0 ] === a [ 0 ] ? Sa ( b ) : [ ] } ) , di = sb ( function ( a ) { return xb ( Ia ( a , 1 , Id , ! 0 ) ) } ) , ei = sb ( function ( a , b ) { return Id ( a ) ? Ea ( a , b ) : [ ] } ) , fi = sb ( jd ) , gi = ( ic ( function ( a ) { var b = a
b && ( this . beforeMount && this . beforeMount ( ) , this . _isMounted = ! 0 , this . _mountChildren && this . _mountChildren ( ) , BI . each ( this . _children , function ( b , c ) { ! a . isEnabled ( ) && c . _setEnable ( ! 1 ) , ! a . isValid ( ) && c . _setValid ( ! 1 ) , c . _mount && c . _mount ( ) } ) , this . mounted && this . mounted ( ) ) ) } , _mountChildren : null , isMounted : function ( ) { return this . _isMounted } , setWidth : function ( a ) { this . options . width = a , this . _initElementWidth ( ) } , setHeight : function ( a ) { this . options . height = a , this . _initElementHeight ( ) } , _setEnable : function ( a ) { a === ! 0 ? this . options . disabled = ! 1 : a === ! 1 && ( this . options . disabled = ! 0 ) , BI . each ( this . _children , function ( b , c ) { ! c . _manualSetEnable && c . _setEnable && c . _setEnable ( a ) } ) } , _setValid : function ( a ) { a === ! 0 ? this . options . invalid = ! 1 : a === ! 1 && ( this . options . invalid = ! 0 ) , BI . each ( this . _children , function ( b , c ) { ! c . _manualSetValid && c . _setValid && c . _setValid ( a ) } ) } , _setVisible : function ( a ) { a === ! 0 ? this . options . invisible = ! 1 : a === ! 1 && ( this . options . invisible = ! 0 ) } , setEnable : function ( a ) { this . _manualSetEnable = ! 0 , this . _setEnable ( a ) , a === ! 0 ? this . element . removeClass ( "base-disabled disabled" ) : a === ! 1 && this . element . addClass ( "base-disabled disabled" ) } , setVisible : function ( a ) { this . _setVisible ( a ) , a === ! 0 ? ( this . element . css ( "display" , "" ) , this . _mount ( ) ) : a === ! 1 && this . element . css ( "display" , "none" ) , this . fireEvent ( BI . Events . VIEW , a ) } , setValid : function ( a ) { this . _manualSetValid = ! 0 , this . _setValid ( a ) , a === ! 0 ? this . element . removeClass ( "base-invalid invalid" ) : a === ! 1 && this . element . addClass ( "base-invalid invalid" ) } , doBehavior : function ( ) { var a = arguments ; BI . each ( this . _children , function ( b , c ) { c . doBehavior && c . doBehavior . apply ( c , a ) } ) } , getWidth : function ( ) { return this . options . width } , getHeight : function ( ) { return this . options . height } , isValid : function ( ) { return ! this . options . invalid } , addWidget : function ( a , b ) { var c = this ; if ( a instanceof BI . Widget && ( b = a , a = b . getName ( ) ) , BI . isKey ( a ) && ( a += "" ) , a = a || b . getName ( ) || BI . uniqueId ( "widget" ) , this . _children [ a ] ) throw new Error ( "name has already been existed" ) ; return b . _setParent && b . _setParent ( this ) , b . on ( BI . Events . DESTROY , function ( ) { BI . remove ( c . _children , this ) } ) , this . _children [ a ] = b } , getWidgetByName : function ( a ) { if ( ! BI . isKey ( a ) || a === this . getName ( ) ) return this ; a += "" ; var b = void 0 , c = { } ; return BI . any ( this . _children , function ( d , e ) { return d === a ? ( b = e , ! 0 ) : void ( c [ d ] = e ) } ) , b || BI . any ( c , function ( a , c ) { return b = c . getWidgetByName ( a ) } ) , b } , removeWidget : function ( a ) { BI . isWidget ( a ) ? BI . remove ( this . _children , a ) : delete this . _children [ a ] } , hasWidget : function ( a ) { return null != this . _children [ a ] } , getName : function ( ) { return this . widgetName } , setTag : function ( a ) { this . options . tag = a } , getTag : function ( ) { return this . options . tag } , attr : function ( a , b ) { var c = this ; return BI . isPlainObject ( a ) ? void BI . each ( a , function ( a , b ) { c . attr ( a , b ) } ) : BI . isNotNull ( b ) ? this . options [ a ] = b : this . options [ a ] } , getText : function ( ) { } , setText : function ( a ) { } , getValue : function ( ) { } , setValue : function ( a ) { } , isEnabled : function ( ) { return ! this . options . disabled } , isVisible : function ( ) { return ! this . options . invisible } , disable : function ( ) { this . setEnable ( ! 1 ) } , enable : function ( ) { this . setEnable ( ! 0 ) } , valid : function ( ) { this . setValid ( ! 0 ) } , invalid : function ( ) { this . setValid ( ! 1 ) } , invisible : function ( ) { this . setVisible ( ! 1 ) } , visible : function ( ) { this . setVisible ( ! 0 ) } , _ _d : function ( ) { this . beforeDestroy && this . beforeDestroy ( ) , BI . each ( this . _children , function ( a , b ) { b && b . _unMount && b . _unMount ( ) } ) , this . _children = { } , this . _parent = null , this . _isMounted = ! 1 , this . destroyed && this . destroyed ( ) } , _unMount : function ( ) { this . _ _d ( ) , this . fireEvent ( BI . Events . UNMOUNT ) , this . purgeListeners ( ) } , isolate : function ( ) { this . _parent && this . _parent . removeWidget ( this ) , BI . DOM . hang ( [ this ] ) } , empty : function ( ) { BI . each ( this . _children , function ( a , b ) { b && b . _unMount && b . _unMount ( ) } ) , this . _children = { } , this . element . empty ( ) } , _destroy : function ( ) { this . _ _d ( ) , this . element . destroy ( ) , this . purgeListeners ( ) } , destroy : function ( ) { this . _ _d ( ) , this . element . destroy ( ) , this . fireEvent ( BI . Events . DESTROY ) , this . _purgeRef ( ) , this . purgeListeners ( ) } } ) , function ( ) { var a = { } ; BI . shortcut = function ( b , c ) { null != a [ b ] && console . error ( "shortcut:[" + b + "] has been registed" ) , a [ b ] = c } ; var b = function ( b ) { if ( b . classType ) return new ( new Function ( "return " + b . classType + ";" ) ( ) ) ( b ) ; var c = a [ b . type ] ; return new c ( b ) } ; BI . createWidg
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 (
} , equals : function ( a ) { return this === a || this . id === a . id } , 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 , func
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 = ( a . pageX || a . clientX ) + 15 , m = ( a . pageY || a . clientY ) + 15 ; return l + k . element . outerWidth ( ) > $ ( "body" ) . outerWidth ( ) && ( l -= k . element . outerWidth ( ) + 15 ) , m + k . element . outerHeight ( ) > $ ( "body" ) . outerHeight ( ) ? ( m -= k . element . outerHeight ( ) + 15 , ! f . belowMouse && ( m = Math . min ( m , h . top - k . element . outerHeight ( ) - 5 ) ) ) : ! f . belowMouse && ( m = Math . max ( m , j ) ) , k . element . css ( { left : l < 0 ? 0 : l + "px" , top : m < 0 ? 0 : m + "px" } ) , k . element . hover ( function ( ) { g . remove ( b ) , e . element . trigger ( "mouseleave.title" + e . getName ( ) ) } ) , this } , add : function ( a , b ) { return this . has ( a ) ? this : ( this . set ( a , b ) , this ) } , get : function ( a ) { return this . tooltipsManager [ a ] } , set : function ( a , b ) { this . tooltipsManager [ a ] = b } , has : function ( a ) { return null != this . tooltipsManager [ a ] } , remove : function ( a ) { return this . has ( a ) ? ( this . tooltipsManager [ a ] . destroy ( ) , delete this . tooltipsManager [ a ] , this ) : this } } ) , _ . extend ( BI , { Events : { KEYDOWN : "_KEYDOWN" , BACKSPACE : "_BACKSPACE" , SPACE : "_SPACE" , ENTER : "_ENTER" , CONFIRM : "_CONFIRM" , ERROR : "_ERROR" , PAUSE : "_PAUSE" , DESTROY : "_DESTROY" , UNMOUNT : "_UNMOUNT" , CLEAR : "_CLEAR" , ADD : "_ADD" , EDITING : "_EDITING" , EMPTY : "_EMPTY" , VIEW : "_VIEW" , RESIZE : "_RESIZE" , BEFOREEDIT : "_BEFOREEDIT" , AFTEREDIT : "_AFTEREDIT" , STARTEDIT : "_STARTEDIT" , STOPEDIT : "_STOPEDIT" , CHANGE : "_CHANGE" , EXPAND : "_EXPAND" , COLLAPSE : "_COLLAPSE" , CALLBACK : "_CALLBACK" , CLICK : "_CLICK" , STATECHANGE : "_STATECHANGE" , BEFORESTATECHANGE : "_BEFORESTATECHANGE" , INIT : "_INIT" , AFTERINIT : "_AFTERINIT" , SCROLL : "_SCROLL" , STARTLOAD : "_STARTLOAD" , AFTERLOAD : "_AFTERLOAD"
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 accDiv ( 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 ) { return a . addEventListener ? ( a . addEventListener ( b , c , ! 0 ) , { remove : function ( ) { a . removeEventListener ( b , c , ! 0 ) } } ) : { remove : BI . emptyFn } } , registerDefault : function ( ) { } } , ! function ( ) { var a = window . cancelAnimationFrame || window . webkitCancelAnimationFrame || window . mozCancelAnimationFrame || window . oCancelAnimationFrame || window . msCancelAnimationFrame || window . clearTimeout , b = window . requestAnimationFrame || window . webkitRequestAnimationFrame || window . mozRequestAnimationFrame || window . oRequestAnimationFrame || window . msRequestAnimationFrame || window . setTimeout ; BI . MouseMoveTracker = function ( a , b , c ) { this . _isDragging = ! 1 , this . _animationFrameID = null , this . _domNode = c , this . _onMove = a , this . _onMoveEnd = b , this . _onMouseMove = BI . bind ( this . _onMouseMove , this ) , this . _onMouseUp = BI . bind ( this . _onMouseUp , this ) , this . _didMouseMove = BI . bind ( this . _didMouseMove , this ) } , BI . MouseMoveTracker . prototype = { constructor : BI . MouseMoveTracker , captureMouseMoves : function ( a ) { this . _eventMoveToken || this . _eventUpToken || ( this . _eventMoveToken = BI . EventListener . listen ( this . _domNode , "mousemove" , this . _onMouseMove ) , this . _eventUpToken = BI . EventListener . listen ( this . _domNode , "mouseup" , this . _onMouseUp ) ) , this . _isDragging || ( this . _deltaX = 0 , this . _deltaY = 0 , this . _isDragging = ! 0 , this . _x = a . clientX , this . _y = a . clientY ) , a . preventDefault ? a . preventDefault ( ) : a . returnValue = ! 1 } , releaseMouseMoves : function ( ) { this . _eventMoveToken && this . _eventUpToken && ( this . _eventMoveToken . remove ( ) , this . _eventMoveToken = null , this . _eventUpToken . remove ( ) , this . _eventUpToken = null ) , null !== this . _animationFrameID && ( a ( this . _animationFrameID ) , this . _animationFrameID = null ) , this . _isDragging && ( this . _isDragging = ! 1 , this . _x = null , this . _y = null ) } , isDragging : func
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 ( { left : b . left } ) , e += b . left ) , BI . isNotNull ( b . right ) && ( d . element . css ( { right : b . right } ) , f += b . right ) , BI . isNotNull ( b . top ) && ( d . element . css ( { top : b . top } ) , g += b . top ) , BI . isNotNull ( b . bottom ) && ( d . element . css ( { bottom : b . bottom } ) , h += b . bottom ) , BI . isNotNull ( c . hgap ) && ( e += c . hgap , d . element . css ( { left : e } ) , f += c . hgap , d . element . css ( { right : f } ) ) , BI . isNotNull ( c . vgap ) && ( g += c . vgap , d . element . css ( { top : g } ) , h += c . vgap , d . element . css ( { bottom : h } ) ) , BI . isNotNull ( c . lgap ) && ( e += c . lgap , d . element . css ( { left : e } ) ) , BI . isNotNull ( c . rgap ) && ( f += c . rgap , d . element . css ( { right : f } ) ) , BI . isNotNull ( c . tgap ) && ( g += c . tgap , d . element . css ( { top : g } ) ) , BI . isNotNull ( c . bgap ) && ( h += c . bgap , d . element . css ( { bottom : h } ) ) , BI . isNotNull ( b . width ) && d . element . css ( { width : b . width } ) , BI . isNotNull ( b . height ) && d . element . css ( { height : b . height } ) , d . element . css ( { position : "absolute" } ) , d } , resize : function ( ) { this . stroke ( this . options . items ) } , stroke : function ( a ) { this . options . items = a || [ ] ; var b = this ; BI . each ( a , function ( a , c ) { if ( c ) { if ( ! BI . isWidget ( c ) && ! c . el ) throw new Error ( "el must be exist" ) ; b . _addElement ( a , c ) } } ) } , populate : function ( a ) { BI . AbsoluteLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.absolute" , BI . AbsoluteLayout ) , BI . AdaptiveLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . AdaptiveLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-adaptive-layout" , hgap : null , vgap : null , lgap : null , rgap : null , tgap : null , bgap : null } ) } , render : function ( ) { BI . AdaptiveLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . AdaptiveLayout . superclass . _addElement . apply ( this , arguments ) ; d . element . css ( { position : " relative
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 . makeArray ( e . items . length , 1 / e . items . length ) ) , BI . isNumber ( e . columnSize ) && ( e . columnSize = BI . makeArray ( e . items [ 0 ] . length , 1 / e . items [ 0 ] . length ) ) ; for ( var f = 0 ; f < e . rows ; f ++ ) for ( var g = 0 ; g < e . columns ; g ++ ) { if ( ! e . items [ f ] [ g ] ) throw new Error ( "item be required" ) ; if ( ! this . hasWidget ( this . getName ( ) + f + "_" + g ) ) { var h = BI . createWidget ( e . items [ f ] [ g ] ) ; h . element . css ( { position : "absolute" } ) , this . addWidget ( this . getName ( ) + f + "_" + g , h ) } } var i = { } , j = { } , k = { } , l = { } ; i [ 0 ] = 0 , k [ 0 ] = 0 , j [ e . columns - 1 ] = 0 , l [ e . rows - 1 ] = 0 ; for ( var f = 0 ; f < e . rows ; f ++ ) { for ( var g = 0 ; g < e . columns ; g ++ ) { var m = this . getWidgetByName ( this . getName ( ) + f + "_" + g ) ; BI . isNull ( k [ f ] ) && ( k [ f ] = k [ f - 1 ] + ( e . rowSize [ f - 1 ] < 1 ? e . rowSize [ f - 1 ] : e . rowSize [ f - 1 ] + e . vgap + e . bgap ) ) ; var n = k [ f ] <= 1 ? 100 * k [ f ] + "%" : k [ f ] + e . vgap + e . tgap + "px" , o = "" ; BI . isNumber ( e . rowSize [ f ] ) && ( o = e . rowSize [ f ] <= 1 ? 100 * e . rowSize [ f ] + "%" : e . rowSize [ f ] + "px" ) , m . element . css ( { top : n , height : o } ) , d ( m , f , g ) } if ( ! BI . isNumber ( e . rowSize [ f ] ) ) break } for ( var f = e . rows - 1 ; f >= 0 ; f -- ) { for ( var g = 0 ; g < e . columns ; g ++ ) { var m = this . getWidgetByName ( this . getName ( ) + f + "_" + g ) ; BI . isNull ( l [ f ] ) && ( l [ f ] = l [ f + 1 ] + ( e . rowSize [ f + 1 ] < 1 ? e . rowSize [ f + 1 ] : e . rowSize [ f + 1 ] + e . vgap + e . tgap ) ) ; var p = l [ f ] <= 1 ? 100 * l [ f ] + "%" : l [ f ] + e . vgap + e . bgap + "px" , o = "" ; BI . isNumber ( e . rowSize [ f ] ) && ( o = e . rowSize [ f ] <= 1 ? 100 * e . rowSize [ f ] + "%" : e . rowSize [ f ] + "px" ) , m . element . css ( { bottom : p , height : o } ) , d ( m , f , g ) } if ( ! BI . isNumber ( e . rowSize [ f ] ) ) break } for ( var g = 0 ; g < e . columns ; g ++ ) { for ( var f = 0 ; f < e . rows ; f ++ ) { var m = this . getWidgetByName ( this . getName ( ) + f + "_" + g ) ; BI . isNull ( i [ g ] ) && ( i [ g ] = i [ g - 1 ] + ( e . columnSize [ g - 1 ] < 1 ? e . columnSize [ g - 1 ] : e . columnSize [ g - 1 ] + e . hgap + e . rgap ) ) ; var q = i [ g ] <= 1 ? 100 * i [ g ] + "%" : i [ g ] + e . hgap + e . lgap + "px" , h = "" ; BI . isNumber ( e . columnSize [ g ] ) && ( h = e .
b . _e = c , "warning" === b . getTipType ( ) || BI . isKey ( b . getWarningTitle ( ) ) && ! b . isEnabled ( ) ? b . timeout = BI . delay ( function ( ) { b . _showToolTip ( b . _e || c , a ) } , 200 ) : ( "success" === b . getTipType ( ) || b . isEnabled ( ) ) && ( b . timeout = BI . delay ( function ( ) { b . _showToolTip ( b . _e || c , a ) } , 500 ) ) } ) , this . element . on ( "mousemove.title" + this . getName ( ) , function ( a ) { b . _e = a , b . element . _ _isMouseInBounds _ _ ( a ) || ( BI . isNotNull ( b . timeout ) && clearTimeout ( b . timeout ) , b . _hideTooltip ( ) ) } ) , this . element . on ( "mouseleave.title" + this . getName ( ) , function ( ) { b . _e = null , BI . isNotNull ( b . timeout ) && clearTimeout ( b . timeout ) , b . _hideTooltip ( ) } ) , this . _hoverBinded = ! 0 ) } , disabledHover : function ( ) { BI . isNotNull ( this . timeout ) && clearTimeout ( this . timeout ) , this . _hideTooltip ( ) , $ ( this . element ) . unbind ( "mouseenter.title" + this . getName ( ) ) . unbind ( "mousemove.title" + this . getName ( ) ) . unbind ( "mouseleave.title" + this . getName ( ) ) , this . _hoverBinded = ! 1 } , populate : function ( a ) { this . items = a || [ ] } , setTitle : function ( a , b ) { this . options . title = a , BI . isKey ( a ) || BI . isFunction ( a ) ? this . enableHover ( b ) : this . disabledHover ( ) } , setWarningTitle : function ( a , b ) { this . options . warningTitle = a , BI . isKey ( a ) || BI . isFunction ( a ) ? this . enableHover ( b ) : this . disabledHover ( ) } , getTipType : function ( ) { return this . options . tipType } , isReadOnly : function ( ) { return ! ! this . options . readonly } , getTitle : function ( ) { var a = this . options . title ; return BI . isFunction ( a ) ? a ( ) : a } , getWarningTitle : function ( ) { var a = this . options . warningTitle ; return BI . isFunction ( a ) ? a ( ) : a } , setValue : function ( a ) { this . options . readonly || ( this . options . value = a ) } , getValue : function ( ) { return this . options . value } } ) , 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
this . _attr ( "stroke" , [ ] ) } , rect : function ( a , b , c , d , e ) { this . _attr ( "fillStyle" , e ) , this . _attr ( "fillRect" , [ a , b , c , d ] ) } , circle : function ( a , b , c , d ) { this . _attr ( { fillStyle : d , beginPath : [ ] , arc : [ a , b , c , 0 , 2 * Math . PI , ! 0 ] , closePath : [ ] , fill : [ ] } ) } , hollow : function ( ) { this . _attr ( "beginPath" , [ ] ) , this . _line . apply ( this , arguments ) , this . _attr ( "closePath" , [ ] ) , this . _attr ( "stroke" , [ ] ) } , solid : function ( ) { this . hollow . apply ( this , arguments ) , this . _attr ( "fill" , [ ] ) } , gradient : function ( a , b , c , d , e , f ) { var g = this . _getContext ( ) . createLinearGradient ( a , b , c , d ) ; return g . addColorStop ( 0 , e ) , g . addColorStop ( 1 , f ) , g } , reset : function ( ) { this . _getContext ( ) . clearRect ( 0 , 0 , this . canvas . width , this . canvas . height ) } , stroke : function ( ) { var a = this . _getContext ( ) ; return ! ! a && ( BI . each ( this . _queue , function ( b , c ) { BI . isFunction ( a [ c . k ] ) ? a [ c . k ] . apply ( a , c . v ) : a [ c . k ] = c . v } ) , void ( this . _queue = [ ] ) ) } } ) , BI . shortcut ( "bi.canvas" , BI . Canvas ) , BI . CollectionView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . CollectionView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-collection" , overflowX : ! 0 , overflowY : ! 0 , cellSizeAndPositionGetter : BI . emptyFn , horizontalOverscanSize : 0 , verticalOverscanSize : 0 , scrollLeft : 0 , scrollTop : 0 , items : [ ] } ) } , _init : function ( ) { BI . CollectionView . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . renderedCells = [ ] , this . renderedKeys = [ ] , this . renderRange = { } , this . _scrollLock = ! 1 , this . _debounceRelease = BI . debounce ( function ( ) { a . _scrollLock = ! 1 } , 1e3 / 60 ) , this . container = BI . createWidget ( { type : "bi.absolute" } ) , this . element . scroll ( function ( ) { a . _scrollLock !== ! 0 && ( b . scrollLeft = a . element . scrollLeft ( ) , b . scrollTop = a . element . scrollTop ( ) , a . _calculateChildrenToRender ( ) , a . fireEvent ( BI . CollectionView . EVENT _SCROLL , { scrollLeft : b . scrollLeft , scrollTop : b . scrollTop } ) ) } ) , BI . createWidget ( { type : "bi.vertical" , element : this , scrollable : b . overflowX === ! 0 && b . overflowY === ! 0 , scrolly : b . overflowX === ! 1 && b . overflowY === ! 0 , scrollx : b . overflowX === ! 0 && b . overflowY === ! 1 , items : [ this . container ] } ) , b . items . length > 0 && ( this . _calculateSizeAndPositionData ( ) , this . _populate ( ) ) , 0 === b . scrollLeft && 0 === b . scrollTop || BI . nextTick ( function ( ) { a . element . scrollTop ( b . scrollTop ) , a . element . scrollLeft ( b . scrollLeft ) } ) } , _calculateSizeAndPositionData : function ( ) { for ( var a = this . options , b = [ ] , c = new BI . SectionManager , d = 0 , e = 0 , f = 0 , g = a . items . length ; f < g ; f ++ ) { var h = a . cellSizeAndPositionGetter ( f ) ; if ( null == h . height || isNaN ( h . height ) || null == h . width || isNaN ( h . width ) || null == h . x || isNaN ( h . x ) || null == h . y || isNaN ( h . y ) ) throw Error ( ) ; d = Math . max ( d , h . y + h . height ) , e = Math . max ( e , h . x + h . width ) , h . index = f , b [ f ] = h , c . registerCell ( h , f ) } this . _cellMetadata = b , this . _sectionManager = c , this . _height = d , this . _width = e } , _cellRenderers : function ( a , b , c , d ) { return this . _lastRenderedCellIndices = this . _sectionManager . getCellIndices ( a , b , c , d ) , this . _cellGroupRenderer ( ) } , _cellGroupRenderer : function ( ) { var a = this , b = ( this . options , [ ] ) ; return BI . each ( this . _lastRenderedCellIndices , function ( c , d ) { var e = a . _sectionManager . getCellMetadata ( d ) ; b . push ( e ) } ) , b } , _calculateChildrenToRender : function ( ) { var a = this , b = this . options , c = BI . clamp ( b . scrollLeft , 0 , this . _getMaxScrollLeft ( ) ) , d = BI . clamp ( b . scrollTop , 0 , this . _getMaxScrollTop ( ) ) , e = Math . max ( 0 , c - b . horizontalOverscanSize ) , f = Math . max ( 0 , d - b . verticalOverscanSize ) , g = Math . min ( this . _width , c + b . width + b . horizontalOverscanSize ) , h = Math . min ( this . _height , d + b . height + b . verticalOverscanSize ) ; if ( g > 0 && h > 0 ) { if ( f >= this . renderRange . minY && h <= this . renderRange . maxY && e >= this . renderRange . minX && g <= this . renderRange . maxX ) return ; for ( var i = this . _cellRenderers ( h - f , g - e , e , f ) , j = [ ] , k = { } , l = { } , m = { } , n = { } , o = 0 , p = i . length ; o < p ; o ++ ) { var q = i [ o ] ; m [ q . x ] = q . x , m [ q . x + q . width ] = q . x + q . width , n [ q . y ] = q . y , n [ q . y + q . height ] = q . y + q . height } m = BI . toArray ( m ) , n = BI . toArray ( n ) ; for ( var r = BI . invert ( m ) , s = BI . invert ( n ) , t = { } , u = { } , v = { } , w = { } , x = function ( a , b ) { null == a [ b ] && ( a [ b ] = Number . MAX _VALUE ) } , y = function ( a , b ) { null == a [ b ] && ( a [ b ] = 0 ) } , o = 0 , p = i . length ; o < p ; o ++ ) { var z , q = i [ o ] , A = this . renderedKeys [ q . index ] && this . renderedKeys [ q . index ] [ 1 ] ; A >= 0 ? ( q . width !== this . renderedCells [ A ] . _width && ( this . renderedCells [ A ] . _width = q . width , this . renderedCells [ A ] . el . setWidth ( q . width ) ) , q . height !== this . renderedCells [ A ] . _height && ( this . renderedCells [ A ] . _height = q . height , this . renderedCel
direction : "bottom" , logic : { dynamic : ! 1 } , single : ! 1 , showIndex : ! 1 , tab : ! 1 , cardCreator : function ( a ) { return BI . createWidget ( ) } , afterCardCreated : BI . emptyFn , afterCardShow : BI . emptyFn } ) } , render : function ( ) { var a = this , b = this . options ; this . tab = BI . createWidget ( this . options . tab , { type : "bi.button_group" } ) , this . cardMap = { } , this . showIndex = 0 , this . layout = BI . createWidget ( { type : "bi.card" } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( b . direction ) , BI . extend ( { } , b . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( b . direction , this . tab , this . layout ) } ) ) ) ) , new BI . ShowListener ( { eventObj : this . tab , cardLayout : this . layout , cardNameCreator : function ( b ) { return a . showIndex + b } , cardCreator : function ( c ) { var d = b . cardCreator ( c ) ; return a . cardMap [ c ] = d , d } , afterCardCreated : BI . bind ( this . afterCardCreated , this ) , afterCardShow : BI . bind ( this . afterCardShow , this ) } ) } , mounted : function ( ) { var a = this . options ; a . showIndex !== ! 1 && this . setSelect ( a . showIndex ) } , _deleteOtherCards : function ( a ) { var b = this , c = this . options ; c . single === ! 0 && BI . each ( this . cardMap , function ( c , d ) { c !== a + "" && ( b . layout . deleteCardByName ( c ) , delete b . cardMap [ c ] ) } ) } , afterCardCreated : function ( a ) { var b = this ; this . cardMap [ a ] . on ( BI . Controller . EVENT _CHANGE , function ( a , c , d ) { b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a === BI . Events . CLICK && b . fireEvent ( BI . Navigation . EVENT _CHANGE , d ) } ) , this . options . afterCardCreated . apply ( this , arguments ) } , afterCardShow : function ( a ) { this . showIndex = a , this . _deleteOtherCards ( a ) , this . options . afterCardShow . apply ( this , arguments ) } , populate : function ( ) { var a = this . layout . getShowingCard ( ) ; if ( a ) return a . populate . apply ( a , arguments ) } , _assertCard : function ( a ) { if ( ! this . layout . isCardExisted ( a ) ) { var b = this . options . cardCreator ( a ) ; this . cardMap [ a ] = b , this . layout . addCardByName ( a , b ) , this . afterCardCreated ( a ) } } , setSelect : function ( a ) { this . _assertCard ( a ) , this . layout . showCardByName ( a ) , this . _deleteOtherCards ( a ) , this . showIndex !== a && ( this . showIndex = a , BI . nextTick ( BI . bind ( this . afterCardShow , this , a ) ) ) } , getSelect : function ( ) { return this . showIndex } , getSelectedCard : function ( ) { if ( BI . isKey ( this . showIndex ) ) return this . cardMap [ this . showIndex ] } , setValue : function ( a ) { var b = this . layout . getShowingCard ( ) ; b && b . setValue ( a ) } , getValue : function ( ) { var a = this . layout . getShowingCard ( ) ; if ( a ) return a . getValue ( ) } , empty : function ( ) { this . layout . deleteAllCard ( ) , this . cardMap = { } } , destroy : function ( ) { BI . Navigation . superclass . destroy . apply ( this , arguments ) } } ) , BI . Navigation . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.navigation" , BI . Navigation ) , BI . Searcher = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Searcher . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-searcher" , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , vgap : 0 , hgap : 0 , isDefaultInit : ! 1 , isAutoSearch : ! 0 , isAutoSync : ! 0 , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , onSearch : function ( a , b ) { b ( [ ] ) } , el : { type : "bi.search_editor" } , popup : { type : "bi.searcher_view" } , adapter : null , masker : { offset : { } } } ) } , _init : function ( ) { BI . Searcher . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( b . el , { type : "bi.search_editor" } ) , BI . createWidget ( { type : "bi.vertical" , element : this , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , vgap : b . vgap , hgap : b . hgap , items : [ this . editor ] } ) , b . isDefaultInit && this . _assertPopupView ( ) ; var c = BI . debounce ( BI . bind ( this . _search , this ) , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) ; this . editor . on ( BI . Controller . EVENT _CHANGE , function ( b ) { switch ( b ) { case BI . Events . STARTEDIT : a . _startSearch ( ) ; break ; case BI . Events . EMPTY : a . _stopSearch ( ) ; break ; case BI . Events . CHANGE : c ( ) ; break ; case BI . Events . PAUSE : a . _pauseSearch ( ) } } ) } , _assertPopupView : function ( ) { var a = this , b = this . options ; ( b . masker && ! BI . Maskers . has ( this . getName ( ) ) || b . masker === ! 1 && ! this . popupView ) && ( this . popupView = BI . createWidget ( b . popup , { type : "bi.searcher_view" , chooseType : b . chooseType } ) , this . popupView . on ( BI . Controller . EVENT _CHANGE , function ( c , d , e ) { if ( a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , c === BI . Events . CLICK ) { if ( b . isAutoSync ) { var f = b . adapter && b . adapter . getValue ( ) ; if ( e . isSelected ( ) ) switch ( b . chooseType ) { case BI . ButtonGroup . CHOOSE _TYPE _SINGLE : b . adapter && b . adapter . setV
! a . options . lineNumbers || e && e [ "CodeMirror-linenumbers" ] || ( b . lineNumber = g . appendChild ( Me ( "div" , x ( a . options , c ) , "CodeMirror-linenumber CodeMirror-gutter-elt" , "left: " + d . gutterLeft [ "CodeMirror-linenumbers" ] + "px; width: " + a . display . lineNumInnerWidth + "px" ) ) ) , e ) for ( var h = 0 ; h < a . options . gutters . length ; ++ h ) { var i = a . options . gutters [ h ] , j = e . hasOwnProperty ( i ) && e [ i ] ; j && g . appendChild ( Me ( "div" , [ j ] , "CodeMirror-gutter-elt" , "left: " + d . gutterLeft [ i ] + "px; width: " + d . gutterWidth [ i ] + "px" ) ) } } } function Q ( a , b , c ) { b . alignable && ( b . alignable = null ) ; for ( var d , e = b . node . firstChild ; e ; e = d ) { var d = e . nextSibling ; "CodeMirror-linewidget" == e . className && b . node . removeChild ( e ) } S ( a , b , c ) } function R ( a , b , c , d ) { var e = M ( a , b ) ; return b . text = b . node = e . pre , e . bgClass && ( b . bgClass = e . bgClass ) , e . textClass && ( b . textClass = e . textClass ) , O ( b ) , P ( a , b , c , d ) , S ( a , b , d ) , b . node } function S ( a , b , c ) { if ( T ( a , b . line , b , c , ! 0 ) , b . rest ) for ( var d = 0 ; d < b . rest . length ; d ++ ) T ( a , b . rest [ d ] , b , c , ! 1 ) } function T ( a , b , c , d , e ) { if ( b . widgets ) for ( var f = K ( c ) , g = 0 , h = b . widgets ; g < h . length ; ++ g ) { var i = h [ g ] , j = Me ( "div" , [ i . node ] , "CodeMirror-linewidget" ) ; i . handleMouseEvents || j . setAttribute ( "cm-ignore-events" , "true" ) , U ( i , j , c , d ) , a . display . input . setUneditable ( j ) , e && i . above ? f . insertBefore ( j , c . gutter || c . text ) : f . appendChild ( j ) , te ( i , "redraw" ) } } function U ( a , b , c , d ) { if ( a . noHScroll ) { ( c . alignable || ( c . alignable = [ ] ) ) . push ( b ) ; var e = d . wrapperWidth ; b . style . left = d . fixedPos + "px" , a . coverGutter || ( e -= d . gutterTotalWidth , b . style . paddingLeft = d . gutterTotalWidth + "px" ) , b . style . width = e + "px" } a . coverGutter && ( b . style . zIndex = 5 , b . style . position = "relative" , a . noHScroll || ( b . style . marginLeft = - d . gutterTotalWidth + "px" ) ) } function V ( a ) { return Ff ( a . line , a . ch ) } function W ( a , b ) { return Gf ( a , b ) < 0 ? b : a } function X ( a , b ) { return Gf ( a , b ) < 0 ? a : b } function Y ( a ) { a . state . focused || ( a . display . input . focus ( ) , nc ( a ) ) } function Z ( a ) { return a . options . readOnly || a . doc . cantEdit } function $ ( a , b , c , d , e ) { var f = a . doc ; a . display . shift = ! 1 , d || ( d = f . sel ) ; var g = a . state . pasteIncoming || "paste" == e , h = Ug ( b ) , i = null ; g && d . ranges . length > 1 && ( Hf && Hf . join ( "\n" ) == b ? i = d . ranges . length % Hf . length == 0 && Ee ( Hf , Ug ) : h . length == d . ranges . length && ( i = Ee ( h , function ( a ) { return [ a ] } ) ) ) ; for ( var j = d . ranges . length - 1 ; j >= 0 ; j -- ) { var k = d . ranges [ j ] , l = k . from ( ) , m = k . to ( ) ; k . empty ( ) && ( c && c > 0 ? l = Ff ( l . line , l . ch - c ) : a . state . overwrite && ! g && ( m = Ff ( m . line , Math . min ( Vd ( f , m . line ) . text . length , m . ch + Ce ( h ) . length ) ) ) ) ; var n = a . curOp . updateInput , o = { from : l , to : m , text : i ? i [ j % i . length ] : h , origin : e || ( g ? "paste" : a . state . cutIncoming ? "cut" : "+input" ) } ; wc ( a . doc , o ) , te ( a , "inputRead" , a , o ) } b && ! g && aa ( a , b ) , Ic ( a ) , a . curOp . updateInput = n , a . curOp . typing = ! 0 , a . state . pasteIncoming = a . state . cutIncoming = ! 1 } function _ ( a , b ) { var c = a . clipboardData && a . clipboardData . getData ( "text/plain" ) ; if ( c ) return a . preventDefault ( ) , Cb ( b , function ( ) { $ ( b , c , 0 , null , "paste" ) } ) , ! 0 } function aa ( a , b ) { if ( a . options . electricChars && a . options . smartIndent ) for ( var c = a . doc . sel , d = c . ranges . length - 1 ; d >= 0 ; d -- ) { var e = c . ranges [ d ] ; if ( ! ( e . head . ch > 100 || d && c . ranges [ d - 1 ] . head . line == e . head . line ) ) { var f = a . getModeAt ( e . head ) , g = ! 1 ; if ( f . electricChars ) { for ( var h = 0 ; h < f . electricChars . length ; h ++ ) if ( b . indexOf ( f . electricChars . charAt ( h ) ) > - 1 ) { g = Kc ( a , e . head . line , "smart" ) ; break } } else f . electricInput && f . electricInput . test ( Vd ( a . doc , e . head . line ) . text . slice ( 0 , e . head . ch ) ) && ( g = Kc ( a , e . head . line , "smart" ) ) ; g && te ( a , "electricInput" , a , e . head . line ) } } } function ba ( a ) { for ( var b = [ ] , c = [ ] , d = 0 ; d < a . doc . sel . ranges . length ; d ++ ) { var e = a . doc . sel . ranges [ d ] . head . line , f = { anchor : Ff ( e , 0 ) , head : Ff ( e + 1 , 0 ) } ; c . push ( f ) , b . push ( a . getRange ( f . anchor , f . head ) ) } return { text : b , ranges : c } } function ca ( a ) { a . setAttribute ( "autocorrect" , "off" ) , a . setAttribute ( "autocapitalize" , "off" ) , a . setAttribute ( "spellcheck" , "false" ) } function da ( a ) { this . cm = a , this . prevInput = "" , this . pollingFast = ! 1 , this . polling = new ze , this . inaccurateSelection = ! 1 , this . hasSelection = ! 1 , this . composing = null } function ea ( ) { var a = Me ( "textarea" , null , null , "position: absolute; padding: 0; width: 1px; height: 1em; outline: none" ) , b = Me ( "div" , [ a ] , null , "overflow: hidden; position: relative; width: 3px; height: 0px;" ) ; return pf ? a . style . width = "1000px" : a . setAttribute ( "wrap" , "off" ) , wf && ( a . style . border = "1px solid black" ) , ca ( a ) , b } function fa ( a ) { this . cm = a , this . lastAnchorNode = this . lastAncho
pf || nf && 9 == of ? setTimeout ( function ( ) { document . body . focus ( ) , e . input . focus ( ) } , 20 ) : e . input . focus ( ) ) } ) ; pf && ( e . scroller . draggable = ! 0 ) , a . state . draggingText = g , e . scroller . dragDrop && e . scroller . dragDrop ( ) , xg ( document , "mouseup" , g ) , xg ( e . scroller , "drop" , g ) } function Xb ( a , b , c , d , e ) { function f ( b ) { if ( 0 != Gf ( q , b ) ) if ( q = b , "rect" == d ) { for ( var e = [ ] , f = a . options . tabSize , g = Gg ( Vd ( j , c . line ) . text , c . ch , f ) , h = Gg ( Vd ( j , b . line ) . text , b . ch , f ) , i = Math . min ( g , h ) , n = Math . max ( g , h ) , o = Math . min ( c . line , b . line ) , p = Math . min ( a . lastLine ( ) , Math . max ( c . line , b . line ) ) ; o <= p ; o ++ ) { var r = Vd ( j , o ) . text , s = Ae ( r , i , f ) ; i == n ? e . push ( new ma ( Ff ( o , s ) , Ff ( o , s ) ) ) : r . length > s && e . push ( new ma ( Ff ( o , s ) , Ff ( o , Ae ( r , n , f ) ) ) ) } e . length || e . push ( new ma ( c , c ) ) , Ba ( j , na ( m . ranges . slice ( 0 , l ) . concat ( e ) , l ) , { origin : "*mouse" , scroll : ! 1 } ) , a . scrollIntoView ( b ) } else { var t = k , u = t . anchor , v = b ; if ( "single" != d ) { if ( "double" == d ) var w = a . findWordAt ( b ) ; else var w = new ma ( Ff ( b . line , 0 ) , qa ( j , Ff ( b . line + 1 , 0 ) ) ) ; Gf ( w . anchor , u ) > 0 ? ( v = w . head , u = X ( t . from ( ) , w . anchor ) ) : ( v = w . anchor , u = W ( t . to ( ) , w . head ) ) } var e = m . ranges . slice ( 0 ) ; e [ l ] = new ma ( qa ( j , u ) , v ) , Ba ( j , na ( e , l ) , Eg ) } } function g ( b ) { var c = ++ s , e = Tb ( a , b , ! 0 , "rect" == d ) ; if ( e ) if ( 0 != Gf ( e , q ) ) { a . curOp . focus = Pe ( ) , f ( e ) ; var h = u ( i , j ) ; ( e . line >= h . to || e . line < h . from ) && setTimeout ( Db ( a , function ( ) { s == c && g ( b ) } ) , 150 ) } else { var k = b . clientY < r . top ? - 20 : b . clientY > r . bottom ? 20 : 0 ; k && setTimeout ( Db ( a , function ( ) { s == c && ( i . scroller . scrollTop += k , g ( b ) ) } ) , 50 ) } } function h ( a ) { s = 1 / 0 , ug ( a ) , i . input . focus ( ) , yg ( document , "mousemove" , t ) , yg ( document , "mouseup" , v ) , j . history . lastSelOrigin = null } var i = a . display , j = a . doc ; ug ( b ) ; var k , l , m = j . sel , n = m . ranges ; if ( e && ! b . shiftKey ? ( l = j . sel . contains ( c ) , k = l > - 1 ? n [ l ] : new ma ( c , c ) ) : ( k = j . sel . primary ( ) , l = j . sel . primIndex ) , b . altKey ) d = "rect" , e || ( k = new ma ( c , c ) ) , c = Tb ( a , b , ! 0 , ! 0 ) , l = - 1 ; else if ( "double" == d ) { var o = a . findWordAt ( c ) ; k = a . display . shift || j . extend ? ua ( j , k , o . anchor , o . head ) : o } else if ( "triple" == d ) { var p = new ma ( Ff ( c . line , 0 ) , qa ( j , Ff ( c . line + 1 , 0 ) ) ) ; k = a . display . shift || j . extend ? ua ( j , k , p . anchor , p . head ) : p } else k = ua ( j , k , c ) ; e ? l == - 1 ? ( l = n . length , Ba ( j , na ( n . concat ( [ k ] ) , l ) , { scroll : ! 1 , origin : "*mouse" } ) ) : n . length > 1 && n [ l ] . empty ( ) && "single" == d && ! b . shiftKey ? ( Ba ( j , na ( n . slice ( 0 , l ) . concat ( n . slice ( l + 1 ) ) , 0 ) ) , m = j . sel ) : xa ( j , l , k , Eg ) : ( l = 0 , Ba ( j , new la ( [ k ] , 0 ) , Eg ) , m = j . sel ) ; var q = c , r = i . wrapper . getBoundingClientRect ( ) , s = 0 , t = Db ( a , function ( a ) { se ( a ) ? g ( a ) : h ( a ) } ) , v = Db ( a , h ) ; xg ( document , "mousemove" , t ) , xg ( document , "mouseup" , v ) } function Yb ( a , b , c , d , e ) { try { var f = b . clientX , g = b . clientY } catch ( b ) { return ! 1 } if ( f >= Math . floor ( a . display . gutters . getBoundingClientRect ( ) . right ) ) return ! 1 ; d && ug ( b ) ; var h = a . display , i = h . lineDiv . getBoundingClientRect ( ) ; if ( g > i . bottom || ! xe ( a , c ) ) return qe ( b ) ; g -= i . top - h . viewOffset ; for ( var j = 0 ; j < a . options . gutters . length ; ++ j ) { var k = h . gutters . childNodes [ j ] ; if ( k && k . getBoundingClientRect ( ) . right >= f ) { var l = $d ( a . doc , g ) , m = a . options . gutters [ j ] ; return e ( a , c , a , l , m , b ) , qe ( b ) } } } function Zb ( a , b ) { return Yb ( a , b , "gutterClick" , ! 0 , te ) } function $b ( a ) { var b = this ; if ( ! ve ( b , a ) && ! Sb ( b . display , a ) ) { ug ( a ) , nf && ( Of = + new Date ) ; var c = Tb ( b , a , ! 0 ) , d = a . dataTransfer . files ; if ( c && ! Z ( b ) ) if ( d && d . length && window . FileReader && window . File ) for ( var e = d . length , f = Array ( e ) , g = 0 , h = function ( a , d ) { var h = new FileReader ; h . onload = Db ( b , function ( ) { if ( f [ d ] = h . result , ++ g == e ) { c = qa ( b . doc , c ) ; var a = { from : c , to : c , text : Ug ( f . join ( "\n" ) ) , origin : "paste" } ; wc ( b . doc , a ) , Aa ( b . doc , oa ( c , Uf ( a ) ) ) } } ) , h . readAsText ( a ) } , i = 0 ; i < e ; ++ i ) h ( d [ i ] , i ) ; else { if ( b . state . draggingText && b . doc . sel . contains ( c ) > - 1 ) return b . state . draggingText ( a ) , void setTimeout ( function ( ) { b . display . input . focus ( ) } , 20 ) ; try { var f = a . dataTransfer . getData ( "Text" ) ; if ( f ) { if ( b . state . draggingText && ! ( yf ? a . altKey : a . ctrlKey ) ) var j = b . listSelections ( ) ; if ( Ca ( b . doc , oa ( c , c ) ) , j ) for ( var i = 0 ; i < j . length ; ++ i ) Cc ( b . doc , "" , j [ i ] . anchor , j [ i ] . head , "drag" ) ; b . replaceSelection ( f , "around" , "paste" ) , b . display . input . focus ( ) } } catch ( a ) { } } } } function _b ( a , b ) { if ( nf && ( ! a . state . draggingText || + new Date - Of < 100 ) ) return void wg ( b ) ; if ( ! ve ( a , b ) && ! Sb ( a . display , b ) && ( b . dataTransfer . setData ( "Text" , a . getSelection ( ) ) , b . dataTransfer . setDragImage && ! tf ) ) { var c = Me ( "img" , null , null , "position: fixed; left: 0; top: 0;" ) ; c . src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" , sf && ( c . width = c . height = 1 , a . display . wrapper . appendChi
m . to == o && ( m = ! 1 ) } if ( ! m && s . length ) for ( var t = 0 ; t < s . length ; ++ t ) Nd ( b , 0 , s [ t ] ) } if ( o >= n ) break ; for ( var w = Math . min ( n , r ) ; ; ) { if ( q ) { var x = o + q . length ; if ( ! m ) { var y = x > w ? q . slice ( 0 , w - o ) : q ; b . addToken ( b , y , g ? g + i : i , k , o + y . length == r ? j : "" , l , h ) } if ( x >= w ) { q = q . slice ( w - o ) , o = w ; break } o = x , k = "" } q = e . slice ( f , f = c [ p ++ ] ) , g = Hd ( c [ p ++ ] , b . cm . options ) } } else for ( var p = 1 ; p < c . length ; p += 2 ) b . addToken ( b , e . slice ( f , f = c [ p ] ) , Hd ( c [ p + 1 ] , b . cm . options ) ) } function Pd ( a , b ) { return 0 == b . from . ch && 0 == b . to . ch && "" == Ce ( b . text ) && ( ! a . cm || a . cm . options . wholeLineUpdateBefore ) } function Qd ( a , b , c , d ) { function e ( a ) { return c ? c [ a ] : null } function f ( a , c , e ) { xd ( a , c , e , d ) , te ( a , "change" , a , b ) } function g ( a , b ) { for ( var c = a , f = [ ] ; c < b ; ++ c ) f . push ( new ng ( j [ c ] , e ( c ) , d ) ) ; return f } var h = b . from , i = b . to , j = b . text , k = Vd ( a , h . line ) , l = Vd ( a , i . line ) , m = Ce ( j ) , n = e ( j . length - 1 ) , o = i . line - h . line ; if ( b . full ) a . insert ( 0 , g ( 0 , j . length ) ) , a . remove ( j . length , a . size - j . length ) ; else if ( Pd ( a , b ) ) { var p = g ( 0 , j . length - 1 ) ; f ( l , l . text , n ) , o && a . remove ( h . line , o ) , p . length && a . insert ( h . line , p ) } else if ( k == l ) if ( 1 == j . length ) f ( k , k . text . slice ( 0 , h . ch ) + m + k . text . slice ( i . ch ) , n ) ; else { var p = g ( 1 , j . length - 1 ) ; p . push ( new ng ( m + k . text . slice ( i . ch ) , n , d ) ) , f ( k , k . text . slice ( 0 , h . ch ) + j [ 0 ] , e ( 0 ) ) , a . insert ( h . line + 1 , p ) } else if ( 1 == j . length ) f ( k , k . text . slice ( 0 , h . ch ) + j [ 0 ] + l . text . slice ( i . ch ) , e ( 0 ) ) , a . remove ( h . line + 1 , o ) ; else { f ( k , k . text . slice ( 0 , h . ch ) + j [ 0 ] , e ( 0 ) ) , f ( l , m + l . text . slice ( i . ch ) , n ) ; var p = g ( 1 , j . length - 1 ) ; o > 1 && a . remove ( h . line + 1 , o - 1 ) , a . insert ( h . line + 1 , p ) } te ( a , "change" , a , b ) } function Rd ( a ) { this . lines = a , this . parent = null ; for ( var b = 0 , c = 0 ; b < a . length ; ++ b ) a [ b ] . parent = this , c += a [ b ] . height ; this . height = c } function Sd ( a ) { this . children = a ; for ( var b = 0 , c = 0 , d = 0 ; d < a . length ; ++ d ) { var e = a [ d ] ; b += e . chunkSize ( ) , c += e . height , e . parent = this } this . size = b , this . height = c , this . parent = null } function Td ( a , b , c ) { function d ( a , e , f ) { if ( a . linked ) for ( var g = 0 ; g < a . linked . length ; ++ g ) { var h = a . linked [ g ] ; if ( h . doc != e ) { var i = f && h . sharedHist ; c && ! i || ( b ( h . doc , i ) , d ( h . doc , a , i ) ) } } } d ( a , null , ! 0 ) } function Ud ( a , b ) { if ( b . cm ) throw new Error ( "This document is already in use." ) ; a . doc = b , b . cm = a , g ( a ) , c ( a ) , a . options . lineWrapping || m ( a ) , a . options . mode = b . modeOption , Ib ( a ) } function Vd ( a , b ) { if ( b -= a . first , b < 0 || b >= a . size ) throw new Error ( "There is no line " + ( b + a . first ) + " in the document." ) ; for ( var c = a ; ! c . lines ; ) for ( var d = 0 ; ; ++ d ) { var e = c . children [ d ] , f = e . chunkSize ( ) ; if ( b < f ) { c = e ; break } b -= f } return c . lines [ b ] } function Wd ( a , b , c ) { var d = [ ] , e = b . line ; return a . iter ( b . line , c . line + 1 , function ( a ) { var f = a . text ; e == c . line && ( f = f . slice ( 0 , c . ch ) ) , e == b . line && ( f = f . slice ( b . ch ) ) , d . push ( f ) , ++ e } ) , d } function Xd ( a , b , c , d ) { var e = [ ] ; return a . iter ( b , c , function ( a ) { var b = a . text ; d && ( b = d ( a ) ) , e . push ( b ) } ) , e } function Yd ( a , b ) { var c = b - a . height ; if ( c ) for ( var d = a ; d ; d = d . parent ) d . height += c } function Zd ( a ) { if ( null == a . parent ) return null ; for ( var b = a . parent , c = De ( b . lines , a ) , d = b . parent ; d ; b = d , d = d . parent ) for ( var e = 0 ; d . children [ e ] != b ; ++ e ) c += d . children [ e ] . chunkSize ( ) ; return c + b . first } function $d ( a , b ) { var c = a . first ; a : do { for ( var d = 0 ; d < a . children . length ; ++ d ) { var e = a . children [ d ] , f = e . height ; if ( b < f ) { a = e ; continue a } b -= f , c += e . chunkSize ( ) } return c } while ( ! a . lines ) ; for ( var d = 0 ; d < a . lines . length ; ++ d ) { var g = a . lines [ d ] , h = g . height ; if ( b < h ) break ; b -= h } return c + d } function _d ( a ) { a = od ( a ) ; for ( var b = 0 , c = a . parent , d = 0 ; d < c . lines . length ; ++ d ) { var e = c . lines [ d ] ; if ( e == a ) break ; b += e . height } for ( var f = c . parent ; f ; c = f , f = c . parent ) for ( var d = 0 ; d < f . children . length ; ++ d ) { var g = f . children [ d ] ; if ( g == c ) break ; b += g . height } return b } function ae ( a ) { var b = a . order ; return null == b && ( b = a . order = $g ( a . text ) ) , b } function be ( a ) { this . done = [ ] , this . undone = [ ] , this . undoDepth = 1 / 0 , this . lastModTime = this . lastSelTime = 0 , this . lastOp = this . lastSelOp = null , this . lastOrigin = this . lastSelOrigin = null , this . generation = this . maxGeneration = a || 1 } function ce ( a , b ) { var c = { from : V ( b . from ) , to : Uf ( b ) , text : Wd ( a , b . from , b . to ) } ; return je ( a , c , b . from . line , b . to . line + 1 ) , Td ( a , function ( a ) { je ( a , c , b . from . line , b . to . line + 1 ) } , ! 0 ) , c } function de ( a ) { for ( ; a . length ; ) { var b = Ce ( a ) ; if ( ! b . ranges ) break ; a . pop ( ) } } function ee ( a , b ) { return b ? ( de ( a . done ) , Ce ( a . done ) ) : a . done . length && ! Ce ( a . done ) . ranges ? Ce ( a . done ) : a . done . length > 1 && ! a . done [ a . done . length - 2 ] . ranges ? ( a . done . pop ( ) , Ce ( a . done ) ) : void 0 } function fe ( a , b , c , d ) { var e = a . history ; e . undone . length = 0 ; var f , g = + new Da
f . sizer . appendChild ( b ) , "over" == d ) g = a . top ; else if ( "above" == d || "near" == d ) { var i = Math . max ( f . wrapper . clientHeight , this . doc . height ) , j = Math . max ( f . sizer . clientWidth , f . lineSpace . clientWidth ) ; ( "above" == d || a . bottom + b . offsetHeight > i ) && a . top > b . offsetHeight ? g = a . top - b . offsetHeight : a . bottom + b . offsetHeight <= i && ( g = a . bottom ) , h + b . offsetWidth > j && ( h = j - b . offsetWidth ) } b . style . top = g + "px" , b . style . left = b . style . right = "" , "right" == e ? ( h = f . sizer . clientWidth - b . offsetWidth , b . style . right = "0px" ) : ( "left" == e ? h = 0 : "middle" == e && ( h = ( f . sizer . clientWidth - b . offsetWidth ) / 2 ) , b . style . left = h + "px" ) , c && Fc ( this , h , g , h + b . offsetWidth , g + b . offsetHeight ) } , triggerOnKeyDown : Eb ( ic ) , triggerOnKeyPress : Eb ( lc ) , triggerOnKeyUp : kc , execCommand : function ( a ) { if ( dg . hasOwnProperty ( a ) ) return dg [ a ] ( this ) } , triggerElectric : Eb ( function ( a ) { aa ( this , a ) } ) , findPosH : function ( a , b , c , d ) { var e = 1 ; b < 0 && ( e = - 1 , b = - b ) ; for ( var f = 0 , g = qa ( this . doc , a ) ; f < b && ( g = Nc ( this . doc , g , e , c , d ) , ! g . hitSide ) ; ++ f ) ; return g } , moveH : Eb ( function ( a , b ) { var c = this ; c . extendSelectionsBy ( function ( d ) { return c . display . shift || c . doc . extend || d . empty ( ) ? Nc ( c . doc , d . head , a , b , c . options . rtlMoveVisually ) : a < 0 ? d . from ( ) : d . to ( ) } , Fg ) } ) , deleteH : Eb ( function ( a , b ) { var c = this . doc . sel , d = this . doc ; c . somethingSelected ( ) ? d . replaceSelection ( "" , null , "+delete" ) : Mc ( this , function ( c ) { var e = Nc ( d , c . head , a , b , ! 1 ) ; return a < 0 ? { from : e , to : c . head } : { from : c . head , to : e } } ) } ) , findPosV : function ( a , b , c , d ) { var e = 1 , f = d ; b < 0 && ( e = - 1 , b = - b ) ; for ( var g = 0 , h = qa ( this . doc , a ) ; g < b ; ++ g ) { var i = mb ( this , h , "div" ) ; if ( null == f ? f = i . left : i . left = f , h = Oc ( this , i , e , c ) , h . hitSide ) break } return h } , moveV : Eb ( function ( a , b ) { var c = this , d = this . doc , e = [ ] , f = ! c . display . shift && ! d . extend && d . sel . somethingSelected ( ) ; if ( d . extendSelectionsBy ( function ( g ) { if ( f ) return a < 0 ? g . from ( ) : g . to ( ) ; var h = mb ( c , g . head , "div" ) ; null != g . goalColumn && ( h . left = g . goalColumn ) , e . push ( h . left ) ; var i = Oc ( c , h , a , b ) ; return "page" == b && g == d . sel . primary ( ) && Hc ( c , null , lb ( c , i , "div" ) . top - h . top ) , i } , Fg ) , e . length ) for ( var g = 0 ; g < d . sel . ranges . length ; g ++ ) d . sel . ranges [ g ] . goalColumn = e [ g ] } ) , findWordAt : function ( a ) { var b = this . doc , c = Vd ( b , a . line ) . text , d = a . ch , e = a . ch ; if ( c ) { var f = this . getHelper ( a , "wordChars" ) ; ( a . xRel < 0 || e == c . length ) && d ? -- d : ++ e ; for ( var g = c . charAt ( d ) , h = Je ( g , f ) ? function ( a ) { return Je ( a , f ) } : /\s/ . test ( g ) ? function ( a ) { return /\s/ . test ( a ) } : function ( a ) { return ! /\s/ . test ( a ) && ! Je ( a ) } ; d > 0 && h ( c . charAt ( d - 1 ) ) ; ) -- d ; for ( ; e < c . length && h ( c . charAt ( e ) ) ; ) ++ e } return new ma ( Ff ( a . line , d ) , Ff ( a . line , e ) ) } , toggleOverwrite : function ( a ) { null != a && a == this . state . overwrite || ( ( this . state . overwrite = ! this . state . overwrite ) ? Rg ( this . display . cursorDiv , "CodeMirror-overwrite" ) : Qg ( this . display . cursorDiv , "CodeMirror-overwrite" ) , zg ( this , "overwriteToggle" , this , this . state . overwrite ) ) } , hasFocus : function ( ) { return this . display . input . getField ( ) == Pe ( ) } , scrollTo : Eb ( function ( a , b ) { null == a && null == b || Jc ( this ) , null != a && ( this . curOp . scrollLeft = a ) , null != b && ( this . curOp . scrollTop = b ) } ) , getScrollInfo : function ( ) { var a = this . display . scroller ; return { left : a . scrollLeft , top : a . scrollTop , height : a . scrollHeight - Ta ( this ) - this . display . barHeight , width : a . scrollWidth - Ta ( this ) - this . display . barWidth , clientHeight : Va ( this ) , clientWidth : Ua ( this ) } } , scrollIntoView : Eb ( function ( a , b ) { if ( null == a ? ( a = { from : this . doc . sel . primary ( ) . head , to : null } , null == b && ( b = this . options . cursorScrollMargin ) ) : "number" == typeof a ? a = { from : Ff ( a , 0 ) , to : null } : null == a . from && ( a = { from : a , to : null } ) , a . to || ( a . to = a . from ) , a . margin = b || 0 , null != a . from . line ) Jc ( this ) , this . curOp . scrollToPos = a ; else { var c = Gc ( this , Math . min ( a . from . left , a . to . left ) , Math . min ( a . from . top , a . to . top ) - a . margin , Math . max ( a . from . right , a . to . right ) , Math . max ( a . from . bottom , a . to . bottom ) + a . margin ) ; this . scrollTo ( c . scrollLeft , c . scrollTop ) } } ) , setSize : Eb ( function ( a , b ) { function c ( a ) { return "number" == typeof a || /^\d+$/ . test ( String ( a ) ) ? a + "px" : a } var d = this ; null != a && ( d . display . wrapper . style . width = c ( a ) ) , null != b && ( d . display . wrapper . style . height = c ( b ) ) , d . options . lineWrapping && fb ( this ) ; var e = d . display . viewFrom ; d . doc . iter ( e , d . display . viewTo , function ( a ) { if ( a . widgets ) for ( var b = 0 ; b < a . widgets . length ; b ++ ) if ( a . widgets [ b ] . noHScroll ) { Jb ( d , e , "widget" ) ; break } ++ e } ) , d . curOp . forceUpdate = ! 0 , zg ( d , "refresh" , this ) } ) , operation : function ( a ) { return Cb ( this , a ) } , refresh : Eb ( function ( ) { var a = this . display . ca
} } ) , rg . prototype . eachLine = rg . prototype . iter ; var sg = "iter insert remove copy getEditor constructor" . split ( " " ) ; for ( var tg in rg . prototype ) rg . prototype . hasOwnProperty ( tg ) && De ( sg , tg ) < 0 && ( a . prototype [ tg ] = function ( a ) { return function ( ) { return a . apply ( this . doc , arguments ) } } ( rg . prototype [ tg ] ) ) ; ye ( rg ) ; var ug = a . e _preventDefault = function ( a ) { a . preventDefault ? a . preventDefault ( ) : a . returnValue = ! 1 } , vg = a . e _stopPropagation = function ( a ) { a . stopPropagation ? a . stopPropagation ( ) : a . cancelBubble = ! 0 } , wg = a . e _stop = function ( a ) { ug ( a ) , vg ( a ) } , xg = a . on = function ( a , b , c ) { if ( a . addEventListener ) a . addEventListener ( b , c , ! 1 ) ; else if ( a . attachEvent ) a . attachEvent ( "on" + b , c ) ; else { var d = a . _handlers || ( a . _handlers = { } ) , e = d [ b ] || ( d [ b ] = [ ] ) ; e . push ( c ) } } , yg = a . off = function ( a , b , c ) { if ( a . removeEventListener ) a . removeEventListener ( b , c , ! 1 ) ; else if ( a . detachEvent ) a . detachEvent ( "on" + b , c ) ; else { var d = a . _handlers && a . _handlers [ b ] ; if ( ! d ) return ; for ( var e = 0 ; e < d . length ; ++ e ) if ( d [ e ] == c ) { d . splice ( e , 1 ) ; break } } } , zg = a . signal = function ( a , b ) { var c = a . _handlers && a . _handlers [ b ] ; if ( c ) for ( var d = Array . prototype . slice . call ( arguments , 2 ) , e = 0 ; e < c . length ; ++ e ) c [ e ] . apply ( null , d ) } , Ag = null , Bg = 30 , Cg = a . Pass = { toString : function ( ) { return "CodeMirror.Pass" } } , Dg = { scroll : ! 1 } , Eg = { origin : "*mouse" } , Fg = { origin : "+move" } ; ze . prototype . set = function ( a , b ) { clearTimeout ( this . id ) , this . id = setTimeout ( b , a ) } ; var Gg = a . countColumn = function ( a , b , c , d , e ) { null == b && ( b = a . search ( /[^\s\u00a0]/ ) , b == - 1 && ( b = a . length ) ) ; for ( var f = d || 0 , g = e || 0 ; ; ) { var h = a . indexOf ( "\t" , f ) ; if ( h < 0 || h >= b ) return g + ( b - f ) ; g += h - f , g += c - g % c , f = h + 1 } } , Hg = [ "" ] , Ig = function ( a ) { a . select ( ) } ; wf ? Ig = function ( a ) { a . selectionStart = 0 , a . selectionEnd = a . value . length } : nf && ( Ig = function ( a ) { try { a . select ( ) } catch ( b ) { } } ) ; var Jg , Kg = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/ , Lg = a . isWordChar = function ( a ) { return /\w/ . test ( a ) || a > " " && ( a . toUpperCase ( ) != a . toLowerCase ( ) || Kg . test ( a ) ) } , Mg = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/ ; Jg = document . createRange ? function ( a , b , c , d ) { var e = document . createRange ( ) ; return e . setEnd ( d || a , c ) , e . setStart ( a , b ) , e } : function ( a , b , c ) { var d = document . body . createTextRange ( ) ; try { d . moveToElementText ( a . parentNode ) } catch ( e ) { return d } return d . collapse ( ! 0 ) , d . moveEnd ( "character" , c ) , d . moveStart ( "
this . container . attr ( "items" , [ ] ) } , restore : function ( ) { BI . each ( this . renderedCells , function ( a , b ) { b . el . _destroy ( ) } ) , this . _clearChildren ( ) , this . renderedCells = [ ] , this . renderedKeys = [ ] , this . renderRange = { } , this . _scrollLock = ! 1 } , populate : function ( a ) { a && a !== this . options . items && this . restore ( ) , this . _populate ( a ) } } ) , BI . GridView . EVENT _SCROLL = "EVENT_SCROLL" , BI . shortcut ( "bi.grid_view" , BI . GridView ) , BI . Popover = BI . inherit ( BI . Widget , { _constant : { SIZE : { SMALL : "small" , NORMAL : "normal" , BIG : "big" } } , _defaultConfig : function ( ) { return BI . extend ( BI . Popover . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-popover bi-card" , size : "normal" , header : null , body : null , footer : null } ) } , render : function ( ) { var a = this , b = this . options ; this . startX = 0 , this . startY = 0 , this . tracker = new BI . MouseMoveTracker ( function ( b , c ) { var d = a . _calculateSize ( ) , e = $ ( "body" ) . width ( ) , f = $ ( "body" ) . height ( ) ; a . startX += b , a . startY += c , a . element . css ( { left : BI . clamp ( a . startX , 0 , e - d . width ) + "px" , top : BI . clamp ( a . startY , 0 , f - d . height ) + "px" } ) , BI . Resizers . _resize ( ) } , function ( ) { a . tracker . releaseMouseMoves ( ) } , window ) ; var c = { north : { el : { type : "bi.border" , cls : "bi-message-title bi-background" , ref : function ( b ) { a . dragger = b } , items : { center : { el : { type : "bi.absolute" , items : [ { el : BI . isPlainObject ( b . header ) ? BI . createWidget ( b . header ) : { type : "bi.label" , height : 36 , text : b . header , title : b . header , textAlign : "left" } , left : 10 , top : 0 , right : 0 , bottom : 0 } ] } } , east : { el : { type : "bi.icon_button" , cls : "bi-message-close close-font" , height : 36 , handler : function ( ) { a . close ( ) } } , width : 60 } } } , height : 36 } , center : { el : { type : "bi.absolute" , items : [ { el : BI . createWidget ( b . body ) , left : 20 , top : 20 , right : 20 , bottom : 0 } ] } } } ; b . footer && ( c . south = { el : { type : "bi.absolute" , items : [ { el : BI . createWidget ( b . footer ) , left : 20 , top : 0 , right : 20 , bottom : 0 } ] } , height : 44 } ) ; var d = this . _calculateSize ( ) ; return { type : "bi.border" , items : c , width : d . width , height : d . height } } , mounted : function ( ) { var a = this ; this . dragger . element . mousedown ( function ( b ) { var c = a . element . offset ( ) ; a . startX = c . left , a . startY = c . top , a . tracker . captureMouseMoves ( b ) } ) } , _calculateSize : function ( ) { var a = this . options , b = { } ; if ( BI . isNotNull ( a . size ) ) switch ( a . size ) { case this . _constant . SIZE . SMALL : b . width = 450 , b . height = 220 ; break ; case this . _constant . SIZE . BIG : b . width = 900 , b . height = 500 ; break ; default : b . width = 550 , b . height = 500 } return { width : a . width || b . width , height : a . height || b . height } } , hide : function ( ) { } , open : function ( ) { this . show ( ) , this . fireEvent ( BI . Popover . EVENT _OPEN , arguments ) } , close : function ( ) { this . hide ( ) , this . fireEvent ( BI . Popover . EVENT _CLOSE , arguments ) } , setZindex : function ( a ) { this . element . css ( { "z-index" : a } ) } , destroyed : function ( ) { } } ) , BI . shortcut ( "bi.popover" , BI . Popover ) , BI . BarPopover = BI . inherit ( BI . Popover , { _defaultConfig : function ( ) { return BI . extend ( BI . BarPopover . superclass . _defaultConfig . apply ( this , arguments ) , { btns : [ BI . i18nText ( BI . i18nText ( "BI-Basic_Sure" ) ) , BI . i18nText ( BI . i18nText ( "BI-Basic_Cancel" ) ) ] } ) } , beforeCreate : function ( ) { var a = this , b = this . options ; b . footer || ( b . footer = { type : "bi.right_vertical_adapt" , lgap : 10 , items : [ { type : "bi.button" , text : this . options . btns [ 1 ] , value : 1 , level : "ignore" , handler : function ( b ) { a . fireEvent ( BI . Popover . EVENT _CANCEL , b ) , a . close ( b ) } } , { type : "bi.button" , text : this . options . btns [ 0 ] , warningTitle : b . warningTitle , value : 0 , handler : function ( b ) { a . fireEvent ( BI . Popover . EVENT _CONFIRM , b ) , a . close ( b ) } } ] } ) } } ) , BI . shortcut ( "bi.bar_popover" , BI . BarPopover ) , BI . Popover . EVENT _CLOSE = "EVENT_CLOSE" , BI . Popover . EVENT _OPEN = "EVENT_OPEN" , BI . Popover . EVENT _CANCEL = "EVENT_CANCEL" , BI . Popover . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . PopupView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . PopupView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-popup-view" , maxWidth : "auto" , minWidth : 100 , minHeight : 25 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , vgap : 0 , hgap : 0 , direction : BI . Direction . Top , stopEvent : ! 1 , stopPropagation : ! 1 , logic : { dynamic : ! 0 } , tool : ! 1 , tabs : [ ] , buttons : [ ] , el : { type : "bi.button_group" , items : [ ] , chooseType : 0 , behaviors : { } , layouts : [ { type : "bi.vertical" } ] } } ) } , _init : function ( ) { BI . PopupView . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = function ( a ) { a . stopPropagation ( ) } , d = function ( a ) { return a . stopEvent ( ) , ! 1 } ; this . element . css ( { "z-index" : BI . zIndex _popup , "min-width" : b . minWid
return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-icon-text-icon-item" , logic : { dynamic : ! 1 } , iconCls1 : "close-ha-font" , iconCls2 : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . IconTextIconItem . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . _const ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , hgap : a . textHgap , vgap : a . textVgap , lgap : a . textLgap , rgap : a . textRgap , text : a . text , value : a . value , keyword : a . keyword , height : a . height } ) ; var b = BI . createWidget ( { type : "bi.center_adapt" , cls : a . iconCls1 , width : a . height , height : a . height , items : [ { el : { type : "bi.icon" , width : a . iconWidth , height : a . iconHeight } } ] } ) , c = BI . createWidget ( { type : "bi.layout" , width : a . height } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.center_adapt" , cls : a . iconCls2 , width : a . height , items : [ { el : { type : "bi.icon" , width : a . iconWidth , height : a . iconHeight } } ] } , top : 0 , bottom : 0 , right : 0 } ] } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , b , this . text , c ) } ) ) ) ) } , doClick : function ( ) { BI . IconTextIconItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . IconTextIconItem . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } } ) , BI . IconTextIconItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_icon_item" , BI . IconTextIconItem ) , BI . IconTextItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . IconTextItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-icon-text-item" , direction : BI . Direction . Left , logic : { dynamic : ! 1 } , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . IconTextItem . 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.center_adapt" , width : a . height , height : a . height , items : [ { el : { type : "bi.icon" , width : a . iconWidth , height : a . iconHeight } } ] } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( a . direction ) , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( a . direction , 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 . IconTextItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . IconTextItem . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } } ) , BI . IconTextItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_item" , BI . IconTextItem ) , BI . TextIconItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . TextIconItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-icon-item" , logic : { dynamic : ! 1 } , cls : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . TextIconItem . superclass . _i
} , 15 ) } , ! 1 ) , e . open ( "post" , a . url + "&filename=" + window . encodeURIComponent ( a . file . fileName ) , ! 0 ) , e . upload ) e . onreadystatechange = function ( ) { switch ( e . readyState ) { case 4 : var b = BI . jsonDecode ( e . responseText ) ; a . file . type . indexOf ( "image" ) != - 1 && ( b . attach _type = "image" ) , b . filename = a . file . fileName , 1 == a . maxlength ? a . attach _array [ 0 ] = b : a . attach _array . push ( b ) } } , isFunction ( f . onloadstart ) && f . onloadstart ( ) ; else { var h = { loaded : 0 , total : a . file . fileSize || a . file . size , simulation : ! 0 } ; h . interval = setInterval ( function ( ) { h . loaded += 256 , h . total <= h . loaded && ( h . loaded = h . total ) , f . onprogress ( h ) } , 100 ) , e . onabort = function ( ) { f . onabort ( { } ) } , e . onerror = function ( ) { f . onerror ( { } ) } , e . onreadystatechange = function ( ) { switch ( e . readyState ) { case 2 : case 3 : h . total <= h . loaded && ( h . loaded = h . total ) , f . onprogress ( h ) ; break ; case 4 : if ( clearInterval ( h . interval ) , h . interval = 0 , h . loaded = h . total , f . onprogress ( h ) , 199 < e . status && e . status < 400 ) { f . onload ( { } ) ; var b = BI . jsonDecode ( e . responseText ) ; b . filename = a . file . fileName , a . file . type . indexOf ( "image" ) != - 1 && ( b . attach _type = "image" ) , a . attach _array . push ( b ) } else f . onerror ( { } ) } } , f . onloadstart ( h ) } var i = "AjaxUploadBoundary" + ( new Date ) . getTime ( ) ; if ( e . setRequestHeader ( "Content-Type" , "multipart/form-data; boundary=" + i ) , a . file . getAsBinary ) e [ e . sendAsBinary ? "sendAsBinary" : "send" ] ( multipart ( i , a . name , a . file ) ) ; else { e . setRequestHeader ( "Content-Type" , "multipart/form-data" ) ; var j = new FormData ; j . append ( "FileData" , a . file ) , e . send ( j ) } return a } : function ( handler , maxSize , width , height ) { var url = handler . url . concat ( - 1 === handler . url . indexOf ( "?" ) ? "?" : "&" , "AjaxUploadFrame=true" ) , rpe = { loaded : 1 , total : 100 , simulation : ! 0 , interval : setInterval ( function ( ) { rpe . loaded < rpe . total && ++ rpe . loaded , isFunction ( handler . onprogress ) && handler . onprogress ( rpe , { } ) } , 100 ) } , onload = function ( ) { iframe . onreadystatechange = iframe . onload = iframe . onerror = null , form . parentNode . removeChild ( form ) , form = null , clearInterval ( rpe . interval ) ; try { var a = ( iframe . contentWindow . document || iframe . contentWindow . contentDocument ) . body . innerHTML , b = BI . jsonDecode ( a ) ; handler . file . type . indexOf ( "image" ) != - 1 && ( b . attach _type = "image" ) , b . filename = BI . cjkDecode ( handler . file . fileName ) , 1 == handler . maxlength ? handler . attach _array [ 0 ] = b : handler . attach _array . push ( b ) } catch ( c ) { isFunction ( handler . onerror ) && handler . onerror ( rpe , event || window . event ) } isFunction ( handler . onload ) && handler . onload ( rpe , { responseText : a } ) } , target = [ "AjaxUpload" , ( new Date ) . getTime ( ) , String ( Math . random ( ) ) . substring ( 2 ) ] . join ( "_" ) ; try { var form = document . createElement ( '<form enctype="multipart/form-data"></form>' ) , iframe = handler . iframe || ( handler . iframe = document . createElement ( '<iframe id="' + target + '" name="' + target + '" src="' + url + '"></iframe>' ) ) } catch ( e ) { var form = document . createElement ( "form" ) , iframe = handler . iframe || ( handler . iframe = document . createElement ( "iframe" ) ) ; form . setAttribute ( "enctype" , "multipart/form-data" ) , iframe . setAttribute ( "name" , iframe . id = target ) , iframe . setAttribute ( "src" , url ) } with ( iframe . style . position = "absolute" , iframe . style . left = iframe . style . top = "-10000px" , iframe . onload = onload , iframe . onerror = function ( a ) { isFunction ( handler . onerror ) && handler . onerror ( rpe , a || window . event ) } , iframe . onreadystatechange = function ( ) { /loaded|complete/i . test ( iframe . readyState ) ? onload ( ) : isFunction ( handler . onloadprogress ) && ( rpe . loaded < rpe . total && ++ rpe . loaded , handler . onloadprogress ( rpe , { readyState : { loading : 2 , interactive : 3 , loaded : 4 , complete : 4 } [ iframe . readyState ] || 1 } ) ) } , form . setAttribute ( "action" , handler . url ) , form . setAttribute ( "target" , iframe . id ) , form . setAttribute ( "method" , "post" ) , form . appendChild ( handler . file ) , form . style . display = "none" , isFunction ( handler . onloadstart ) && handler . onloadstart ( rpe , { } ) , document . body || document . documentElement ) appendChild ( iframe ) , appendChild ( form ) , form . submit ( ) ; return handler } , xhr = null , sendFile } ( Object . prototype . toString ) , sendFiles = function ( a , b , c , d ) { var e = a . files . length , f = a . onload , g = a . onloadstart ; for ( a . current = 0 , a . total = 0 , a . sent = 0 ; a . current < e ; ) a . total += a . files [ a . current ] . fileSize || a . files [ a . current ] . size , a . current ++ ; return a . current = 0 , e && a . files [ 0 ] . fileSize !== - 1 ? ( a . file = a . files [ a . current ] , sendFile ( a , b , c , d ) . onload = function ( h , i ) { a . onloadstart = null , a . sent += a . files [ a . current ] . fileSize || a . files [ a . current ] . si
} return n . zerolessFloat && a . match ( /^(?:\d+(?:e[+-]?\d+)?)/i ) ? "number" : a . match ( /^\.+/ ) ? null : n . ODBCdotTable && a . match ( /^[\w\d_]+/ ) ? "variable-2" : void 0 } function e ( a ) { return function ( b , c ) { for ( var e , f = ! 1 ; null != ( e = b . next ( ) ) ; ) { if ( e == a && ! f ) { c . tokenize = d ; break } f = ! f && "\\" == e } return "string" } } function f ( a ) { return function ( b , c ) { var e = b . match ( /^.*?(\/\*|\*\/)/ ) ; return e ? "/*" == e [ 1 ] ? c . tokenize = f ( a + 1 ) : a > 1 ? c . tokenize = f ( a - 1 ) : c . tokenize = d : b . skipToEnd ( ) , "comment" } } function g ( a , b , c ) { b . context = { prev : b . context , indent : a . indentation ( ) , col : a . column ( ) , type : c } } function h ( a ) { a . indent = a . context . indent , a . context = a . context . prev } var i = c . client || { } , j = c . atoms || { "false" : ! 0 , "true" : ! 0 , "null" : ! 0 } , k = c . builtin || { } , l = c . keywords || { } , m = c . operatorChars || /^[*+\-%<>!=&|~^]/ , n = c . support || { } , o = c . hooks || { } , p = c . dateSQL || { date : ! 0 , time : ! 0 , timestamp : ! 0 } , q = c . functions || { } ; return { startState : function ( ) { return { tokenize : d , context : null } } , token : function ( a , b ) { if ( a . sol ( ) && b . context && null == b . context . align && ( b . context . align = ! 1 ) , b . tokenize == d && a . eatSpace ( ) ) return null ; var c = b . tokenize ( a , b ) ; if ( "comment" == c ) return c ; b . context && null == b . context . align && ( b . context . align = ! 0 ) ; var e = a . current ( ) ; return "(" == e ? g ( a , b , ")" ) : "[" == e ? g ( a , b , "]" ) : b . context && b . context . type == e && h ( b ) , c } , indent : function ( c , d ) { var e = c . context ; if ( ! e ) return a . Pass ; var f = d . charAt ( 0 ) == e . type ; return e . align ? e . col + ( f ? 0 : 1 ) : e . indent + ( f ? 0 : b . indentUnit ) } , blockCommentStart : "/*" , blockCommentEnd : "*/" , lineComment : n . commentSlashSlash ? "//" : n . commentHash ? "#" : "--" } } ) , function ( ) { function b ( a ) { for ( var b = { } , c = a . split ( " " ) , d = 0 ; d < c . length ; ++ d ) b [ c [ d ] ] = ! 0 ; return b } var c = "alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit " ; a . defineMIME ( "text/x-sql" , { name : "sql" , keywords : b ( c + "begin" ) , builtin : b ( "bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric" ) , atoms : b ( "false true null unknown" ) , operatorChars : /^[*+\-%<>!=]/ , dateSQL : b ( "date time timestamp" ) , support : b ( "ODBCdotTable doubleQuote binaryNumber hexNumber" ) , functions : BI . makeObject ( BI . FormulaCollections , ! 0 ) } ) } ( ) } ) , BI . SQLEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return $ . extend ( BI . CodeEditor . superclass . _defaultConfig . apply ( ) , { baseCls : "bi-sql-editor" , value : "" , lineHeight : 2 , showHint : ! 0 , supportFunction : ! 1 , supportParam : ! 1 } ) } , _init : function ( ) { BI . CodeEditor . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; this . editor = CodeMirror ( this . element [ 0 ] , { mode : "text/x-sql" , textWrapping : ! 0 , lineWrapping : ! 0 , lineNumbers : ! 1 } ) , 1 === a . lineHeight ? this . element . addClass ( "codemirror-low-line-height" ) : this . element . addClass ( "codemirror-high-line-height" ) , this . editor . on ( "change" , function ( c , d ) { b . _checkWaterMark ( ) , a . showHint && CodeMirror . showHint ( c , CodeMirror . sqlHint , { completeSingle : ! 1 , supportFunction : a . supportFunction } ) , BI . nextTick ( function ( ) { b . fireEvent ( BI . FormulaEditor . EVENT _CHANGE ) } ) } ) , this . editor . on ( "focus" , function ( ) { b . _checkWaterMark ( ) , b . fireEvent ( BI . FormulaEditor . EVENT _FOCUS ) } ) , this . editor . on ( "blur" , function ( ) { b . fireEvent ( BI . FormulaEditor . EVENT _BLUR ) } ) , this . watermark = BI . createWidget ( { type : "bi.label" , text : BI . i18nText ( "BI-Please_Enter_SQL" ) , cls : "bi-water-mark" , whiteSpace : "nowrap" , textAlign : "left" } ) , this . watermark . element . bind ( "mousedown" , function ( a ) { b . insertString ( "" ) , b . editor . focus ( ) , a . stopEvent ( ) } ) , this . watermark . element . bind ( "click" , function ( a ) { b . editor . focus ( ) , a . stopEvent ( ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . watermark , top : 0 , left : 5 } ] } ) , BI . isKey ( a . value ) && BI . nextTick ( function ( ) { b . setValue ( a . value ) } ) } , insertString : function ( a ) { this . editor . replaceSelection ( a ) , this . editor . focus ( ) } , insertParam : function ( a ) { var b = a , c = this . editor . getCursor ( ) ; this . editor . replaceSelection ( a ) ; var d = this . editor . getCursor ( ) , e = { className : "param" , atomic : ! 0 } ; e . value = b , this . editor . markText ( c , d , e ) , this . editor . replaceSelection ( " " ) , this . edi
if ( Q [ 0 ] = 2 * O [ 0 ] - Q [ 0 ] , Q [ 1 ] = 2 * O [ 1 ] - Q [ 1 ] , k ) return [ Q , S , T ] [ D ] ( o ) ; o = [ Q , S , T ] [ D ] ( o ) . join ( ) [ I ] ( "," ) ; for ( var U = [ ] , V = 0 , W = o . length ; V < W ; V ++ ) U [ V ] = V % 2 ? p ( o [ V - 1 ] , o [ V ] , n ) . y : p ( o [ V ] , o [ V + 1 ] , n ) . x ; return U } , Ga = function ( a , b , c , d , e , f , g , h , i ) { var j = 1 - i ; return { x : Q ( j , 3 ) * a + 3 * Q ( j , 2 ) * i * c + 3 * j * i * i * e + Q ( i , 3 ) * g , y : Q ( j , 3 ) * b + 3 * Q ( j , 2 ) * i * d + 3 * j * i * i * f + Q ( i , 3 ) * h } } , Ha = e ( function ( a , b , c , d , e , f , g , h ) { var i , j = e - 2 * c + a - ( g - 2 * e + c ) , k = 2 * ( c - a ) - 2 * ( e - c ) , l = a - c , m = ( - k + M . sqrt ( k * k - 4 * j * l ) ) / 2 / j , n = ( - k - M . sqrt ( k * k - 4 * j * l ) ) / 2 / j , o = [ b , h ] , p = [ a , g ] ; return P ( m ) > "1e12" && ( m = . 5 ) , P ( n ) > "1e12" && ( n = . 5 ) , m > 0 && m < 1 && ( i = Ga ( a , b , c , d , e , f , g , h , m ) , p . push ( i . x ) , o . push ( i . y ) ) , n > 0 && n < 1 && ( i = Ga ( a , b , c , d , e , f , g , h , n ) , p . push ( i . x ) , o . push ( i . y ) ) , j = f - 2 * d + b - ( h - 2 * f + d ) , k = 2 * ( d - b ) - 2 * ( f - d ) , l = b - d , m = ( - k + M . sqrt ( k * k - 4 * j * l ) ) / 2 / j , n = ( - k - M . sqrt ( k * k - 4 * j * l ) ) / 2 / j , P ( m ) > "1e12" && ( m = . 5 ) , P ( n ) > "1e12" && ( n = . 5 ) , m > 0 && m < 1 && ( i = Ga ( a , b , c , d , e , f , g , h , m ) , p . push ( i . x ) , o . push ( i . y ) ) , n > 0 && n < 1 && ( i = Ga ( a , b , c , d , e , f , g , h , n ) , p . push ( i . x ) , o . push ( i . y ) ) , { min : { x : O [ C ] ( 0 , p ) , y : O [ C ] ( 0 , o ) } , max : { x : N [ C ] ( 0 , p ) , y : N [ C ] ( 0 , o ) } } } ) , Ia = b . _path2curve = e ( function ( a , b ) { var c = ! b && ya ( a ) ; if ( ! b && c . curve ) return Aa ( c . curve ) ; for ( var d = Ca ( a ) , e = b && Ca ( b ) , f = { x : 0 , y : 0 , bx : 0 , by : 0 , X : 0 , Y : 0 , qx : null , qy : null } , g = { x : 0 , y : 0 , bx : 0 , by : 0 , X : 0 , Y : 0 , qx : null , qy : null } , h = ( function ( a , b , c ) { var d , e , f = { T : 1 , Q : 1 } ; if ( ! a ) return [ "C" , b . x , b . y , b . x , b . y , b . x , b . y ] ; switch ( ! ( a [ 0 ] in f ) && ( b . qx = b . qy = null ) , a [ 0 ] ) { case "M" : b . X = a [ 1 ] , b . Y = a [ 2 ] ; break ; case "A" : a = [ "C" ] [ D ] ( Fa [ C ] ( 0 , [ b . x , b . y ] [ D ] ( a . slice ( 1 ) ) ) ) ; break ; case "S" : "C" == c || "S" == c ? ( d = 2 * b . x - b . bx , e = 2 * b . y - b . by ) : ( d = b . x , e = b . y ) , a = [ "C" , d , e ] [ D ] ( a . slice ( 1 ) ) ; break ; case "T" : "Q" == c || "T" == c ? ( b . qx = 2 * b . x - b . qx , b . qy = 2 * b . y - b . qy ) : ( b . qx = b . x , b . qy = b . y ) , a = [ "C" ] [ D ] ( Ea ( b . x , b . y , b . qx , b . qy , a [ 1 ] , a [ 2 ] ) ) ; break ; case "Q" : b . qx = a [ 1 ] , b . qy = a [ 2 ] , a = [ "C" ] [ D ] ( Ea ( b . x , b . y , a [ 1 ] , a [ 2 ] , a [ 3 ] , a [ 4 ] ) ) ; break ; case "L" : a = [ "C" ] [ D ] ( Da ( b . x , b . y , a [ 1 ] , a [ 2 ] ) ) ; break ; case "H" : a = [ "C" ] [ D ] ( Da ( b . x , b . y , a [ 1 ] , b . y ) ) ; break ; case "V" : a = [ "C" ] [ D ] ( Da ( b . x , b . y , b . x , a [ 1 ] ) ) ; break ; case "Z" : a = [ "C" ] [ D ] ( Da ( b . x , b . y , b . X , b . Y ) ) } return a } ) , i = function ( a , b ) { if ( a [ b ] . length > 7 ) { a [ b ] . shift ( ) ; for ( var c = a [ b ] ; c . length ; ) k [ b ] = "A" , e && ( l [ b ] = "A" ) , a . splice ( b ++ , 0 , [ "C" ] [ D ] ( c . splice ( 0 , 6 ) ) ) ; a . splice ( b , 1 ) , p = N ( d . length , e && e . length || 0 ) } } , j = function ( a , b , c , f , g ) { a && b && "M" == a [ g ] [ 0 ] && "M" != b [ g ] [ 0 ] && ( b . splice ( g , 0 , [ "M" , f . x , f . y ] ) , c . bx = 0 , c . by = 0 , c . x = a [ g ] [ 1 ] , c . y = a [ g ] [ 2 ] , p = N ( d . length , e && e . length || 0 ) ) } , k = [ ] , l = [ ] , m = "" , n = "" , o = 0 , p = N ( d . length , e && e . length || 0 ) ; o < p ; o ++ ) { d [ o ] && ( m = d [ o ] [ 0 ] ) , "C" != m && ( k [ o ] = m , o && ( n = k [ o - 1 ] ) ) , d [ o ] = h ( d [ o ] , f , n ) , "A" != k [ o ] && "C" == m && ( k [ o ] = "C" ) , i ( d , o ) , e && ( e [ o ] && ( m = e [ o ] [ 0 ] ) , "C" != m && ( l [ o ] = m , o && ( n = l [ o - 1 ] ) ) , e [ o ] = h ( e [ o ] , g , n ) , "A" != l [ o ] && "C" == m && ( l [ o ] = "C" ) , i ( e , o ) ) , j ( d , e , f , g , o ) , j ( e , d , g , f , o ) ; var q = d [ o ] , r = e && e [ o ] , s = q . length , t = e && r . length ; f . x = q [ s - 2 ] , f . y = q [ s - 1 ] , f . bx = $ ( q [ s - 4 ] ) || f . x , f . by = $ ( q [ s - 3 ] ) || f . y , g . bx = e && ( $ ( r [ t - 4 ] ) || g . x ) , g . by = e && ( $ ( r [ t - 3 ] ) || g . y ) , g . x = e && r [ t - 2 ] , g . y = e && r [ t - 1 ] } return e || ( c . curve = Aa ( d ) ) , e ? [ d , e ] : d } , null , Aa ) , Ja = ( b . _parseDots = e ( function ( a ) { for ( var c = [ ] , d = 0 , e = a . length ; d < e ; d ++ ) { var f = { } , g = a [ d ] . match ( /^([^:]*):?([\d\.]*)/ ) ; if ( f . color = b . getRGB ( g [ 1 ] ) , f . color . error ) return null ; f . opacity = f . color . opacity , f . color = f . color . hex , g [ 2 ] && ( f . offset = g [ 2 ] + "%" ) , c . push ( f ) } for ( d = 1 , e = c . length - 1 ; d < e ; d ++ ) if ( ! c [ d ] . offset ) { for ( var h = $ ( c [ d - 1 ] . offset || 0 ) , i = 0 , j = d + 1 ; j < e ; j ++ ) if ( c [ j ] . offset ) { i = c [ j ] . offset ; break } i || ( i = 100 , j = e ) , i = $ ( i ) ; for ( var k = ( i - h ) / ( j - d + 1 ) ; d < j ; d ++ ) h += k , c [ d ] . offset = h + "%" } return c } ) , b . _tear = function ( a , b ) { a == b . top && ( b . top = a . prev ) , a == b . bottom && ( b . bottom = a . next ) , a . next && ( a . next . prev = a . prev ) , a . prev && ( a . prev . next = a . next ) } ) , Ka = ( b . _tofront = function ( a , b ) { b . top !== a && ( Ja ( a , b ) , a . next = null , a . prev = b . top , b . top . next = a , b . top = a ) } , b . _toback = function ( a , b ) { b . bottom !== a && ( Ja ( a , b ) , a . next = b . bottom , a . prev = null , b . bottom . prev = a , b . bottom = a ) } , b . _insertafter = function ( a , b , c ) { Ja ( a , c ) , b == c . top && ( c . top = a ) , b . next && ( b . next . prev = a ) , a . next = b . next , a . prev = b , b . next = a } , b . _insertbefore = function ( a , b , c ) { Ja ( a , c ) , b == c . bottom && ( c . bottom = a ) , b . prev && ( b . prev . next = a ) , a . prev = b . prev , b . prev = a , a . next = b } , b . toMatrix = function ( a , b ) { var c = za ( a ) , d = { _ : { transform : F } , getBBox : function ( ) { return c } } ; return La ( d , b ) , d . matrix } ) , La = ( b . transformPath = function ( a , b ) { return pa ( a , Ka ( a , b ) ) } , b . _extractTransform = function ( a , c ) { if ( null == c ) return a . _ . transform ; c = H ( c ) . replace ( /\.{3}|\u2026/g , a . _ . transform || F ) ; var d = b . parseTransformS
id : B , markerHeight : y , markerWidth : x , orient : "auto" , refX : j , refY : y / 2 } ) , C = q ( q ( "use" ) , { "xlink:href" : "#" + A , transform : ( f ? "rotate(180 " + x / 2 + " " + y / 2 + ") " : l ) + "scale(" + x / z + "," + y / z + ")" , "stroke-width" : ( 1 / ( ( x / z + y / z ) / 2 ) ) . toFixed ( 4 ) } ) , D . appendChild ( C ) , n . defs . appendChild ( D ) , p [ B ] = 1 ) , q ( C , k ) ; var E = i * ( "diamond" != w && "oval" != w ) ; f ? ( g = d . _ . arrows . startdx * u || 0 , h = a . getTotalLength ( t . path ) - E * u ) : ( g = E * u , h = a . getTotalLength ( t . path ) - ( d . _ . arrows . enddx * u || 0 ) ) , k = { } , k [ "marker-" + r ] = "url(#" + B + ")" , ( h || g ) && ( k . d = a . getSubpath ( t . path , g , h ) ) , q ( s , k ) , d . _ . arrows [ r + "Path" ] = A , d . _ . arrows [ r + "Marker" ] = B , d . _ . arrows [ r + "dx" ] = E , d . _ . arrows [ r + "Type" ] = w , d . _ . arrows [ r + "String" ] = e } else f ? ( g = d . _ . arrows . startdx * u || 0 , h = a . getTotalLength ( t . path ) - g ) : ( g = 0 , h = a . getTotalLength ( t . path ) - ( d . _ . arrows . enddx * u || 0 ) ) , d . _ . arrows [ r + "Path" ] && q ( s , { d : a . getSubpath ( t . path , g , h ) } ) , delete d . _ . arrows [ r + "Path" ] , delete d . _ . arrows [ r + "Marker" ] , delete d . _ . arrows [ r + "dx" ] , delete d . _ . arrows [ r + "Type" ] , delete d . _ . arrows [ r + "String" ] ; for ( k in p ) if ( p [ b ] ( k ) && ! p [ k ] ) { var F = a . _g . doc . getElementById ( k ) ; F && F . parentNode . removeChild ( F ) } } } , u = { "-" : [ 3 , 1 ] , "." : [ 1 , 1 ] , "-." : [ 3 , 1 , 1 , 1 ] , "-.." : [ 3 , 1 , 1 , 1 , 1 , 1 ] , ". " : [ 1 , 3 ] , "- " : [ 4 , 3 ] , "--" : [ 8 , 3 ] , "- ." : [ 4 , 3 , 1 , 3 ] , "--." : [ 8 , 3 , 1 , 3 ] , "--.." : [ 8 , 3 , 1 , 3 , 1 , 3 ] } , v = function ( a , b , d ) { if ( b = u [ c ( b ) . toLowerCase ( ) ] ) { for ( var e = a . attrs [ "stroke-width" ] || "1" , f = { round : e , square : e , butt : 0 } [ a . attrs [ "stroke-linecap" ] || d [ "stroke-linecap" ] ] || 0 , g = [ ] , h = b . length ; h -- ; ) g [ h ] = b [ h ] * e + ( h % 2 ? 1 : - 1 ) * f ; q ( a . node , { "stroke-dasharray" : g . join ( "," ) } ) } else q ( a . node , { "stroke-dasharray" : "none" } ) } , w = function ( d , f ) { var i = d . node , k = d . attrs , m = i . style . visibility ; i . style . visibility = "hidden" ; for ( var o in f ) if ( f [ b ] ( o ) ) { if ( ! a . _availableAttrs [ b ] ( o ) ) continue ; var p = f [ o ] ; switch ( k [ o ] = p , o ) { case "blur" : d . blur ( p ) ; break ; case "title" : var u = i . getElementsByTagName ( "title" ) ; if ( u . length && ( u = u [ 0 ] ) ) u . firstChild . nodeValue = p ; else { u = q ( "title" ) ; var w = a . _g . doc . createTextNode ( p ) ; u . appendChild ( w ) , i . appendChild ( u ) } break ; case "href" : case "target" : var x = i . parentNode ; if ( "a" != x . tagName . toLowerCase ( ) ) { var z = q ( "a" ) ; x . insertBefore ( z , i ) , z . appendChild ( i ) , x = z } "target" == o ? x . setAttributeNS ( n , "show" , "blank" == p ? "new" : p ) : x . setAttributeNS ( n , o , p ) ; break ; case "cursor" : i . style . cursor = p ; break ; case "transform" : d . transform ( p ) ; break ; case "arrow-start" : t ( d , p ) ; break ; case "arrow-end" : t ( d , p , 1 ) ; break ; case "clip-rect" : var A = c ( p ) . split ( j ) ; if ( 4 == A . length ) { d . clip && d . clip . parentNode . parentNode . removeChild ( d . clip . parentNode ) ; var B = q ( "clipPath" ) , C = q ( "rect" ) ; B . id = a . createUUID ( ) , q ( C , { x : A [ 0 ] , y : A [ 1 ] , width : A [ 2 ] , height : A [ 3 ] } ) , B . appendChild ( C ) , d . paper . defs . appendChild ( B ) , q ( i , { "clip-path" : "url(#" + B . id + ")" } ) , d . clip = C } if ( ! p ) { var D = i . getAttribute ( "clip-path" ) ; if ( D ) { var E = a . _g . doc . getElementById ( D . replace ( /(^url\(#|\)$)/g , l ) ) ; E && E . parentNode . removeChild ( E ) , q ( i , { "clip-path" : l } ) , delete d . clip } } break ; case "path" : "path" == d . type && ( q ( i , { d : p ? k . path = a . _pathToAbsolute ( p ) : "M0,0" } ) , d . _ . dirty = 1 , d . _ . arrows && ( "startString" in d . _ . arrows && t ( d , d . _ . arrows . startString ) , "endString" in d . _ . arrows && t ( d , d . _ . arrows . endString , 1 ) ) ) ; break ; case "width" : if ( i . setAttribute ( o , p ) , d . _ . dirty = 1 , ! k . fx ) break ; o = "x" , p = k . x ; case "x" : k . fx && ( p = - k . x - ( k . width || 0 ) ) ; case "rx" : if ( "rx" == o && "rect" == d . type ) break ; case "cx" : i . setAttribute ( o , p ) , d . pattern && s ( d ) , d . _ . dirty = 1 ; break ; case "height" : if ( i . setAttribute ( o , p ) , d . _ . dirty = 1 , ! k . fy ) break ; o = "y" , p = k . y ; case "y" : k . fy && ( p = - k . y - ( k . height || 0 ) ) ; case "ry" : if ( "ry" == o && "rect" == d . type ) break ; case "cy" : i . setAttribute ( o , p ) , d . pattern && s ( d ) , d . _ . dirty = 1 ; break ; case "r" : "rect" == d . type ? q ( i , { rx : p , ry : p } ) : i . setAttribute ( o , p ) , d . _ . dirty = 1 ; break ; case "src" : "image" == d . type && i . setAttributeNS ( n , "href" , p ) ; break ; case "stroke-width" : 1 == d . _ . sx && 1 == d . _ . sy || ( p /= g ( h ( d . _ . sx ) , h ( d . _ . sy ) ) || 1 ) , i . setAttribute ( o , p ) , k [ "stroke-dasharray" ] && v ( d , k [ "stroke-dasharray" ] , f ) , d . _ . arrows && ( "startString" in d . _ . arrows && t ( d , d . _ . arrows . startString ) , "endString" in d . _ . arrows && t ( d , d . _ . arrows . endString , 1 ) ) ; break ; case "stroke-dasharray" : v ( d , p , f ) ; break ; case "fill" : var F = c ( p ) . match ( a . _ISURL ) ; if ( F ) { B = q ( "pattern" ) ; var G = q ( "image" ) ; B . id = a . createUUID ( ) , q ( B , { x : 0 , y : 0 , patternUnits : "userSpaceOnUse" , height : 1 , width : 1 } ) , q ( G , { x : 0 , y : 0 , "xlink:href" : F [ 1 ] } ) , B . appendChild ( G ) , function ( b ) { a . _preload ( F [ 1 ] , function ( ) { var a = this . offsetWidth , c = this . offsetHe
h . renderfix = function ( ) { } , h } , a . prototype . clear = function ( ) { a . eve ( "raphael.clear" , this ) , this . canvas . innerHTML = o , this . span = a . _g . doc . createElement ( "span" ) , this . span . style . cssText = "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;" , this . canvas . appendChild ( this . span ) , this . bottom = this . top = null } , a . prototype . remove = function ( ) { a . eve ( "raphael.remove" , this ) , this . canvas . parentNode . removeChild ( this . canvas ) ; for ( var b in this ) this [ b ] = "function" == typeof this [ b ] ? a . _removedFactory ( b ) : null ; return ! 0 } ; var G = a . st ; for ( var H in E ) E [ b ] ( H ) && ! G [ b ] ( H ) && ( G [ H ] = function ( a ) { return function ( ) { var b = arguments ; return this . forEach ( function ( c ) { c [ a ] . apply ( c , b ) } ) } } ( H ) ) } } ) , function ( a , b ) { if ( "function" == typeof define && define . amd ) define ( "raphael" , [ "raphael.core" , "raphael.svg" , "raphael.vml" ] , function ( a ) { return b ( a ) } ) ; else if ( "object" == typeof exports ) { var c = require ( "raphael.core" ) ; require ( "raphael.svg" ) , require ( "raphael.vml" ) , module . exports = b ( c ) } } ( this , function ( a ) { return a . ninja ( ) } ) , BI . Svg = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Svg . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-svg" } ) } , _init : function ( ) { BI . Svg . superclass . _init . apply ( this , arguments ) , this . paper = Raphael ( this . element [ 0 ] ) , this . element . css ( "overflow" , "hidden" ) , $ ( this . paper . canvas ) . width ( "100%" ) . height ( "100%" ) . css ( { left : "0" , top : "0" } ) . appendTo ( this . element ) , this . top = this . paper . top , this . bottom = this . paper . bottom , this . customAttributes = this . paper . customAttributes , this . ca = this . paper . ca , this . raphael = this . paper . raphael } , add : function ( ) { return this . paper . add . apply ( this . paper , arguments ) } , path : function ( ) { return this . paper . path . apply ( this . paper , arguments ) } , image : function ( ) { return this . paper . image . apply ( this . paper , arguments ) } , rect : function ( ) { return this . paper . rect . apply ( this . paper , arguments ) } , circle : function ( ) { return this . paper . circle . apply ( this . paper , arguments ) } , ellipse : function ( ) { return this . paper . ellipse . apply ( this . paper , arguments ) } , text : function ( ) { return this . paper . text . apply ( this . paper , arguments ) } , print : function ( ) { return this . paper . print . apply ( this . paper , arguments ) } , setStart : function ( ) { return this . paper . setStart . apply ( this . paper , arguments ) } , setFinish : function ( ) { return this . paper . setFinish . apply ( this . paper , arguments ) } , setSize : function ( ) { return this . paper . setSize . apply ( this . paper , arguments ) } , setViewBox : function ( ) { return this . paper . setViewBox . apply ( this . paper , arguments ) } , getById : function ( ) { return this . paper . getById . apply ( this . paper , arguments ) } , getElementByPoint : function ( ) { return this . paper . getElementByPoint . apply ( this . paper , arguments ) } , getElementsByPoint : function ( ) { return this . paper . getElementsByPoint . apply ( this . paper , arguments ) } , getFont : function ( ) { return this . paper . getFont . apply ( this . paper , arguments ) } , set : function ( ) { return this . paper . set . apply ( this . paper , arguments ) } , remove : function ( ) { return this . paper . remove . apply ( this . paper , arguments ) } , clear : function ( ) { return this . paper . clear . apply ( this . paper , arguments ) } } ) , BI . shortcut ( "bi.svg" , BI . Svg ) , BI . NativeTableScrollbar = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . NativeTableScrollbar . superclass . _defaultConfig . apply ( this , arguments ) , { attributes : { tabIndex : 0 } , contentSize : 0 , defaultPosition : 0 , position : 0 , size : 0 } ) } , render : function ( ) { var a = this ; this . options ; this . element . width ( 36 ) ; var b = BI . throttle ( function ( ) { a . fireEvent ( BI . NativeTableScrollbar . EVENT _SCROLL , a . element . scrollTop ( ) ) } , 150 , { leading : ! 1 } ) ; return this . element . scroll ( function ( ) { b ( ) } ) , { type : "bi.default" , scrolly : ! 0 , items : [ { type : "bi.layout" , width : 1 , ref : function ( b ) { a . inner = b } } ] } } , mounted : function ( ) { this . _populate ( ) } , _populate : function ( ) { var a = this . options ; if ( a . size < 1 || a . contentSize <= a . size ) return void this . setVisible ( ! 1 ) ; this . setVisible ( ! 0 ) ; try { this . element . scrollTop ( a . position ) } catch ( b ) { } this . inner . element . height ( a . contentSize ) } , setContentSize : function ( a ) { this . options . contentSize = a } , setPosition : function ( a ) { this . options . position = a } , setSize : function ( a ) { this . setHeight ( a ) , this . options . size = a } , populate : function ( ) { this . _populate ( ) } } ) , BI . NativeTableScrollbar . EVENT _SCROLL = "EVENT_SCROLL" , BI . shortcut ( "bi.native_table_scrollbar" , BI . Nativ
this . _populateScrollbar ( ) } , setRightHorizontalScroll : function ( a ) { this . topRightGrid . setScrollLeft ( a ) , this . bottomRightGrid . setScrollLeft ( a ) , this . _populateScrollbar ( ) } , getVerticalScroll : function ( ) { return this . bottomRightGrid . getScrollTop ( ) } , getLeftHorizontalScroll : function ( ) { return this . bottomLeftGrid . getScrollLeft ( ) } , getRightHorizontalScroll : function ( ) { return this . bottomRightGrid . getScrollLeft ( ) } , setWidth : function ( a ) { BI . GridTable . superclass . setWidth . apply ( this , arguments ) , this . _width = this . options . width - BI . GridTableScrollbar . SIZE } , setHeight : function ( a ) { BI . GridTable . superclass . setHeight . apply ( this , arguments ) , this . _height = this . options . height - BI . GridTableScrollbar . SIZE } , setColumnSize : function ( a ) { this . options . columnSize = a , this . _isNeedDigest = ! 0 } , setRegionColumnSize : function ( a ) { this . options . regionColumnSize = a , this . _isNeedDigest = ! 0 } , getColumnSize : function ( ) { return this . options . columnSize } , getRegionColumnSize : function ( ) { return this . options . regionColumnSize } , populate : function ( a , b ) { a && this . options . items !== a && ( this . options . items = a , this . items = this . _getItems ( ) , this . _restore ( ) ) , b && this . options . header !== b && ( this . options . header = b , this . header = this . _getHeader ( ) , this . _restore ( ) ) , this . _populate ( ) } , _restore : function ( ) { this . topLeftGrid . restore ( ) , this . topRightGrid . restore ( ) , this . bottomLeftGrid . restore ( ) , this . bottomRightGrid . restore ( ) } , restore : function ( ) { this . _restore ( ) } } ) , BI . shortcut ( "bi.grid_table" , BI . GridTable ) , BI . QuickGridTable = BI . inherit ( BI . GridTable , { _defaultConfig : function ( ) { return BI . extend ( BI . QuickGridTable . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-quick-grid-table" } ) } , render : function ( ) { BI . QuickGridTable . superclass . render . apply ( this , arguments ) ; this . options ; this . topLeftGrid . setOverflowX ( ! 1 ) , this . topLeftGrid . setOverflowY ( ! 1 ) , this . topRightGrid . setOverflowX ( ! 1 ) , this . topRightGrid . setOverflowY ( ! 1 ) , this . bottomLeftGrid . setOverflowX ( ! 1 ) , this . bottomLeftGrid . setOverflowY ( ! 1 ) , this . bottomRightGrid . setOverflowX ( ! 1 ) , this . bottomRightGrid . setOverflowY ( ! 1 ) } , mounted : function ( ) { BI . QuickGridTable . superclass . mounted . apply ( this , arguments ) ; var a = this ; this . _topLeftWheelHandler = new BI . WheelHandler ( BI . bind ( this . _onWheelLeft , this ) , BI . bind ( this . _shouldHandleLeftX , this ) , BI . bind ( this . _shouldHandleY , this ) ) , this . _topRightWheelHandler = new BI . WheelHandler ( BI . bind ( this . _onWheelRight , this ) , BI . bind ( this . _shouldHandleRightX , this ) , BI . bind ( this . _shouldHandleY , this ) ) , this . _bottomLeftWheelHandler = new BI . WheelHandler ( BI . bind ( this . _onWheelLeft , this ) , BI . bind ( this . _shouldHandleLeftX , this ) , BI . bind ( this . _shouldHandleY , this ) ) , this . _bottomRightWheelHandler = new BI . WheelHandler ( BI . bind ( this . _onWheelRight , this ) , BI . bind ( this . _shouldHandleRightX , this ) , BI . bind ( this . _shouldHandleY , this ) ) , this . topLeftGrid . element . mousewheel ( function ( b ) { a . _topLeftWheelHandler . onWheel ( b . originalEvent ) } ) , this . topRightGrid . element . mousewheel ( function ( b ) { a . _topRightWheelHandler . onWheel ( b . originalEvent ) } ) , this . bottomLeftGrid . element . mousewheel ( function ( b ) { a . _bottomLeftWheelHandler . onWheel ( b . originalEvent ) } ) , this . bottomRightGrid . element . mousewheel ( function ( b ) { a . _bottomRightWheelHandler . onWheel ( b . originalEvent ) } ) } , _shouldHandleLeftX : function ( a ) { return a > 0 ? this . bottomLeftGrid . getScrollLeft ( ) < this . bottomLeftGrid . getMaxScrollLeft ( ) : this . bottomLeftGrid . getScrollLeft ( ) > 0 } , _shouldHandleRightX : function ( a ) { return a > 0 ? this . bottomRightGrid . getScrollLeft ( ) < this . bottomRightGrid . getMaxScrollLeft ( ) : this . bottomRightGrid . getScrollLeft ( ) > 0 } , _shouldHandleY : function ( a ) { return a > 0 ? this . bottomRightGrid . getScrollTop ( ) < this . bottomRightGrid . getMaxScrollTop ( ) : this . bottomRightGrid . getScrollTop ( ) > 0 } , _onWheelLeft : function ( a , b ) { var c = this , d = this . bottomLeftGrid . getScrollTop ( ) , e = this . bottomLeftGrid . getScrollLeft ( ) ; d += b , e += a , this . bottomLeftGrid . setScrollTop ( d ) , this . bottomRightGrid . setScrollTop ( d ) , this . topLeftGrid . setScrollLeft ( e ) , this . bottomLeftGrid . setScrollLeft ( e ) , c . _populateScrollbar ( ) , this . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } , _onWheelRight : function ( a , b ) { var c = this , d = this . bottomRightGrid . getScrollTop ( ) , e = this . bottomRightGrid . getScrollLeft ( ) ; d += b , e += a , this . bottomLeftGrid . setScrollTop ( d ) , this . bottomRightGrid . setScrollTo
} else BI . isNumeric ( f ) ? a == BI . size ( e ) - 1 ? e [ a ] . element . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : e [ a ] . element . attr ( "width" , f ) . css ( "width" , f ) : e [ a ] . element . attr ( "width" , "" ) . css ( "width" , "" ) } ) , BI . each ( b . footerItems , function ( d , e ) { if ( e [ a ] ) if ( b . footerTds [ d ] [ a ] . _ _mergeCols . length > 1 ) { var g = 0 ; BI . each ( c . columnSize , function ( c , e ) { b . footerTds [ d ] [ a ] . _ _mergeCols . contains ( c ) && ( g += e ) } ) , g = b . _calculateWidth ( g ) , g > 1 && ( g += b . footerTds [ d ] [ a ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( g ) ? a == BI . size ( e ) - 1 ? e [ a ] . element . attr ( "width" , g - 1 ) . css ( "width" , g - 1 ) : e [ a ] . element . attr ( "width" , g ) . css ( "width" , g ) : e [ a ] . element . attr ( "width" , "" ) . css ( "width" , "" ) } else BI . isNumeric ( f ) ? a == BI . size ( e ) - 1 ? e [ a ] . element . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : e [ a ] . element . attr ( "width" , f ) . css ( "width" , f ) : e [ a ] . element . attr ( "width" , "" ) . css ( "width" , "" ) } ) } } ) ; var n = this . _calculateWidth ( BI . sum ( c . columnSize ) ) ; n > 1.05 && ( n += c . columnSize . length ) , n > 1.05 && this . tableContainer . element . width ( n ) } } , getColumnSize : function ( ) { return this . options . columnSize } , getCalculateColumnSize : function ( ) { var a = this , b = this . options , c = [ ] ; if ( b . isNeedFreeze === ! 0 ) { if ( BI . size ( this . bottomLeftBodyTds ) > 0 || BI . size ( this . bottomRightBodyTds ) > 0 ) return BI . any ( this . bottomLeftBodyTds , function ( a , b ) { if ( ! BI . any ( b , function ( a , b ) { if ( b . _ _mergeCols . length > 1 ) return ! 0 } ) ) return BI . each ( b , function ( a , d ) { var e = d . width ( ) / d . _ _mergeCols . length ; a == BI . size ( b ) - 1 && e ++ , c . push ( e ) } ) , ! 0 } ) || BI . each ( this . bottomLeftBodyTds [ 0 ] , function ( b , d ) { var e = d . width ( ) / d . _ _mergeCols . length ; b == BI . size ( a . bottomLeftBodyTds [ 0 ] ) - 1 && e ++ , c . push ( e ) } ) , BI . any ( this . bottomRightBodyTds , function ( a , b ) { if ( ! BI . any ( b , function ( a , b ) { if ( b . _ _mergeCols . length > 1 ) return ! 0 } ) ) return BI . each ( b , function ( a , d ) { var e = d . width ( ) / d . _ _mergeCols . length ; a == BI . size ( b ) - 1 && e ++ , c . push ( e ) } ) , ! 0 } ) || BI . each ( this . bottomRightBodyTds [ 0 ] , function ( b , d ) { var e = d . width ( ) / d . _ _mergeCols . length ; b == BI . size ( a . bottomRightBodyTds [ 0 ] ) - 1 && e ++ , c . push ( e ) } ) , c ; BI . any ( this . topLeftBodyTds , function ( a , b ) { if ( ! BI . any ( b , function ( a , b ) { if ( b . _ _mergeCols . length > 1 ) return ! 0 } ) ) return BI . each ( b , function ( a , d ) { var e = d . width ( ) / d . _ _mergeCols . length ; a == BI . size ( b ) - 1 && e ++ , c . push ( e ) } ) , ! 0 } ) || BI . each ( this . topLeftBodyTds [ BI . size ( this . topLeftBodyTds ) - 1 ] , function ( b , d ) { var e = d . width ( ) / d . _ _mergeCols . length ; b == BI . size ( a . topLeftBodyTds [ BI . size ( a . topLeftBodyTds ) - 1 ] ) - 1 && e ++ , c . push ( e ) } ) , BI . any ( this . topRightBodyTds , function ( a , b ) { if ( ! BI . any ( b , function ( a , b ) { if ( b . _ _mergeCols . length > 1 ) return ! 0 } ) ) return BI . each ( b , function ( a , d ) { var e = d . width ( ) / d . _ _mergeCols . length ; a == BI . size ( b ) - 1 && e ++ , c . push ( e ) } ) , ! 0 } ) || BI . each ( this . topRightBodyTds [ BI . size ( this . topRightBodyTds ) - 1 ] , function ( b , d ) { var e = d . width ( ) / d . _ _mergeCols . length ; b == BI . size ( a . topRightBodyTds [ BI . size ( a . topRightBodyTds ) - 1 ] ) - 1 && e ++ , c . push ( e ) } ) } else BI . each ( this . headerTds [ BI . size ( this . headerTds ) - 1 ] , function ( b , d ) { var e = d . width ( ) / d . _ _mergeCols . length ; b == BI . size ( a . headerTds [ BI . size ( a . headerTds ) - 1 ] ) - 1 && e ++ , c . push ( e ) } ) ; return c } , setHeaderColumnSize : function ( a ) { var b = this , c = this . options , d = this . _isRightFreeze ( ) ; if ( c . isNeedFreeze ) { var e = [ ] , f = [ ] ; BI . each ( a , function ( a , b ) { c . freezeCols . contains ( a ) ? d ? f . push ( b ) : e . push ( b ) : d ? e . push ( b ) : f . push ( b ) } ) ; var g = 0 , h = 1 , i = function ( a ) { var c , d , i , j ; switch ( a ) { case g : c = b . topLeftColGroupTds , d = b . topLeftBodyTds , i = b . topLeftBodyItems , j = e ; break ; case h : c = b . topRightColGroupTds , d = b . topRightBodyTds , i = b . topRightBodyItems , j = f } BI . each ( c , function ( a , c ) { var e = 0 | c . attr ( "width" ) ; if ( e !== j [ a ] ) { var f = b . _calculateWidth ( j [ a ] ) ; c . attr ( "width" , f ) . css ( "width" , f ) , BI . each ( d , function ( c , d ) { if ( d [ a ] ) if ( d [ a ] . _ _mergeCols . length > 1 ) { var e = 0 ; BI . each ( j , function ( b , c ) { d [ a ] . _ _mergeCols . contains ( b ) && ( e += c ) } ) , e = b . _calculateWidth ( e ) , e > 1 && ( e += d [ a ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( e ) ? a == BI . size ( d ) - 1 ? d [ a ] . attr ( "width" , e - 1 ) . css ( "width" , e - 1 ) : d [ a ] . attr ( "width" , e ) . css ( "width" , e ) : d [ a ] . attr ( "width" , "" ) . css ( "width" , "" ) } else a == BI . size ( d ) - 1 ? d [ a ] . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : d [ a ] . attr ( "width" , f ) . css ( "width" , f ) } ) , BI . each ( i , function ( c , e ) { if ( e [ a ] ) if ( d [ c ] [ a ] . _ _mergeCols . length > 1 ) { var g = 0 ; BI . each ( j , function ( b , e ) { d [ c ] [ a ] . _ _mergeCols . contains ( b ) && ( g += e ) } ) , g = b . _calculateWidth ( g ) , g > 1 && ( g += d [ c ] [ a ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( g ) ? a == BI . size ( e ) - 1 ? e [ a ] . element . attr ( "width" , g - 1 ) . css ( "width" , g - 1 ) :
for ( c = 0 , d = b . length ; c < d ; c ++ ) i [ b [ c ] [ e ] ] = b [ c ] ; for ( c = 0 , d = b . length ; c < d ; c ++ ) i [ b [ c ] [ f ] ] && b [ c ] [ e ] != b [ c ] [ f ] ? ( i [ b [ c ] [ f ] ] [ g ] || ( i [ b [ c ] [ f ] ] [ g ] = [ ] ) , i [ b [ c ] [ f ] ] [ g ] . push ( b [ c ] ) ) : h . push ( b [ c ] ) ; return h } return [ b ] } } , event = { bindEvent : function ( a ) { for ( var b = 0 , c = _init . bind . length ; b < c ; b ++ ) _init . bind [ b ] . apply ( this , arguments ) } , unbindEvent : function ( a ) { for ( var b = 0 , c = _init . unbind . length ; b < c ; b ++ ) _init . unbind [ b ] . apply ( this , arguments ) } , bindTree : function ( a ) { var b = { treeId : a . treeId } , c = a . treeObj ; a . view . txtSelectedEnable || c . bind ( "selectstart" , function ( a ) { var b = a . originalEvent . srcElement . nodeName . toLowerCase ( ) ; return "input" === b || "textarea" === b } ) . css ( { "-moz-user-select" : "-moz-none" } ) , c . bind ( "click" , b , event . proxy ) , c . bind ( "dblclick" , b , event . proxy ) , c . bind ( "mouseover" , b , event . proxy ) , c . bind ( "mouseout" , b , event . proxy ) , c . bind ( "mousedown" , b , event . proxy ) , c . bind ( "mouseup" , b , event . proxy ) , c . bind ( "contextmenu" , b , event . proxy ) } , unbindTree : function ( a ) { var b = a . treeObj ; b . unbind ( "click" , event . proxy ) . unbind ( "dblclick" , event . proxy ) . unbind ( "mouseover" , event . proxy ) . unbind ( "mouseout" , event . proxy ) . unbind ( "mousedown" , event . proxy ) . unbind ( "mouseup" , event . proxy ) . unbind ( "contextmenu" , event . proxy ) } , doProxy : function ( a ) { for ( var b = [ ] , c = 0 , d = _init . proxys . length ; c < d ; c ++ ) { var e = _init . proxys [ c ] . apply ( this , arguments ) ; if ( b . push ( e ) , e . stop ) break } return b } , proxy : function ( a ) { var b = data . getSetting ( a . data . treeId ) ; if ( ! tools . uCanDo ( b , a ) ) return ! 0 ; for ( var c = event . doProxy ( a ) , d = ! 0 , e = ! 1 , f = 0 , g = c . length ; f < g ; f ++ ) { var h = c [ f ] ; h . nodeEventCallback && ( e = ! 0 , d = h . nodeEventCallback . apply ( h , [ a , h . node ] ) && d ) , h . treeEventCallback && ( e = ! 0 , d = h . treeEventCallback . apply ( h , [ a , h . node ] ) && d ) } return d } } , handler = { onSwitchNode : function ( a , b ) { var c = data . getSetting ( a . data . treeId ) ; if ( b . open ) { if ( 0 == tools . apply ( c . callback . beforeCollapse , [ c . treeId , b ] , ! 0 ) ) return ! 0 ; data . getRoot ( c ) . expandTriggerFlag = ! 0 , view . switchNode ( c , b ) } else { if ( 0 == tools . apply ( c . callback . beforeExpand , [ c . treeId , b ] , ! 0 ) ) return ! 0 ; data . getRoot ( c ) . expandTriggerFlag = ! 0 , view . switchNode ( c , b ) } return ! 0 } , onClickNode : function ( a , b ) { var c = data . getSetting ( a . data . treeId ) , d = c . view . autoCancelSelected && ( a . ctrlKey || a . metaKey ) && data . isSelectedNode ( c , b ) ? 0 : c . view . autoCancelSelected && ( a . ctrlKey || a . metaKey ) && c . view . selectedMulti ? 2 : 1 ; return 0 == tools . apply ( c . callback . beforeClick , [ c . treeId , b , d ] , ! 0 ) || ( 0 === d ? view . cancelPreSelectedNode ( c , b ) : view . selectNode ( c , b , 2 === d ) , c . treeObj . trigger ( consts . event . CLICK , [ a , c . treeId , b , d ] ) , ! 0 ) } , onZTreeMousedown : function ( a , b ) { var c = data . getSetting ( a . data . treeId ) ; return tools . apply ( c . callback . beforeMouseDown , [ c . treeId , b ] , ! 0 ) && tools . apply ( c . callback . onMouseDown , [ a , c . treeId , b ] ) , ! 0 } , onZTreeMouseup : function ( a , b ) { var c = data . getSetting ( a . data . treeId ) ; return tools . apply ( c . callback . beforeMouseUp , [ c . treeId , b ] , ! 0 ) && tools . apply ( c . callback . onMouseUp , [ a , c . treeId , b ] ) , ! 0 } , onZTreeDblclick : function ( a , b ) { var c = data . getSetting ( a . data . treeId ) ; return tools . apply ( c . callback . beforeDblClick , [ c . treeId , b ] , ! 0 ) && tools . apply ( c . callback . onDblClick , [ a , c . treeId , b ] ) , ! 0 } , onZTreeContextmenu : function ( a , b ) { var c = data . getSetting ( a . data . treeId ) ; return tools . apply ( c . callback . beforeRightClick , [ c . treeId , b ] , ! 0 ) && tools . apply ( c . callback . onRightClick , [ a , c . treeId , b ] ) , "function" != typeof c . callback . onRightClick } } , tools = { apply : function ( a , b , c ) { return "function" == typeof a ? a . apply ( zt , b ? b : [ ] ) : c } , canAsync : function ( a , b ) { var c = a . data . key . children ; return a . async . enable && b && b . isParent && ! ( b . zAsync || b [ c ] && b [ c ] . length > 0 ) } , clone : function ( a ) { if ( null === a ) return null ; var b = tools . isArray ( a ) ? [ ] : { } ; for ( var c in a ) b [ c ] = a [ c ] instanceof Date ? new Date ( a [ c ] . getTime ( ) ) : "object" == typeof a [ c ] ? arguments . callee ( a [ c ] ) : a [ c ] ; return b } , eqs : function ( a , b ) { return a . toLowerCase ( ) === b . toLowerCase ( ) } , isArray : function ( a ) { return "[object Array]" === Object . prototype . toString . apply ( a ) } , $ : function ( a , b , c ) { return b && "string" != typeof b && ( c = b , b = "" ) , "string" == typeof a ? $ ( a , c ? c . treeObj . get ( 0 ) . ownerDocument : null ) : $ ( "#" + a . tId + b , c ? c . treeObj : null ) } , getMDom : function ( a , b , c ) { if ( ! b ) return null ; for ( ; b && b . id !== a . treeId ; ) { for ( var d = 0 , e = c . length ; b . tagName && d < e ; d ++ ) if ( tools . eqs ( b . tagName , c [ d ] . tagName ) && null !== b . getAttribute ( c [ d ] . attrName ) ) return b ; b = b . parentNode } return null } , getNodeMainDom : function ( a ) { re
b . nocheck !== ! 0 && b . chkDisabled !== ! 0 ? ( b [ f ] = c , h || ( b . check _Child _State = b [ e ] && b [ e ] . length > 0 ? c ? 2 : 0 : - 1 ) ) : b . check _Child _State = - 1 , u . setChkClass ( a , g , b ) , a . check . autoCheckTrigger && b != d && b . nocheck !== ! 0 && b . chkDisabled !== ! 0 && a . treeObj . trigger ( t . event . CHECK , [ null , a . treeId , b ] ) ) } } } , q = { tools : o , view : p , event : m , data : l } ; a . extend ( ! 0 , a . fn . zTree . consts , b ) , a . extend ( ! 0 , a . fn . zTree . _z , q ) ; var r = a . fn . zTree , s = r . _z . tools , t = r . consts , u = r . _z . view , v = r . _z . data , w = ( r . _z . event , s . $ ) ; v . exSetting ( c ) , v . addInitBind ( f ) , v . addInitUnBind ( g ) , v . addInitCache ( e ) , v . addInitNode ( i ) , v . addInitProxy ( h , ! 0 ) , v . addInitRoot ( d ) , v . addBeforeA ( j ) , v . addZTreeTools ( k ) ; var x = u . createNodes ; u . createNodes = function ( a , b , c , d ) { x && x . apply ( u , arguments ) , c && u . repairParentChkClassWithSelf ( a , d ) } ; var y = u . removeNode ; u . removeNode = function ( a , b ) { var c = b . getParentNode ( ) ; y && y . apply ( u , arguments ) , b && c && ( u . repairChkClass ( a , c ) , u . repairParentChkClass ( a , c ) ) } ; var z = u . appendNodes ; u . appendNodes = function ( a , b , c , d , e , f ) { var g = "" ; return z && ( g = z . apply ( u , arguments ) ) , d && v . makeChkFlag ( a , d ) , g } } ( jQuery ) , BI . IconChangeButton = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . IconChangeButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-icon-change-button" , iconCls : "" , iconWidth : null , iconHeight : null , stopEvent : ! 1 , stopPropagation : ! 1 , selected : ! 1 , once : ! 1 , forceSelected : ! 1 , forceNotSelected : ! 1 , disableSelected : ! 1 , shadow : ! 1 , isShadowShowingOnSelected : ! 1 , trigger : null , handler : BI . emptyFn } ) } , _init : function ( ) { BI . IconChangeButton . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . button = BI . createWidget ( { type : "bi.icon_button" , element : this , cls : b . iconCls , height : b . height , iconWidth : b . iconWidth , iconHeight : b . iconHeight , stopEvent : b . stopEvent , stopPropagation : b . stopPropagation , selected : b . selected , once : b . once , forceSelected : b . forceSelected , forceNotSelected : b . forceNotSelected , disableSelected : b . disableSelected , shadow : b . shadow , isShadowShowingOnSelected : b . isShadowShowingOnSelected , trigger : b . trigger , handler : b . handler } ) , this . button . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . button . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . IconChangeButton . EVENT _CHANGE , arguments ) } ) } , isSelected : function ( ) { return this . button . isSelected ( ) } , setSelected : function ( a ) { this . button . setSelected ( a ) } , setIcon : function ( a ) { var b = this . options ; b . iconCls !== a && ( this . element . removeClass ( b . iconCls ) . addClass ( a ) , b . iconCls = a ) } } ) , BI . IconChangeButton . EVENT _CHANGE = "IconChangeButton.EVENT_CHANGE" , BI . shortcut ( "bi.icon_change_button" , BI . IconChangeButton ) , BI . HalfIconButton = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { var a = BI . HalfIconButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-half-icon-button check-half-select-icon" , height : 16 , width : 16 , iconWidth : 16 , iconHeight : 16 , selected : ! 1 } ) } , _init : function ( ) { BI . HalfIconButton . superclass . _init . apply ( this , arguments ) } , doClick : function ( ) { BI . HalfIconButton . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . HalfIconButton . EVENT _CHANGE ) } } ) , BI . HalfIconButton . EVENT _CHANGE = "HalfIconButton.EVENT_CHANGE" , BI . shortcut ( "bi.half_icon_button" , BI . HalfIconButton ) , BI . TriggerIconButton = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . TriggerIconButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-trigger-icon-button" } ) } , _init : function ( ) { BI . TriggerIconButton . superclass . _init . apply ( this , arguments ) , BI . createWidget ( { type : "bi.center_adapt" , element : this , items : [ { type : "bi.icon_button" , cls : "pull-down-font trigger-down" } , { type : "bi.icon_button" , cls : "pull-up-font trigger-up" } ] } ) } , doClick : function ( ) { BI . TriggerIconButton . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . TriggerIconButton . EVENT _CHANGE , this ) } } ) , BI . TriggerIconButton . EVENT _CHANGE = "TriggerIconButton.EVENT_CHANGE" , BI . shortcut ( "bi.trigger_icon_button" , BI . TriggerIconButton ) , BI . MultiSelectItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-multi-select-item" , height : 24 , lo
layouts : [ BI . LogicFactory . createLogic ( "table" , BI . extend ( { } , b . logic , { columns : 7 , rows : 6 , columnSize : [ 1 / 7 , 1 / 7 , 1 / 7 , 1 / 7 , 1 / 7 , 1 / 7 , 1 / 7 ] , rowSize : 24 , hgap : 10 , vgap : 10 } ) ) ] } ) , this . days . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "vertical" , BI . extend ( { } , b . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "top" , d , this . days ) } ) ) ) ) } , isFrontDate : function ( ) { var a = this . options , b = ( this . _const , a . year ) , c = a . month , d = BI . getDate ( ) , e = d . getDay ( ) ; b = 0 | b , d . setFullYear ( b , c , 1 ) ; var f = d . getOffsetDate ( - 1 * ( e + 1 ) ) ; return ! ! BI . checkDateVoid ( f . getFullYear ( ) , f . getMonth ( ) , f . getDate ( ) , a . min , a . max ) [ 0 ] } , isFinalDate : function ( ) { var a = this . options , b = ( this . _const , a . year ) , c = a . month , d = BI . getDate ( ) , e = d . getDay ( ) ; b = 0 | b , d . setFullYear ( b , c , 1 ) ; var f = d . getOffsetDate ( 42 - e ) ; return ! ! BI . checkDateVoid ( f . getFullYear ( ) , f . getMonth ( ) , f . getDate ( ) , a . min , a . max ) [ 0 ] } , setValue : function ( a ) { this . days . setValue ( [ a . year + "-" + a . month + "-" + a . day ] ) } , getValue : function ( ) { var a = this . days . getValue ( ) [ 0 ] . match ( /\d+/g ) ; return { year : 0 | a [ 0 ] , month : 0 | a [ 1 ] , day : 0 | a [ 2 ] } } } ) , BI . extend ( BI . Calendar , { getPageByDateJSON : function ( a ) { var b = BI . getDate ( ) . getFullYear ( ) , c = BI . getDate ( ) . getMonth ( ) , d = 12 * ( a . year - b ) ; return d += a . month - 1 - c } , getDateJSONByPage : function ( a ) { var b = BI . getDate ( ) . getMonth ( ) , c = a ; c += b ; var d = BI . parseInt ( c / 12 ) ; c < 0 && c % 12 !== 0 && d -- ; var e = c >= 0 ? c % 12 : ( 12 + c % 12 ) % 12 ; return { year : BI . getDate ( ) . getFullYear ( ) + d , month : e + 1 } } } ) , BI . shortcut ( "bi.calendar" , BI . Calendar ) , BI . YearCalendar = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . YearCalendar . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-year-calendar" , behaviors : { } , logic : { dynamic : ! 1 } , min : "1900-01-01" , max : "2099-12-31" , year : null } ) } , _yearCreator : function ( a ) { var b = this . options ; a = 0 | a ; var c = BI . YearCalendar . getStartYear ( a ) , d = [ ] ; return BI . each ( BI . range ( BI . YearCalendar . INTERVAL ) , function ( a ) { var e = { } ; BI . checkDateVoid ( c + a , 1 , 1 , b . min , b . max ) [ 0 ] && ( e . disabled = ! 0 ) , e . text = c + a , d . push ( e ) } ) , d } , _init : function ( ) { BI . YearCalendar . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . currentYear = BI . getDate ( ) . getFullYear ( ) ; var c = this . _yearCreator ( b . year || this . currentYear ) , d = c . length , e = BI . makeArray ( d , "" ) , f = [ 0 , 6 , 1 , 7 , 2 , 8 , 3 , 9 , 4 , 10 , 5 , 11 ] ; BI . each ( c , function ( a , b ) { e [ a ] = c [ f [ a ] ] } ) ; var g = [ ] ; g . push ( e . slice ( 0 , 2 ) ) , g . push ( e . slice ( 2 , 4 ) ) , g . push ( e . slice ( 4 , 6 ) ) , g . push ( e . slice ( 6 , 8 ) ) , g . push ( e . slice ( 8 , 10 ) ) , g . push ( e . slice ( 10 , 12 ) ) , g = BI . map ( g , function ( a , b ) { return BI . map ( b , function ( a , b ) { return BI . extend ( b , { type : "bi.text_item" , cls : "bi-list-item-active" , textAlign : "center" , whiteSpace : "normal" , once : ! 1 , forceSelected : ! 0 , height : 24 , width : 38 , value : b . text , disabled : b . disabled } ) } ) } ) , this . years = BI . createWidget ( { type : "bi.button_group" , behaviors : b . behaviors , items : BI . createItems ( g , { } ) , layouts : [ BI . LogicFactory . createLogic ( "table" , BI . extend ( { } , b . logic , { columns : 2 , rows : 6 , columnSize : [ . 5 , . 5 ] , rowSize : 24 } ) ) , { type : "bi.center_adapt" , vgap : 1 } ] } ) , this . years . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "vertical" , BI . extend ( { } , b . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "top" , this . years ) } ) ) ) ) } , isFrontYear : function ( ) { var a = this . options , b = a . year ; return b = 0 | b , ! ! BI . checkDateVoid ( BI . YearCalendar . getStartYear ( b ) - 1 , 1 , 1 , a . min , a . max ) [ 0 ] } , isFinalYear : function ( ) { var a = this . options , b = ( this . _const , a . year ) ; return b = 0 | b , ! ! BI . checkDateVoid ( BI . YearCalendar . getEndYear ( b ) + 1 , 1 , 1 , a . min , a . max ) [ 0 ] } , setValue : function ( a ) { this . years . setValue ( [ a ] ) } , getValue : function ( ) { return this . years . getValue ( ) [ 0 ] } } ) , BI . extend ( BI . YearCalendar , { INTERVAL : 12 , getStartYear : function ( a ) { var b = BI . getDate ( ) . getFullYear ( ) ; return a - ( ( a - b + 3 ) % BI . YearCalendar . INTERVAL + 12 ) % BI . YearCalendar . INTERVAL } , getEndYear : function ( a ) { return BI . YearCalendar . getStartYear ( a ) + BI . YearCalendar . INTERVAL - 1 } , getPageByYear : function ( a ) { var b = BI . getDate ( ) . getFullYear ( ) ; return a = BI . YearCalendar . getStartYear ( a ) , ( a - b + 3 ) / BI . YearCalendar . INTERVAL } } ) , BI . shortcut ( "bi.year_calendar" , BI . YearCalendar ) , BI . ComplexCanvas = BI . inherit ( BI . Widget , { _defaultConfig
} } ) , { type : "bi.absolute" , items : [ { el : { type : "bi.vtape" , items : [ { el : { type : "bi.absolute" , cls : "bi-background bi-border-bottom" , items : [ { el : this . colorEditor , left : 0 , right : 0 , top : 5 } ] } , height : 30 } , { el : { type : "bi.absolute" , items : [ { el : this . storeColors , left : 5 , right : 5 , top : 5 } ] } , height : 30 } , { el : { type : "bi.absolute" , items : [ { el : this . colorPicker , left : 5 , right : 5 , top : 5 } ] } , height : 65 } , { el : this . more , height : 20 } ] } , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : { type : "bi.layout" , cls : "disable-mask" , invisible : ! b . disabled , ref : function ( ) { a . mask = this } } , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } } , mounted : function ( ) { var a = this . options ; BI . isNotNull ( a . value ) && this . setValue ( a . value ) } , _setEnable : function ( a ) { BI . ColorChooserPopup . superclass . _setEnable . apply ( this , arguments ) , this . mask . setVisible ( ! a ) } , setStoreColors : function ( a ) { if ( BI . isArray ( a ) ) { var b = BI . map ( a , function ( a , b ) { return { value : b } } ) ; BI . count ( a . length , 8 , function ( a ) { b . push ( { value : "" , disabled : ! 0 } ) } ) , this . storeColors . populate ( [ b ] ) } } , setValue : function ( a ) { this . colorEditor . setValue ( a ) , this . colorPicker . setValue ( a ) , this . storeColors . setValue ( a ) } , getValue : function ( ) { return this . colorEditor . getValue ( ) } } ) , BI . ColorChooserPopup . EVENT _VALUE _CHANGE = "ColorChooserPopup.EVENT_VALUE_CHANGE" , BI . ColorChooserPopup . EVENT _CHANGE = "ColorChooserPopup.EVENT_CHANGE" , BI . shortcut ( "bi.color_chooser_popup" , BI . ColorChooserPopup ) , BI . SimpleColorChooserPopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SimpleColorChooserPopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-color-chooser-popup" } ) } , _init : function ( ) { BI . SimpleColorChooserPopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . popup = BI . createWidget ( { type : "bi.color_chooser_popup" , value : b . value , element : this , editor : { type : "bi.simple_color_picker_editor" } } ) , this . popup . on ( BI . ColorChooserPopup . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SimpleColorChooserPopup . EVENT _CHANGE , arguments ) } ) , this . popup . on ( BI . ColorChooserPopup . EVENT _VALUE _CHANGE , function ( ) { a . fireEvent ( BI . SimpleColorChooserPopup . EVENT _VALUE _CHANGE , arguments ) } ) } , setStoreColors : function ( a ) { this . popup . setStoreColors ( a ) } , setValue : function ( a ) { this . popup . setValue ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } } ) , BI . SimpleColorChooserPopup . EVENT _VALUE _CHANGE = "ColorChooserPopup.EVENT_VALUE_CHANGE" , BI . SimpleColorChooserPopup . EVENT _CHANGE = "ColorChooserPopup.EVENT_CHANGE" , BI . shortcut ( "bi.simple_color_chooser_popup" , BI . SimpleColorChooserPopup ) , BI . SimpleColorChooser = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SimpleColorChooser . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-simple-color-chooser" , value : "#ffffff" } ) } , _init : function ( ) { BI . SimpleColorChooser . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . combo = BI . createWidget ( { type : "bi.color_chooser" , element : this , value : b . value , popup : { type : "bi.simple_color_chooser_popup" } } ) , this . combo . on ( BI . ColorChooser . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SimpleColorChooser . EVENT _CHANGE , arguments ) } ) } , isViewVisible : function ( ) { return this . combo . isViewVisible ( ) } , hideView : function ( ) { this . combo . hideView ( ) } , showView : function ( ) { this . combo . showView ( ) } , setValue : function ( a ) { this . combo . setValue ( a ) } , getValue : function ( ) { return this . combo . getValue ( ) } } ) , BI . SimpleColorChooser . EVENT _CHANGE = "ColorChooser.EVENT_CHANGE" , BI . shortcut ( "bi.simple_color_chooser" , BI . SimpleColorChooser ) , BI . ColorChooserTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { var a = BI . ColorChooserTrigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-color-chooser-trigger" , height : 24 } ) } , _init : function ( ) { BI . ColorChooserTrigger . superclass . _init . apply ( this , arguments ) , this . colorContainer = BI . createWidget ( { type : "bi.layout" , cls : "bi-card color-chooser-trigger-content" } ) ; var a = BI . createWidget ( { type : "bi.icon_button" , disableSelected : ! 0 , cls : "icon-combo-down-icon trigger-triangle-font" , width : 12 , height : 8 } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . colorContainer , left : 3 , right : 3 , top : 3 , bottom : 3 } , { el : a , right : 1 , bottom : 1 } ] } ) , BI . isNotNull ( this . options . value ) && this . setValue ( this . options . value ) } , setValue : function ( a ) { BI . Co
height : 24 } ) , chooseType : a . chooseType , layouts : [ { type : "bi.vertical" } ] , value : a . value } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( a , c , d ) { b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a === BI . Events . CLICK && b . fireEvent ( BI . IconComboPopup . EVENT _CHANGE , c , d ) } ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . popup ] } ) } , populate : function ( a ) { BI . IconComboPopup . superclass . populate . apply ( this , arguments ) , a = BI . createItems ( a , { type : "bi.single_select_icon_text_item" , height : 24 } ) , this . popup . populate ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } , setValue : function ( a ) { this . popup . setValue ( a ) } } ) , BI . IconComboPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_combo_popup" , BI . IconComboPopup ) , BI . IconComboTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . IconComboTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-icon-combo-trigger" , el : { } , items : [ ] , iconCls : "" , width : 28 , height : 24 , isShowDown : ! 0 , value : "" } ) } , _init : function ( ) { BI . IconComboTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = "" ; BI . isKey ( a . value ) && ( b = this . _digest ( a . value , a . items ) ) , this . button = BI . createWidget ( a . el , { type : "bi.icon_change_button" , cls : "icon-combo-trigger-icon" , iconCls : b , disableSelected : ! 0 , width : a . isShowDown ? a . width - 12 : a . width , height : a . height , iconWidth : a . iconWidth , iconHeight : a . iconHeight , selected : BI . isNotEmptyString ( b ) } ) , this . down = BI . createWidget ( { type : "bi.icon_button" , disableSelected : ! 0 , cls : "icon-combo-down-icon trigger-triangle-font" , width : 12 , height : 8 , selected : BI . isNotEmptyString ( b ) } ) , this . down . setVisible ( a . isShowDown ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . button , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : this . down , right : 0 , bottom : 0 } ] } ) } , _digest : function ( a , b ) { var c = "" ; return a = BI . isArray ( a ) ? a [ 0 ] : a , BI . any ( b , function ( b , d ) { if ( a === d . value ) return c = d . iconCls , ! 0 } ) , c } , populate : function ( a ) { var b = this . options ; this . options . items = a || [ ] , this . button . setIcon ( b . iconCls ) , this . button . setSelected ( ! 1 ) , this . down . setSelected ( ! 1 ) } , setValue : function ( a ) { BI . IconComboTrigger . superclass . setValue . apply ( this , arguments ) ; var b = this . options , c = this . _digest ( a , this . options . items ) ; a = BI . isArray ( a ) ? a [ 0 ] : a , BI . isNotEmptyString ( c ) ? ( this . button . setIcon ( c ) , this . button . setSelected ( ! 0 ) , this . down . setSelected ( ! 0 ) ) : ( this . button . setIcon ( b . iconCls ) , this . button . setSelected ( ! 1 ) , this . down . setSelected ( ! 1 ) ) } } ) , BI . IconComboTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_combo_trigger" , BI . IconComboTrigger ) , BI . IconTextValueCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . IconTextValueCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseClass : "bi-icon-text-value-combo" , height : 24 , iconHeight : null , iconWidth : null , value : "" } ) } , _init : function ( ) { BI . IconTextValueCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.select_icon_text_trigger" , items : b . items , height : b . height , text : b . text , iconCls : b . iconCls , value : b . value , iconHeight : b . iconHeight , iconWidth : b . iconWidth } ) , this . popup = BI . createWidget ( { type : "bi.icon_text_value_combo_popup" , items : b . items , value : b . value , iconHeight : b . iconHeight , iconWidth : b . iconWidth } ) , this . popup . on ( BI . IconTextValueComboPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . textIconCombo . hideView ( ) , a . fireEvent ( BI . IconTextValueCombo . EVENT _CHANGE , arguments ) } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . textIconCombo = BI . createWidget ( { type : "bi.combo" , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup , maxHeight : 240 } } ) , BI . isKey ( b . value ) && this . setValue ( b . value ) } , setValue : function ( a ) { this . trigger . setValue ( a ) , this . popup . setValue ( a ) } , getValue : function ( ) { var a = this . popup . getValue ( ) ; return BI . isNull ( a ) ? [ ] : BI . isArray ( a ) ? a : [ a ] } , populate : function ( a ) { this . options . items = a , this . textIconCombo . populate ( a ) } } ) , BI . IconTextValueCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_value_combo" , BI . IconTextValueCombo ) , BI . IconTextValueComboPopup = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . IconTextValueComboPopup . superclass . _defaultConfig . apply (
BI . shortcut ( "bi.shelter_editor" , BI . ShelterEditor ) , BI . SignInitialEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . SignInitialEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-sign-initial-editor" , hgap : 4 , vgap : 2 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 0 , watermark : "" , errorText : "" , value : "" , text : "" , height : 24 } ) } , _init : function ( ) { BI . SignInitialEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( { type : "bi.editor" , height : b . height , hgap : b . hgap , vgap : b . vgap , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , value : b . value , validationChecker : b . validationChecker , quitChecker : b . quitChecker , allowBlank : b . allowBlank , watermark : b . watermark , errorText : b . errorText } ) , this . text = BI . createWidget ( { type : "bi.text_button" , cls : "sign-editor-text" , title : b . title , warningTitle : b . warningTitle , tipType : b . tipType , textAlign : "left" , height : b . height , hgap : 4 , handler : function ( ) { a . _showInput ( ) , a . editor . focus ( ) , a . editor . selectAll ( ) } } ) , this . text . on ( BI . TextButton . EVENT _CHANGE , function ( ) { BI . nextTick ( function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _CLICK _LABEL ) } ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . text , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _FOCUS , function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _FOCUS , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _BLUR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _CLICK , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . SignInitialEditor . EVENT _KEY _DOWN , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _VALID , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { a . _showHint ( ) , a . _checkText ( ) , a . fireEvent ( BI . SignInitialEditor . EVENT _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _START , function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _START , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _PAUSE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _STOP , function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _STOP , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _SPACE , function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _SPACE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ERROR , function ( ) { a . _checkText ( ) , a . fireEvent ( BI . SignInitialEditor . EVENT _ERROR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ENTER , function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _ENTER , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _RESTRICT , function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _RESTRICT , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _EMPTY , function ( ) { a . fireEvent ( BI . SignInitialEditor . EVENT _EMPTY , arguments ) } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ this . editor ] } ) , this . _showHint ( ) , a . _checkText ( ) } , _checkText : function ( ) { var a = this . options ; BI . nextTick ( BI . bind ( function ( ) { if ( "" === this . editor . getValue ( ) ) this . text . setValue ( a . watermark || "" ) , this . text . element . addClass ( "bi-water-mark" ) ; else { var b = this . editor . getValue ( ) ; b = BI . isEmpty ( b ) || b == a . text ? a . text : b + "(" + a . text + ")" , this . text . setValue ( b ) , this . text . element . removeClass ( "bi-water-mark" ) } } , this ) ) } , _showInput : function ( ) { this . editor . visible ( ) , this . text . invisible ( ) } , _showHint : function ( ) { this . editor . invisible ( ) , this . text . visible ( ) } , setTitle : function ( a ) { this . text . setTitle ( a ) } , setWarningTitle : function ( a ) { this . text . setWarningTitle ( a ) } , focus : function ( ) { this . _showInput ( ) , this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) , this . _showHint ( ) , this . _checkText ( ) } , doRedMark : function ( ) { "" === this . editor . getValue ( ) && BI . isKey ( this . options . watermark ) || this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( )
b === BI . Events . CLICK && ( a . _checkAllSelected ( ) , a . fireEvent ( BI . SelectList . EVENT _CHANGE , c , d ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( b . direction ) , BI . extend ( { scrolly : ! 0 } , b . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( b . direction , this . toolbar , this . list ) } ) ) ) ) , b . items . length <= 0 && ( this . toolbar . setVisible ( ! 1 ) , this . toolbar . setEnable ( ! 1 ) ) , BI . isNotNull ( b . value ) && this . setValue ( b . value ) } , _checkAllSelected : function ( ) { var a = this . list . getValue ( ) . length , b = this . getAllLeaves ( ) . length - a , c = this . list . hasNext ( ) , d = this . toolbar . isSelected ( ) , e = a > 0 && ( b > 0 || ! d && c ) ; e = e || b > 0 && c && d , this . toolbar . setHalfSelected ( e ) , ! e && this . toolbar . setSelected ( a > 0 && b <= 0 && ( ! c || d ) ) } , setAllSelected : function ( a ) { BI . each ( this . getAllButtons ( ) , function ( b , c ) { ( c . setSelected || c . setAllSelected ) . apply ( c , [ a ] ) } ) , this . allSelected = ! ! a , this . toolbar . setSelected ( a ) , this . toolbar . setHalfSelected ( ! 1 ) } , setToolBarVisible : function ( a ) { this . toolbar . setVisible ( a ) } , isAllSelected : function ( ) { return this . allSelected } , hasPrev : function ( ) { return this . list . hasPrev ( ) } , hasNext : function ( ) { return this . list . hasNext ( ) } , prependItems : function ( a ) { this . list . prependItems . apply ( this . list , arguments ) } , addItems : function ( a ) { this . list . addItems . apply ( this . list , arguments ) } , setValue : function ( a ) { var b = a . type === BI . ButtonGroup . CHOOSE _TYPE _ALL ; this . setAllSelected ( b ) , this . list [ b ? "setNotSelectedValue" : "setValue" ] ( a . value ) , this . _checkAllSelected ( ) } , getValue : function ( ) { return this . isAllSelected ( ) === ! 1 ? { type : BI . ButtonGroup . CHOOSE _TYPE _MULTI , value : this . list . getValue ( ) , assist : this . list . getNotSelectedValue ( ) } : { type : BI . ButtonGroup . CHOOSE _TYPE _ALL , value : this . list . getNotSelectedValue ( ) , assist : this . list . getValue ( ) } } , empty : function ( ) { this . list . empty ( ) } , populate : function ( a ) { this . toolbar . setVisible ( ! BI . isEmptyArray ( a ) ) , this . toolbar . setEnable ( ! BI . isEmptyArray ( a ) ) , this . list . populate . apply ( this . list , arguments ) , this . _checkAllSelected ( ) } , _setEnable : function ( a ) { BI . SelectList . superclass . _setEnable . apply ( this , arguments ) , this . toolbar . setEnable ( a ) } , resetHeight : function ( a ) { var b = ( this . toolbar . element . outerHeight ( ) || 25 ) * ( this . toolbar . isVisible ( ) ? 1 : 0 ) ; this . list . resetHeight ? this . list . resetHeight ( a - b ) : this . list . element . css ( { "max-height" : a - b + "px" } ) } , setNotSelectedValue : function ( ) { this . list . setNotSelectedValue . apply ( this . list , arguments ) , this . _checkAllSelected ( ) } , getNotSelectedValue : function ( ) { return this . list . getNotSelectedValue ( ) } , getAllButtons : function ( ) { return this . list . getAllButtons ( ) } , getAllLeaves : function ( ) { return this . list . getAllLeaves ( ) } , getSelectedButtons : function ( ) { return this . list . getSelectedButtons ( ) } , getNotSelectedButtons : function ( ) { return this . list . getNotSelectedButtons ( ) } , getIndexByValue : function ( a ) { return this . list . getIndexByValue ( a ) } , getNodeById : function ( a ) { return this . list . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . list . getNodeByValue ( a ) } } ) , BI . SelectList . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.select_list" , BI . SelectList ) , BI . LazyLoader = BI . inherit ( BI . Widget , { _const : { PAGE : 100 } , _defaultConfig : function ( ) { return BI . extend ( BI . LazyLoader . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-lazy-loader" , el : { } } ) } , _init : function ( ) { var a = this , b = this . options ; BI . LazyLoader . superclass . _init . apply ( this , arguments ) ; var c = b . items . length ; this . loader = BI . createWidget ( { type : "bi.loader" , element : this , el : b . el , itemsCreator : function ( b , c ) { c ( a . _getNextItems ( b ) ) } , hasNext : function ( a ) { return a . count < c } } ) , this . loader . on ( BI . Loader . EVENT _CHANGE , function ( b ) { a . fireEvent ( BI . LazyLoader . EVENT _CHANGE , b ) } ) } , _getNextItems : function ( a ) { var b = this . options , c = b . items . length - this . _const . PAGE * ( a . times - 1 ) , d = BI . takeRight ( b . items , c ) , e = BI . take ( d , this . _const . PAGE ) ; return e } , populate : function ( a ) { this . loader . populate ( a ) } , addItems : function ( a ) { this . loader . addItems ( a ) } , empty : function ( ) { this . loader . empty ( ) } , setNotSelectedValue : function ( ) { this . loader . setNotSelectedValue . apply ( this . loader , arguments ) } , getNotSelectedValue : function ( ) { return this . loader . getNotSelectedValue ( ) } , setValue : function ( ) { this . loader . setValue . apply ( this . loader , arguments ) } , getValue :
a . doCommand ( ) } ) } , activate : function ( ) { } , deactivate : function ( ) { } } ) , BI . shortcut ( "bi.rich_editor_align_center_button" , BI . RichEditorAlignCenterButton ) , BI . RichEditorAlignLeftButton = BI . inherit ( BI . RichEditorAction , { _defaultConfig : function ( ) { return BI . extend ( BI . RichEditorAlignLeftButton . superclass . _defaultConfig . apply ( this , arguments ) , { width : 20 , height : 20 , command : "justifyleft" } ) } , _init : function ( ) { BI . RichEditorAlignLeftButton . superclass . _init . apply ( this , arguments ) ; var a = this ; this . options ; this . align = BI . createWidget ( { type : "bi.icon_button" , element : this , forceNotSelected : ! 0 , title : BI . i18nText ( "BI-Word_Align_Left" ) , height : 20 , width : 20 , cls : "text-toolbar-button bi-list-item-active text-align-left-font" } ) , this . align . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . doCommand ( ) } ) } , activate : function ( ) { } , deactivate : function ( ) { } } ) , BI . shortcut ( "bi.rich_editor_align_left_button" , BI . RichEditorAlignLeftButton ) , BI . RichEditorAlignRightButton = BI . inherit ( BI . RichEditorAction , { _defaultConfig : function ( ) { return BI . extend ( BI . RichEditorAlignRightButton . superclass . _defaultConfig . apply ( this , arguments ) , { width : 20 , height : 20 , command : "justifyright" } ) } , _init : function ( ) { BI . RichEditorAlignRightButton . superclass . _init . apply ( this , arguments ) ; var a = this ; this . options ; this . align = BI . createWidget ( { type : "bi.icon_button" , element : this , forceNotSelected : ! 0 , title : BI . i18nText ( "BI-Word_Align_Right" ) , height : 20 , width : 20 , cls : "text-toolbar-button bi-list-item-active text-align-right-font" } ) , this . align . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . doCommand ( ) } ) } , activate : function ( ) { } , deactivate : function ( ) { } } ) , BI . shortcut ( "bi.rich_editor_align_right_button" , BI . RichEditorAlignRightButton ) , BI . RichEditorBoldButton = BI . inherit ( BI . RichEditorAction , { _defaultConfig : function ( ) { return BI . extend ( BI . RichEditorBoldButton . superclass . _defaultConfig . apply ( this , arguments ) , { width : 20 , height : 20 , command : "Bold" , tags : [ "B" , "STRONG" ] , css : { fontWeight : "bold" } } ) } , _init : function ( ) { BI . RichEditorBoldButton . superclass . _init . apply ( this , arguments ) ; var a = this ; this . options ; this . bold = BI . createWidget ( { type : "bi.icon_button" , element : this , title : BI . i18nText ( "BI-Basic_Bold" ) , height : 20 , width : 20 , cls : "text-toolbar-button bi-list-item-active text-bold-font" } ) , this . bold . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . doCommand ( ) } ) } , activate : function ( ) { this . bold . setSelected ( ! 0 ) } , deactivate : function ( ) { this . bold . setSelected ( ! 1 ) } } ) , BI . shortcut ( "bi.rich_editor_bold_button" , BI . RichEditorBoldButton ) , BI . RichEditorItalicButton = BI . inherit ( BI . RichEditorAction , { _defaultConfig : function ( ) { return BI . extend ( BI . RichEditorItalicButton . superclass . _defaultConfig . apply ( this , arguments ) , { width : 20 , height : 20 , command : "Italic" , tags : [ "EM" , "I" ] , css : { fontStyle : "italic" } } ) } , _init : function ( ) { BI . RichEditorItalicButton . superclass . _init . apply ( this , arguments ) ; var a = this ; this . options ; this . italic = BI . createWidget ( { type : "bi.icon_button" , element : this , title : BI . i18nText ( "BI-Basic_Italic" ) , height : 20 , width : 20 , cls : "text-toolbar-button bi-list-item-active text-italic-font" } ) , this . italic . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . doCommand ( ) } ) } , activate : function ( ) { this . italic . setSelected ( ! 0 ) } , deactivate : function ( ) { this . italic . setSelected ( ! 1 ) } } ) , BI . shortcut ( "bi.rich_editor_italic_button" , BI . RichEditorItalicButton ) , BI . RichEditorParamButton = BI . inherit ( BI . RichEditorParamAction , { _defaultConfig : function ( ) { return BI . extend ( BI . RichEditorParamButton . superclass . _defaultConfig . apply ( this , arguments ) , { width : 20 , height : 20 } ) } , _init : function ( ) { BI . RichEditorParamButton . superclass . _init . apply ( this , arguments ) ; var a = this ; this . options ; this . param = BI . createWidget ( { type : "bi.button" , element : this , level : "ignore" , minWidth : 0 , text : BI . i18nText ( "BI-Formula_Insert" ) , height : 20 , width : 30 } ) , this . param . on ( BI . Button . EVENT _CHANGE , function ( ) { a . addParam ( "参数" ) } ) } , activate : function ( ) { } , deactivate : function ( ) { } } ) , BI . shortcut ( "bi.rich_editor_param_button" , BI . RichEditorParamButton ) , BI . RichEditorUnderlineButton = BI . inherit ( BI . RichEditorAction , { _defaultConfig : function ( ) { return BI . extend ( BI . RichEditorUnderlineButton . superclass . _defaultConfig . apply ( this , arguments ) , { width : 20 , height : 20 , command : "Underline" , tags : [ "U" ] , css : { textDecoration : "underline" } } ) }
isNeedFreeze : b . isNeedFreeze , freezeCols : c . freezeCols , isNeedMerge : b . isNeedMerge , mergeCols : [ ] , mergeRule : b . mergeRule , columnSize : c . columnSize , minColumnSize : c . minColumnSize , maxColumnSize : c . maxColumnSize , headerRowSize : b . headerRowSize , rowSize : b . rowSize , regionColumnSize : b . regionColumnSize , header : c . header , items : c . items } ) , this . table . on ( BI . Table . EVENT _TABLE _SCROLL , function ( ) { a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _AFTER _REGION _RESIZE , function ( ) { b . regionColumnSize = this . getRegionColumnSize ( ) , b . columnSize = this . getColumnSize ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _AFTER _REGION _RESIZE , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _AFTER _COLUMN _RESIZE , function ( ) { b . regionColumnSize = this . getRegionColumnSize ( ) , b . columnSize = this . getColumnSize ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _AFTER _COLUMN _RESIZE , arguments ) } ) } , setWidth : function ( a ) { BI . LayerTreeTable . superclass . setWidth . apply ( this , arguments ) , this . table . setWidth ( a ) } , setHeight : function ( a ) { BI . LayerTreeTable . superclass . setHeight . apply ( this , arguments ) , this . table . setHeight ( a ) } , setColumnSize : function ( a ) { this . options . columnSize = a } , getColumnSize : function ( ) { var a = this . table . getColumnSize ( ) , b = this . _getHDeep ( ) , c = [ ] ; return b > 0 && ( c = BI . makeArray ( b , a [ 0 ] / b ) ) , c . concat ( a . slice ( 1 ) ) } , setRegionColumnSize : function ( a ) { this . options . regionColumnSize = a , this . table . setRegionColumnSize ( 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 = this ; if ( BI . isObject ( a ) ) return void BI . each ( a , function ( a , b ) { c . attr ( a , b ) } ) ; switch ( BI . LayerTreeTable . superclass . attr . apply ( this , arguments ) , a ) { case "columnSize" : case "minColumnSize" : case "maxColumnSize" : case "freezeCols" : case "mergeCols" : return } this . table . attr . apply ( this . table , [ a , b ] ) } , restore : function ( ) { this . table . restore ( ) } , populate : function ( a , b , c , d ) { var e = this . options ; e . items = a || [ ] , b && ( e . header = b ) , c && ( e . crossItems = c ) , d && ( e . crossHeader = d ) ; var f = this . _digest ( ) ; this . table . setColumnSize ( f . columnSize ) , this . table . attr ( "freezeCols" , f . freezeCols ) , this . table . attr ( "minColumnSize" , f . minColumnSize ) , this . table . attr ( "maxColumnSize" , f . maxColumnSize ) , this . table . populate ( f . items , f . header ) } , destroy : function ( ) { this . table . destroy ( ) , BI . LayerTreeTable . superclass . destroy . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.layer_tree_table" , BI . LayerTreeTable ) , BI . TableStyleCell = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . TableStyleCell . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-table-style-cell" , styleGetter : BI . emptyFn } ) } , _init : function ( ) { BI . TableStyleCell . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . text = BI . createWidget ( { type : "bi.label" , element : this , height : a . height , textAlign : "left" , forceCenter : ! 0 , hgap : 5 , text : a . text } ) , this . _digestStyle ( ) } , _digestStyle : function ( ) { var a = this . options , b = a . styleGetter ( ) ; b && this . text . element . css ( b ) } , setText : function ( a ) { this . text . setText ( a ) } , populate : function ( ) { this . _digestStyle ( ) } } ) , BI . shortcut ( "bi.table_style_cell" , BI . TableStyleCell ) , BI . TableTree = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . TableTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-table-tree" , el : { type : "bi.resizable_table" } , isNeedResize : ! 0 , isResizeAdapt : ! 0 , freezeCols : [ ] , isNeedMerge : ! 0 , mergeCols : [ ] , mergeRule : BI . emptyFn , columnSize : [ ] , minColumnSize : [ ] , maxColumnSize : [ ] , headerRowSize : 25 , rowSize : 25 , regionColumnSize : [ ] , headerCellStyleGetter : BI . emptyFn , summaryCellStyleGetter : BI . emptyFn , sequenceCellStyleGetter : BI . emptyFn , header : [ ] , 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
return a . text . getText ( ) } , hgap : c . hgap , readonly : b . readonly } ) , this . trigerButton = BI . createWidget ( { type : "bi.trigger_icon_button" , width : b . triggerWidth || b . height } ) , BI . createWidget ( { element : this , type : "bi.htape" , items : [ { el : this . text } , { el : this . trigerButton , width : b . triggerWidth || b . height } ] } ) } , setText : function ( a ) { this . text . setText ( a ) } } ) , BI . shortcut ( "bi.text_trigger" , BI . TextTrigger ) , BI . SelectTextTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectTextTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-text-trigger bi-border" , height : 24 } ) } , _init : function ( ) { this . options . height -= 2 , BI . SelectTextTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . trigger = BI . createWidget ( { type : "bi.text_trigger" , element : this , height : a . height , readonly : a . readonly , text : this . _digest ( a . value , a . items ) } ) } , _digest : function ( a , b ) { var c = this . options ; a = BI . isArray ( a ) ? a : [ a ] ; var d = [ ] , e = BI . Tree . transformToArrayFormat ( b ) ; return BI . each ( e , function ( b , c ) { BI . deepContains ( a , c . value ) && ! d . contains ( c . text || c . value ) && d . push ( c . text || c . value ) } ) , d . length > 0 ? d . join ( "," ) : c . text } , setValue : function ( a ) { this . trigger . setText ( this . _digest ( a , this . options . items ) ) } , populate : function ( a ) { this . options . items = a } } ) , BI . shortcut ( "bi.select_text_trigger" , BI . SelectTextTrigger ) , BI . SmallSelectTextTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . SmallSelectTextTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-small-select-text-trigger bi-border" , height : 20 } ) } , _init : function ( ) { this . options . height -= 2 , BI . SmallSelectTextTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this . _digest ( a . text , a . items ) ; this . trigger = BI . createWidget ( { type : "bi.small_text_trigger" , element : this , height : a . height - 2 , text : b . text , cls : b . cls } ) } , _digest : function ( a , b ) { var c = this . options ; a = BI . isArray ( a ) ? a : [ a ] ; var d = [ ] , e = BI . Tree . transformToArrayFormat ( b ) ; return BI . each ( e , function ( b , c ) { BI . deepContains ( a , c . value ) && ! d . contains ( c . text || c . value ) && d . push ( c . text || c . value ) } ) , d . length > 0 ? { cls : "" , text : d . join ( "," ) } : { cls : "bi-water-mark" , text : c . text } } , setValue : function ( a ) { var b = this . _digest ( a , this . options . items ) ; this . trigger . element . removeClass ( "bi-water-mark" ) . addClass ( b . cls ) , this . trigger . setText ( b . text ) } , populate : function ( a ) { this . options . items = a } } ) , BI . shortcut ( "bi.small_select_text_trigger" , BI . SmallSelectTextTrigger ) , BI . SmallTextTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 } , _defaultConfig : function ( ) { var a = BI . SmallTextTrigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-trigger" , height : 20 } ) } , _init : function ( ) { BI . SmallTextTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , height : a . height , text : a . text , hgap : b . hgap } ) , this . trigerButton = BI . createWidget ( { type : "bi.trigger_icon_button" , width : a . triggerWidth || a . height } ) , BI . createWidget ( { element : this , type : "bi.htape" , items : [ { el : this . text } , { el : this . trigerButton , width : a . triggerWidth || a . height } ] } ) } , setValue : function ( a ) { this . text . setValue ( a ) } , setText : function ( a ) { this . text . setText ( a ) } } ) , BI . shortcut ( "bi.small_text_trigger" , BI . SmallTextTrigger ) , BI . SequenceTableTreeNumber = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SequenceTableTreeNumber . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-sequence-table-tree-number" , isNeedFreeze : ! 1 , startSequence : 1 , scrollTop : 0 , headerRowSize : 25 , rowSize : 25 , sequenceHeaderCreator : BI . emptyFn , header : [ ] , items : [ ] , crossHeader : [ ] , crossItems : [ ] } ) } , _init : function ( ) { BI . SequenceTableTreeNumber . superclass . _init . apply ( this , arguments ) ; this . options ; this . vCurr = 1 , this . hCurr = 1 , this . tasks = [ ] , this . renderedCells = [ ] , this . renderedKeys = [ ] , this . container = BI . createWidget ( { type : "bi.absolute" , width : 60 , scrollable : ! 1 } ) , this . scrollContainer = BI . createWidget ( { type : "bi.vertical" , scrollable : ! 1 , scrolly : ! 1 , items : [ this . container ] } ) , this . headerContainer = BI . createWidget ( { type : "bi.absolute" , cls : "bi-border" , width : 58 , scrollable : ! 1 } ) , this . layout = BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . headerContainer , height : this . _getH
type : "bi.icon_button" , cls : "column-next-page-h-font bottom-button bi-border-left" } ) , this . bottomBtn . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . _finetuning ( - 1 ) , a . fireEvent ( BI . DateTimeSelect . EVENT _CONFIRM ) } ) , this . _finetuning ( 0 ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ this . editor , { el : { type : "bi.grid" , columns : 1 , rows : 2 , items : [ { column : 0 , row : 0 , el : this . topBtn } , { column : 0 , row : 1 , el : this . bottomBtn } ] } , width : 30 } ] } ) } , _alertOutEditorValue : function ( a ) { return a > this . options . max && ( a = this . options . min ) , a < this . options . min && ( a = this . options . max ) , BI . parseInt ( a ) } , _alertInEditorValue : function ( a ) { return a > this . options . max && ( a = this . options . min ) , a < this . options . min && ( a = this . options . max ) , a = a < 10 ? "0" + a : a } , _finetuning : function ( a ) { var b = BI . parseInt ( this . _alertOutEditorValue ( this . editor . getValue ( ) ) ) ; this . editor . setValue ( this . _alertInEditorValue ( b + a ) ) } , getValue : function ( ) { var a = this . editor . getValue ( ) ; return this . _alertOutEditorValue ( a ) } , setValue : function ( a ) { this . editor . setValue ( this . _alertInEditorValue ( a ) ) , this . _finetuning ( 0 ) } } ) , BI . DateTimeSelect . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.date_time_select" , BI . DateTimeSelect ) , BI . DateTimeTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 } , _defaultConfig : function ( ) { return BI . extend ( BI . DateTimeTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-date-time-trigger" , min : "1900-01-01" , max : "2099-12-31" , height : 24 , width : 200 } ) } , _init : function ( ) { BI . DateTimeTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , height : a . height , width : a . width , hgap : b . hgap } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : BI . createWidget ( ) , width : a . height } , { el : this . text } ] } ) , this . setValue ( a . value ) } , _printTime : function ( a ) { return a < 10 ? "0" + a : a } , setValue : function ( a ) { var b , c = a ; if ( BI . isNull ( c ) ) c = BI . getDate ( ) , b = c . print ( "%Y-%X-%d %H:%M:%S" ) ; else { var d = BI . getDate ( c . year , c . month - 1 , c . day , c . hour , c . minute , c . second ) ; b = d . print ( "%Y-%X-%d %H:%M:%S" ) } this . text . setText ( b ) , this . text . setTitle ( b ) } } ) , BI . shortcut ( "bi.date_time_trigger" , BI . DateTimeTrigger ) , BI . StaticDateTimePaneCard = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . StaticDateTimePaneCard . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-date-time-pane" , min : "1900-01-01" , max : "2099-12-31" , selectedTime : null } ) } , _init : function ( ) { BI . StaticDateTimePaneCard . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . today = BI . getDate ( ) , this . _year = this . today . getFullYear ( ) , this . _month = this . today . getMonth ( ) + 1 , this . selectedTime = b . selectedTime || { year : this . _year , month : this . _month } , this . datePicker = BI . createWidget ( { type : "bi.date_picker" , 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 = BI . extend ( a . selectedTime , { year : b . year , month : b . month , day : d } ) , 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 : "top" , logic : { dynamic : ! 1 } , type : "bi.navigation" , tab : this . datePicker , cardCreator : BI . bind ( this . _createNav , this ) } ) , this . calendar . on ( BI . Navigation . EVENT _CHANGE , function ( ) { a . selectedTime = BI . extend ( a . calendar . getValue ( ) , a . timeSelect . getValue ( ) ) , a . calendar . empty ( ) , a . setValue ( a . selectedTime ) , a . fireEvent ( BI . DateCalendarPopup . EVENT _CHANGE ) } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ this . calendar , { el : { type : "bi.dynamic_date_time_select" , ref : function ( ) { a . timeSelect = this } , listeners : [ { eventName : BI . DynamicDateTimeSelect . EVENT _CONFIRM , action : function ( ) { a . selectedTime = BI . extend ( a . calendar . getValue ( ) , a . timeSelect . getValue ( ) ) , a . fireEvent ( "EVENT_CHANGE" ) } } ] } , height : 40 } ] } ) , this . setValue ( b . selectedTime ) } , _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 : funct
break ; case BI . DynamicDateCard . TYPE . WORK _DAY : default : a = BI . i18nText ( "BI-Basic_Work_Day" ) } return a } , setValue : function ( a ) { a = a || { } , a . value = a . value || 0 , a . offset = a . offset || 0 , this . editor . setValue ( a . value ) , this . offsetCombo . setValue ( a . offset ) } , getValue : function ( ) { return { dateType : this . options . dateType , value : this . editor . getValue ( ) , offset : this . offsetCombo . getValue ( ) [ 0 ] } } } ) , BI . DynamicDateParamItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.dynamic_date_param_item" , BI . DynamicDateParamItem ) , BI . DynamicDatePopup = BI . inherit ( BI . Widget , { constants : { tabHeight : 30 } , props : { baseCls : "bi-dynamic-date-popup" , width : 248 , height : 344 } , _init : function ( ) { BI . DynamicDatePopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . storeValue = { type : BI . DynamicDateCombo . Static } , BI . createWidget ( { element : this , type : "bi.vtape" , items : [ { el : this . _getTabJson ( ) } , { el : { type : "bi.grid" , items : [ [ { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-high-light bi-border-top" , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Clear" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicDatePopup . BUTTON _CLEAR _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-border-left bi-border-right bi-high-light bi-border-top" , shadow : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Today" ) , ref : function ( ) { a . textButton = this } , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicDatePopup . BUTTON _lABEL _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-high-light bi-border-top" , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_OK" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicDatePopup . BUTTON _OK _EVENT _CHANGE ) } } ] } ] ] } , height : 24 } ] } ) , this . setValue ( b . value ) } , _getTabJson : function ( ) { var a = this ; 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-Multi_Date_YMD" ) , value : BI . DynamicDateCombo . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicDateCombo . Dynamic } ] , { textAlign : "center" } ) } , cardCreator : function ( b ) { switch ( b ) { case BI . DynamicDateCombo . Dynamic : return { type : "bi.dynamic_date_card" , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { a . _setInnerValue ( a . year , b ) } } ] , ref : function ( ) { a . dynamicPane = this } } ; case BI . DynamicDateCombo . Static : default : return { type : "bi.date_calendar_popup" , min : a . options . min , max : a . options . max , listeners : [ { eventName : BI . DateCalendarPopup . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicDatePopup . EVENT _CHANGE ) } } ] , ref : function ( ) { a . ymd = this } } } } , listeners : [ { eventName : BI . Tab . EVENT _CHANGE , action : function ( ) { var b = a . dateTab . getSelect ( ) ; switch ( b ) { case BI . DynamicDateCombo . Static : var c = BI . DynamicDateHelper . getCalculation ( a . dynamicPane . getValue ( ) ) ; a . ymd . setValue ( { year : c . getFullYear ( ) , month : c . getMonth ( ) + 1 , day : c . getDate ( ) } ) , a . _setInnerValue ( ) ; break ; case BI . DynamicDateCombo . Dynamic : default : a . storeValue && a . storeValue . type === BI . DynamicDateCombo . Dynamic ? a . dynamicPane . setValue ( a . storeValue . value ) : a . dynamicPane . setValue ( { year : 0 } ) , a . _setInnerValue ( ) } } } ] } } , _setInnerValue : function ( ) { if ( this . dateTab . getSelect ( ) === BI . DynamicDateCombo . Static ) this . textButton . setValue ( BI . i18nText ( "BI-Multi_Date_Today" ) ) , this . textButton . setEnable ( ! 0 ) ; else { var a = BI . DynamicDateHelper . getCalculation ( this . dynamicPane . getValue ( ) ) ; a = a . print ( "%Y-%x-%e" ) , this . textButton . setValue ( a ) , this . textButton . setEnable ( ! 1 ) } } , _checkValueValid : function ( a ) { return BI . isNull ( a ) || BI . isEmptyObject ( a ) || BI . isEmptyString ( a ) } , setValue : function ( a ) { this . storeValue = a ; var b , c , d = this ; switch ( a = a || { } , b = a . type || BI . DynamicDateCombo . Static , c = a . value || a , this . dateTab . setSelect ( b ) , b ) { case BI . DynamicDateCombo . Dynamic : this . dynamicPane . setValue ( c ) , d . _setInnerValue ( ) ; break ; case BI . DynamicDateCombo . Static : default : if ( this . _checkValueValid ( c ) ) { var e = BI . getDate ( ) ; this . ymd . setValue ( { year : e . getFullYear ( ) , month : e . getMonth ( ) + 1 , day : e . getDate ( ) } ) , this . textButton . setValue ( BI . i18nText ( "BI-Multi_Date_Today" ) ) } else this . ymd . setValue ( c ) , this . textButton . setValue ( BI . i18nText ( "BI-Multi_Date_Today" ) ) ; this . textButton . setEnable ( ! 0 ) } } , getValue : function
a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _FOCUS , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _FOCUS ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _BLUR ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _CLICK ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { a . _checkClear ( ) , a . fireEvent ( BI . SearchEditor . EVENT _CHANGE ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . SearchEditor . EVENT _KEY _DOWN , b ) } ) , this . editor . on ( BI . Editor . EVENT _SPACE , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _SPACE ) } ) , this . editor . on ( BI . Editor . EVENT _BACKSPACE , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _BACKSPACE ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _VALID ) } ) , this . editor . on ( BI . Editor . EVENT _ERROR , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _ERROR ) } ) , this . editor . on ( BI . Editor . EVENT _ENTER , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _ENTER ) } ) , this . editor . on ( BI . Editor . EVENT _RESTRICT , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _RESTRICT ) } ) , this . editor . on ( BI . Editor . EVENT _EMPTY , function ( ) { a . _checkClear ( ) , a . fireEvent ( BI . SearchEditor . EVENT _EMPTY ) } ) , this . editor . on ( BI . Editor . EVENT _REMOVE , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _REMOVE ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _CONFIRM ) } ) , this . editor . on ( BI . Editor . EVENT _START , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _START ) } ) , this . editor . on ( BI . Editor . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _PAUSE ) } ) , this . editor . on ( BI . Editor . EVENT _STOP , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _STOP ) } ) , this . clear . invisible ( ) } , _checkClear : function ( ) { this . getValue ( ) ? this . clear . visible ( ) : this . clear . invisible ( ) } , focus : function ( ) { this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) } , getValue : function ( ) { if ( this . isValid ( ) ) { var a = this . editor . getValue ( ) . match ( /[\S]+/g ) ; return BI . isNull ( a ) ? "" : a [ a . length - 1 ] } } , getKeywords : function ( ) { var a = this . editor . getValue ( ) , b = a . match ( /[\S]+/g ) ; return BI . isEndWithBlank ( a ) ? b . concat ( [ " " ] ) : b } , getLastValidValue : function ( ) { return this . editor . getLastValidValue ( ) } , setValue : function ( a ) { this . editor . setValue ( a ) , BI . isKey ( a ) && this . clear . visible ( ) } , isEditing : function ( ) { return this . editor . isEditing ( ) } , isValid : function ( ) { return this . editor . isValid ( ) } } ) , BI . SearchEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . SearchEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . SearchEditor . EVENT _BLUR = "EVENT_BLUR" , BI . SearchEditor . EVENT _CLICK = "EVENT_CLICK" , BI . SearchEditor . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . SearchEditor . EVENT _SPACE = "EVENT_SPACE" , BI . SearchEditor . EVENT _BACKSPACE = "EVENT_BACKSPACE" , BI . SearchEditor . EVENT _CLEAR = "EVENT_CLEAR" , BI . SearchEditor . EVENT _START = "EVENT_START" , BI . SearchEditor . EVENT _PAUSE = "EVENT_PAUSE" , BI . SearchEditor . EVENT _STOP = "EVENT_STOP" , BI . SearchEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . SearchEditor . EVENT _VALID = "EVENT_VALID" , BI . SearchEditor . EVENT _ERROR = "EVENT_ERROR" , BI . SearchEditor . EVENT _ENTER = "EVENT_ENTER" , BI . SearchEditor . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . SearchEditor . EVENT _REMOVE = "EVENT_REMOVE" , BI . SearchEditor . EVENT _EMPTY = "EVENT_EMPTY" , BI . shortcut ( "bi.search_editor" , BI . SearchEditor ) , BI . SmallSearchEditor = BI . inherit ( BI . SearchEditor , { _defaultConfig : function ( ) { var a = BI . SmallSearchEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-small-search-editor" , height : 24 } ) } , _init : function ( ) { BI . SmallSearchEditor . superclass . _init . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.small_search_editor" , BI . SmallSearchEditor ) , BI . TextEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . TextEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-text-editor bi-border" , hgap : 4 , vgap : 2 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 1 , watermark : "" , errorText : "" , height : 24 } ) } , _init : function ( ) { BI . TextEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; BI . isNumber ( b . height ) && this . element . css ( { height : b . height - 2 } ) , BI . isNumber ( b . width ) && this . element . css ( { width : b . width - 2 } ) , this . editor =
chooseType : BI . ButtonGroup . CHOOSE _TYPE _DEFAULT , layouts : [ { type : "bi.vertical" , scrolly : ! 1 } ] } , items : b . items , listeners : [ { eventName : BI . Controller . EVENT _CHANGE , action : function ( ) { a . fireEvent ( "EVENT_CHANGE" , arguments ) } } ] , ref : function ( b ) { a . tree = b } } } , populate : function ( a ) { BI . isNotEmptyArray ( a ) ? this . element . addClass ( "bi-border-top bi-border-left" ) : this . element . removeClass ( "bi-border-top bi-border-left" ) , this . tree . populate . apply ( this . tree , arguments ) } , getValue : function ( ) { return this . tree . getValue ( ) } } ) ; BI . shortcut ( "bi.filter_pane" , a ) } ( ) , BI . IntervalSlider = BI . inherit ( BI . Widget , { _constant : { EDITOR _WIDTH : 58 , EDITOR _R _GAP : 60 , EDITOR _HEIGHT : 30 , SLIDER _WIDTH _HALF : 15 , SLIDER _WIDTH : 30 , SLIDER _HEIGHT : 30 , TRACK _HEIGHT : 24 } , props : { baseCls : "bi-interval-slider bi-slider-track" , digit : ! 1 , unit : "" } , render : function ( ) { var a = this , b = this . _constant ; return this . enable = ! 1 , this . valueOne = "" , this . valueTwo = "" , this . calculation = new BI . AccurateCalculationModel , this . grayTrack = BI . createWidget ( { type : "bi.layout" , cls : "gray-track" , height : 6 } ) , this . blueTrack = BI . createWidget ( { type : "bi.layout" , cls : "blue-track bi-high-light-background" , height : 6 } ) , this . track = this . _createTrackWrapper ( ) , this . labelOne = BI . createWidget ( { type : "bi.sign_text_editor" , cls : "slider-editor-button" , text : this . options . unit , errorText : "" , allowBlank : ! 1 , width : b . EDITOR _WIDTH , validationChecker : function ( b ) { return a . _checkValidation ( b ) } } ) , this . labelOne . element . hover ( function ( ) { a . labelOne . element . removeClass ( "bi-border" ) . addClass ( "bi-border" ) } , function ( ) { a . labelOne . element . removeClass ( "bi-border" ) } ) , this . labelOne . on ( BI . Editor . EVENT _CONFIRM , function ( ) { var b = BI . parseFloat ( this . getValue ( ) ) ; a . valueOne = b ; var c = a . _getPercentByValue ( b ) , d = BI . parseFloat ( c . toFixed ( 1 ) ) ; a . _setLabelOnePosition ( d ) , a . _setSliderOnePosition ( d ) , a . _setBlueTrack ( ) , a . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } ) , this . labelTwo = BI . createWidget ( { type : "bi.sign_text_editor" , cls : "slider-editor-button" , errorText : "" , text : this . options . unit , allowBlank : ! 1 , width : b . EDITOR _WIDTH , validationChecker : function ( b ) { return a . _checkValidation ( b ) } } ) , this . labelTwo . element . hover ( function ( ) { a . labelTwo . element . removeClass ( "bi-border" ) . addClass ( "bi-border" ) } , function ( ) { a . labelTwo . element . removeClass ( "bi-border" ) } ) , this . labelTwo . on ( BI . Editor . EVENT _CONFIRM , function ( ) { var b = BI . parseFloat ( this . getValue ( ) ) ; a . valueTwo = b ; var c = a . _getPercentByValue ( b ) , d = BI . parseFloat ( c . toFixed ( 1 ) ) ; a . _setLabelTwoPosition ( d ) , a . _setSliderTwoPosition ( d ) , a . _setBlueTrack ( ) , a . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } ) , this . sliderOne = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . sliderTwo = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . _draggable ( this . sliderOne , ! 0 ) , this . _draggable ( this . sliderTwo , ! 1 ) , this . _setVisible ( ! 1 ) , { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . track , width : "100%" , height : b . TRACK _HEIGHT } ] } ] , hgap : 7 , height : b . TRACK _HEIGHT } , top : 23 , left : 0 , width : "100%" } , this . _createLabelWrapper ( ) , this . _createSliderWrapper ( ) ] } } , _rePosBySizeAfterMove : function ( a , b ) { var c = this . options , d = 100 * a / this . _getGrayTrackLength ( ) , e = BI . parseFloat ( d . toFixed ( 1 ) ) , f = this . _getValueByPercent ( e ) ; f = this . _assertValue ( f ) , f = c . digit === ! 1 ? f : f . toFixed ( c . digit ) , b ? ( this . _setLabelOnePosition ( e ) , this . _setSliderOnePosition ( e ) , this . labelOne . setValue ( f ) , this . valueOne = f ) : ( this . _setLabelTwoPosition ( e ) , this . _setSliderTwoPosition ( e ) , this . labelTwo . setValue ( f ) , this . valueTwo = f ) , this . _setBlueTrack ( ) } , _rePosBySizeAfterStop : function ( a , b ) { var c = 100 * a / this . _getGrayTrackLength ( ) , d = BI . parseFloat ( c . toFixed ( 1 ) ) ; b ? this . _setSliderOnePosition ( d ) : this . _setSliderTwoPosition ( d ) } , _draggable : function ( a , b ) { function c ( a ) { return BI . clamp ( a , 0 , d . _getGrayTrackLength ( ) ) } var d = this , e = ( this . options , ! 1 ) , f = 0 , g = 0 , h = 0 , i = new BI . MouseMoveTracker ( function ( j ) { i . isDragging ( ) && ( e = ! 0 , g += j , f = c ( h + g ) , a . element . addClass ( "dragging" ) , d . _rePosBySizeAfterMove ( f , b ) ) } , function ( ) { e === ! 0 && ( f = c ( f ) , d . _rePosBySizeAfterStop ( f , b ) , f = 0 , g = 0 , h = f , e = ! 1 ) , a . element . removeClass ( "dragging" ) , i . releaseMouseMoves ( ) , d . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } , window ) ; a . element . on ( "mousedown" , function ( b ) { a . isEnabled ( ) && ( h = this . offsetLeft , c ( h ) , i . captureMouseMoves ( b ) )
_defaultConfig : function ( ) { var a = BI . MultiLayerSelectTreeLastPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-multilayer-select-tree-last-plus-group-node bi-list-item-active" , layer : 0 , id : "" , pId : "" , readonly : ! 0 , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . MultiLayerSelectTreeLastPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.select_tree_last_plus_group_node" , cls : "bi-list-item-none" , stopPropagation : ! 0 , logic : { dynamic : ! 0 } , id : b . id , pId : b . pId , open : b . open , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . node . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . setSelected ( a . isSelected ( ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , cls : "base-line-conn-background" , width : 13 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 13 ) , items : [ c ] } ) } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , isSelected : function ( ) { return this . node . isSelected ( ) } , setSelected : function ( a ) { BI . MultiLayerSelectTreeLastPlusGroupNode . superclass . setSelected . apply ( this , arguments ) , this . node . setSelected ( a ) } , doClick : function ( ) { BI . MultiLayerSelectTreeLastPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MultiLayerSelectTreeLastPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_select_tree_last_plus_group_node" , BI . MultiLayerSelectTreeLastPlusGroupNode ) , BI . MultiLayerSelectTreeMidPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-multilayer-select-tree-mid-plus-group-node bi-list-item-active" , layer : 0 , id : "" , pId : "" , readonly : ! 0 , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.select_tree_mid_plus_group_node" , cls : "bi-list-item-none" , stopPropagation : ! 0 , logic : { dynamic : ! 0 } , id : b . id , pId : b . pId , open : b . open , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . node . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . setSelected ( a . isSelected ( ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , cls : "base-line-conn-background" , width : 13 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 13 ) , items : [ c ] } ) } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , isSelected : function ( ) { return this . node . isSelected ( ) } , setSelected : function ( a ) { BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . setSelected . apply ( this , arguments ) , this . node . setSelected ( a ) } , doClick : function ( ) { BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_select_tree_mid_plus_group_node" , BI . MultiLayerSelectTreeMidPlusGroupNode ) , BI . MultiLayerSingleTreeCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSingleTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multilayer-singletree-combo" , isDefaultInit : ! 1 , height : 24 , text : "" , itemsCreator : BI . emptyFn , items : [ ] , value : "" } ) } , _init : function ( ) { BI . MultiLayerSingleTreeCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.single_tree_trigger" , text : b . text , height : b . height , items : b . items , value : b . value } ) , this . popup = BI . createWidget ( { type : "bi.multilayer_single_tree_popup" , isDefaultInit : b . isDefaultInit , itemsCreator : b . itemsCreator
this . requesting = ! 0 , e . itemsCreator ( { type : BI . MultiSelectInsertCombo . REQ _GET _ALL _DATA , keywords : a } , function ( a ) { var b = BI . map ( a . items , "value" ) ; c ( b ) } ) } , _joinAll : function ( a , b ) { var c = this , d = this . options ; this . _assertValue ( a ) , this . requesting = ! 0 , d . itemsCreator ( { type : BI . MultiSelectInsertCombo . REQ _GET _ALL _DATA , keywords : [ this . trigger . getKey ( ) ] } , function ( d ) { var e = BI . map ( d . items , "value" ) ; if ( c . storeValue . type === a . type ) { var f = ! 1 , g = c . _makeMap ( c . storeValue . value ) ; return BI . each ( e , function ( a , b ) { BI . isNotNull ( g [ b ] ) && ( f = ! 0 , delete g [ b ] ) } ) , f && ( c . storeValue . value = BI . values ( g ) ) , void c . _adjust ( b ) } var h = c . _makeMap ( c . storeValue . value ) , i = c . _makeMap ( a . value ) , j = [ ] ; BI . each ( e , function ( a , b ) { BI . isNotNull ( h [ e [ a ] ] ) && delete h [ e [ a ] ] , BI . isNull ( i [ e [ a ] ] ) && j . push ( b ) } ) , c . storeValue . value = j . concat ( BI . values ( h ) ) , c . _adjust ( b ) } ) } , _adjust : function ( a ) { function b ( ) { c . wants2Quit === ! 0 && ( c . fireEvent ( BI . MultiSelectInsertCombo . EVENT _CONFIRM ) , c . wants2Quit = ! 1 ) , c . requesting = ! 1 } var c = this ; this . options ; b ( ) , a ( ) } , _join : function ( a , b ) { var c = this ; this . options ; if ( this . _assertValue ( a ) , this . _assertValue ( this . storeValue ) , this . storeValue . type === a . type ) { var d = this . _makeMap ( this . storeValue . value ) ; BI . each ( a . value , function ( a , b ) { d [ b ] || ( c . storeValue . value . push ( b ) , d [ b ] = b ) } ) ; var e = ! 1 ; return BI . each ( a . assist , function ( a , b ) { BI . isNotNull ( d [ b ] ) && ( e = ! 0 , delete d [ b ] ) } ) , e && ( this . storeValue . value = BI . values ( d ) ) , void c . _adjust ( b ) } this . _joinAll ( a , b ) } , _setStartValue : function ( a ) { this . _startValue = a , this . popup . setStartValue ( a ) } , setValue : function ( a ) { this . storeValue = a || { } , this . _assertValue ( this . storeValue ) , this . combo . setValue ( this . storeValue ) } , getValue : function ( ) { return BI . deepClone ( this . storeValue ) } , populate : function ( ) { this . combo . populate . apply ( this . combo , arguments ) } } ) , BI . extend ( BI . MultiSelectInsertCombo , { REQ _GET _DATA _LENGTH : 1 , REQ _GET _ALL _DATA : - 1 } ) , BI . MultiSelectInsertCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.multi_select_insert_combo" , BI . MultiSelectInsertCombo ) , BI . MultiSelectInsertNoBarCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectInsertNoBarCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-insert-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 24 } ) } , _init : function ( ) { BI . MultiSelectInsertNoBarCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = function ( ) { BI . isKey ( a . _startValue ) && a . storeValue . value [ a . storeValue . type === BI . Selection . All ? "remove" : "pushDistinct" ] ( a . _startValue ) , a . trigger . getSearcher ( ) . setState ( a . storeValue ) , a . trigger . getCounter ( ) . setButtonChecked ( a . storeValue ) } ; this . storeValue = { type : BI . Selection . Multi , value : b . value || [ ] } , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.multi_select_trigger" , height : b . height , text : b . text , masker : { offset : { left : 1 , top : 1 , right : 1 , bottom : 33 } } , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { 1 === c . times && BI . isNotNull ( c . keywords ) && a . trigger . setValue ( { type : BI . Selection . Multi , value : a . getValue ( ) } ) , d . apply ( a , arguments ) } ) } , value : { type : BI . Selection . Multi , value : b . value } } ) , this . trigger . on ( BI . 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 ( ) { var b = this . getSearcher ( ) . getKeyword ( ) ; a . _join ( { type : BI . Selection . Multi , value : [ b ] } , function ( ) { a . storeValue . type === BI . Selection . Multi && a . storeValue . value . pushDistinct ( b ) , 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
_defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectCheckSelectedSwitcher . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-check-selected-switcher" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , el : { } , popup : { } , adapter : null , masker : { } } ) } , _init : function ( ) { BI . MultiSelectCheckSelectedSwitcher . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . button = BI . createWidget ( b . el , { type : "bi.multi_select_check_selected_button" , itemsCreator : b . itemsCreator , value : b . value } ) , this . button . on ( BI . Events . VIEW , function ( ) { a . fireEvent ( BI . Events . VIEW , arguments ) } ) , this . switcher = BI . createWidget ( { type : "bi.switcher" , toggle : ! 1 , element : this , el : this . button , popup : BI . extend ( { type : "bi.multi_select_check_pane" , valueFormatter : b . valueFormatter , itemsCreator : b . itemsCreator , onClickContinueSelect : function ( ) { a . switcher . hideView ( ) } , value : b . value } , b . popup ) , adapter : b . adapter , masker : b . masker } ) , this . switcher . on ( BI . Switcher . EVENT _TRIGGER _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectCheckSelectedSwitcher . EVENT _TRIGGER _CHANGE ) } ) , this . switcher . on ( BI . Switcher . EVENT _BEFORE _POPUPVIEW , function ( ) { a . fireEvent ( BI . MultiSelectCheckSelectedSwitcher . EVENT _BEFORE _POPUPVIEW ) } ) , this . switcher . on ( BI . Switcher . EVENT _AFTER _POPUPVIEW , function ( ) { var a = this ; BI . nextTick ( function ( ) { a . populate ( ) } ) } ) , this . switcher . element . click ( function ( a ) { a . stopPropagation ( ) } ) } , adjustView : function ( ) { this . switcher . adjustView ( ) } , hideView : function ( ) { this . switcher . empty ( ) , this . switcher . hideView ( ) } , setAdapter : function ( a ) { this . switcher . setAdapter ( a ) } , setValue : function ( a ) { this . switcher . setValue ( a ) } , setButtonChecked : function ( a ) { this . button . setValue ( a ) } , getValue : function ( ) { } , populate : function ( a ) { 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 : ! 1 } , 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_pane" , cls : "bi-border-left bi-border-right bi-border-bottom" , valueFormatter : b . valueFormatter , keywordGetter : function ( ) { return a . trigger . getKeyword ( ) } , itemsCreator : function ( c , d ) { c . keywords = [ a . trigger . getKeyword ( ) ] , this . setKeyword ( c . keywords [ 0 ] ) , b . itemsCreator ( c , d ) } } ) , this . searcherPane . setVisible ( ! 1 ) , this . trigger = BI . createWidget ( { type : "bi.searcher" , isAutoSearch : ! 1 , isAutoSync : ! 1 , onSearch : function ( a , b ) { b ( ) } , adapter : this . adapter , popup : this . searcherPane , height : 200 , masker : ! 1 , listeners : [ { eventName : BI . Searcher . EVENT _START , action : function ( ) { a . _showSearcherPane ( ) , a . _setStartValue ( "" ) , this . setValue ( BI . deepClone ( a . storeValue ) ) } } , { eventName : BI . Searcher . EVENT _STOP , action : function ( ) { a . _showAdapter ( ) , a . _setStartValue ( "" ) , a . adapter . setValue ( a . storeValue ) , a . adapter . populate ( ) } } , { eventName : BI . Searcher . EVENT _PAUSE , action : function ( ) { var b = this . getKeyword ( ) ; this . hasMatched ( ) ? a . _join ( { type : BI . Selection . Multi , value : [ b ] } , function ( ) { a . storeValue . type === BI . Selection . Multi && a . storeValue . value . pushDistinct ( b ) , a . _showAdapter ( ) , a . adapter . setValue ( a . storeValue ) , a . _setStartValue ( b ) , c ( ) , a . ad
a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . partTree . on ( BI . TreeView . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiTreeSearchPane . EVENT _CHANGE ) } ) } , hasChecked : function ( ) { return this . partTree . hasChecked ( ) } , setValue : function ( a ) { this . setSelectedValue ( a . value ) } , setSelectedValue : function ( a ) { a || ( a = { } ) , this . partTree . setSelectedValue ( a ) } , getValue : function ( ) { return this . partTree . getValue ( ) } , empty : function ( ) { this . partTree . empty ( ) } , populate : function ( a ) { this . partTree . stroke . apply ( this . partTree , arguments ) } } ) , BI . MultiTreeSearchPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiTreeSearchPane . EVENT _CLICK _CONFIRM = "EVENT_CLICK_CONFIRM" , BI . MultiTreeSearchPane . EVENT _CLICK _CLEAR = "EVENT_CLICK_CLEAR" , BI . shortcut ( "bi.multi_tree_search_pane" , BI . MultiTreeSearchPane ) , BI . MultiTreeCheckSelectedButton = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreeCheckSelectedButton . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-check-selected-button" , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . MultiTreeCheckSelectedButton . superclass . _init . apply ( this , arguments ) ; var a = this ; this . indicator = BI . createWidget ( { type : "bi.icon_button" , cls : "check-font trigger-check-selected" , width : 15 , height : 15 , stopPropagation : ! 0 } ) , this . checkSelected = BI . createWidget ( { type : "bi.text_button" , cls : "trigger-check-selected" , invisible : ! 0 , hgap : 4 , text : BI . i18nText ( "BI-Check_Selected" ) , textAlign : "center" , textHeight : 15 } ) , this . checkSelected . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . checkSelected . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectCheckSelectedButton . EVENT _CHANGE , arguments ) } ) , BI . createWidget ( { type : "bi.horizontal" , element : this , items : [ this . indicator , this . checkSelected ] } ) , this . element . hover ( function ( ) { a . indicator . setVisible ( ! 1 ) , a . checkSelected . setVisible ( ! 0 ) } , function ( ) { a . indicator . setVisible ( ! 0 ) , a . checkSelected . setVisible ( ! 1 ) } ) , this . setVisible ( ! 1 ) } , setValue : function ( a ) { a || ( a = { } ) , 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 )
this . table = BI . createWidget ( { type : "bi.table_view" , element : this , logic : b . logic , isNeedFreeze : b . isNeedFreeze , freezeCols : b . freezeCols , isNeedMerge : b . isNeedMerge , mergeCols : b . mergeCols , mergeRule : b . mergeRule , columnSize : b . columnSize , headerRowSize : b . headerRowSize , footerRowSize : b . footerRowSize , rowSize : b . rowSize , regionColumnSize : b . regionColumnSize , header : b . header , footer : b . footer , items : b . items , crossHeader : b . crossHeader , crossItems : b . crossItems } ) , this . table . on ( BI . Table . EVENT _TABLE _AFTER _INIT , function ( ) { a . _initRegionSize ( ) , a . table . resize ( ) , a . _resizeHeader ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _AFTER _INIT , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _RESIZE , function ( ) { a . _resizeRegion ( ) , a . _resizeHeader ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _RESIZE , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _SCROLL , function ( ) { a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _BEFORE _REGION _RESIZE , function ( ) { a . fireEvent ( BI . Table . EVENT _TABLE _BEFORE _REGION _RESIZE , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _REGION _RESIZE , function ( ) { b . isNeedResize === ! 0 && a . _isAdaptiveColumn ( ) && a . _resizeHeader ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _REGION _RESIZE , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _AFTER _REGION _RESIZE , function ( ) { a . _resizeHeader ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _AFTER _REGION _RESIZE , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _BEFORE _COLUMN _RESIZE , function ( ) { a . _resizeBody ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _BEFORE _COLUMN _RESIZE , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _COLUMN _RESIZE , function ( ) { a . fireEvent ( BI . Table . EVENT _TABLE _COLUMN _RESIZE , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _AFTER _COLUMN _RESIZE , function ( ) { a . _resizeRegion ( ) , a . _resizeHeader ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _AFTER _COLUMN _RESIZE , arguments ) } ) } , _initRegionSize : function ( ) { var a = this . options ; if ( a . isNeedFreeze === ! 0 ) { var b = this . table . getRegionColumnSize ( ) , c = this . table . element . width ( ) ; if ( ! b [ 0 ] || "fill" === b [ 0 ] || b [ 0 ] > c || b [ 1 ] > c ) { var d = a . freezeCols ; if ( 0 === d . length ) this . table . setRegionColumnSize ( [ 0 , "fill" ] ) ; else if ( d . length > 0 && d . length < a . columnSize . length ) { var e = c / 3 ; d . length > a . columnSize . length / 2 && ( e = 2 * c / 3 ) , this . table . setRegionColumnSize ( [ e , "fill" ] ) } else this . table . setRegionColumnSize ( [ "fill" , 0 ] ) } } } , _getBlockSize : function ( ) { var a = this . options , b = this . table . getCalculateColumnSize ( ) ; if ( a . isNeedFreeze === ! 0 ) { var c = [ ] , d = [ ] ; BI . each ( b , function ( b , e ) { a . freezeCols . contains ( b ) ? c . push ( e ) : d . push ( e ) } ) ; var e = BI . sum ( c ) + c . length , f = BI . sum ( d ) + d . length ; return { sumLeft : e , sumRight : f , left : c , right : d } } return { size : b , sum : BI . sum ( b ) + b . length } } , _isAdaptiveColumn : function ( a ) { return ! ( BI . last ( a || this . table . getColumnSize ( ) ) > 1.05 ) } , _resizeHeader : function ( ) { var a = this , b = this . options ; if ( b . isNeedFreeze === ! 0 ) if ( this . _isAdaptiveColumn ( ) ) { var c = this . table . getCalculateColumnSize ( ) ; this . table . setHeaderColumnSize ( c ) } else { var d = this . table . getClientRegionColumnSize ( ) , e = this . _getBlockSize ( ) , f = e . sumLeft , g = e . sumRight , h = e . left , i = e . right ; h [ h . length - 1 ] += d [ 0 ] - f , i [ i . length - 1 ] += d [ 1 ] - g ; var j = BI . clone ( h ) , k = BI . clone ( i ) ; j [ j . length - 1 ] = "" , k [ k . length - 1 ] = "" , this . table . setColumnSize ( j . concat ( k ) ) , e = a . _getBlockSize ( ) , h [ h . length - 1 ] < e . left [ e . left . length - 1 ] && ( h [ h . length - 1 ] = e . left [ e . left . length - 1 ] ) , i [ i . length - 1 ] < e . right [ e . right . length - 1 ] && ( i [ i . length - 1 ] = e . right [ e . right . length - 1 ] ) , a . table . setColumnSize ( h . concat ( i ) ) } else if ( ! this . _isAdaptiveColumn ( ) ) { var d = this . table . getClientRegionColumnSize ( ) , e = this . _getBlockSize ( ) , l = e . sum , m = e . size ; m [ m . length - 1 ] += d [ 0 ] - l ; var n = BI . clone ( m ) ; n [ n . length - 1 ] = "" , this . table . setColumnSize ( n ) , e = this . _getBlockSize ( ) , m [ m . length - 1 ] < e . size [ e . size . length - 1 ] && ( m [ m . length - 1 ] = e . size [ e . size . length - 1 ] ) , this . table . setColumnSize ( m ) } } , _resizeBody : function ( ) { if ( this . _isAdaptiveColumn ( ) ) { var a = this . table . getCalculateColumnSize ( ) ; this . setColumnSize ( a ) } } , _adjustRegion : function ( ) { var a = this . options , b = this . table . getCalculateRegionColumnSize ( ) ; if ( a . isNeedFreeze === ! 0 && a . freezeCols . length > 0 && a . freezeCols . length < a . columnSize . length ) { var c = this . _getBlockSize ( ) , d = c . sumLeft , e = c . sumRight ; ( d < b [ 0 ] || b [ 0 ] >= d + e ) && this . table . setRegionColumnSize ( [ d , "fill" ] ) , this . _resizeRegion ( ) } } , _resizeRegion : function ( ) { var a = this . options , b = this .
a . combo . hideView ( ) } ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , this . trigger . setValue ( a ) , this . popup . setValue ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } , populate : function ( a ) { this . combo . populate ( a ) } } ) , BI . shortcut ( "bi.select_tree_combo" , BI . SelectTreeCombo ) , BI . SelectTreeExpander = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectTreeExpander . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-tree-expander" , trigger : "click" , toggle : ! 0 , direction : "bottom" , isDefaultInit : ! 0 , el : { } , popup : { } } ) } , _init : function ( ) { BI . SelectTreeExpander . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( BI . extend ( { stopPropagation : ! 0 } , b . el ) ) , this . trigger . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && this . isSelected ( ) && a . expander . setValue ( [ ] ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . expander = BI . createWidget ( { type : "bi.expander" , element : this , trigger : b . trigger , toggle : b . toggle , direction : b . direction , isDefaultInit : b . isDefaultInit , el : this . trigger , popup : b . popup } ) , this . expander . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && a . trigger . setSelected ( ! 1 ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , setValue : function ( a ) { BI . contains ( a , this . trigger . getValue ( ) ) ? ( this . trigger . setSelected ( ! 0 ) , this . expander . setValue ( [ ] ) ) : ( this . trigger . setSelected ( ! 1 ) , this . expander . setValue ( a ) ) } , getValue : function ( ) { return this . trigger . isSelected ( ) ? [ this . trigger . getValue ( ) ] : this . expander . getValue ( ) } , populate : function ( a ) { this . expander . populate ( a ) } } ) , BI . shortcut ( "bi.select_tree_expander" , BI . SelectTreeExpander ) , BI . SelectTreePopup = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectTreePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-level-tree" , tipText : BI . i18nText ( "BI-No_Selected_Item" ) , items : [ ] , value : "" } ) } , _formatItems : function ( a , b ) { var c = this ; return BI . each ( a , function ( d , e ) { var f = { layer : b } ; if ( e . id = e . id || BI . UUID ( ) , e . isParent === ! 0 || BI . isNotEmptyArray ( e . children ) ) { switch ( d ) { case 0 : f . type = "bi.select_tree_first_plus_group_node" ; break ; case a . length - 1 : f . type = "bi.select_tree_last_plus_group_node" ; break ; default : f . type = "bi.select_tree_mid_plus_group_node" } BI . defaults ( e , f ) , c . _formatItems ( e . children ) } else { switch ( d ) { case a . length - 1 : f . type = "bi.last_tree_leaf_item" ; break ; default : f . type = "bi.mid_tree_leaf_item" } BI . defaults ( e , f ) } } ) , a } , _init : function ( ) { BI . SelectTreePopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . tree = BI . createWidget ( { type : "bi.level_tree" , expander : { type : "bi.select_tree_expander" , isDefaultInit : ! 0 } , items : this . _formatItems ( BI . Tree . transformToTreeFormat ( b . items ) ) , value : b . value , chooseType : BI . Selection . Single } ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . tree ] } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . tree . on ( BI . LevelTree . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SelectTreePopup . EVENT _CHANGE ) } ) , this . check ( ) } , getValue : function ( ) { return this . tree . getValue ( ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , this . tree . setValue ( a ) } , populate : function ( a ) { BI . SelectTreePopup . superclass . populate . apply ( this , arguments ) , this . tree . populate ( this . _formatItems ( BI . Tree . transformToTreeFormat ( a ) ) ) } } ) , BI . SelectTreePopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.select_level_tree" , BI . SelectTreePopup ) , BI . SequenceTableDynamicNumber = BI . inherit ( BI . SequenceTableTreeNumber , { _defaultConfig : function ( ) { return BI . extend ( BI . SequenceTableDynamicNumber . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-sequence-table-dynamic-number" } ) } , _init : function ( ) { BI . SequenceTableDynamicNumber . superclass . _init . apply ( this , arguments ) } , _formatNumber : function ( a ) { function b ( a ) { var c = 0 ; return BI . isNotEmptyArray ( a . children ) ? ( BI . each ( a . children , function ( a , d ) { c += b ( d ) } ) , a . children . length > 1 && BI . isNotEmptyArray ( a . values ) && c ++ ) : c ++ , c } var c = this . options , d = [ ] , e = this . _getStart ( a ) , f = 0 , g = 0 ; return BI . each ( a , function ( a , h ) { BI . isArray ( h . children ) && ( BI . each ( h . children , function ( a , h ) { var i = b ( h ) ; d . push ( { text : e ++ , start : f , top : g , cnt : i , index : a , height : i * c . rowSize } ) , f += i , g += i
this . button _group . resetHeight ( a ) } , resetWidth : function ( a ) { this . button _group . resetWidth ( a ) } } ) , BI . SingleSelectLoader . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_loader" , BI . SingleSelectLoader ) , BI . SingleSelectPopupView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectPopupView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-popup-view" , maxWidth : "auto" , minWidth : 135 , maxHeight : 400 , valueFormatter : BI . emptyFn , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . SingleSelectPopupView . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . loader = BI . createWidget ( { type : "bi.single_select_loader" , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , onLoaded : b . onLoaded , value : b . value } ) , this . popupView = BI . createWidget ( { type : "bi.popup_view" , stopPropagation : ! 1 , maxWidth : b . maxWidth , minWidth : b . minWidth , maxHeight : b . maxHeight , element : this , el : this . loader , value : b . value } ) , this . popupView . on ( BI . MultiPopupView . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SingleSelectPopupView . EVENT _CHANGE ) } ) } , setStartValue : function ( a ) { this . loader . setStartValue ( a ) } , setValue : function ( a ) { this . popupView . setValue ( a ) } , getValue : function ( ) { return this . popupView . getValue ( ) } , populate : function ( a ) { this . popupView . populate . apply ( this . popupView , arguments ) } , resetHeight : function ( a ) { this . popupView . resetHeight ( a ) } , resetWidth : function ( a ) { this . popupView . resetWidth ( a ) } } ) , BI . SingleSelectPopupView . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_popup_view" , BI . SingleSelectPopupView ) , BI . SingleSelectTrigger = BI . inherit ( BI . Trigger , { constants : { height : 14 , rgap : 4 , lgap : 4 } , _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-trigger bi-border" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , searcher : { } , switcher : { } , adapter : null , masker : { } } ) } , _init : function ( ) { BI . SingleSelectTrigger . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; b . height && this . setHeight ( b . height - 2 ) , this . searcher = BI . createWidget ( b . searcher , { type : "bi.single_select_searcher" , height : b . height , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , popup : { } , adapter : b . adapter , masker : b . masker , value : b . value } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _START , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _START ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _PAUSE ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _SEARCHING , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _SEARCHING , arguments ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _STOP , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _STOP ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _CHANGE , arguments ) } ) ; BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . searcher , width : "fill" } , { el : BI . createWidget ( ) , width : 24 } ] } ) } , getSearcher : function ( ) { return this . searcher } , stopEditing : function ( ) { this . searcher . stopSearch ( ) } , setAdapter : function ( a ) { this . searcher . setAdapter ( a ) } , setValue : function ( a ) { this . searcher . setValue ( a ) } , getKey : function ( ) { return this . searcher . getKey ( ) } , getValue : function ( ) { return this . searcher . getValue ( ) } } ) , BI . SingleSelectTrigger . EVENT _TRIGGER _CLICK = "EVENT_TRIGGER_CLICK" , BI . SingleSelectTrigger . EVENT _COUNTER _CLICK = "EVENT_COUNTER_CLICK" , BI . SingleSelectTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . SingleSelectTrigger . EVENT _START = "EVENT_START" , BI . SingleSelectTrigger . EVENT _STOP = "EVENT_STOP" , BI . SingleSelectTrigger . EVENT _PAUSE = "EVENT_PAUSE" , BI . SingleSelectTrigger . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . SingleSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW = "EVENT_BEFORE_COUNTER_POPUPVIEW" , BI . shortcut ( "bi.single_select_trigger" , BI . SingleSelectTrigger ) , BI . SingleSelectInsertList = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectInsertList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-insert-list" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn } ) } , _init : function ( ) { BI . SingleSelectInsertList . super
_defaultConfig : function ( ) { return BI . extend ( BI . SingleTreePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-level-tree" , tipText : BI . i18nText ( "BI-No_Selected_Item" ) , items : [ ] , value : "" } ) } , _init : function ( ) { BI . SingleTreePopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . tree = BI . createWidget ( { type : "bi.level_tree" , expander : { isDefaultInit : ! 0 } , items : b . items , value : b . value , chooseType : BI . Selection . Single } ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . tree ] } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . tree . on ( BI . LevelTree . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SingleTreePopup . EVENT _CHANGE ) } ) , this . check ( ) } , getValue : function ( ) { return this . tree . getValue ( ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , this . tree . setValue ( a ) } , populate : function ( a ) { BI . SingleTreePopup . superclass . populate . apply ( this , arguments ) , this . tree . populate ( a ) } } ) , BI . SingleTreePopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_level_tree" , BI . SingleTreePopup ) , BI . SingleTreeTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleTreeTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-tree-trigger" , height : 24 , text : "" , items : [ ] , value : "" } ) } , _init : function ( ) { BI . SingleTreeTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . trigger = BI . createWidget ( { type : "bi.select_text_trigger" , element : this , text : a . text , items : a . items , height : a . height , value : a . value } ) } , _checkTitle : function ( ) { var a = this , b = this . getValue ( ) ; BI . any ( this . options . items , function ( c , d ) { if ( b . contains ( d . value ) ) return a . trigger . setTitle ( d . text || d . value ) , ! 0 } ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , this . options . value = a , this . trigger . setValue ( a ) , this . _checkTitle ( ) } , getValue : function ( ) { return this . options . value || [ ] } , populate : function ( a ) { BI . SingleTreeTrigger . superclass . populate . apply ( this , arguments ) , this . trigger . populate ( a ) } } ) , BI . shortcut ( "bi.single_tree_trigger" , BI . SingleTreeTrigger ) , BI . SwitchTree = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SwitchTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-switch-tree" , items : [ ] } ) } , _init : function ( ) { BI . SwitchTree . superclass . _init . apply ( this , arguments ) ; this . options ; this . tab = BI . createWidget ( { type : "bi.tab" , element : this , tab : null , showIndex : BI . SwitchTree . SelectType . SingleSelect , cardCreator : BI . bind ( this . _createTree , this ) } ) } , _createTree : function ( a ) { var b = this , c = this . options ; switch ( a ) { case BI . SwitchTree . SelectType . SingleSelect : return this . levelTree = BI . createWidget ( { type : "bi.multilayer_single_level_tree" , isDefaultInit : ! 0 , items : BI . deepClone ( c . items ) , value : c . value } ) , this . levelTree . on ( BI . LevelTree . EVENT _CHANGE , function ( ) { b . fireEvent ( BI . SwitchTree . EVENT _CHANGE , arguments ) } ) , this . levelTree ; case BI . SwitchTree . SelectType . MultiSelect : return this . tree = BI . createWidget ( { type : "bi.simple_tree" , items : this . _removeIsParent ( BI . deepClone ( c . items ) ) , value : c . value } ) , this . tree . on ( BI . SimpleTreeView . EVENT _CHANGE , function ( ) { b . fireEvent ( BI . SwitchTree . EVENT _CHANGE , arguments ) } ) , this . tree } } , _removeIsParent : function ( a ) { return BI . each ( a , function ( a , b ) { BI . isNotNull ( b . isParent ) && delete b . isParent } ) , a } , switchSelect : function ( ) { switch ( this . getSelect ( ) ) { case BI . SwitchTree . SelectType . SingleSelect : this . setSelect ( BI . SwitchTree . SelectType . MultiSelect ) ; break ; case BI . SwitchTree . SelectType . MultiSelect : this . setSelect ( BI . SwitchTree . SelectType . SingleSelect ) } } , setSelect : function ( a ) { this . tab . setSelect ( a ) } , getSelect : function ( ) { return this . tab . getSelect ( ) } , setValue : function ( a ) { switch ( this . storeValue = a , this . getSelect ( ) ) { case BI . SwitchTree . SelectType . SingleSelect : this . levelTree . setValue ( a ) ; break ; case BI . SwitchTree . SelectType . MultiSelect : this . tree . setValue ( a ) } } , getValue : function ( ) { return this . tab . getValue ( ) } , populate : function ( a ) { this . options . items = a , BI . isNotNull ( this . levelTree ) && this . levelTree . populate ( BI . deepClone ( a ) ) , BI . isNotNull ( this . tree ) && this . tree . populate ( this . _removeIsParent ( BI . deepClone ( a ) ) ) } } ) , BI . SwitchTree . EVENT _CHANGE = "SwitchTree.EVENT_CHANGE" , BI . SwitchTree . SelectType = { SingleSelect : BI . Selection . Single , MultiSelec
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 . DynamicYearMonthCombo . 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 ) } } , hideView : function ( ) { this . combo . hideView ( ) } , setValue : function ( a ) { this . storeValue = a , this . trigger . setValue ( a ) , this . _checkDynamicValue ( a ) } , getValue : function ( ) { return this . storeValue } , getKey : function ( ) { return this . trigger . getKey ( ) } , isValid : function ( ) { return this . trigger . isValid ( ) } } ) , BI . DynamicYearMonthCombo . EVENT _ERROR = "EVENT_ERROR" , BI . DynamicYearMonthCombo . EVENT _VALID = "EVENT_VALID" , BI . DynamicYearMonthCombo . EVENT _FOCUS = "EVENT_FOCUS" , BI . DynamicYearMonthCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . DynamicYearMonthCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.dynamic_year_month_combo" , BI . DynamicYearMonthCombo ) , BI . extend ( BI . DynamicYearMonthCombo , { Static : 1 , Dynamic : 2 } ) , BI . DynamicYearMonthPopup = BI . inherit ( BI . Widget , { constants : { tabHeight : 30 } , props : { baseCls : "bi-year-month-popup" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" , width : 180 , height : 240 } , render : function ( ) { var a = this ; this . options ; return this . storeValue = { type : BI . DynamicYearMonthCombo . 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 , text : BI . i18nText ( "BI-Basic_Clear" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearMonthPopup . BUTTON _CLEAR _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-border-left bi-border-right bi-high-light bi-border-top" , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Current_Month" ) , ref : function ( ) { a . textButton = this } , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearMonthPopup . BUTTON _lABEL _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-border-top bi-high-light" , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_OK" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearMonthPopup . BUTTON _OK _EVENT _CHANGE ) } } ] } ] ] } , height : 24 } ] } } , _setInnerValue : function ( ) { if ( this . dateTab . getSelect ( ) === BI . DynamicDateCombo . Static ) this . textButton . setValue ( BI . i18nText ( "BI-Basic_Current_Month" ) ) , this . textButton . setEnable ( ! 0 ) ; else { var a = BI . DynamicDateHelper . getCalculation ( this . dynamicPane . getValue ( ) ) ; a = a . print ( "%Y-%x" ) , 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_Month" ) , value : BI . DynamicYearCombo . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicYearCombo . Dynamic } ] , { textAlign : "center" } ) } , cardCreator : function ( c ) { switch ( c ) { case BI . DynamicYearCombo . Dynamic : return { type : "bi.dynamic_year_month_card" , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { a . _setInnerValue ( a . year , c ) } } ] , ref : function ( ) { a . dynamicPane = this } } ; case BI . DynamicYearCombo . Static : default : return { type : "bi.static_year_month_card" , behaviors : b . behaviors , min : a . options . min , max : a . options . max , listeners : [ { eventName : BI . StaticYearMonthCard . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearMonthPopup . EVENT _CHANGE ) } } ] , ref : function ( ) { a . year = this } } } } , listeners : [ { eventName : BI . Tab . EVENT _CHANGE , action : function ( ) { var b = a . dateTab . getSelect ( ) ; switch ( b ) { case BI . DynamicYearCombo . Static : var c = BI . DynamicDateHelper . getCalculation ( a . dynamicPane . getValue ( ) ) ; a . year . setValue ( { year : c . getFullYear ( ) , month : c . getMonth ( ) + 1 } ) , a . _setInnerValue ( ) ; break ; case BI . DynamicYearCombo . Dynamic : default : a . storeValue && a . storeValue . type === BI . DynamicYearCombo . Dynamic ? a . dynamicPane . setValue ( a . storeValue . value ) : a . dynamicPane . setValue ( { year : 0 } ) , a . _setInnerValue ( ) } } } ] } } , setValue : function ( a ) { this . sto
type : "bi.multi_select_list" , element : this , itemsCreator : BI . bind ( this . _itemsCreator , this ) , valueFormatter : BI . bind ( this . _valueFormatter , this ) , width : b . width , height : b . height } ) , this . list . on ( BI . MultiSelectList . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . AllValueChooserPane . EVENT _CHANGE ) } ) } , setValue : function ( a ) { this . list . setValue ( { type : BI . Selection . Multi , value : a || [ ] } ) } , getValue : function ( ) { var a = this . list . getValue ( ) || { } ; return a . type === BI . Selection . All ? a . assist : a . value || [ ] } , populate : function ( a ) { this . items = a , this . list . populate . apply ( this . list , arguments ) } } ) , BI . AllValueChooserPane . EVENT _CHANGE = "AllValueChooserPane.EVENT_CHANGE" , BI . shortcut ( "bi.all_value_chooser_pane" , BI . AllValueChooserPane ) , BI . AbstractTreeValueChooser = BI . inherit ( BI . Widget , { _const : { perPage : 100 } , _defaultConfig : function ( ) { return BI . extend ( BI . AbstractTreeValueChooser . superclass . _defaultConfig . apply ( this , arguments ) , { items : null , itemsCreator : BI . emptyFn } ) } , _valueFormatter : function ( a ) { var b = a ; return BI . isNotNull ( this . items ) && BI . some ( this . items , function ( c , d ) { if ( d . value + "" === a ) return b = d . text , ! 0 } ) , b } , _initData : function ( a ) { this . items = a ; var b = BI . Tree . treeFormat ( a ) ; this . tree = new BI . Tree , this . tree . initTree ( b ) } , _itemsCreator : function ( a , b ) { function c ( ) { switch ( a . type ) { case BI . TreeView . REQ _TYPE _INIT _DATA : d . _reqInitTreeNode ( a , b ) ; break ; case BI . TreeView . REQ _TYPE _ADJUST _DATA : d . _reqAdjustTreeNode ( a , b ) ; break ; case BI . TreeView . REQ _TYPE _SELECT _DATA : d . _reqSelectedTreeNode ( a , b ) ; break ; case BI . TreeView . REQ _TYPE _GET _SELECTED _DATA : d . _reqDisplayTreeNode ( a , b ) ; break ; default : d . _reqTreeNode ( a , b ) } } var d = this , e = this . options ; this . items ? c ( ) : e . itemsCreator ( { } , function ( a ) { d . _initData ( a ) , c ( ) } ) } , _reqDisplayTreeNode : function ( a , b ) { function c ( a , b , g ) { return null == g || BI . isEmpty ( g ) ? void BI . each ( b . getChildren ( ) , function ( d , g ) { var h = BI . clone ( a ) ; h . push ( g . value ) ; var i = f . _getChildCount ( h ) ; e ( g , b . id , i ) , c ( h , g , { } ) } ) : void BI . each ( g , function ( b ) { var h = f . _getTreeNode ( a , b ) , i = BI . clone ( a ) ; i . push ( h . value ) , e ( h , h . parent && h . parent . id , d ( g [ b ] , i ) ) , c ( i , h , g [ b ] ) } ) } function d ( a , b ) { return null == a ? 0 : BI . isEmpty ( a ) ? f . _getChildCount ( b ) : BI . size ( a ) } function e ( a , b , c ) { g . push ( { id : a . id , pId : b , text : a . text + ( c > 0 ? "(" + BI . i18nText ( "BI-Basic_Altogether" ) + c + BI . i18nText ( "BI-Basic_Count" ) + ")" : "" ) , value : a . value , open : ! 0 } ) } var f = this , g = [ ] , h = a . selectedValues ; return null == h || BI . isEmpty ( h ) ? void b ( { } ) : ( c ( [ ] , this . tree . getRoot ( ) , h ) , void b ( { items : g } ) ) } , _reqSelectedTreeNode : function ( a , b ) { function c ( a ) { var b = m . concat ( k ) ; if ( g ( a , b ) ) if ( f ( b ) ) i . _deleteNode ( a , b ) ; else { var c = [ ] , j = e ( m , k , [ ] , c ) ; j && BI . isNotEmptyArray ( c ) && BI . each ( c , function ( b , c ) { var e = i . _getNode ( a , c ) ; e ? i . _deleteNode ( a , c ) : d ( a , c , BI . last ( c ) ) } ) } if ( h ( a , b ) ) { var l = [ ] , j = ! 1 ; f ( b ) ? j = ! 0 : ( j = e ( m , k , l ) , b = m ) , j === ! 0 && ( d ( a , b , k ) , l . length > 0 && BI . each ( l , function ( b , c ) { i . _buildTree ( a , c ) } ) ) } } function d ( a , b , c ) { var d = a , e = [ ] , f = [ ] ; BI . some ( b , function ( g , h ) { var j = d [ h ] ; if ( null == j ) { if ( 0 === g ) return ! 0 ; if ( ! BI . isEmpty ( d ) ) return ! 0 ; var k = b . slice ( 0 , g ) , l = i . _getChildren ( k ) ; if ( f . push ( k ) , e . push ( l . length ) , g === b . length - 1 && 1 === l . length && l [ 0 ] === c ) for ( var m = e . length - 1 ; m >= 0 && 1 === e [ m ] ; m -- ) i . _deleteNode ( a , f [ m ] ) ; else BI . each ( l , function ( a , e ) { return g === b . length - 1 && e . value === c || void ( d [ e . value ] = { } ) } ) ; d = d [ h ] } else d = j } ) } function e ( a , b , c , d ) { var f = BI . clone ( a ) ; if ( f . push ( b ) , i . _isMatch ( a , b , l ) ) return d && d . push ( f ) , ! 0 ; var g = i . _getChildren ( f ) , h = [ ] , j = ! 1 ; return BI . each ( g , function ( a , b ) { e ( f , b . value , c , d ) ? j = ! 0 : h . push ( b . value ) } ) , j === ! 0 && BI . each ( h , function ( a , b ) { var d = BI . clone ( f ) ; d . push ( b ) , c . push ( d ) } ) , j } function f ( a ) { for ( var b = 0 , c = a . length ; b < c ; b ++ ) if ( i . _isMatch ( a . slice ( 0 , a . length - 1 ) , a [ b ] , l ) ) return ! 0 ; return ! 1 } function g ( a , b ) { for ( var c = a , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] ; if ( c = c [ e ] , null == c ) return ! 1 } return ! 0 } function h ( a , b ) { for ( var c = a , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] ; if ( ! BI . has ( c , e ) ) return ! 1 ; if ( c = c [ e ] , BI . isEmpty ( c ) ) return ! 0 } return ! 1 } var i = this , j = BI . deepClone ( a . selectedValues ) , k = a . notSelectedValue || { } , l = a . keyword || "" , m = a . parentValues || [ ] ; return null == j || BI . isEmpty ( j ) ? void b ( { } ) : ( c ( j ) , void b ( j ) ) } , _reqAdjustTreeNode : function ( a , b ) { function c ( a , b ) { if ( null == a || BI . isEmpty ( a ) ) return ! 0 ; var e = ! 0 ; return BI . each ( a , function ( d , g ) { var h = BI . clone ( b ) ; h . push ( d ) , c ( a [ d ] , h ) || ( BI . each ( a [ d ] , function ( a , b ) { var c = BI . clone ( h ) ; c . push ( a ) , f . pus