/*! fineui 18-09-2017 */
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 ) } window . BI || ( window . BI = { } ) , BI . servletURL = "https://fanruan.coding.me/fineui/dist/" , BI . resourceURL = "https://fanruan.coding.me/fineui/dist/resource/" , BI . i18n = { "BI-Basic_OK" : "确定" , "BI-Basic_Sure" : "确定" , "BI-Basic_Clears" : "清空" , "BI-Basic_Cancel" : "取消" , "BI-Basic_Time" : "时间" , "BI-Basic_Simple_Sunday" : "日" , "BI-Basic_Simple_Monday" : "一" , "BI-Basic_Simple_Tuesday" : "二" , "BI-Basic_Simple_Wednesday" : "三" , "BI-Basic_Simple_Thursday" : "四" , "BI-Basic_Simple_Friday" : "五" , "BI-Basic_Simple_Saturday" : "六" , "BI-Multi_Date_Year" : "年" , "BI-Multi_Date_Month" : "月" , "BI-Multi_Date_Quarter" : "季度" , "BI-Basic_Unrestricted" : "无限制" , "BI-Quarter_1" : "第1季度" , "BI-Quarter_2" : "第2季度" , "BI-Quarter_3" : "第3季度" , "BI-Quarter_4" : "第4季度" , "BI-Basic_Value" : "值" , "BI-Load_More" : "加载更多" , "BI-Select_All" : "全选" , "BI-Basic_Auto" : "自动" , "BI-No_More_Data" : "无更多数据" , "BI-No_Selected_Value" : "没有可选项" , "BI-Basic_Clear" : "清除" , "BI-Multi_Date_Relative_Current_Time" : "相对当前时间" , "BI-Multi_Date_Year_Prev" : "年前" , "BI-Multi_Date_Year_Next" : "年后" , "BI-Multi_Date_Year_Begin" : "年初" , "BI-Multi_Date_Year_End" : "年末" , "BI-Multi_Date_Quarter_Prev" : "个季度前" , "BI-Multi_Date_Quarter_Next" : "个季度后" , "BI-Multi_Date_Quarter_Begin" : "季度初" , "BI-Multi_Date_Quarter_End" : "季度末" , "BI-Multi_Date_Month_Prev" : "个月前" , "BI-Multi_Date_Month_Next" : "个月后" , "BI-Multi_Date_Month_Begin" : "月初" , "BI-Multi_Date_Month_End" : "月末" , "BI-Multi_Date_Week_Prev" : "周前" , "BI-Multi_Date_Week_Next" : "周后" , "BI-Multi_Date_Day_Prev" : "天前" , "BI-Multi_Date_Day_Next" : "天后" , "BI-Multi_Date_Today" : "今天" } , 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 . rep
} ) ) , d = ia . valHooks [ this . type ] || ia . valHooks [ this . nodeName . toLowerCase ( ) ] , d && "set" in d && d . set ( this , f , "value" ) !== b || ( this . value = f ) ) } ) ; if ( f ) return d = ia . valHooks [ f . type ] || ia . valHooks [ f . nodeName . toLowerCase ( ) ] , d && "get" in d && ( c = d . get ( f , "value" ) ) !== b ? c : ( c = f . value , "string" == typeof c ? c . replace ( Da , "" ) : null == c ? "" : c ) } } } ) , ia . extend ( { valHooks : { option : { get : function ( a ) { var b = a . attributes . value ; return ! b || b . specified ? a . value : a . text } } , select : { get : function ( a ) { for ( var b , c , d = a . options , e = a . selectedIndex , f = "select-one" === a . type || e < 0 , g = f ? null : [ ] , h = f ? e + 1 : d . length , i = e < 0 ? h : f ? e : 0 ; i < h ; i ++ ) if ( c = d [ i ] , ( c . selected || i === e ) && ( ia . support . optDisabled ? ! c . disabled : null === c . getAttribute ( "disabled" ) ) && ( ! c . parentNode . disabled || ! ia . nodeName ( c . parentNode , "optgroup" ) ) ) { if ( b = ia ( c ) . val ( ) , f ) return b ; g . push ( b ) } return g } , set : function ( a , b ) { var c = ia . makeArray ( b ) ; return ia ( a ) . find ( "option" ) . each ( function ( ) { this . selected = ia . inArray ( ia ( this ) . val ( ) , c ) >= 0 } ) , c . length || ( a . selectedIndex = - 1 ) , c } } } , attr : function ( a , c , d ) { var e , f , g , h = a . nodeType ; if ( a && 3 !== h && 8 !== h && 2 !== h ) return typeof a . getAttribute === V ? ia . prop ( a , c , d ) : ( f = 1 !== h || ! ia . isXMLDoc ( a ) , f && ( c = c . toLowerCase ( ) , e = ia . attrHooks [ c ] || ( Ga . test ( c ) ? Ba : Aa ) ) , d === b ? e && f && "get" in e && null !== ( g = e . get ( a , c ) ) ? g : ( typeof a . getAttribute !== V && ( g = a . getAttribute ( c ) ) , null == g ? b : g ) : null !== d ? e && f && "set" in e && ( g = e . set ( a , d , c ) ) !== b ? g : ( a . setAttribute ( c , d + "" ) , d ) : void ia . removeAttr ( a , c ) ) } , removeAttr : function ( a , b ) { var c , d , e = 0 , f = b && b . match ( ka ) ; if ( f && 1 === a . nodeType ) for ( ; c = f [ e ++ ] ; ) d = ia . propFix [ c ] || c , Ga . test ( c ) ? ! Ia && Ha . test ( c ) ? a [ ia . camelCase ( "default-" + c ) ] = a [ d ] = ! 1 : a [ d ] = ! 1 : ia . attr ( a , c , "" ) , a . removeAttribute ( Ia ? c : d ) } , attrHooks : { type : { set : function ( a , b ) { if ( ! ia . support . radioValue && "radio" === b && ia . nodeName ( a , "input" ) ) { var c = a . value ; return a . setAttribute ( "type" , b ) , c && ( a . value = c ) , b } } } } , propFix : { tabindex : "tabIndex" , readonly : "readOnly" , "for" : "htmlFor" , "class" : "className" , maxlength : "maxLength" , cellspacing : "cellSpacing" , cellpadding : "cellPadding" , rowspan : "rowSpan" , colspan : "colSpan" , usemap : "useMap" , frameborder : "frameBorder" , contenteditable : "contentEditable" } , prop : function ( a , c , d ) { var e , f , g , h = a . nodeType ; if ( a && 3 !== h && 8 !== h && 2 !== h ) return g = 1 !== h || ! ia . isXMLDoc ( a ) , g && ( c = ia . propFix [ c ] || c , f = ia . propHooks [ c ] ) , d !== b ? f && "set" in f && ( e = f . set ( a , d , c ) ) !== b ? e : a [ c ] = d : f && "get" in f && null !== ( e = f . get ( a , c ) ) ? e : a [ c ] } , propHooks : { tabIndex : { get : function ( a ) { var c = a . getAttributeNode ( "tabindex" ) ; return c && c . specified ? parseInt ( c . value , 10 ) : Ea . test ( a . nodeName ) || Fa . test ( a . nodeName ) && a . href ? 0 : b } } } } ) , Ba = { get : function ( a , c ) { var d = ia . prop ( a , c ) , e = "boolean" == typeof d && a . getAttribute ( c ) , f = "boolean" == typeof d ? Ja && Ia ? null != 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 . selec
return [ c < 0 ? c + b : c ] } ) , even : k ( function ( a , b ) { for ( var c = 0 ; c < b ; c += 2 ) a . push ( c ) ; return a } ) , odd : k ( function ( a , b ) { for ( var c = 1 ; c < b ; c += 2 ) a . push ( c ) ; return a } ) , lt : k ( function ( a , b , c ) { for ( var d = c < 0 ? c + b : c ; -- d >= 0 ; ) a . push ( d ) ; return a } ) , gt : k ( function ( a , b , c ) { for ( var d = c < 0 ? c + b : c ; ++ d < b ; ) a . push ( d ) ; return a } ) } } ; for ( w in { radio : ! 0 , checkbox : ! 0 , file : ! 0 , password : ! 0 , image : ! 0 } ) y . pseudos [ w ] = i ( w ) ; for ( w in { submit : ! 0 , reset : ! 0 } ) y . pseudos [ w ] = j ( w ) ; B = g . compile = function ( a , b ) { var c , d = [ ] , e = [ ] , f = U [ a + " " ] ; if ( ! f ) { for ( b || ( b = l ( a ) ) , c = b . length ; c -- ; ) f = r ( b [ c ] ) , f [ N ] ? d . push ( f ) : e . push ( f ) ; f = U ( a , s ( e , d ) ) } return f } , y . pseudos . nth = y . pseudos . eq , y . filters = v . prototype = y . pseudos , y . setFilters = new v , E ( ) , g . attr = ia . attr , ia . find = g , ia . expr = g . selectors , ia . expr [ ":" ] = ia . expr . pseudos , ia . unique = g . uniqueSort , ia . text = g . getText , ia . isXMLDoc = g . isXML , ia . contains = g . contains } ( a ) ; var Pa = /Until$/ , Qa = /^(?:parents|prev(?:Until|All))/ , Ra = /^.[^:#\[\.,]*$/ , Sa = ia . expr . match . needsContext , Ta = { children : ! 0 , contents : ! 0 , next : ! 0 , prev : ! 0 } ; ia . fn . extend ( { find : function ( a ) { var b , c , d , e = this . length ; if ( "string" != typeof a ) return d = this , this . pushStack ( ia ( a ) . filter ( function ( ) { for ( b = 0 ; b < e ; b ++ ) if ( ia . contains ( d [ b ] , this ) ) return ! 0 } ) ) ; for ( c = [ ] , b = 0 ; b < e ; b ++ ) ia . find ( a , this [ b ] , c ) ; return c = this . pushStack ( e > 1 ? ia . unique ( c ) : c ) , c . selector = ( this . selector ? this . selector + " " : "" ) + a , c } , has : function ( a ) { var b , c = ia ( a , this ) , d = c . length ; return this . filter ( function ( ) { for ( b = 0 ; b < d ; b ++ ) if ( ia . contains ( this , c [ b ] ) ) return ! 0 } ) } , not : function ( a ) { return this . pushStack ( l ( this , a , ! 1 ) ) } , filter : function ( a ) { return this . pushStack ( l ( this , a , ! 0 ) ) } , is : function ( a ) { return ! ! a && ( "string" == typeof a ? Sa . test ( a ) ? ia ( a , this . context ) . index ( this [ 0 ] ) >= 0 : ia . filter ( a , this ) . length > 0 : this . filter ( a ) . length > 0 ) } , closest : function ( a , b ) { for ( var c , d = 0 , e = this . length , f = [ ] , g = Sa . test ( a ) || "string" != typeof a ? ia ( a , b || this . context ) : 0 ; d < e ; d ++ ) for ( c = this [ d ] ; c && c . ownerDocument && c !== b && 11 !== c . nodeType ; ) { if ( g ? g . index ( c ) > - 1 : ia . find . matchesSelector ( c , a ) ) { f . push ( c ) ; break } c = c . parentNode } return this . pushStack ( f . length > 1 ? ia . unique ( f ) : f ) } , index : function ( a ) { return a ? "string" == typeof a ? ia . inArray ( this [ 0 ] , ia ( a ) ) : ia . inArray ( a . jquery ? a [ 0 ] : a , this ) : this [ 0 ] && this [ 0 ] . parentNode ? this . first ( ) . prevAll ( ) . length : - 1 } , add : function ( a , b ) { var c = "string" == typeof a ? ia ( a , b ) : ia . makeArray ( a && a . nodeType ? [ a ] : a ) , d = ia . merge ( this . get ( ) , c ) ; return this . pushStack ( ia . unique ( d ) ) } , addBack : function ( a ) { return this . add ( null == a ? this . prevObject : this . prevObject . filter ( a ) ) } } ) , ia . fn . andSelf = ia . fn . addBack , ia . each ( { parent : function ( a ) { var b = a . parentNode ; return b && 11 !== b . nodeType ? b : null } , parents : function ( a ) { return ia . dir ( a , "parentNode" ) } , parentsUntil : function ( a , b , c ) { 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 = / < ( ? ! a r e a | b r | c o l | e m b e d | h r | i m g | i n p u t | l i n k | m e t a | p a r a m ) ( ( [ \ w : ] + ) [ ^ > ] *
d = s ( d , f , 4 ) ; var g = ! x ( c ) && r . keys ( c ) , h = ( g || c ) . length , i = a > 0 ? 0 : h - 1 ; return arguments . length < 3 && ( e = c [ g ? g [ i ] : i ] , i += a ) , b ( c , d , e , g , i , h ) } } function b ( a ) { return function ( b , c , d ) { c = t ( c , d ) ; for ( var e = null != b && b . length , f = a > 0 ? 0 : e - 1 ; f >= 0 && f < e ; f += a ) if ( c ( b [ f ] , f , b ) ) return f ; return - 1 } } function c ( a , b ) { var c = C . length , d = a . constructor , e = r . isFunction ( d ) && d . prototype || g , f = "constructor" ; for ( r . has ( a , f ) && ! r . contains ( b , f ) && b . push ( f ) ; c -- ; ) f = C [ c ] , f in a && a [ f ] !== e [ f ] && ! r . contains ( b , f ) && b . push ( f ) } var d = this , e = d . _ , f = Array . prototype , g = Object . prototype , h = Function . prototype , i = f . push , j = f . slice , k = g . toString , l = g . hasOwnProperty , m = Array . isArray , n = Object . keys , o = h . bind , p = Object . create , q = function ( ) { } , r = function ( a ) { return a instanceof r ? a : this instanceof r ? void ( this . _wrapped = a ) : new r ( a ) } ; "undefined" != typeof exports ? ( "undefined" != typeof module && module . exports && ( exports = module . exports = r ) , exports . _ = r ) : d . _ = r , r . VERSION = "1.8.2" ; var s = function ( a , b , c ) { if ( void 0 === b ) return a ; switch ( null == c ? 3 : c ) { case 1 : return function ( c ) { return a . call ( b , c ) } ; case 2 : return function ( c , d ) { return a . call ( b , c , d ) } ; case 3 : return function ( c , d , e ) { return a . call ( b , c , d , e ) } ; case 4 : return function ( c , d , e , f ) { return a . call ( b , c , d , e , f ) } } return function ( ) { return a . apply ( b , arguments ) } } , t = function ( a , b , c ) { return null == a ? r . identity : r . isFunction ( a ) ? s ( a , b , c ) : r . isObject ( a ) ? r . matcher ( a ) : r . property ( a ) } ; r . iteratee = function ( a , b ) { return t ( a , b , 1 / 0 ) } ; var u = function ( a , b ) { return function ( c ) { var d = arguments . length ; if ( d < 2 || null == c ) return c ; for ( var e = 1 ; e < d ; e ++ ) for ( var f = arguments [ e ] , g = a ( f ) , h = g . length , i = 0 ; i < h ; i ++ ) { var j = g [ i ] ; b && void 0 !== c [ j ] || ( c [ j ] = f [ j ] ) } return c } } , v = function ( a ) { if ( ! r . isObject ( a ) ) return { } ; if ( p ) return p ( a ) ; q . prototype = a ; var b = new q ; return q . prototype = null , b } , w = Math . pow ( 2 , 53 ) - 1 , x = function ( a ) { var b = null != a && a . length ; return "number" == typeof b && b >= 0 && b <= w } ; r . each = r . forEach = function ( a , b , c ) { b = s ( b , c ) ; var d , e ; if ( x ( a ) ) for ( d = 0 , e = a . length ; d < e ; d ++ ) b ( a [ d ] , d , a ) ; else { var f = r . keys ( a ) ; for ( d = 0 , e = f . length ; d < e ; d ++ ) b ( a [ f [ d ] ] , f [ d ] , a ) } return a } , r . map = r . collect = function ( a , b , c ) { b = t ( b , c ) ; for ( var d = ! x ( a ) && r . keys ( a ) , e = ( d || a ) . length , f = Array ( e ) , g = 0 ; g < e ; g ++ ) { var h = d ? d [ g ] : g ; f [ g ] = b ( a [ h ] , h , a ) } return f } , r . reduce = r . foldl = r . inject = a ( 1 ) , r . reduceRight = r . foldr = a ( - 1 ) , r . find = r . detect = function ( a , b , c ) { var d ; if ( d = x ( a ) ? r . findIndex ( a , b , c ) : r . findKey ( a , b , c ) , void 0 !== d && d !== - 1 ) return a [ d ] } , r . filter = r . select = function ( a , b , c ) { var d = [ ] ; return b = t ( b , c ) , r . each ( a , function ( a , c , e ) { b ( a , c , e ) && d . push ( a ) } ) , d } , r . reject = function ( a , b , c ) { return r . filter ( a , r . negate ( t ( b ) ) , c ) } , r . every = r . all = function ( a , b , c ) { b = t ( b , c ) ; for ( var d = ! x ( a ) && r . keys ( a ) , e = ( d || a ) . length , f = 0 ; f < e ; f ++ ) { var g = d ? d [ f ] : f ; if ( ! b ( a [ g ] , g , a ) ) return ! 1 } return ! 0 } , r . some = r . any = function ( a , b , c ) { b = t ( b , c ) ; for ( var d = ! x ( a ) && r . keys ( a ) , e = ( d || a ) . length , f = 0 ; f < e ; f ++ ) { var g = d ? d [ f ] : f ; if ( b ( a [ g ] , g , a ) ) return ! 0 } return ! 1 } , r . contains = r . includes = r . include = function ( a , b , c ) { return x ( a ) || ( a = r . values ( a ) ) , r . indexOf ( a , b , "number" == typeof c && c ) >= 0 } , r . invoke = function ( a , b ) { var c = j . call ( arguments , 2 ) , d = r . isFunction ( b ) ; return r . map ( a , function ( a ) { var e = d ? b : a [ b ] ; return null == e ? e : e . apply ( a , c ) } ) } , r . pluck = function ( a , b ) { return r . map ( a , r . property ( b ) ) } , r . where = function ( a , b ) { return r . filter ( a , r . matcher ( b ) ) } , r . findWhere = function ( a , b ) { return r . find ( a , r . matcher ( b ) ) } , r . max = function ( a , b , c ) { var d , e , f = - ( 1 / 0 ) , g = - ( 1 / 0 ) ; if ( null == b && null != a ) { a = x ( a ) ? a : r . values ( a ) ; for ( var h = 0 , i = a . length ; h < i ; h ++ ) d = a [ h ] , d > f && ( f = d ) } else b = t ( b , c ) , r . each ( a , function ( a , c , d ) { e = b ( a , c , d ) , ( e > g || e === - ( 1 / 0 ) && f === - ( 1 / 0 ) ) && ( f = a , g = e ) } ) ; return f } , r . min = function ( a , b , c ) { var d , e , f = 1 / 0 , g = 1 / 0 ; if ( null == b && null != a ) { a = x ( a ) ? a : r . values ( a ) ; for ( var h = 0 , i = a . length ; h < i ; h ++ ) d = a [ h ] , d < f && ( f = d ) } else b = t ( b , c ) , r . each ( a , function ( a , c , d ) { e = b ( a , c , d ) , ( e < g || e === 1 / 0 && f === 1 / 0 ) && ( f = a , g = e ) } ) ; return f } , r . shuffle = function ( a ) { for ( var b , c = x ( a ) ? a : r . values ( a ) , d = c . length , e = Array ( d ) , f = 0 ; f < d ; f ++ ) b = r . random ( 0 , f ) , b !== f && ( e [ f ] = e [ b ] ) , e [ b ] = c [ f ] ; return e } , r . sample = function ( a , b , c ) { return null == b || c ? ( x ( a ) || ( a = r . values ( a ) ) , a [ r . random ( a . length - 1 ) ] ) : r . shuffle ( a ) . slice ( 0 , Math . max ( 0 , b ) ) } , r . sortBy = function ( a , b , c ) { return b = t ( b , c ) , r . pluck ( r . map ( a , function ( a , c , d ) { return { value : a , index : c , criteria : b ( a , c , d ) } } ) . sort ( function ( a , b ) { var c = a . criteria , d = b . criteria ; if ( c !== d ) { if ( c > d || void 0 ==
g . data = c . extend ( { id : d . id } , d . toJSON ( e ) , e . attrs ) ) , e . emulateJSON && ( g . contentType = "application/x-www-form-urlencoded" , g . data = e . data ? e . data : g . data ) , e . emulateHTTP && ( "PUT" === f || "DELETE" === f || "PATCH" === f ) ) { g . type = "POST" , e . emulateJSON && ( g . data . _method = f ) ; var h = e . beforeSend ; e . beforeSend = function ( a ) { if ( a . setRequestHeader ( "X-HTTP-Method-Override" , f ) , h ) return h . apply ( this , arguments ) } } "GET" === g . type || e . emulateJSON || ( g . processData = ! 1 ) ; var i = e . error ; e . error = function ( a , b , c ) { e . textStatus = b , e . errorThrown = c , i && i . apply ( this , arguments ) } ; var j = e . xhr = b . ajax ( c . extend ( g , e ) ) ; return d . trigger ( "request" , j , d , e ) , j } } ; var w = { create : "POST" , update : "PUT" , patch : "PATCH" , "delete" : "DELETE" , read : "GET" } ; b . ajax = d . ajax ; var x = b . Router = function ( a ) { a || ( a = { } ) , a . routes && ( this . routes = a . routes ) , this . _bindRoutes ( ) , this . _init . apply ( this , arguments ) } , y = /\((.*?)\)/g , z = /(\(\?)?:\w+/g , A = /\*\w+/g , B = /[\-{}\[\]+?.,\\\^$|#\s]/g ; c . extend ( x . prototype , h , { _init : function ( ) { } , route : function ( a , d , e ) { c . isRegExp ( a ) || ( a = this . _routeToRegExp ( a ) ) , c . isFunction ( d ) && ( e = d , d = "" ) , e || ( e = this [ d ] ) ; var f = this ; return b . history . route ( a , function ( c ) { var g = f . _extractParameters ( a , c ) ; f . execute ( e , g , d ) !== ! 1 && ( f . trigger . apply ( f , [ "route:" + d ] . concat ( g ) ) , f . trigger ( "route" , d , g ) , b . history . trigger ( "route" , f , d , g ) ) } ) , this } , execute : function ( a , b , c ) { a && a . apply ( this , b ) } , navigate : function ( a , c ) { return b . history . navigate ( a , c ) , this } , _bindRoutes : function ( ) { if ( this . routes ) { this . routes = c . result ( this , "routes" ) ; for ( var a , b = c . keys ( this . routes ) ; null != ( a = b . pop ( ) ) ; ) this . route ( a , this . routes [ a ] ) } } , _routeToRegExp : function ( a ) { return a = a . replace ( B , "\\$&" ) . replace ( y , "(?:$1)?" ) . replace ( z , function ( a , b ) { return b ? a : "([^/?]+)" } ) . replace ( A , "([^?]*?)" ) , new RegExp ( "^" + a + "(?:\\?([\\s\\S]*))?$" ) } , _extractParameters : function ( a , b ) { var d = a . exec ( b ) . slice ( 1 ) ; return c . map ( d , function ( a , b ) { return b === d . length - 1 ? a || null : a ? decodeURIComponent ( a ) : null } ) } } ) ; var C = b . History = function ( ) { this . handlers = [ ] , c . bindAll ( this , "checkUrl" ) , "undefined" != typeof window && ( this . location = window . location , this . history = window . history ) } , D = /^[#\/]|\s+$/g , E = /^\/+|\/+$/g , F = /#.*$/ ; C . started = ! 1 , c . extend ( C . prototype , h , { interval : 50 , atRoot : function ( ) { var a = this . location . pathname . replace ( /[^\/]$/ , "$&/" ) ; return a === this . root && ! this . getSearch ( ) } , getSearch : function ( ) { var a = this . location . href . replace ( /#.*/ , "" ) . match ( /\?.+/ ) ; return a ? a [ 0 ] : "" } , getHash : function ( a ) { var b = ( a || this ) . location . href . match ( /#(.*)$/ ) ; return b ? b [ 1 ] : "" } , getPath : function ( ) { var a = decodeURI ( this . location . pathname + this . getSearch ( ) ) , b = this . root . slice ( 0 , - 1 ) ; return a . indexOf ( b ) || ( a = a . slice ( b . length ) ) , "/" === a . charAt ( 0 ) ? a . slice ( 1 ) : a } , getFragment : function ( a ) { return null == a && ( a = this . _hasPushState || ! this . _wantsHashChange ? this . getPath ( ) : this . getHash ( ) ) , a . replace ( D , "" ) } , start : function ( a ) { if ( C . started ) throw new Error ( "BI.history has already been started" ) ; if ( C . started = ! 0 , this . options = c . extend ( { root : "/" } , this . options , a ) , this . root = this . options . root , this . _wantsHashChange = this . options . hashChange !== ! 1 , this . _hasHashChange = "onhashchange" in window , this . _wantsPushState = ! ! this . options . pushState , this . _hasPushState = ! ! ( this . options . pushState && this . history && this . history . pushState ) , this . fragment = this . getFragment ( ) , this . root = ( "/" + this . root + "/" ) . replace ( E , "/" ) , this . _wantsHashChange && this . _wantsPushState ) { if ( ! this . _hasPushState && ! this . atRoot ( ) ) { var b = this . root . slice ( 0 , - 1 ) || "/" ; return this . location . replace ( b + "#" + this . getPath ( ) ) , ! 0 } this . _hasPushState && this . atRoot ( ) && this . navigate ( this . getHash ( ) , { replace : ! 0 } ) } if ( ! this . _hasHashChange && this . _wantsHashChange && ( ! this . _wantsPushState || ! this . _hasPushState ) ) { var d = document . createElement ( "iframe" ) ; d . src = "javascript:0" , d . style . display = "none" , d . tabIndex = - 1 ; var e = document . body ; this . iframe = e . insertBefore ( d , e . firstChild ) . contentWindow , this . iframe . document . open ( ) . close ( ) , this . iframe . location . hash = "#" + this . fragment } var f = window . addEventListener || function ( a , b ) { return attachEvent ( "on" + a , b ) } ; if ( this . _hasPushState ? f ( "popstate" , this . checkUrl , ! 1 ) : this . _wantsHashChange && this . _hasHashChange && ! this . iframe ? f ( "hashchange" , this . checkUrl , ! 1 ) : this . _wantsHashChange && ( this . _checkUrlInterval = setInterval ( this . checkUrl , this . interval ) ) , ! this . options . s
} ) . on ( "copy" , function ( ) { var b , d , e = a . split ( "." ) , f = c . get ( e [ 0 ] ) , g = c . _tmp [ e [ 0 ] ] ? "tmp" : "set" ; BI . each ( e , function ( a , c ) { return 0 === a ? void ( d = f ) : ( b = d , void ( d = d [ c ] ) ) } ) ; var h = BI . UUID ( ) , i = BI . clone ( e ) ; e . length > 1 ? i . unshift ( BI . deepClone ( b [ e [ e . length - 1 ] ] ) ) : i . unshift ( BI . deepClone ( f ) ) ; var j = c . similar . apply ( c , i ) ; BI . isKey ( j . id ) && ( h = j . id , delete j . id ) , e . length > 1 ? ( b [ h ] = j , c [ g ] ( e [ 0 ] , f , { silent : ! 0 } ) ) : c [ g ] ( h , j , { silent : ! 0 } ) , e . unshift ( h ) , ! BI . has ( c . _tmp , e [ 0 ] ) && c . parent && c . parent . _change ( c ) , c . duplicate . apply ( c , e ) , c . trigger ( "duplicate" , e ) } ) } , removeChild : function ( a , b ) { return BI . isArray ( this . _childs [ a ] ) ? ( BI . remove ( this . _childs [ a ] , b ) , void ( BI . isEmpty ( this . _childs [ a ] ) && delete this . _childs [ a ] ) ) : void delete this . _childs [ a ] } , has : function ( a , b ) { return b === ! 0 ? _ . has ( this . tmp , a ) : ( this . _start === ! 0 && this . _changing _ === ! 1 && ( this . _hass [ a ] = ! 0 ) , BI . Model . superclass . has . apply ( this , arguments ) ) } , cat : function ( a ) { if ( _ . has ( this . _tmp , a ) ) return this . _tmp [ a ] ; if ( this . _start === ! 0 && this . _hass [ a ] ) switch ( delete this . _hass [ a ] , a ) { case "default" : break ; case "current" : break ; default : this . _gets . push ( a ) } if ( _ . has ( this . attributes , a ) ) return this . attributes [ a ] ; var b = _ . result ( this , "_static" ) ; return BI . isFunction ( b [ a ] ) ? b [ a ] . apply ( this , BI . values ( arguments ) . slice ( 1 ) ) : b [ a ] } , get : function ( ) { return BI . deepClone ( this . cat . apply ( this , arguments ) ) } , set : function ( a , b , c ) { return this . _start === ! 0 || this . _changing _ === ! 0 ? ( this . _F . push ( { f : this . set , arg : arguments } ) , this ) : BI . Model . superclass . set . apply ( this , arguments ) } , unset : function ( a , b ) { var c = this ; return BI . each ( this . _childs , function ( b , d ) { b += "" ; var e = b . split ( "." ) ; _ . isEqual ( a , e [ 0 ] ) && ( delete c . _childs [ a ] , BI . isArray ( d ) || ( d = [ d ] ) , BI . each ( d , function ( a , b ) { b . trigger ( "unset" ) } ) ) } ) , BI . Model . superclass . unset . apply ( this , arguments ) } , tmp : function ( a , b , c ) { if ( this . _start === ! 0 || this . _changing _ === ! 0 ) return this . _F . push ( { f : this . tmp , arg : arguments } ) , this ; var d , e , f , g , h , i , j , k , l ; if ( null == a ) return this ; "object" == typeof a ? ( e = a , c = b ) : ( e = { } ) [ a ] = b , c || ( c = { } ) , f = c . unset , h = c . silent , g = [ ] , i = this . _changingTmp , this . _changingTmp = ! 0 , i || ( this . _previousTmp = _ . clone ( this . _tmp ) , this . changedTmp = { } ) , this . _previousTmp || ( this . _previousTmp = _ . clone ( this . _tmp ) ) , l = this . _tmp , k = this . _previousTmp ; for ( d in e ) b = e [ d ] , _ . isEqual ( l [ d ] , b ) || g . push ( d ) , _ . isEqual ( k [ d ] , b ) ? delete this . changedTmp [ d ] : this . changedTmp [ d ] = b , f ? delete l [ d ] : l [ d ] = b ; if ( ! h ) { g . length && ( this . _pendingTmp = c ) ; for ( var m = 0 , n = g . length ; m < n ; m ++ ) this . trigger ( "change:" + g [ m ] , this , l [ g [ m ] ] , c ) } if ( i ) return this ; if ( j = BI . clone ( this . changedTmp ) , ! h ) for ( ; this . _pendingTmp ; ) c = this . _pendingTmp , this . _pendingTmp = ! 1 , this . trigger ( "change" , j , k , this , c ) ; return this . _pendingTmp = ! 1 , this . _changingTmp = ! 1 , ! h && g . length && this . trigger ( "changed" , j , k , this , c ) , this } , untmp : function ( a , b ) { var c = this ; return BI . each ( this . _childs , function ( b , d ) { b += "" ; var e = b . split ( "." ) ; _ . isEqual ( a , e [ 0 ] ) && ( delete c . _childs [ a ] , BI . isArray ( d ) || ( d = [ d ] ) , BI . each ( d , function ( a , b ) { b . trigger ( "unset" ) } ) ) } ) , this . tmp ( a , void 0 , _ . extend ( { } , b , { unset : ! 0 } ) ) } , cancel : function ( a ) { var b = this , c = BI . clone ( this . _tmp ) ; this . _tmp = { } , BI . each ( c , function ( c ) { b . untmp ( c , a ) } ) } , submit : function ( ) { var a = BI . clone ( this . _tmp ) ; return this . _tmp = { } , this . set ( a ) , this } , urlRoot : function ( ) { return BI . servletURL } , parse : function ( a ) { return a } , setEditing : function ( a ) { this . _editing = a } , getEditing : function ( ) { if ( this . _start !== ! 0 ) throw new Error ( "getEditing函数只允许在local中调用" ) ; return this . _editing } , local : function ( ) { } , load : function ( a ) { } , refresh : function ( ) { } , updateURL : function ( ) { } , patchURL : function ( ) { } , deleteURL : function ( ) { } , readURL : function ( ) { } , read : function ( a ) { return 1 == this . _start || this . _changing _ === ! 0 ? void this . _F . push ( { f : this . read , arg : arguments } ) : void this . _read ( a ) } , update : function ( a ) { return 1 == this . _start || this . _changing _ === ! 0 ? void this . _F . push ( { f : this . update , arg : arguments } ) : void this . _save ( null , a ) } , patch : function ( a ) { return 1 == this . _start || this . _changing _ === ! 0 ? void this . _F . push ( { f : this . patch , arg : arguments } ) : void this . _save ( null , BI . extend ( { } , a , { patch : ! 0 } ) ) } , _destroy : function ( ) { var a = BI . extend ( { } , this . _childs ) ; this . _childs = { } , BI . each ( a , function ( a , b ) { b . _destroy ( ) } ) , this . destroyed && this . destroyed ( ) } , destroy : function ( ) { this . _destroy ( ) , BI . Model . superclass . destroy . apply ( this , arguments ) } } )
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" , 20340 : "NE" , 20375 : "TD" , 20389 : "YJ" , 20391 : "CZ" , 20415 : "PB" , 20446 : "YS" , 20447 : "SQ" , 20504 : "TC" , 20608 : "KG" , 20854 : "QJ" , 20857 : "ZC" , 20911 : "PF" , 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" , 40
null != b && b . setRight ( c || null ) , null != c && c . setLeft ( b || null ) , this . children . splice ( a , 1 ) } , removeAllChilds : function ( ) { this . children = [ ] } , addChild : function ( a , b ) { var c = null ; c = BI . isUndefined ( b ) ? this . children . length - 1 : b - 1 , a . setParent ( this ) , c >= 0 && ( this . getChild ( c ) . setRight ( a ) , a . setLeft ( this . getChild ( c ) ) ) , BI . isUndefined ( b ) ? this . children . push ( a ) : this . children . splice ( b , 0 , a ) } , 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 : t
f . close ( a ) , d . listenEnd . apply ( d , g ? b . split ( "." ) : [ b ] ) !== ! 1 && d . populate ( ) } , 30 ) } ) . on ( "change:" + j . cid , _ . bind ( d . notifyParent , d ) ) } return this . controller . open ( a ) , this . views [ a ] . populate ( h , e . force || ! 0 ) , this } , close : function ( a ) { return this . controller && this . controller . close ( a ) , this } , remove : function ( a , b ) { return a = b . rootURL + "/" + a , this . controller && ( this . controller . remove ( a ) , delete this . store [ a ] , this . views [ a ] && this . views [ a ] . model . destroy ( ) , delete this . views [ a ] ) , this } } ) , BI . EventList = BI . inherit ( BI . OB , { _defaultConfig : function ( ) { return BI . extend ( BI . EventList . superclass . _defaultConfig . apply ( this , arguments ) , { event : "click" , callback : BI . emptyFn , handle : "" , items : [ ] } ) } , _init : function ( ) { BI . EventList . superclass . _init . apply ( this , arguments ) , this . populate ( this . options . items ) } , _getHandle : function ( a ) { var b = this . options . handle ? _ . result ( a , this . options . handle ) : a ; return b . element || b } , populate : function ( a ) { var b = this , c = this . options . event , d = this . options . callback ; BI . nextTick ( function ( ) { BI . each ( a , function ( a , e ) { var f = d ( e ) ; BI . isFunction ( f ) && ( f = BI . debounce ( f , BI . EVENT _RESPONSE _TIME , ! 0 ) ) , b . _getHandle ( e ) [ c ] ( f ) } ) } ) } } ) , BI . ListenerList = BI . inherit ( BI . OB , { _defaultConfig : function ( ) { return BI . extend ( BI . ListenerList . superclass . _defaultConfig . apply ( this , arguments ) , { event : "click" , callback : BI . emptyFn , items : [ ] } ) } , _init : function ( ) { BI . ListenerList . superclass . _init . apply ( this , arguments ) , this . populate ( this . options . items ) } , _getHandle : function ( a ) { var b = this . options . handle ? _ . result ( a , this . options . handle ) : a ; return b . element || b } , populate : function ( a ) { var b = this , c = this . options . event , d = this . options . callback ; BI . nextTick ( function ( ) { BI . each ( a , function ( a , e ) { var f = d ( e ) ; BI . isFunction ( f ) && ( f = BI . debounce ( f , BI . EVENT _RESPONSE _TIME , ! 0 ) ) , b . _getHandle ( e ) . on ( c , f ) } ) } ) } } ) , BI . OffList = BI . inherit ( BI . OB , { _defaultConfig : function ( ) { return BI . extend ( BI . OffList . superclass . _defaultConfig . apply ( this , arguments ) , { event : "click" , items : [ ] } ) } , _init : function ( ) { BI . OffList . superclass . _init . apply ( this , arguments ) , this . populate ( this . options . items ) } , _getHandle : function ( a ) { var b = this . options . handle ? _ . result ( a , this . options . handle ) : a ; return b . element || b } , populate : function ( a ) { var b = this , c = this . options . event ; BI . each ( a , function ( a , d ) { b . _getHandle ( d ) . off ( c ) } ) } } ) , _ . 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" , BS : "beforesubmit" , AS : "aftersubmit" , SC : "submitcomplete" , SF : "submitfailure" , SS : "submitsuccess" , BVW : "beforeverifywrite" , AVW : "afterverifywrite" , AV : "afterverify" , BW : "beforewrite" , AW : "afterwrite" , WS : "writesuccess" , WF : "writefailure" , BA : "beforeappend" , AA : "afterappend" , BD : "beforedelete" , AD : "beforedelete" , UC : "unloadcheck" , BTOPDF : "beforetopdf" , ATOPDF : "aftertopdf" , BTOEXCEL : "beforetoexcel" , ATOEXCEL : "aftertoexcel" , BTOWORD : "beforetoword" , ATOWORD : "aftertoword" , BTOIMAGE : "beforetoimage" , ATOIMAGE : "aftertoimage" , BTOHTML : "beforetohtml" , ATOHTML : "aftertohtml" , BIMEXCEL : "beforeimportexcel" , AIMEXCEL : "afterimportexcel" , BPDFPRINT : "beforepdfprint" , APDFPRINT : "afterpdfprint" , BFLASHPRINT : "beforeflashprint" , AFLASHPRINT : "afterflashprint" , BAPPLETPRINT : "beforeappletprint" , AAPPLETPRINT : "afterappletprint" , BSEVERPRINT : "beforeserverprint" , ASERVERPRINT : "afterserverprint" , BEMAIL : "beforeemail" , AEMAIL : "afteremail" } } ) , BI . extend ( jQuery . fn , { destroy : function ( ) { this . remove ( ) , BI . isIE ( ) === ! 0 && ( this [ 0 ] . outerHTML = "" ) } , _ _textKeywordMarked _ _ : function ( a , b , c ) { if ( ! BI . isKey ( b ) || ( a + "" ) . length > 100 ) return this . text ( ( a + "" ) . replaceAll ( " " , " " ) ) ; b += "" , b = BI . toUpperCase ( b ) ; var d = ( a || "" ) + "" ; for ( c = ( c || BI . makeFirstPY ( a ) ) + "" , null != c && ( c = BI . toUpperCase ( c ) ) , this . empty ( ) ; ; ) { var e = BI . toUpperCase ( d ) . indexOf ( b ) , f = null ; if ( null != c && ( f = c . indexOf ( b ) , f >= 0
b . width = b . width >= 0 ? b . width : a . width ) , null != a . height && ( b . height = a . height - ( this . outerHeight ( ! 0 ) - this . height ( ) ) , b . height = b . height >= 0 ? b . height : a . height ) , this . css ( b ) , this ) : ( b = this . position ( ) , { x : b . left , y : b . top , width : this . outerWidth ( ) , height : this . outerHeight ( ) } ) } ) } ( jQuery ) , Number . prototype . toFixed && "0.000" === 8e-5 . toFixed ( 3 ) && "0" !== . 9. toFixed ( 0 ) && "1.25" === 1.255 . toFixed ( 2 ) && "1000000000000000128" === ( 0xde0b6b3a7640080 ) . toFixed ( 0 ) || ! function ( ) { function a ( a , b ) { for ( var c = - 1 ; ++ c < g ; ) b += a * h [ c ] , h [ c ] = b % f , b = Math . floor ( b / f ) } function b ( a ) { for ( var b = g , c = 0 ; -- b >= 0 ; ) c += h [ b ] , h [ b ] = Math . floor ( c / a ) , c = c % a * f } function c ( ) { for ( var a = g , b = "" ; -- a >= 0 ; ) if ( "" !== b || 0 === a || 0 !== h [ a ] ) { var c = String ( h [ a ] ) ; "" === b ? b = c : b += "0000000" . slice ( 0 , 7 - c . length ) + c } return b } function d ( a , b , c ) { return 0 === b ? c : b % 2 === 1 ? d ( a , b - 1 , c * a ) : d ( a * a , b / 2 , c ) } function e ( a ) { for ( var b = 0 ; a >= 4096 ; ) b += 12 , a /= 4096 ; for ( ; a >= 2 ; ) b += 1 , a /= 2 ; return b } var f , g , h ; f = 1e7 , g = 6 , h = [ 0 , 0 , 0 , 0 , 0 , 0 ] , Number . prototype . toFixed = function ( f ) { var g , h , i , j , k , l , m , n ; if ( g = Number ( f ) , g = g !== g ? 0 : Math . floor ( g ) , g < 0 || g > 20 ) throw new RangeError ( "Number.toFixed called with invalid number of decimals" ) ; if ( h = Number ( this ) , h !== h ) return "NaN" ; if ( h <= - 1e21 || h > 1e21 ) return String ( h ) ; if ( i = "" , h < 0 && ( i = "-" , h = - h ) , j = "0" , h > 1e-21 ) if ( k = e ( h * d ( 2 , 69 , 1 ) ) - 69 , l = k < 0 ? h * d ( 2 , - k , 1 ) : h / d ( 2 , k , 1 ) , l *= 4503599627370496 , k = 52 - k , k > 0 ) { for ( a ( 0 , l ) , m = g ; m >= 7 ; ) a ( 1e7 , 0 ) , m -= 7 ; for ( a ( d ( 10 , m , 1 ) , 0 ) , m = k - 1 ; m >= 23 ; ) b ( 1 << 23 ) , m -= 23 ; b ( 1 << m ) , a ( 1 , 1 ) , b ( 2 ) , j = c ( ) } else a ( 0 , l ) , a ( 1 << - k , 0 ) , j = c ( ) + "0.00000000000000000000" . slice ( 2 , 2 + g ) ; return g > 0 ? ( n = j . length , j = n <= g ? i + "0.0000000000000000000" . slice ( 0 , g - n + 2 ) + j : i + j . slice ( 0 , n - g ) + "." + j . slice ( n - g ) ) : j = i + j , j } } ( ) , Number . prototype . add = function ( a ) { return accAdd ( a , this ) } , Number . prototype . sub = function ( a ) { return accSub ( this , a ) } , Number . prototype . mul = function ( a ) { return accMul ( a , this ) } , Number . prototype . div = function ( a ) { return 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 a && ( b += a + "=" + c + "&" ) } ) , 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 } } ) , $ . extend ( String , { escape : function ( a ) { return a . replace ( /('|\\)/g , "\\$1" ) } , leftPad : function ( a , b , c ) { var d = String ( a ) ; for ( c || ( c = " " ) ; d . length < b ; ) d = c + d ; return d . toString ( ) } , format : function ( a ) { var b = Array . prototype . slice . call ( arguments , 1 ) ; return a . replace ( /\{(\d+)\}/g , function ( a , c ) { return b [ 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 ( t
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" } ) ; var e = 0 , f = 0 , g = 0 , h = 0 ; return BI . isNotNull ( b . left ) && d . element . css ( { "margin-left" : b . left } ) , BI . isNotNull ( b . right ) && d . element . css ( { "margin-right" : b . right } ) , BI . isNotNull ( b . top ) && d . element . css ( { "margin-top" : b . top } ) , BI . isNotNull ( b . bottom ) && d . element . css ( { "margin-bottom" : b . bottom } ) , BI . isNotNull ( c . hgap ) && ( e += c . hgap , d . element . css ( { left : e } ) , f += c . hgap , d . element . css ( { right : f } ) ) , BI . isNotNull ( c . vgap ) && ( g += c . vgap , d . element . css ( { top : g } ) , h += c . vgap , d . element . css ( { bottom : h } ) ) , BI . isNotNull ( c . lgap ) && ( e += c . lgap , d . element . css ( { left : e } ) ) , BI . isNotNull ( c . rgap ) && ( f += c . rgap , d . element . css ( { right : f } ) ) , BI . isNotNull ( c . tgap ) && ( g += c . tgap , d . element . css ( { top : g } ) ) , BI . isNotNull ( c . bgap ) && ( h += c . bgap , d . element . css ( { bottom : h } ) ) , BI . isNotNull ( b . width ) && d . element . css ( { width : b . width } ) , BI . isNotNull ( b . height ) && d . element . css ( { height : b . height } ) , d } , resize : function ( ) { this . stroke ( this . options . items ) } , populate : function ( a ) { BI . AbsoluteLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.adaptive" , BI . AdaptiveLayout ) , BI . BorderLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . BorderLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-border-layout" , items : { } } ) } , render : function ( ) { BI . BorderLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { this . stroke ( this . options . items ) } , addItem : function ( a ) { throw new Error ( "cannot be added" ) } , stroke : function ( a ) { var b , c = 0 , d = 0 , e = 0 , f = 0 ; if ( "north" in a && ( b = a . north , null != b ) ) { if ( b . el ) { if ( ! this . hasWidget ( this . getName ( ) + "north" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "north" , g ) } this . getWidgetByName ( this . getName ( ) + "north" ) . element . height ( b . height ) . css ( { position : "absolute" , top : b . top || 0 , left : b . left || 0 , right : b . right || 0 , bottom : "initial" } ) } c = ( b . height || 0 ) + ( b . top || 0 ) + ( b . bottom || 0 ) } if ( "south" in a && ( b = a . south , null != b ) ) { if ( b . el ) { if ( ! this . hasWidget ( this . getName ( ) + "south" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "south" , g ) } this . getWidgetByName ( this . getName ( ) + "south" ) . element . height ( b . height ) . css ( { position : "absolute" , bottom : b . bottom || 0 , left : b . left || 0 , right : b . right || 0 , top : "initial" } ) } d = ( b . height || 0 ) + ( b . top || 0 ) + ( b . bottom || 0 ) } if ( "west" in a && ( b = a . west , null != b ) ) { if ( b . el ) { if ( ! this . hasWidget ( this . getName ( ) + "west" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "west" , g ) } this . getWidgetByName ( this . getName ( ) + "west" ) . element . width ( b . width ) . css ( { position : "absolute" , left : b . left || 0 , top : c , bottom : d , right : "initial" } ) } e = ( b . width || 0 ) + ( b . left || 0 ) + ( b . right || 0 ) } if ( "east" in a && ( b = a . east , null != b ) ) { if ( b . el ) { if ( ! this . hasWidget ( this . getName ( ) + "east" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "east" , g ) } this . getWidgetByName ( this . getName ( ) + "east" ) . element . width ( b . width ) . css ( { position : "absolute" , right : b . right || 0 , top : c , bottom : d , left : "initial" } ) } f = ( b . width || 0 ) + ( b . left || 0 ) + ( b . right || 0 ) } if ( "center" in a && ( b = a . center , null != b ) ) { if ( ! this . hasWidget ( this . getName ( ) + "center" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "center" , g ) } this . getWidgetByName ( this . getName ( ) + "center" ) . element . css ( { position : "absolute" , top : c , bottom : d , left : e , right : f } ) } } , populate : function ( a ) { BI . BorderLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.border" , BI . BorderLayout ) , BI . CardLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . CardLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-card-layout" , items : [ ] } ) } , render : function ( ) { BI . CardLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { } , stroke : function ( a ) { var b = this , c = this . options ; this . showIndex = void 0 , BI . each ( a , function ( a , d ) { if ( d ) { if ( b . hasWidget ( d . cardN
baseCls : "bi-float-center-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FloatCenterLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { } , addItem : function ( a ) { throw new Error ( "cannot be added" ) } , stroke : function ( a ) { var b = this . options , c = [ ] , d = 100 / a . length ; BI . each ( a , function ( b ) { var e = BI . createWidget ( { type : "bi.default" } ) ; e . element . addClass ( "center-element " + ( 0 === b ? "first-element " : "" ) + ( b === a . length - 1 ? "last-element" : "" ) ) . css ( { width : d + "%" , height : "100%" } ) , c . push ( { el : e } ) } ) , BI . each ( a , function ( a , d ) { if ( d ) { var e = BI . createWidget ( d ) ; e . element . css ( { position : "absolute" , left : b . hgap + b . lgap , right : b . hgap + b . rgap , top : b . vgap + b . tgap , bottom : b . vgap + b . bgap , width : "auto" , height : "auto" } ) , c [ a ] . el . addItem ( e ) } } ) , BI . createWidget ( { type : "bi.left" , element : this , items : c } ) } , populate : function ( a ) { BI . FloatCenterLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.float_center" , BI . FloatCenterLayout ) , BI . HorizontalCenterLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . HorizontalCenterLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-horizontal-center-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . HorizontalCenterLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { } , addItem : function ( a ) { throw new Error ( "cannot be added" ) } , stroke : function ( a ) { var b = this . options , c = [ ] ; BI . each ( a , function ( b ) { c . push ( { column : b , row : 0 , el : BI . createWidget ( { type : "bi.default" , cls : "center-element " + ( 0 === b ? "first-element " : "" ) + ( b === a . length - 1 ? "last-element" : "" ) } ) } ) } ) , BI . each ( a , function ( a , d ) { if ( d ) { var e = BI . createWidget ( d ) ; e . element . css ( { position : "absolute" , left : b . hgap + b . lgap , right : b . hgap + b . rgap , top : b . vgap + b . tgap , bottom : b . vgap + b . bgap , width : "auto" } ) , c [ a ] . el . addItem ( e ) } } ) , BI . createWidget ( { type : "bi.grid" , element : this , columns : c . length , rows : 1 , items : c } ) } , populate : function ( a ) { BI . HorizontalCenterLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.horizontal_center" , BI . HorizontalCenterLayout ) , BI . VerticalCenterLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . VerticalCenterLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-vertical-center-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . VerticalCenterLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { } , addItem : function ( a ) { throw new Error ( "cannot be added" ) } , stroke : function ( a ) { var b = this . options , c = [ ] ; BI . each ( a , function ( b ) { c . push ( { column : 0 , row : b , el : BI . createWidget ( { type : "bi.default" , cls : "center-element " + ( 0 === b ? "first-element " : "" ) + ( b === a . length - 1 ? "last-element" : "" ) } ) } ) } ) , BI . each ( a , function ( a , d ) { if ( d ) { var e = BI . createWidget ( d ) ; e . element . css ( { position : "absolute" , left : b . hgap + b . lgap , right : b . hgap + b . rgap , top : b . vgap + b . tgap , bottom : b . vgap + b . bgap , height : "auto" } ) , c [ a ] . el . addItem ( e ) } } ) , BI . createWidget ( { type : "bi.grid" , element : this , columns : 1 , rows : c . length , items : c } ) } , populate : function ( a ) { BI . VerticalCenterLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.vertical_center" , BI . VerticalCenterLayout ) , BI . Data = Data = { } , Data . Constant = BI . Constant = BICst = { } , function ( ) { var a = { } ; Data . BufferPool = { put : function ( b , c ) { if ( BI . isNotNull ( a [ b ] ) ) throw new Error ( "Buffer Pool has the key already!" ) ; a [ b ] = c } , get : function ( b ) { return a [ b ] } } } ( ) , function ( ) { var a = { } ; Data . SharingPool = { _Shared : a , put : function ( b , c ) { a [ b ] = c } , cat : function ( ) { for ( var b = Array . prototype . slice . call ( arguments , 0 ) , c = a , d = 0 ; d < b . length ; d ++ ) c = c && c [ b [ d ] ] ; return c } , get : function ( ) { return BI . deepClone ( this . cat . apply ( this , arguments ) ) } , remove : function ( b ) { delete a [ b ] } } } ( ) , Data . Req = { } , Data . Source = BISource = { } , $ ( function ( ) { var a = BI . isSupportCss3 ( "flex" ) ; BI . Plugin . registerWidget ( "bi.horizontal" , function ( b ) { return a ? BI . extend ( b , { type : "bi.flex_horizontal" } ) : b } ) , BI . Plugin . registerWidget ( "bi.center_adapt" , function ( b ) { return a && b . items && b . items . length <= 1 ? b . scrollable === ! 0 || b . scrollx === ! 0 || b . scrolly === ! 0 ? BI . isIE ( ) ? b : BI . extend ( b , { type : "bi.flex_wrapper_center" } ) : BI . extend ( b , { type : "bi.flex_center" } ) : b } ) , BI . Plugin
this . tip . setVisible ( ! 1 ) ; var e = function ( c ) { b . _stop !== ! 0 && ( b . nodes = $ . fn . zTree . init ( d . element , a , c ) ) } , f = BI . extend ( { } , c . paras , { times : 1 } ) ; c . itemsCreator ( f , function ( a ) { if ( b . _stop !== ! 0 ) { var c = ! ! a . hasNext , d = a . items || [ ] ; d . length > 0 && e ( b . _dealWidthNodes ( d ) ) , b . setTipVisible ( d . length <= 0 ) , b . loaded ( ) , c ? b . tip . setLoaded ( ) : b . tip . invisible ( ) , 1 === f . times && b . fireEvent ( BI . Events . AFTERINIT ) } } ) } , initTree : function ( a , b ) { var b = b || { async : { enable : ! 1 } , check : { enable : ! 1 } , data : { key : { title : "title" , name : "text" } , simpleData : { enable : ! 0 } } , view : { showIcon : ! 1 , expandSpeed : "" , nameIsHTML : ! 0 } , callback : { } } ; this . nodes = $ . fn . zTree . init ( this . tree . element , b , a ) } , start : function ( ) { this . _stop = ! 1 } , stop : function ( ) { this . _stop = ! 0 } , stroke : function ( a ) { delete this . options . keyword , BI . extend ( this . options . paras , a ) ; var b = this . _configSetting ( ) ; this . _createTree ( ) , this . start ( ) , this . _initTree ( b ) } , populate : function ( ) { this . stroke . apply ( this , arguments ) } , hasChecked : function ( ) { var a = this . nodes ; return a . getCheckedNodes ( ! 0 ) . length > 0 } , checkAll : function ( a ) { function b ( a ) { BI . each ( a , function ( a , c ) { c . halfCheck = ! 1 , b ( c . children ) } ) } BI . each ( this . nodes . getNodes ( ) , function ( a , c ) { c . halfCheck = ! 1 , b ( c . children ) } ) , this . nodes && this . nodes . checkAllNodes ( a ) } , expandAll : function ( a ) { this . nodes && this . nodes . expandAll ( a ) } , setValue : function ( a , b ) { this . checkAll ( ! 1 ) , this . updateValue ( a , b ) , this . refresh ( ) } , setSelectedValue : function ( a ) { this . options . paras . selectedValues = BI . deepClone ( a || { } ) } , updateValue : function ( a , b ) { if ( this . nodes ) { b || ( b = "value" ) ; var c = this . nodes ; BI . each ( a , function ( a , d ) { var e = c . getNodesByParam ( b , a , null ) ; BI . each ( e , function ( a , b ) { BI . extend ( b , { checked : ! 0 } , d ) , c . updateNode ( b ) } ) } ) } } , refresh : function ( ) { this . nodes && this . nodes . refresh ( ) } , getValue : function ( ) { return this . nodes ? this . _getSelectedValues ( ) : null } , destroyed : function ( ) { this . stop ( ) , this . nodes && this . nodes . destroy ( ) } } ) , BI . extend ( BI . TreeView , { REQ _TYPE _INIT _DATA : 1 , REQ _TYPE _ADJUST _DATA : 2 , REQ _TYPE _SELECT _DATA : 3 , REQ _TYPE _GET _SELECTED _DATA : 4 } ) , BI . TreeView . EVENT _CHANGE = "EVENT_CHANGE" , BI . TreeView . EVENT _INIT = BI . Events . INIT , BI . TreeView . EVENT _AFTERINIT = BI . Events . AFTERINIT , BI . shortcut ( "bi.tree_view" , BI . TreeView ) , BI . AsyncTree = BI . inherit ( BI . TreeView , { _defaultConfig : function ( ) { return BI . extend ( BI . AsyncTree . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _init : function ( ) { BI . AsyncTree . superclass . _init . apply ( this , arguments ) } , _configSetting : function ( ) { function a ( a , b , c ) { var d = $ . fn . zTree . getZTreeObj ( b ) ; d . checkNode ( c , ! c . checked , ! 0 , ! 0 ) } function b ( a , b ) { function c ( a ) { BI . each ( a , function ( a , b ) { b . halfCheck === ! 0 && ( b . halfCheck = ! 1 , c ( b . children ) ) } ) } if ( b . halfCheck = ! 1 , b . checked === ! 0 ) { c ( b . children ) ; var d = $ . fn . zTree . getZTreeObj ( a ) , e = d . getSelectedNodes ( ) ; BI . each ( e , function ( a , b ) { b . halfCheck = ! 1 } ) } } function c ( a , b ) { h . _beforeExpandNode ( a , b ) } function d ( a , b , c ) { h . _selectTreeNode ( b , c ) } function e ( a , b , c ) { c . halfCheck = ! 1 } function f ( a , b , c ) { c . halfCheck = ! 1 } var g = this . options . paras , h = this , i = { async : { enable : ! 1 , otherParam : BI . cjkEncodeDO ( g ) } , check : { enable : ! 0 } , data : { key : { title : "title" , name : "text" } , simpleData : { enable : ! 0 } } , view : { showIcon : ! 1 , expandSpeed : "" , nameIsHTML : ! 0 , dblClickExpand : ! 1 } , callback : { beforeCheck : b , onCheck : d , beforeExpand : c , onExpand : e , onCollapse : f , onClick : a } } ; return i } , _selectTreeNode : function ( a , b ) { var c = this , d = ( this . options , BI . deepClone ( b . parentValues || c . _getParentValues ( b ) ) ) , e = this . _getNodeValue ( b ) ; if ( b . checked === ! 0 ) ; else { var f = b , g = this . _getTree ( this . options . paras . selectedValues , d ) ; for ( BI . isNotNull ( g [ e ] ) && delete g [ e ] ; null != f && BI . isEmpty ( g ) ; ) d = d . slice ( 0 , d . length - 1 ) , f = f . getParentNode ( ) , null != f && ( g = this . _getTree ( this . options . paras . selectedValues , d ) , e = this . _getNodeValue ( f ) , delete g [ e ] ) } BI . AsyncTree . superclass . _selectTreeNode . apply ( c , arguments ) } , _beforeExpandNode : function ( a , b ) { function c ( a , c ) { d . nodes . addNodes ( b , a ) , c === ! 0 && BI . delay ( function ( ) { i ++ , g . times = i , e . itemsCreator ( g , h ) } , 100 ) } var d = this , e = this . options , f = b . parentValues || d . _getParentValues ( b ) , g = BI . extend ( { } , e . paras , { id : b . id , times : 1 , parentValues : f . concat ( this . _getNodeValue ( b ) ) , checkState : b . getCheckStatus ( ) } ) , h = function ( a ) { var b = a . items || [ ] ; b . length > 0 && c ( d . _dealWidthNodes ( b ) , ! ! a . hasNext ) } , i = 1 ; b . children || e . itemsCreator ( g , h ) } , _join : function ( a , b ) { function c ( a , b , f ) { BI . each
BI . ComboGroup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . ComboGroup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-combo-group bi-list-item" , trigger : "click,hover" , direction : "right" , adjustLength : 0 , isDefaultInit : ! 1 , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : { type : "bi.text_button" , text : "" , value : "" } , children : [ ] , popup : { el : { type : "bi.button_tree" , chooseType : 0 , layouts : [ { type : "bi.vertical" } ] } } } ) } , _init : function ( ) { BI . ComboGroup . superclass . _init . apply ( this , arguments ) , this . populate ( this . options . el ) } , populate : function ( a ) { var b = this , c = this . options , d = c . children ; if ( BI . isEmpty ( d ) ) throw new Error ( "ComboGroup构造错误" ) ; BI . each ( d , function ( a , b ) { var d = BI . formatEL ( b ) . el . children ; b = BI . formatEL ( b ) . el , BI . isEmpty ( d ) || ( b . el = BI . clone ( b ) , b . children = d , b . type = "bi.combo_group" , b . action = c . action , b . height = c . height , b . direction = c . direction , b . isDefaultInit = c . isDefaultInit , b . isNeedAdjustHeight = c . isNeedAdjustHeight , b . isNeedAdjustWidth = c . isNeedAdjustWidth , b . adjustLength = c . adjustLength , b . popup = c . popup ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , element : this , height : c . height , trigger : c . trigger , direction : c . direction , isDefaultInit : c . isDefaultInit , isNeedAdjustWidth : c . isNeedAdjustWidth , isNeedAdjustHeight : c . isNeedAdjustHeight , adjustLength : c . adjustLength , el : a , popup : BI . extend ( { } , c . popup , { el : BI . extend ( { items : d } , c . popup . el ) } ) } ) , this . combo . on ( BI . Controller . EVENT _CHANGE , function ( a , c , d ) { b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a === BI . Events . CLICK && b . fireEvent ( BI . ComboGroup . EVENT _CHANGE , d ) } ) } , getValue : function ( ) { return this . combo . getValue ( ) } , setValue : function ( a ) { this . combo . setValue ( a ) } } ) , BI . ComboGroup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.combo_group" , BI . ComboGroup ) , BI . VirtualGroup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . VirtualGroup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-virtual-group" , items : [ ] , layouts : [ { type : "bi.center" , hgap : 0 , vgap : 0 } ] } ) } , render : function ( ) { this . populate ( this . options . items ) } , _packageBtns : function ( a ) { for ( var b = this . options , c = b . layouts . length - 1 ; c > 0 ; c -- ) a = BI . map ( a , function ( a , d ) { return BI . extend ( { } , b . layouts [ c ] , { items : [ BI . extend ( { } , b . layouts [ c ] . el , { el : BI . stripEL ( d ) } ) ] } ) } ) ; return a } , _packageItems : function ( a , b ) { return BI . createItems ( BI . makeArrayByArray ( a , { } ) , BI . clone ( b ) ) } , _packageLayout : function ( a ) { for ( var b = this . options , c = BI . deepClone ( b . layouts [ 0 ] ) , d = BI . formatEL ( c ) . el ; d && d . items && ! BI . isEmpty ( d . items ) ; ) d = BI . formatEL ( d . items [ 0 ] ) . el ; return d . items = a , c } , addItems : function ( a ) { this . layouts . addItems ( a ) } , prependItems : function ( a ) { this . layouts . prependItems ( a ) } , setValue : function ( a ) { this . layouts . setValue ( a ) } , getValue : function ( ) { return this . layouts . getValue ( ) } , empty : function ( ) { this . layouts . empty ( ) } , populate : function ( a ) { a = a || [ ] , this . options . items = a , a = this . _packageBtns ( a ) , this . layouts ? this . layouts . populate ( a ) : this . layouts = BI . createWidget ( BI . extend ( { element : this } , this . _packageLayout ( a ) ) ) } } ) , BI . VirtualGroup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.virtual_group" , BI . VirtualGroup ) , BI . Loader = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Loader . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-loader" , direction : "top" , isDefaultInit : ! 0 , logic : { dynamic : ! 0 , scrolly : ! 0 } , el : { type : "bi.button_group" } , items : [ ] , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn , count : ! 1 , prev : ! 1 , next : { } , hasPrev : BI . emptyFn , hasNext : BI . emptyFn } ) } , _prevLoad : function ( ) { var a = this , b = this . options ; this . prev . setLoading ( ) , b . itemsCreator . apply ( this , [ { times : -- this . times } , function ( ) { a . prev . setLoaded ( ) , a . prependItems . apply ( a , arguments ) } ] ) } , _nextLoad : function ( ) { var a = this , b = this . options ; this . next . setLoading ( ) , b . itemsCreator . apply ( this , [ { times : ++ this . times } , function ( ) { a . next . setLoaded ( ) , a . addItems . apply ( a , arguments ) } ] ) } , _init : function ( ) { BI . Loader . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; b . itemsCreator === ! 1 && ( b . prev = ! 1 , b . next = ! 1 ) , b . prev !== ! 1 && ( this . prev = BI . createWidget ( BI . extend ( { type : "bi.loading_bar" } , b . prev ) ) , this . prev . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && a . _prevLoad ( ) } ) ) , this . button _group = BI . createWidget ( b . el , { type : "bi.button_group" , choose
c . gutterFiller . style . width = b . gutterWidth + "px" ) : c . gutterFiller . style . display = "" } function u ( a , b , c ) { var d = c && null != c . top ? Math . max ( 0 , c . top ) : a . scroller . scrollTop ; d = Math . floor ( d - Qa ( a ) ) ; var e = c && null != c . bottom ? c . bottom : d + a . wrapper . clientHeight , f = $d ( b , d ) , g = $d ( b , e ) ; if ( c && c . ensure ) { var h = c . ensure . from . line , i = c . ensure . to . line ; h < f ? ( f = h , g = $d ( b , _d ( Vd ( b , h ) ) + a . wrapper . clientHeight ) ) : Math . min ( i , b . lastLine ( ) ) >= g && ( f = $d ( b , _d ( Vd ( b , i ) ) - a . wrapper . clientHeight ) , g = i ) } return { from : f , to : Math . max ( g , f + 1 ) } } function v ( a ) { var b = a . display , c = b . view ; if ( b . alignWidgets || b . gutters . firstChild && a . options . fixedGutter ) { for ( var d = y ( b ) - b . scroller . scrollLeft + a . doc . scrollLeft , e = b . gutters . offsetWidth , f = d + "px" , g = 0 ; g < c . length ; g ++ ) if ( ! c [ g ] . hidden ) { a . options . fixedGutter && c [ g ] . gutter && ( c [ g ] . gutter . style . left = f ) ; var h = c [ g ] . alignable ; if ( h ) for ( var i = 0 ; i < h . length ; i ++ ) h [ i ] . style . left = f } a . options . fixedGutter && ( b . gutters . style . left = d + e + "px" ) } } function w ( a ) { if ( ! a . options . lineNumbers ) return ! 1 ; var b = a . doc , c = x ( a . options , b . first + b . size - 1 ) , d = a . display ; if ( c . length != d . lineNumChars ) { var e = d . measure . appendChild ( Me ( "div" , [ Me ( "div" , c ) ] , "CodeMirror-linenumber CodeMirror-gutter-elt" ) ) , f = e . firstChild . offsetWidth , g = e . offsetWidth - f ; return d . lineGutter . style . width = "" , d . lineNumInnerWidth = Math . max ( f , d . lineGutter . offsetWidth - g ) + 1 , d . lineNumWidth = d . lineNumInnerWidth + g , d . lineNumChars = d . lineNumInnerWidth ? c . length : - 1 , d . lineGutter . style . width = d . lineNumWidth + "px" , k ( a ) , ! 0 } return ! 1 } function x ( a , b ) { return String ( a . lineNumberFormatter ( b + a . firstLineNumber ) ) } function y ( a ) { return a . scroller . getBoundingClientRect ( ) . left - a . sizer . getBoundingClientRect ( ) . left } function z ( a , b , c ) { var d = a . display ; this . viewport = b , this . visible = u ( d , a . doc , b ) , this . editorIsHidden = ! d . wrapper . offsetWidth , this . wrapperHeight = d . wrapper . clientHeight , this . wrapperWidth = d . wrapper . clientWidth , this . oldDisplayWidth = Ua ( a ) , this . force = c , this . dims = H ( a ) , this . events = [ ] } function A ( a ) { var b = a . display ; ! b . scrollbarsClipped && b . scroller . offsetWidth && ( b . nativeBarWidth = b . scroller . offsetWidth - b . scroller . clientWidth , b . heightForcer . style . height = Ta ( a ) + "px" , b . sizer . style . marginBottom = - b . nativeBarWidth + "px" , b . sizer . style . borderRightWidth = Ta ( a ) + "px" , b . scrollbarsClipped = ! 0 ) } function B ( a , b ) { var c = a . display , d = a . doc ; if ( b . editorIsHidden ) return Kb ( a ) , ! 1 ; if ( ! b . force && b . visible . from >= c . viewFrom && b . visible . to <= c . viewTo && ( null == c . updateLineNumbers || c . updateLineNumbers >= c . viewTo ) && c . renderedView == c . view && 0 == Ob ( a ) ) return ! 1 ; w ( a ) && ( Kb ( a ) , b . dims = H ( a ) ) ; var e = d . first + d . size , f = Math . max ( b . visible . from - a . options . viewportMargin , d . first ) , g = Math . min ( e , b . visible . to + a . options . viewportMargin ) ; c . viewFrom < f && f - c . viewFrom < 20 && ( f = Math . max ( d . first , c . viewFrom ) ) , c . viewTo > g && c . viewTo - g < 20 && ( g = Math . min ( e , c . viewTo ) ) , Ef && ( f = qd ( a . doc , f ) , g = rd ( a . doc , g ) ) ; var h = f != c . viewFrom || g != c . viewTo || c . lastWrapHeight != b . wrapperHeight || c . lastWrapWidth != b . wrapperWidth ; Nb ( a , f , g ) , c . viewOffset = _d ( Vd ( a . doc , c . viewFrom ) ) , a . display . mover . style . top = c . viewOffset + "px" ; var i = Ob ( a ) ; if ( ! h && 0 == i && ! b . force && c . renderedView == c . view && ( null == c . updateLineNumbers || c . updateLineNumbers >= c . viewTo ) ) return ! 1 ; var j = Pe ( ) ; return i > 4 && ( c . lineDiv . style . display = "none" ) , I ( a , c . updateLineNumbers , b . dims ) , i > 4 && ( c . lineDiv . style . display = "" ) , c . renderedView = c . view , j && Pe ( ) != j && j . offsetHeight && j . focus ( ) , Ne ( c . cursorDiv ) , Ne ( c . selectionDiv ) , c . gutters . style . height = 0 , h && ( c . lastWrapHeight = b . wrapperHeight , c . lastWrapWidth = b . wrapperWidth , Ma ( a , 400 ) ) , c . updateLineNumbers = null , ! 0 } function C ( a , b ) { for ( var c = b . viewport , d = ! 0 ; ( d && a . options . lineWrapping && b . oldDisplayWidth != Ua ( a ) || ( c && null != c . top && ( c = { top : Math . min ( a . doc . height + Ra ( a . display ) - Va ( a ) , c . top ) } ) , b . visible = u ( a . display , a . doc , c ) , ! ( b . visible . from >= a . display . viewFrom && b . visible . to <= a . display . viewTo ) ) ) && B ( a , b ) ; d = ! 1 ) { F ( a ) ; var e = o ( a ) ; Ha ( a ) , E ( a , e ) , s ( a , e ) } b . signal ( a , "update" , a ) , a . display . viewFrom == a . display . reportedViewFrom && a . display . viewTo == a . display . reportedViewTo || ( b . signal ( a , "viewportChange" , a , a . display . viewFrom , a . display . viewTo ) , a . display . reportedViewFrom = a . display . viewFrom , a . display . reportedViewTo = a . display . viewTo ) } function D ( a , b ) { var c = new z ( a , b ) ; if ( B ( a , c ) ) { F ( a ) , C ( a , c ) ; var d = o ( a ) ; Ha ( a ) , E ( a , d ) , s ( a , d ) , c . finish ( ) } } function E ( a , b ) { a . disp
} var f = a . maybeHiddenMarkers , g = a . maybeUnhiddenMarkers ; if ( f ) for ( var h = 0 ; h < f . length ; ++ h ) f [ h ] . lines . length || zg ( f [ h ] , "hide" ) ; if ( g ) for ( var h = 0 ; h < g . length ; ++ h ) g [ h ] . lines . length && zg ( g [ h ] , "unhide" ) ; c . wrapper . offsetHeight && ( d . scrollTop = b . display . scroller . scrollTop ) , a . changeObjs && zg ( b , "changes" , b , a . changeObjs ) , a . update && a . update . finish ( ) } function Cb ( a , b ) { if ( a . curOp ) return b ( ) ; tb ( a ) ; try { return b ( ) } finally { vb ( a ) } } function Db ( a , b ) { return function ( ) { if ( a . curOp ) return b . apply ( a , arguments ) ; tb ( a ) ; try { return b . apply ( a , arguments ) } finally { vb ( a ) } } } function Eb ( a ) { return function ( ) { if ( this . curOp ) return a . apply ( this , arguments ) ; tb ( this ) ; try { return a . apply ( this , arguments ) } finally { vb ( this ) } } } function Fb ( a ) { return function ( ) { var b = this . cm ; if ( ! b || b . curOp ) return a . apply ( this , arguments ) ; tb ( b ) ; try { return a . apply ( this , arguments ) } finally { vb ( b ) } } } function Gb ( a , b , c ) { this . line = b , this . rest = pd ( b ) , this . size = this . rest ? Zd ( Ce ( this . rest ) ) - c + 1 : 1 , this . node = this . text = null , this . hidden = sd ( a , b ) } function Hb ( a , b , c ) { for ( var d , e = [ ] , f = b ; f < c ; f = d ) { var g = new Gb ( a . doc , Vd ( a . doc , f ) , f ) ; d = f + g . size , e . push ( g ) } return e } function Ib ( a , b , c , d ) { null == b && ( b = a . doc . first ) , null == c && ( c = a . doc . first + a . doc . size ) , d || ( d = 0 ) ; var e = a . display ; if ( d && c < e . viewTo && ( null == e . updateLineNumbers || e . updateLineNumbers > b ) && ( e . updateLineNumbers = b ) , a . curOp . viewChanged = ! 0 , b >= e . viewTo ) Ef && qd ( a . doc , b ) < e . viewTo && Kb ( a ) ; else if ( c <= e . viewFrom ) Ef && rd ( a . doc , c + d ) > e . viewFrom ? Kb ( a ) : ( e . viewFrom += d , e . viewTo += d ) ; else if ( b <= e . viewFrom && c >= e . viewTo ) Kb ( a ) ; else if ( b <= e . viewFrom ) { var f = Mb ( a , c , c + d , 1 ) ; f ? ( e . view = e . view . slice ( f . index ) , e . viewFrom = f . lineN , e . viewTo += d ) : Kb ( a ) } else if ( c >= e . viewTo ) { var f = Mb ( a , b , b , - 1 ) ; f ? ( e . view = e . view . slice ( 0 , f . index ) , e . viewTo = f . lineN ) : Kb ( a ) } else { var g = Mb ( a , b , b , - 1 ) , h = Mb ( a , c , c + d , 1 ) ; g && h ? ( e . view = e . view . slice ( 0 , g . index ) . concat ( Hb ( a , g . lineN , h . lineN ) ) . concat ( e . view . slice ( h . index ) ) , e . viewTo += d ) : Kb ( a ) } var i = e . externalMeasured ; i && ( c < i . lineN ? i . lineN += d : b < i . lineN + i . size && ( e . externalMeasured = null ) ) } function Jb ( a , b , c ) { a . curOp . viewChanged = ! 0 ; var d = a . display , e = a . display . externalMeasured ; if ( e && b >= e . lineN && b < e . lineN + e . size && ( d . externalMeasured = null ) , ! ( b < d . viewFrom || b >= d . viewTo ) ) { var f = d . view [ Lb ( a , b ) ] ; if ( null != f . node ) { var g = f . changes || ( f . changes = [ ] ) ; De ( g , c ) == - 1 && g . push ( c ) } } } function Kb ( a ) { a . display . viewFrom = a . display . viewTo = a . doc . first , a . display . view = [ ] , a . display . viewOffset = 0 } function Lb ( a , b ) { if ( b >= a . display . viewTo ) return null ; if ( b -= a . display . viewFrom , b < 0 ) return null ; for ( var c = a . display . view , d = 0 ; d < c . length ; d ++ ) if ( b -= c [ d ] . size , b < 0 ) return d } function Mb ( a , b , c , d ) { var e , f = Lb ( a , b ) , g = a . display . view ; if ( ! Ef || c == a . doc . first + a . doc . size ) return { index : f , lineN : c } ; for ( var h = 0 , i = a . display . viewFrom ; h < f ; h ++ ) i += g [ h ] . size ; if ( i != b ) { if ( d > 0 ) { if ( f == g . length - 1 ) return null ; e = i + g [ f ] . size - b , f ++ } else e = i - b ; b += e , c += e } for ( ; qd ( a . doc , c ) != c ; ) { if ( f == ( d < 0 ? 0 : g . length - 1 ) ) return null ; c += d * g [ f - ( d < 0 ? 1 : 0 ) ] . size , f += d } return { index : f , lineN : c } } function Nb ( a , b , c ) { var d = a . display , e = d . view ; 0 == e . length || b >= d . viewTo || c <= d . viewFrom ? ( d . view = Hb ( a , b , c ) , d . viewFrom = b ) : ( d . viewFrom > b ? d . view = Hb ( a , b , d . viewFrom ) . concat ( d . view ) : d . viewFrom < b && ( d . view = d . view . slice ( Lb ( a , b ) ) ) , d . viewFrom = b , d . viewTo < c ? d . view = d . view . concat ( Hb ( a , d . viewTo , c ) ) : d . viewTo > c && ( d . view = d . view . slice ( 0 , Lb ( a , c ) ) ) ) , d . viewTo = c } function Ob ( a ) { for ( var b = a . display . view , c = 0 , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] ; e . hidden || e . node && ! e . changes || ++ c } return c } function Pb ( a ) { function b ( ) { e . activeTouch && ( f = setTimeout ( function ( ) { e . activeTouch = null } , 1e3 ) , g = e . activeTouch , g . end = + new Date ) } function c ( a ) { if ( 1 != a . touches . length ) return ! 1 ; var b = a . touches [ 0 ] ; return b . radiusX <= 1 && b . radiusY <= 1 } function d ( a , b ) { if ( null == b . left ) return ! 0 ; var c = b . left - a . left , d = b . top - a . top ; return c * c + d * d > 400 } var e = a . display ; xg ( e . scroller , "mousedown" , Db ( a , Ub ) ) , nf && of < 11 ? xg ( e . scroller , "dblclick" , Db ( a , function ( b ) { if ( ! ve ( a , b ) ) { var c = Tb ( a , b ) ; if ( c && ! Zb ( a , b ) && ! Sb ( a . display , b ) ) { ug ( b ) ; var d = a . findWordAt ( c ) ; va ( a . doc , d . anchor , d . head ) } } } ) ) : xg ( e . scroller , "dblclick" , function ( b ) { ve ( a , b ) || ug ( b ) } ) , Cf || xg ( e . scroller , "contextmenu" , function ( b ) { pc ( a , b ) } ) ; var f , g = { end : 0 } ; xg ( e . scroller , "touchstart" , function ( a ) { if ( ! c ( a ) ) { clearTimeout ( f ) ; var b = + new Date ; e . activeTouch = { start : b , moved : ! 1 , prev : b - g . end <= 300 ? g : null
} } function td ( a , b , c ) { if ( null == c . to ) { var d = c . marker . find ( 1 , ! 0 ) ; return td ( a , d . line , Yc ( d . line . markedSpans , c . marker ) ) } if ( c . marker . inclusiveRight && c . to == b . text . length ) return ! 0 ; for ( var e , f = 0 ; f < b . markedSpans . length ; ++ f ) if ( e = b . markedSpans [ f ] , e . marker . collapsed && ! e . marker . widgetNode && e . from == c . to && ( null == e . to || e . to != c . from ) && ( e . marker . inclusiveLeft || c . marker . inclusiveRight ) && td ( a , b , e ) ) return ! 0 } function ud ( a , b , c ) { _d ( b ) < ( a . curOp && a . curOp . scrollTop || a . doc . scrollTop ) && Hc ( a , null , c ) } function vd ( a ) { if ( null != a . height ) return a . height ; var b = a . doc . cm ; if ( ! b ) return 0 ; if ( ! Ng ( document . body , a . node ) ) { var c = "position: relative;" ; a . coverGutter && ( c += "margin-left: -" + b . display . gutters . offsetWidth + "px;" ) , a . noHScroll && ( c += "width: " + b . display . wrapper . clientWidth + "px;" ) , Oe ( b . display . measure , Me ( "div" , [ a . node ] , null , c ) ) } return a . height = a . node . offsetHeight } function wd ( a , b , c , d ) { var e = new mg ( a , c , d ) , f = a . cm ; return f && e . noHScroll && ( f . display . alignWidgets = ! 0 ) , Lc ( a , b , "widget" , function ( b ) { var c = b . widgets || ( b . widgets = [ ] ) ; if ( null == e . insertAt ? c . push ( e ) : c . splice ( Math . min ( c . length - 1 , Math . max ( 0 , e . insertAt ) ) , 0 , e ) , e . line = b , f && ! sd ( a , b ) ) { var d = _d ( b ) < a . scrollTop ; Yd ( b , b . height + vd ( e ) ) , d && Hc ( f , null , e . height ) , f . curOp . forceUpdate = ! 0 } return ! 0 } ) , e } function xd ( a , b , c , d ) { a . text = b , a . stateAfter && ( a . stateAfter = null ) , a . styles && ( a . styles = null ) , null != a . order && ( a . order = null ) , fd ( a ) , gd ( a , c ) ; var e = d ? d ( a ) : 1 ; e != a . height && Yd ( a , e ) } function yd ( a ) { a . parent = null , fd ( a ) } function zd ( a , b ) { if ( a ) for ( ; ; ) { var c = a . match ( /(?:^|\s+)line-(background-)?(\S+)/ ) ; if ( ! c ) break ; a = a . slice ( 0 , c . index ) + a . slice ( c . index + c [ 0 ] . length ) ; var d = c [ 1 ] ? "bgClass" : "textClass" ; null == b [ d ] ? b [ d ] = c [ 2 ] : new RegExp ( "(?:^|s)" + c [ 2 ] + "(?:$|s)" ) . test ( b [ d ] ) || ( b [ d ] += " " + c [ 2 ] ) } return a } function Ad ( b , c ) { if ( b . blankLine ) return b . blankLine ( c ) ; if ( b . innerMode ) { var d = a . innerMode ( b , c ) ; return d . mode . blankLine ? d . mode . blankLine ( d . state ) : void 0 } } function Bd ( b , c , d , e ) { for ( var f = 0 ; f < 10 ; f ++ ) { e && ( e [ 0 ] = a . innerMode ( b , d ) . mode ) ; var g = b . token ( c , d ) ; if ( c . pos > c . start ) return g } throw new Error ( "Mode " + b . name + " failed to advance stream." ) } function Cd ( a , b , c , d ) { function e ( a ) { return { start : l . start , end : l . pos , string : l . current ( ) , type : f || null , state : a ? bg ( g . mode , k ) : k } } var f , g = a . doc , h = g . mode ; b = qa ( g , b ) ; var i , j = Vd ( g , b . line ) , k = Pa ( a , b . line , c ) , l = new ig ( j . text , a . options . tabSize ) ; for ( d && ( i = [ ] ) ; ( d || l . pos < b . ch ) && ! l . eol ( ) ; ) l . start = l . pos , f = Bd ( h , l , k ) , d && i . push ( e ( ! 0 ) ) ; return d ? i : e ( ) } function Dd ( a , b , c , d , e , f , g ) { var h = c . flattenSpans ; null == h && ( h = a . options . flattenSpans ) ; var i , j = 0 , k = null , l = new ig ( b , a . options . tabSize ) , m = a . options . addModeClass && [ null ] ; for ( "" == b && zd ( Ad ( c , d ) , f ) ; ! l . eol ( ) ; ) { if ( l . pos > a . options . maxHighlightLength ? ( h = ! 1 , g && Gd ( a , b , d , l . pos ) , l . pos = b . length , i = null ) : i = zd ( Bd ( c , l , d , m ) , f ) , m ) { var n = m [ 0 ] . name ; n && ( i = "m-" + ( i ? n + " " + i : n ) ) } if ( ! h || k != i ) { for ( ; j < l . start ; ) j = Math . min ( l . start , j + 5e4 ) , e ( j , k ) ; k = i } l . start = l . pos } for ( ; j < l . pos ; ) { var o = Math . min ( l . pos , j + 5e4 ) ; e ( o , k ) , j = o } } function Ed ( a , b , c , d ) { var e = [ a . state . modeGen ] , f = { } ; Dd ( a , b . text , a . doc . mode , c , function ( a , b ) { e . push ( a , b ) } , f , d ) ; for ( var g = 0 ; g < a . state . overlays . length ; ++ g ) { var h = a . state . overlays [ g ] , i = 1 , j = 0 ; Dd ( a , b . text , h . mode , ! 0 , function ( a , b ) { for ( var c = i ; j < a ; ) { var d = e [ i ] ; d > a && e . splice ( i , 1 , a , e [ i + 1 ] , d ) , i += 2 , j = Math . min ( a , d ) } if ( b ) if ( h . opaque ) e . splice ( c , i - c , a , "cm-overlay " + b ) , i = c + 2 ; else for ( ; c < i ; c += 2 ) { var f = e [ c + 1 ] ; e [ c + 1 ] = ( f ? f + " " : "" ) + "cm-overlay " + b } } , f ) } return { styles : e , classes : f . bgClass || f . textClass ? f : null } } function Fd ( a , b , c ) { if ( ! b . styles || b . styles [ 0 ] != a . state . modeGen ) { var d = Ed ( a , b , b . stateAfter = Pa ( a , Zd ( b ) ) ) ; b . styles = d . styles , d . classes ? b . styleClasses = d . classes : b . styleClasses && ( b . styleClasses = null ) , c === a . doc . frontier && a . doc . frontier ++ } return b . styles } function Gd ( a , b , c , d ) { var e = a . doc . mode , f = new ig ( b , a . options . tabSize ) ; for ( f . start = f . pos = d || 0 , "" == b && Ad ( e , c ) ; ! f . eol ( ) && f . pos <= a . options . maxHighlightLength ; ) Bd ( e , f , c ) , f . start = f . pos } function Hd ( a , b ) { if ( ! a || /^\s*$/ . test ( a ) ) return null ; var c = b . addModeClass ? pg : og ; return c [ a ] || ( c [ a ] = a . replace ( /\S+/g , "cm-$&" ) ) } function Id ( a , b ) { var c = Me ( "span" , null , null , pf ? "padding-right: .1px" : null ) , d = { pre : Me ( "pre" , [ c ] , "CodeMirror-line" ) , content : c , col : 0 , pos : 0 , cm : a , splitSpaces : ( nf || pf ) && a . getOption ( "lineWrapping" ) } ; b . measure = { } ; for ( var e = 0 ; e <= ( b . rest ? b . rest . l
var i = Lb ( a , e . line ) ; if ( i == b . view . length - 1 ) var j = b . viewTo - 1 , k = b . lineDiv . lastChild ; else var j = Zd ( b . view [ i + 1 ] . line ) - 1 , k = b . view [ i + 1 ] . node . previousSibling ; for ( var l = Ug ( ka ( a , h , k , g , j ) ) , m = Wd ( a . doc , Ff ( g , 0 ) , Ff ( j , Vd ( a . doc , j ) . text . length ) ) ; l . length > 1 && m . length > 1 ; ) if ( Ce ( l ) == Ce ( m ) ) l . pop ( ) , m . pop ( ) , j -- ; else { if ( l [ 0 ] != m [ 0 ] ) break ; l . shift ( ) , m . shift ( ) , g ++ } for ( var n = 0 , o = 0 , p = l [ 0 ] , q = m [ 0 ] , r = Math . min ( p . length , q . length ) ; n < r && p . charCodeAt ( n ) == q . charCodeAt ( n ) ; ) ++ n ; for ( var s = Ce ( l ) , t = Ce ( m ) , u = Math . min ( s . length - ( 1 == l . length ? n : 0 ) , t . length - ( 1 == m . length ? n : 0 ) ) ; o < u && s . charCodeAt ( s . length - o - 1 ) == t . charCodeAt ( t . length - o - 1 ) ; ) ++ o ; l [ l . length - 1 ] = s . slice ( 0 , s . length - o ) , l [ 0 ] = l [ 0 ] . slice ( n ) ; var v = Ff ( g , n ) , w = Ff ( j , m . length ? Ce ( m ) . length - o : 0 ) ; return l . length > 1 || l [ 0 ] || Gf ( v , w ) ? ( Cc ( a . doc , l , v , w , "+input" ) , ! 0 ) : void 0 } , ensurePolled : function ( ) { this . forceCompositionEnd ( ) } , reset : function ( ) { this . forceCompositionEnd ( ) } , forceCompositionEnd : function ( ) { this . composing && ! this . composing . handled && ( this . applyComposition ( this . composing ) , this . composing . handled = ! 0 , this . div . blur ( ) , this . div . focus ( ) ) } , applyComposition : function ( a ) { a . data && a . data != a . startData && Db ( this . cm , $ ) ( this . cm , a . data , 0 , a . sel ) } , setUneditable : function ( a ) { a . setAttribute ( "contenteditable" , "false" ) } , onKeyPress : function ( a ) { a . preventDefault ( ) , Db ( this . cm , $ ) ( this . cm , String . fromCharCode ( null == a . charCode ? a . keyCode : a . charCode ) , 0 ) } , onContextMenu : Fe , resetPosition : Fe , needsContentAttribute : ! 0 } , fa . prototype ) , a . inputStyles = { textarea : da , contenteditable : fa } , la . prototype = { primary : function ( ) { return this . ranges [ this . primIndex ] } , equals : function ( a ) { if ( a == this ) return ! 0 ; if ( a . primIndex != this . primIndex || a . ranges . length != this . ranges . length ) return ! 1 ; for ( var b = 0 ; b < this . ranges . length ; b ++ ) { var c = this . ranges [ b ] , d = a . ranges [ b ] ; if ( 0 != Gf ( c . anchor , d . anchor ) || 0 != Gf ( c . head , d . head ) ) return ! 1 } return ! 0 } , deepCopy : function ( ) { for ( var a = [ ] , b = 0 ; b < this . ranges . length ; b ++ ) a [ b ] = new ma ( V ( this . ranges [ b ] . anchor ) , V ( this . ranges [ b ] . head ) ) ; return new la ( a , this . primIndex ) } , somethingSelected : function ( ) { for ( var a = 0 ; a < this . ranges . length ; a ++ ) if ( ! this . ranges [ a ] . empty ( ) ) return ! 0 ; return ! 1 } , contains : function ( a , b ) { b || ( b = a ) ; for ( var c = 0 ; c < this . ranges . length ; c ++ ) { var d = this . ranges [ c ] ; if ( Gf ( b , d . from ( ) ) >= 0 && Gf ( a , d . to ( ) ) <= 0 ) return c } return - 1 } } , ma . prototype = { from : function ( ) { return X ( this . anchor , this . head ) } , to : function ( ) { return W ( this . anchor , this . head ) } , empty : function ( ) { return this . head . line == this . anchor . line && this . head . ch == this . anchor . ch } } ; var If , Jf , Kf , Lf = { left : 0 , right : 0 , top : 0 , bottom : 0 } , Mf = null , Nf = 0 , Of = 0 , Pf = 0 , Qf = null ; nf ? Qf = - . 53 : kf ? Qf = 15 : rf ? Qf = - . 7 : tf && ( Qf = - 1 / 3 ) ; var Rf = function ( a ) { var b = a . wheelDeltaX , c = a . wheelDeltaY ; return null == b && a . detail && a . axis == a . HORIZONTAL _AXIS && ( b = a . detail ) , null == c && a . detail && a . axis == a . VERTICAL _AXIS ? c = a . detail : null == c && ( c = a . wheelDelta ) , { x : b , y : c } } ; a . wheelEventPixels = function ( a ) { var b = Rf ( a ) ; return b . x *= Qf , b . y *= Qf , b } ; var Sf = new ze , Tf = null , Uf = a . changeEnd = function ( a ) { return a . text ? Ff ( a . from . line + a . text . length - 1 , Ce ( a . text ) . length + ( 1 == a . text . length ? a . from . ch : 0 ) ) : a . to } ; a . prototype = { constructor : a , focus : function ( ) { window . focus ( ) , this . display . input . focus ( ) } , setOption : function ( a , b ) { var c = this . options , d = c [ a ] ; c [ a ] == b && "mode" != a || ( c [ a ] = b , Wf . hasOwnProperty ( a ) && Db ( this , Wf [ a ] ) ( this , b , d ) ) } , getOption : function ( a ) { return this . options [ a ] } , getDoc : function ( ) { return this . doc } , addKeyMap : function ( a , b ) { this . state . keyMaps [ b ? "push" : "unshift" ] ( Rc ( a ) ) } , removeKeyMap : function ( a ) { for ( var b = this . state . keyMaps , c = 0 ; c < b . length ; ++ c ) if ( b [ c ] == a || b [ c ] . name == a ) return b . splice ( c , 1 ) , ! 0 } , addOverlay : Eb ( function ( b , c ) { var d = b . token ? b : a . getMode ( this . options , b ) ; if ( d . startState ) throw new Error ( "Overlays may not be stateful." ) ; this . state . overlays . push ( { mode : d , modeSpec : b , opaque : c && c . opaque } ) , this . state . modeGen ++ , Ib ( this ) } ) , removeOverlay : Eb ( function ( a ) { for ( var b = this . state . overlays , c = 0 ; c < b . length ; ++ c ) { var d = b [ c ] . modeSpec ; if ( d == a || "string" == typeof a && d . name == a ) return b . splice ( c , 1 ) , this . state . modeGen ++ , void Ib ( this ) } } ) , indentLine : Eb ( function ( a , b , c ) { "string" != typeof b && "number" != typeof b && ( b = null == b ? this . options . smartIndent ? "smart" : "prev" : b ? "add" : "subtract" ) , sa ( this . doc , a ) && Kc ( this , a , b , c ) } ) , indentSelection : Eb ( function ( a ) { for ( var b = this . doc . sel . r
this . first = c , this . scrollTop = this . scrollLeft = 0 , this . cantEdit = ! 1 , this . cleanGeneration = 1 , this . frontier = c ; var d = Ff ( c , 0 ) ; this . sel = oa ( d ) , this . history = new be ( null ) , this . id = ++ qg , this . modeOption = b , "string" == typeof a && ( a = Ug ( a ) ) , Qd ( this , { from : d , to : d , text : a } ) , Ba ( this , oa ( d ) , Dg ) } ; rg . prototype = Ge ( Sd . prototype , { constructor : rg , iter : function ( a , b , c ) { c ? this . iterN ( a - this . first , b - a , c ) : this . iterN ( this . first , this . first + this . size , a ) } , insert : function ( a , b ) { for ( var c = 0 , d = 0 ; d < b . length ; ++ d ) c += b [ d ] . height ; this . insertInner ( a - this . first , b , c ) } , remove : function ( a , b ) { this . removeInner ( a - this . first , b ) } , getValue : function ( a , b ) { var c = Xd ( this , this . first , this . first + this . size , b ) ; return a === ! 1 ? c : c . join ( a || "\n" ) } , setValue : Fb ( function ( a ) { var b = Ff ( this . first , 0 ) , c = this . first + this . size - 1 ; wc ( this , { from : b , to : Ff ( c , Vd ( this , c ) . text . length ) , text : Ug ( a ) , origin : "setValue" , full : ! 0 } , ! 0 ) , Ba ( this , oa ( b ) ) } ) , replaceRange : function ( a , b , c , d ) { b = qa ( this , b ) , c = c ? qa ( this , c ) : b , Cc ( this , a , b , c , d ) } , getRange : function ( a , b , c ) { var d = Wd ( this , qa ( this , a ) , qa ( this , b ) ) ; return c === ! 1 ? d : d . join ( c || "\n" ) } , getLine : function ( a ) { var b = this . getLineHandle ( a ) ; return b && b . text } , getLineHandle : function ( a ) { if ( sa ( this , a ) ) return Vd ( this , a ) } , getLineNumber : function ( a ) { return Zd ( a ) } , getLineHandleVisualStart : function ( a ) { return "number" == typeof a && ( a = Vd ( this , a ) ) , od ( a ) } , lineCount : function ( ) { return this . size } , firstLine : function ( ) { return this . first } , lastLine : function ( ) { return this . first + this . size - 1 } , clipPos : function ( a ) { return qa ( this , a ) } , getCursor : function ( a ) { var b , c = this . sel . primary ( ) ; return b = null == a || "head" == a ? c . head : "anchor" == a ? c . anchor : "end" == a || "to" == a || a === ! 1 ? c . to ( ) : c . from ( ) } , listSelections : function ( ) { return this . sel . ranges } , somethingSelected : function ( ) { return this . sel . somethingSelected ( ) } , setCursor : Fb ( function ( a , b , c ) { ya ( this , qa ( this , "number" == typeof a ? Ff ( a , b || 0 ) : a ) , null , c ) } ) , setSelection : Fb ( function ( a , b , c ) { ya ( this , qa ( this , a ) , qa ( this , b || a ) , c ) } ) , extendSelection : Fb ( function ( a , b , c ) { va ( this , qa ( this , a ) , b && qa ( this , b ) , c ) } ) , extendSelections : Fb ( function ( a , b ) { wa ( this , ta ( this , a , b ) ) } ) , extendSelectionsBy : Fb ( function ( a , b ) { wa ( this , Ee ( this . sel . ranges , a ) , b ) } ) , setSelections : Fb ( function ( a , b , c ) { if ( a . length ) { for ( var d = 0 , e = [ ] ; d < a . length ; d ++ ) e [ d ] = new ma ( qa ( this , a [ d ] . anchor ) , qa ( this , a [ d ] . head ) ) ; null == b && ( b = Math . min ( a . length - 1 , this . sel . primIndex ) ) , Ba ( this , na ( e , b ) , c ) } } ) , addSelection : Fb ( function ( a , b , c ) { var d = this . sel . ranges . slice ( 0 ) ; d . push ( new ma ( qa ( this , a ) , qa ( this , b || a ) ) ) , Ba ( this , na ( d , d . length - 1 ) , c ) } ) , getSelection : function ( a ) { for ( var b , c = this . sel . ranges , d = 0 ; d < c . length ; d ++ ) { var e = Wd ( this , c [ d ] . from ( ) , c [ d ] . to ( ) ) ; b = b ? b . concat ( e ) : e } return a === ! 1 ? b : b . join ( a || "\n" ) } , getSelections : function ( a ) { for ( var b = [ ] , c = this . sel . ranges , d = 0 ; d < c . length ; d ++ ) { var e = Wd ( this , c [ d ] . from ( ) , c [ d ] . to ( ) ) ; a !== ! 1 && ( e = e . join ( a || "\n" ) ) , b [ d ] = e } return b } , replaceSelection : function ( a , b , c ) { for ( var d = [ ] , e = 0 ; e < this . sel . ranges . length ; e ++ ) d [ e ] = a ; this . replaceSelections ( d , b , c || "+input" ) } , replaceSelections : Fb ( function ( a , b , c ) { for ( var d = [ ] , e = this . sel , f = 0 ; f < e . ranges . length ; f ++ ) { var g = e . ranges [ f ] ; d [ f ] = { from : g . from ( ) , to : g . to ( ) , text : Ug ( a [ f ] ) , origin : c } } for ( var h = b && "end" != b && uc ( this , d , b ) , f = d . length - 1 ; f >= 0 ; f -- ) wc ( this , d [ f ] ) ; h ? Aa ( this , h ) : this . cm && Ic ( this . cm ) } ) , undo : Fb ( function ( ) { yc ( this , "undo" ) } ) , redo : Fb ( function ( ) { yc ( this , "redo" ) } ) , undoSelection : Fb ( function ( ) { yc ( this , "undo" , ! 0 ) } ) , redoSelection : Fb ( function ( ) { yc ( this , "redo" , ! 0 ) } ) , setExtending : function ( a ) { this . extend = a } , getExtending : function ( ) { return this . extend } , historySize : function ( ) { for ( var a = this . history , b = 0 , c = 0 , d = 0 ; d < a . done . length ; d ++ ) a . done [ d ] . ranges || ++ b ; for ( var d = 0 ; d < a . undone . length ; d ++ ) a . undone [ d ] . ranges || ++ c ; return { undo : b , redo : c } } , clearHistory : function ( ) { this . history = new be ( this . history . maxGeneration ) } , markClean : function ( ) { this . cleanGeneration = this . changeGeneration ( ! 0 ) } , changeGeneration : function ( a ) { return a && ( this . history . lastOp = this . history . lastSelOp = this . history . lastOrigin = null ) , this . history . generation } , isClean : function ( a ) { return this . history . generation == ( a || this . cleanGeneration ) } , getHistory : function ( ) { return { done : me ( this . history . done ) , undone : me ( this . history . undone ) } } , setHistory : function ( a ) { var b = this . history = new be ( this . history . maxGeneration ) ; b . done
var d = c . text ; _ . forEach ( c . markedSpans , function ( c , e ) { switch ( c . marker . className ) { case "fieldName" : var f = a [ d . substr ( c . from , c . to - c . from ) ] ; b . contains ( f ) || b . push ( f ) } } ) } ) , b } , getCheckString : function ( ) { return this . editor . getValue ( ! 0 , function ( a ) { var b = a . text , c = a . text , d = 0 ; return c . text = b , _ . forEach ( a . markedSpans , function ( a , b ) { switch ( a . marker . className ) { case "fieldName" : var e = a . to - a . from ; c = c . substr ( 0 , a . from + d ) + "$a" + c . substr ( a . to + d , c . length ) , d = d + 2 - e } } ) , c } ) } , getValue : function ( ) { var a = this . options . fieldTextValueMap ; return this . editor . getValue ( "\n" , function ( b ) { var c = b . text , d = b . text , e = 0 ; return d . text = c , _ . forEach ( b . markedSpans , function ( b , c ) { switch ( b . marker . className ) { case "fieldName" : var f = b . to - b . from , g = a [ d . substr ( b . from + e , f ) ] ; d = d . substr ( 0 , b . from + e ) + "${" + a [ d . substr ( b . from + e , f ) ] + "}" + d . substr ( b . to + e , d . length ) , e += g . length - f + 3 } } ) , d } ) } , setValue : function ( a ) { this . editor . setValue ( a ) } , setFieldTextValueMap : function ( a ) { this . options . fieldTextValueMap = a } , refresh : function ( ) { var a = this ; BI . nextTick ( function ( ) { a . editor . refresh ( ) } ) } } ) , BI . FormulaEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . FormulaEditor . EVENT _BLUR = "EVENT_BLUR" , BI . FormulaEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . shortcut ( "bi.formula_editor" , BI . FormulaEditor ) , $ . extend ( BI , { Msg : function ( ) { var a , b , c ; return { alert : function ( a , b , c ) { this . _show ( ! 1 , a , b , c ) } , confirm : function ( a , b , c ) { this . _show ( ! 0 , a , b , c ) } , prompt : function ( a , b , c , d , e ) { } , toast : function ( a , b , c ) { c = c || $ ( "body" ) ; var d = BI . createWidget ( { type : "bi.toast" , level : b , text : a } ) ; BI . createWidget ( { type : "bi.absolute" , element : c , items : [ { el : d , left : "50%" , top : 0 } ] } ) , d . element . outerWidth ( ) > c . outerWidth ( ) && d . setWidth ( c . width ( ) ) , d . element . css ( { "margin-left" : - 1 * d . element . outerWidth ( ) / 2 } ) , d . invisible ( ) , d . element . slideDown ( 500 , function ( ) { BI . delay ( function ( ) { d . element . slideUp ( 500 , function ( ) { d . destroy ( ) } ) } , 5e3 ) } ) } , _show : function ( d , e , f , g ) { b = $ ( '<div class="bi-z-index-mask">' ) . css ( { position : "absolute" , zIndex : BI . zIndex _tip - 2 , top : 0 , left : 0 , right : 0 , bottom : 0 , opacity : . 5 } ) . appendTo ( "body" ) , c = $ ( '<div class="bi-message-depend">' ) . css ( { position : "absolute" , zIndex : BI . zIndex _tip - 1 , top : 0 , left : 0 , right : 0 , bottom : 0 } ) . appendTo ( "body" ) ; var h = function ( ) { a . destroy ( ) , b . remove ( ) } , i = [ ] ; d === ! 0 && i . push ( { el : { type : "bi.button" , text : BI . i18nText ( "BI-Basic_Cancel" ) , height : 30 , level : "ignore" , handler : function ( ) { h ( ) , BI . isFunction ( g ) && g . apply ( null , [ ! 1 ] ) } } } ) , i . push ( { el : { type : "bi.button" , text : BI . i18nText ( "BI-Basic_OK" ) , height : 30 , handler : function ( ) { h ( ) , BI . isFunction ( g ) && g . apply ( null , [ ! 0 ] ) } } } ) ; var j = { element : c , type : "bi.center_adapt" , items : [ { type : "bi.border" , cls : "bi-message-content bi-card" , items : { north : { el : { type : "bi.border" , cls : "bi-message-title bi-background" , items : { center : { el : { type : "bi.label" , text : e || BI . i18nText ( "BI-Basic_Prompt" ) , textAlign : "left" , hgap : 20 , height : 50 } } , east : { el : { type : "bi.icon_button" , cls : "bi-message-close close-font" , handler : function ( ) { h ( ) } } , width : 60 } } } , height : 50 } , center : { el : { type : "bi.text" , cls : "bi-message-text" , tgap : 60 , hgap : 20 , lineHeight : 30 , whiteSpace : "normal" , text : f } } , south : { el : { type : "bi.absolute" , items : [ { el : { type : "bi.right_vertical_adapt" , hgap : 5 , items : i } , top : 0 , left : 20 , right : 20 , bottom : 0 } ] } , height : 60 } } , width : 400 , height : 300 } ] } ; a = BI . createWidget ( j ) } } } ( ) } ) , BI . GridView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . GridView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-grid-view" , overflowX : ! 0 , overflowY : ! 0 , overscanColumnCount : 0 , overscanRowCount : 0 , rowHeightGetter : BI . emptyFn , columnWidthGetter : BI . emptyFn , scrollLeft : 0 , scrollTop : 0 , items : [ ] } ) } , _init : function ( ) { BI . GridView . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . renderedCells = [ ] , this . renderedKeys = [ ] , this . renderRange = { } , 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 . GridView . 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 &&
outdent : 11 , removeformat : 12 , right : 13 , save : 24 , strikethrough : 15 , subscript : 16 , superscript : 17 , ul : 18 , underline : 19 , image : 20 , link : 21 , unlink : 22 , close : 23 , arrow : 25 } } ) , nicEditors = { nicPlugins : [ ] , editors : [ ] , registerPlugin : function ( a , b ) { this . nicPlugins . push ( { p : a , o : b } ) } , findEditor : function ( a ) { for ( var b = nicEditors . editors , c = 0 ; c < b . length ; c ++ ) if ( b [ c ] . instanceById ( a ) ) return b [ c ] . instanceById ( a ) } } , nicEditor = bkClass . extend ( { construct : function ( a ) { this . options = new nicEditorConfig , bkExtend ( this . options , a ) , this . nicInstances = new Array , this . loadedPlugins = new Array ; for ( var b = nicEditors . nicPlugins , c = 0 ; c < b . length ; c ++ ) this . loadedPlugins . push ( new b [ c ] . p ( this , b [ c ] . o ) ) ; nicEditors . editors . push ( this ) , bkLib . addEvent ( document . body , "mousedown" , this . selectCheck . closureListener ( this ) ) } , panelInstance : function ( a , b ) { a = this . checkReplace ( $BK ( a ) ) ; var c = new bkElement ( "DIV" ) . setStyle ( { width : ( parseInt ( a . getStyle ( "width" ) ) || a . clientWidth ) + "px" } ) . appendBefore ( a ) ; return this . setPanel ( c ) , this . addInstance ( a , b ) } , checkReplace : function ( a ) { var b = nicEditors . findEditor ( a ) ; return b && ( b . removeInstance ( a ) , b . removePanel ( ) ) , a } , addInstance : function ( a , b ) { if ( a = this . checkReplace ( $BK ( a ) ) , a . contentEditable || window . opera ) var c = new nicEditorInstance ( a , b , this ) ; else var c = new nicEditorIFrameInstance ( a , b , this ) ; return this . nicInstances . push ( c ) , this } , removeInstance : function ( a ) { a = $BK ( a ) ; for ( var b = this . nicInstances , c = 0 ; c < b . length ; c ++ ) b [ c ] . e == a && ( b [ c ] . remove ( ) , this . nicInstances . splice ( c , 1 ) ) } , removePanel : function ( a ) { this . nicPanel && ( this . nicPanel . remove ( ) , this . nicPanel = null ) } , instanceById : function ( a ) { a = $BK ( a ) ; for ( var b = this . nicInstances , c = 0 ; c < b . length ; c ++ ) if ( b [ c ] . e == a ) return b [ c ] } , setPanel : function ( a ) { return this . nicPanel = new nicEditorPanel ( $BK ( a ) , this . options , this ) , this . fireEvent ( "panel" , this . nicPanel ) , this } , nicCommand : function ( a , b ) { this . selectedInstance && this . selectedInstance . nicCommand ( a , b ) } , getIcon : function ( a , b ) { var c = this . options . iconList [ a ] , d = b . iconFiles ? b . iconFiles [ a ] : "" ; return { backgroundImage : "url('" + ( c ? this . options . iconsPath : d ) + "')" , backgroundPosition : ( c ? ( c - 1 ) * - 18 : 0 ) + "px 0px" } } , selectCheck : function ( a , b ) { do if ( b . className && b . className . indexOf ( "nicEdit" ) != - 1 ) return ! 1 ; while ( b = b . parentNode ) ; return this . fireEvent ( "blur" , this . selectedInstance , b ) , this . lastSelectedInstance = this . selectedInstance , this . selectedInstance = null , ! 1 } } ) ; nicEditor = BI . nicEditor = nicEditor . extend ( bkEvent ) ; var nicEditorInstance = bkClass . extend ( { isSelected : ! 1 , construct : function ( a , b , c ) { this . ne = c , this . elm = this . e = a , this . options = b || { } , newX = parseInt ( a . getStyle ( "width" ) ) || a . clientWidth , newY = parseInt ( a . getStyle ( "height" ) ) || a . clientHeight , this . initialHeight = newY - 8 ; var d = "textarea" == a . nodeName . toLowerCase ( ) ; if ( d || this . options . hasPanel ) { var e = bkLib . isMSIE && ! ( "undefined" != typeof document . body . style . maxHeight && "CSS1Compat" == document . compatMode ) , f = { width : newX + "px" , overflowY : "auto" , overflowX : "hidden" } ; f [ e ? "height" : "maxHeight" ] = this . ne . options . maxHeight ? this . ne . options . maxHeight + "px" : null , this . editorContain = new bkElement ( "DIV" ) . setStyle ( f ) . appendBefore ( a ) ; var g = new bkElement ( "DIV" ) . setStyle ( { width : newX - 8 + "px" , margin : "4px" , minHeight : newY - 8 + "px" , outline : "none" } ) . appendTo ( this . editorContain ) ; if ( a . setStyle ( { display : "none" } ) , g . innerHTML = a . innerHTML , d ) { g . setContent ( a . value ) , this . copyElm = a ; var h = a . parentTag ( "FORM" ) ; h && bkLib . addEvent ( h , "submit" , this . saveContent . closure ( this ) ) } g . setStyle ( e ? { height : newY - 8 + "px" } : { overflow : "hidden" } ) , this . elm = g } this . ne . addEvent ( "blur" , this . blur . closure ( this ) ) , this . init ( ) , this . blur ( ) } , init : function ( ) { this . elm . setAttribute ( "contentEditable" , "true" ) , "" == this . getContent ( ) && this . setContent ( "<br />" ) , this . instanceDoc = document . defaultView , this . elm . addEvent ( "mousedown" , this . selected . closureListener ( this ) ) . addEvent ( "keypress" , this . keyDown . closureListener ( this ) ) . addEvent ( "focus" , this . selected . closure ( this ) ) . addEvent ( "blur" , this . blur . closure ( this ) ) . addEvent ( "keyup" , this . selected . closure ( this ) ) , this . ne . fireEvent ( "add" , this ) } , remove : function ( ) { this . saveContent ( ) , ( this . copyElm || this . options . hasPanel ) && ( this . editorContain . remove ( ) , this . e . setStyle ( { display : "block" } ) , this . ne . removePanel ( ) ) , this . disable ( ) , this . ne . fireEvent ( "remove" , this ) } , disable
} ( jQuery ) , BI . TextButton = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . TextButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-button" , textAlign : "center" , whiteSpace : "nowrap" , forceCenter : ! 1 , textWidth : null , textHeight : null , hgap : 0 , lgap : 0 , rgap : 0 , text : "" , py : "" } ) } , _init : function ( ) { BI . TextButton . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : a . textAlign , whiteSpace : a . whiteSpace , textWidth : a . textWidth , textHeight : a . textHeight , forceCenter : a . forceCenter , width : a . width , height : a . height , hgap : a . hgap , lgap : a . lgap , rgap : a . rgap , text : a . text , value : a . value , py : a . py } ) } , doClick : function ( ) { BI . TextButton . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . TextButton . 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 ) } , setText : function ( a ) { BI . TextButton . superclass . setText . apply ( this , arguments ) , a = BI . isArray ( a ) ? a . join ( "," ) : a , this . text . setText ( a ) } , setStyle : function ( a ) { this . text . setStyle ( a ) } , setValue : function ( a ) { BI . TextButton . superclass . setValue . apply ( this , arguments ) , this . isReadOnly ( ) || ( a = BI . isArray ( a ) ? a . join ( "," ) : a , this . text . setValue ( a ) ) } } ) , BI . TextButton . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_button" , BI . TextButton ) , BI . BlankIconIconTextItem = BI . inherit ( BI . BasicButton , { _const : { commonWidth : 25 } , _defaultConfig : function ( ) { var a = BI . BlankIconIconTextItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-blank-icon-text-item" , logic : { dynamic : ! 1 } , iconCls1 : "close-ha-font" , iconCls2 : "close-ha-font" , blankWidth : 0 , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . BlankIconIconTextItem . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this . _const , c = BI . createWidget ( { type : "bi.layout" , width : a . blankWidth } ) ; 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 . icon1 = BI . createWidget ( { type : "bi.icon_button" , cls : a . iconCls1 , forceNotSelected : ! 0 , width : b . commonWidth } ) , this . icon2 = BI . createWidget ( { type : "bi.icon_button" , cls : a . iconCls2 , forceNotSelected : ! 0 , width : b . commonWidth } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , c , this . icon1 , this . icon2 , this . text ) } ) ) ) ) } , doClick : function ( ) { BI . BlankIconIconTextItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . BlankIconIconTextItem . EVENT _CHANGE , this . getValue ( ) , this ) } , setSelected : function ( a ) { BI . BlankIconIconTextItem . superclass . setSelected . apply ( this , arguments ) , this . icon1 . setSelected ( a ) , this . icon2 . setSelected ( a ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } } ) , BI . BlankIconIconTextItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.blank_icon_icon_text_item" , BI . BlankIconIconTextItem ) , BI . BlankIconTextIconItem = BI . inherit ( BI . BasicButton , { _const : { commonWidth : 25 } , _defaultConfig : function ( ) { var a = BI . BlankIconTextIconItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-blank-icon-text-icon-item" , logic : { dynamic : ! 1 } , iconCls1 : "close-ha-font" , iconCls2 : "close-ha-font" , blankWidth : 0 , iconHeight : null , iconWidth : nul
} ) , this . file . on ( BI . File . EVENT _ERROR , function ( ) { a . fireEvent ( BI . MultifileEditor . EVENT _ERROR , arguments ) } ) , this . file . on ( BI . File . EVENT _PROGRESS , function ( ) { a . fireEvent ( BI . MultifileEditor . EVENT _PROGRESS , arguments ) } ) , this . file . on ( BI . File . EVENT _UPLOADED , function ( ) { a . fireEvent ( BI . MultifileEditor . EVENT _UPLOADED , arguments ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.adaptive" , scrollable : ! 1 , items : [ this . file ] } , top : 0 , right : 0 , left : 0 , bottom : 0 } ] } ) } , select : function ( ) { this . file . select ( ) } , getValue : function ( ) { return this . file . getValue ( ) } , upload : function ( ) { this . file . upload ( ) } , reset : function ( ) { this . file . reset ( ) } } ) , BI . MultifileEditor . EVENT _CHANGE = "MultifileEditor.EVENT_CHANGE" , BI . MultifileEditor . EVENT _UPLOADSTART = "MultifileEditor.EVENT_UPLOADSTART" , BI . MultifileEditor . EVENT _ERROR = "MultifileEditor.EVENT_ERROR" , BI . MultifileEditor . EVENT _PROGRESS = "MultifileEditor.EVENT_PROGRESS" , BI . MultifileEditor . EVENT _UPLOADED = "MultifileEditor.EVENT_UPLOADED" , BI . shortcut ( "bi.multifile_editor" , BI . MultifileEditor ) , BI . TextAreaEditor = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return $ . extend ( BI . TextAreaEditor . superclass . _defaultConfig . apply ( ) , { baseCls : "bi-textarea-editor bi-card" , value : "" } ) } , _init : function ( ) { BI . TextAreaEditor . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; this . content = BI . createWidget ( { type : "bi.layout" , tagName : "textarea" , width : "100%" , height : "100%" , cls : "bi-textarea textarea-editor-content display-block" } ) , this . content . element . css ( { resize : "none" } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.adaptive" , items : [ this . content ] } , left : 0 , right : 3 , top : 0 , bottom : 5 } ] } ) , this . content . element . on ( "input propertychange" , function ( a ) { b . _checkWaterMark ( ) , b . fireEvent ( BI . TextAreaEditor . EVENT _CHANGE ) } ) , this . content . element . focus ( function ( ) { b . isValid ( ) && ( b . _focus ( ) , b . fireEvent ( BI . TextAreaEditor . EVENT _FOCUS ) ) , $ ( document ) . bind ( "mousedown." + b . getName ( ) , function ( a ) { BI . DOM . isExist ( b ) && ! b . element . _ _isMouseInBounds _ _ ( a ) && ( $ ( document ) . unbind ( "mousedown." + b . getName ( ) ) , b . content . element . blur ( ) ) } ) } ) , this . content . element . blur ( function ( ) { b . isValid ( ) && ( b . _blur ( ) , b . fireEvent ( BI . TextAreaEditor . EVENT _BLUR ) ) , $ ( document ) . unbind ( "mousedown." + b . getName ( ) ) } ) , BI . isKey ( a . value ) && b . setValue ( a . value ) , BI . isNotNull ( a . style ) && b . setValue ( a . style ) , this . _checkWaterMark ( ) } , _checkWaterMark : function ( ) { var a = this , b = this . options , c = this . getValue ( ) ; BI . isNotEmptyString ( c ) ? ( this . watermark && this . watermark . destroy ( ) , this . watermark = null ) : BI . isNotEmptyString ( b . watermark ) && ( this . watermark ? ( this . watermark . setText ( b . watermark ) , this . watermark . setValid ( ! b . invalid ) , this . watermark . setEnable ( ! b . disabled ) ) : ( this . watermark = BI . createWidget ( { type : "bi.text_button" , cls : "bi-water-mark" , textAlign : "left" , height : 30 , text : b . watermark , invalid : b . invalid , disabled : b . disabled } ) , this . watermark . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . focus ( ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . watermark , left : 0 , top : 0 , right : 0 } ] } ) ) ) } , _focus : function ( ) { this . content . element . addClass ( "textarea-editor-focus" ) , this . _checkWaterMark ( ) } , _blur : function ( ) { this . content . element . removeClass ( "textarea-editor-focus" ) , this . _checkWaterMark ( ) } , focus : function ( ) { this . _focus ( ) , this . content . element . focus ( ) } , blur : function ( ) { this . _blur ( ) , this . content . element . blur ( ) } , getValue : function ( ) { return this . content . element . val ( ) } , setValue : function ( a ) { this . content . element . val ( a ) , this . _checkWaterMark ( ) } , setStyle : function ( a ) { this . style = a , this . element . css ( a ) , this . content . element . css ( BI . extend ( { } , a , { color : a . color || BI . DOM . getContrastColor ( BI . DOM . isRGBColor ( a . backgroundColor ) ? BI . DOM . rgb2hex ( a . backgroundColor ) : a . backgroundColor ) } ) ) } , getStyle : function ( ) { return this . style } , _setValid : function ( a ) { BI . TextAreaEditor . superclass . _setValid . apply ( this , arguments ) } } ) , BI . TextAreaEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . TextAreaEditor . EVENT _BLUR = "EVENT_BLUR" , BI . TextAreaEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . shortcut ( "bi.textarea_editor" , BI . TextAreaEditor ) , BI . Icon = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Icon . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { tagName : "i" , baseCls : ( a . baseCls |
hgap : this . _const . hgap } ) } , setWidth : function ( a ) { this . element . width ( a ) } , setText : function ( a ) { this . text . setText ( a ) } } ) , BI . shortcut ( "bi.toast" , BI . Toast ) , BI . Tooltip = BI . inherit ( BI . Tip , { _const : { hgap : 10 } , _defaultConfig : function ( ) { return BI . extend ( BI . Tooltip . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-tooltip" , text : "" , level : "success" , stopEvent : ! 1 , stopPropagation : ! 1 , height : 20 } ) } , _init : function ( ) { BI . Tooltip . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . element . addClass ( "tooltip-" + a . level ) ; var b = function ( b ) { a . stopPropagation && b . stopPropagation ( ) , a . stopEvent && b . stopEvent ( ) } ; this . element . bind ( { click : b , mousedown : b , mouseup : b , mouseover : b , mouseenter : b , mouseleave : b , mousemove : b } ) ; var c = ( a . text + "" ) . split ( "\n" ) ; c . length > 1 ? BI . createWidget ( { type : "bi.vertical" , element : this , hgap : this . _const . hgap , items : BI . map ( c , function ( a , b ) { return { type : "bi.label" , textAlign : "left" , whiteSpace : "normal" , text : b , textHeight : 16 } } ) } ) : this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : "left" , whiteSpace : "normal" , text : a . text , textHeight : 20 , hgap : this . _const . hgap } ) } , setWidth : function ( a ) { this . element . width ( a - 2 * this . _const . hgap ) } , setText : function ( a ) { this . text && this . text . setText ( a ) } , setLevel : function ( a ) { this . element . removeClass ( "tooltip-success" ) . removeClass ( "tooltip-warning" ) , this . element . addClass ( "tooltip-" + a ) } } ) , BI . shortcut ( "bi.tooltip" , BI . Tooltip ) , BI . Trigger = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Trigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-trigger cursor-pointer" , height : 30 } ) } , _init : function ( ) { BI . Trigger . superclass . _init . apply ( this , arguments ) } , setKey : function ( ) { } , getKey : function ( ) { } } ) , function ( a , b ) { "function" == typeof define && define . amd ? define ( "eve" , function ( ) { return b ( ) } ) : "object" == typeof exports ? module . exports = b ( ) : a . eve = b ( ) } ( this , function ( ) { var a , b , c = "0.4.2" , d = "hasOwnProperty" , e = /[\.\/]/ , f = "*" , g = function ( ) { } , h = function ( a , b ) { return a - b } , i = { n : { } } , j = function ( c , d ) { c = String ( c ) ; var e , f = b , g = Array . prototype . slice . call ( arguments , 2 ) , i = j . listeners ( c ) , k = 0 , l = [ ] , m = { } , n = [ ] , o = a ; a = c , b = 0 ; for ( var p = 0 , q = i . length ; p < q ; p ++ ) "zIndex" in i [ p ] && ( l . push ( i [ p ] . zIndex ) , i [ p ] . zIndex < 0 && ( m [ i [ p ] . zIndex ] = i [ p ] ) ) ; for ( l . sort ( h ) ; l [ k ] < 0 ; ) if ( e = m [ l [ k ++ ] ] , n . push ( e . apply ( d , g ) ) , b ) return b = f , n ; for ( p = 0 ; p < q ; p ++ ) if ( e = i [ p ] , "zIndex" in e ) if ( e . zIndex == l [ k ] ) { if ( n . push ( e . apply ( d , g ) ) , b ) break ; do if ( k ++ , e = m [ l [ k ] ] , e && n . push ( e . apply ( d , g ) ) , b ) break ; while ( e ) } else m [ e . zIndex ] = e ; else if ( n . push ( e . apply ( d , g ) ) , b ) break ; return b = f , a = o , n . length ? n : null } ; return j . _events = i , j . listeners = function ( a ) { var b , c , d , g , h , j , k , l , m = a . split ( e ) , n = i , o = [ n ] , p = [ ] ; for ( g = 0 , h = m . length ; g < h ; g ++ ) { for ( l = [ ] , j = 0 , k = o . length ; j < k ; j ++ ) for ( n = o [ j ] . n , c = [ n [ m [ g ] ] , n [ f ] ] , d = 2 ; d -- ; ) b = c [ d ] , b && ( l . push ( b ) , p = p . concat ( b . f || [ ] ) ) ; o = l } return p } , j . on = function ( a , b ) { if ( a = String ( a ) , "function" != typeof b ) return function ( ) { } ; for ( var c = a . split ( e ) , d = i , f = 0 , h = c . length ; f < h ; f ++ ) d = d . n , d = d . hasOwnProperty ( c [ f ] ) && d [ c [ f ] ] || ( d [ c [ f ] ] = { n : { } } ) ; for ( d . f = d . f || [ ] , f = 0 , h = d . f . length ; f < h ; f ++ ) if ( d . f [ f ] == b ) return g ; return d . f . push ( b ) , function ( a ) { + a == + a && ( b . zIndex = + a ) } } , j . f = function ( a ) { var b = [ ] . slice . call ( arguments , 1 ) ; return function ( ) { j . apply ( null , [ a , null ] . concat ( b ) . concat ( [ ] . slice . call ( arguments , 0 ) ) ) } } , j . stop = function ( ) { b = 1 } , j . nt = function ( b ) { return b ? new RegExp ( "(?:\\.|\\/|^)" + b + "(?:\\.|\\/|$)" ) . test ( a ) : a } , j . nts = function ( ) { return a . split ( e ) } , j . off = j . unbind = function ( a , b ) { if ( ! a ) return void ( j . _events = i = { n : { } } ) ; var c , g , h , k , l , m , n , o = a . split ( e ) , p = [ i ] ; for ( k = 0 , l = o . length ; k < l ; k ++ ) for ( m = 0 ; m < p . length ; m += h . length - 2 ) { if ( h = [ m , 1 ] , c = p [ m ] . n , o [ k ] != f ) c [ o [ k ] ] && h . push ( c [ o [ k ] ] ) ; else for ( g in c ) c [ d ] ( g ) && h . push ( c [ g ] ) ; p . splice . apply ( p , h ) } for ( k = 0 , l = p . length ; k < l ; k ++ ) for ( c = p [ k ] ; c . n ; ) { if ( b ) { if ( c . f ) { for ( m = 0 , n = c . f . length ; m < n ; m ++ ) if ( c . f [ m ] == b ) { c . f . splice ( m , 1 ) ; break } ! c . f . length && delete c . f } for ( g in c . n ) if ( c . n [ d ] ( g ) && c . n [ g ] . f ) { var q = c . n [ g ] . f ; for ( m = 0 , n = q . length ; m < n ; m ++ ) if ( q [ m ] == b ) { q . splice ( m , 1 ) ; break } ! q . length && delete c . n [ g ] . f } } else { delete c . f ; for ( g in c . n ) c . n [ d ] ( g ) && c . n [ g ] . f && delete c . n [ g ] . f } c = c . n } } , j . once = function ( a , b ) { var c = function ( ) { return j . unbind ( a , c ) , b . apply ( this , arguments ) } ; return j . on ( a , c ) } , j . version = c , j . toString = function ( ) { return
} , 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 . parseTransformString ( c ) , e = 0 , f = 0 , g = 0 , h = 1 , i = 1 , j = a . _ , k = new n ; if ( j . transform = d || [ ] , d ) for ( var l = 0 , m = d . length ; l < m ; l ++ ) { var o , p , q , r , s , t = d [ l ] , u = t . length , v = H ( t [ 0 ] ) . toLowerCase ( ) , w = t [ 0 ] != v , x = w ? k . invert ( ) : 0 ; "t" == v && 3 == u ? w ? ( o = x . x ( 0 , 0 ) , p = x . y ( 0 , 0 ) , q = x . x ( t [ 1 ] , t [ 2 ] ) , r = x . y ( t [ 1 ] , t [ 2 ] ) , k . translate ( q - o , r - p ) ) : k . translate ( t [ 1 ] , t [ 2 ] ) : "r" == v ? 2 == u ? ( s = s || a . getBBox ( 1 ) , k . rotate ( t [ 1 ] , s . x + s . width / 2 , s . y + s . height / 2 ) , e += t [ 1 ] ) : 4 == u && ( w ? ( q = x . x ( t [ 2 ] , t [ 3 ] ) , r = x . y ( t [ 2 ] , t [ 3 ] ) , k . rotate ( t [ 1 ] , q , r ) ) : k . rotate ( t [ 1 ] , t [ 2 ] , t [ 3 ] ) , e += t [ 1 ] ) : "s" == v ? 2 == u || 3 == u ? ( s = s || a . getBBox ( 1 ) , k . scale ( t [ 1 ] , t [ u - 1 ] , s . x + s . width / 2 , s . y + s . height / 2 ) , h *= t [ 1 ] , i *= t [ u - 1 ] ) : 5 == u && ( w ? ( q = x . x ( t [ 3 ] , t [ 4 ] ) , r = x . y ( t [ 3 ] , t [ 4 ] ) , k . scale ( t [ 1 ] , t [ 2 ] , q , r ) ) : k . scale ( t [ 1 ] , t [ 2 ] , t [ 3 ] , t [ 4 ] ) , h *= t [ 1 ] , i *= t [ 2 ] ) : "m" == v && 7 == u && k . add ( t [ 1 ] , t [ 2 ] , t [ 3 ] , t [ 4 ] , t [ 5 ] , t [ 6 ] ) , j . dirtyT = 1 , a . matrix = k } a . matrix = k , j . sx = h , j . sy = i , j . deg = e , j . dx = f = k . e , j . dy = g = k . f , 1 == h && 1 == i && ! e && j . bbox ? ( j . bbox . x += + f , j . bbox . y += + g ) : j . dirtyT = 1 } ) , Ma = function ( a ) { var b = a [ 0 ] ; switch ( b . toLowerCase ( ) ) { case "t" : return [ b , 0 , 0 ] ; case "m" : return [ b , 1 , 0 , 0 , 1 , 0 , 0 ] ; case "r" : return 4 == a . length ? [ b , 0 , a [ 2 ] , a [ 3 ] ] : [ b , 0 ] ; case "s" : return 5 == a . length ? [ b , 1 , 1 , a [ 3 ] , a [ 4 ] ] : 3 == a . length ? [ b , 1 , 1 ] : [ b , 1 ] } } , Na = b . _equaliseTransform = function ( a , c ) { c = H ( c ) . replace ( /\.{3}|\u2026/g , a ) , a = b . parseTransformString ( a ) || [ ] , c = b . parseTransformString ( c ) || [ ] ; for ( var d , e , f , g , h = N ( a . length , c . length ) , i = [ ] , j = [ ] , k = 0 ; k < h ; k ++ ) { if ( f = a [ k ] || Ma ( c [ k ] ) , g = c [ k ] || Ma ( f ) , f [ 0 ] != g [ 0 ] || "r" == f [ 0 ] . toLowerCase ( ) && ( f [ 2 ] != g [ 2 ] || f [ 3 ] != g [ 3 ] ) || "s" == f [ 0 ] . toLowerCase ( ) && ( f [ 3 ] != g [ 3 ] || f [ 4 ] != g [ 4 ] ) ) return ; for ( i [ k ] = [ ] , j [ k ] = [ ] , d = 0 , e = N ( f . length , g . length ) ; d < e ; d ++ ) d in f && ( i [ k ] [ d ] = f [ d ] ) , d in g && ( j [ k ] [ d ] = g [ d ] ) } return { from : i , to : j } } ; b . _getContainer = function ( a , c , d , e ) { var f ; if ( f = null != e || b . is ( a , "object" ) ? a : z . doc . getElementById ( a ) , null != f ) return f . tagName ? null == c ? { container : f , width : f . style . pixelWidth || f . offsetWidth , height : f . style . pixelHeight || f . offsetHeight } : { container : f , width : c , height : d } : { container : 1 , x : a , y : c , width : d , height : e } } , b . pathToRelative = Ba , b . _engine = { } , b . path2curve = Ia , b . matrix = function ( a , b , c , d , e , f ) { return new n ( a , b , c , d , e , f ) } , function ( a ) { function c ( a ) { return a [ 0 ] * a [ 0 ] + a [ 1 ] * a [ 1 ] } function d ( a ) { var b = M . sqrt ( c ( a ) ) ; a [ 0 ] && ( a [ 0 ] /= b ) , a [ 1 ] && ( a [ 1 ] /= b ) } a . add = function ( a , b , c , d , e , f ) { var g , h , i , j , k = [ [ ] , [ ] , [ ] ] , l = [ [ this . a , this . c , this . e ] , [ this . b , this . d , this . f ] , [ 0 , 0 , 1 ] ] , m = [ [ a , c , e ] , [ b , d , f ] , [ 0 , 0 , 1 ] ] ; for ( a && a instanceof n && ( m = [ [ a . a , a . c , a . e ] , [ a . b , a . d , a . f ] , [ 0 , 0 , 1 ] ] ) , g = 0 ; g < 3 ; g ++ ) for ( h = 0 ; h < 3 ; h ++ ) { for ( j = 0 , i = 0 ; i < 3 ; i ++ ) j += l [ g ] [ i ] * m [ i ] [ h ] ; k [ g ] [ h ] = j } this . a = k [ 0 ] [ 0 ] , this . b = k [ 1 ] [ 0 ] , this . c = k [ 0 ] [ 1 ] , this . d = k [ 1 ] [ 1 ] , this . e = k [ 0 ] [ 2 ] , this . f = k [ 1 ] [ 2 ] } , a . invert = function ( ) { var a = this , b = a . a * a . d - a . b * a . c ; return new n ( a . d / b , - a . b / b , - a . c / b , a . a / b , ( a . c * a . f - a . d * a . e ) / b , ( a . b * a . e - a . a * a . f ) / b ) } , a . clone = function ( ) { return new n ( this . a , this . b , this . c , this . d , this . e , this . f ) } , a . translate = function ( a , b ) { this . add ( 1 , 0 , 0 , 1 , a , b ) } , a . scale = function ( a , b , c , d ) { null == b && ( b = a ) , ( c || d ) && this . add ( 1 , 0 , 0 , 1 , c , d ) , this . add ( a , 0 , 0 , b , 0 , 0 ) , ( c || d ) && this . add ( 1 , 0 , 0 , 1 , - c , - d ) } , a . rotate = function ( a , c , d ) { a = b . rad ( a ) , c = c || 0 , d = d || 0 ; var e = + M . cos ( a ) . toFixed ( 9 ) , f = + M . sin ( a ) . toFixed ( 9 ) ; this . add ( e , f , - f , e , c , d ) , this . add ( 1 , 0 , 0 , 1 , - c , - d ) } , a . x = function ( a , b ) { return a * this . a + b * this . c + this . e } , a . y = function ( a , b ) { return a * this . b + b * this . d + this . f } , a . get = function ( a ) { return + this [ H . fromCharCode ( 97 + a ) ] . toFixed ( 4 ) } , a . toString = function ( ) { return b . svg ? "matrix(" + [ this . get ( 0 ) , this . get ( 1 ) , this . get ( 2 ) , this . get ( 3 ) , this . get ( 4 ) , this . get ( 5 ) ] . join ( ) + ")" : [ this . get ( 0 ) , this . get ( 2 ) , this . get ( 1 ) , this . get ( 3 ) , 0 , 0 ] . join ( ) } , a . toFilter = function ( ) { return "progid:DXImageTransform.Microsoft.Matrix(M11=" + this . get ( 0 ) + ", M12=" + this . get ( 2 ) + ", M21=" + this . get ( 1 ) + ", M22=" + this . get ( 3 ) + ", Dx=" + this . get ( 4 ) + " , D
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 . offsetHeight ; q ( b , { width : a , height : c } ) , q ( G , { width : a , height : c } ) } ) } ( B ) , d . paper . defs . appendChild ( B ) , q ( i , { fill : "url(#" + B . id + ")" } ) , d . pattern = B , d . pattern && s ( d ) ; break } var H = a . getRGB ( p ) ; if ( H . error ) { if ( ( "circle" == d . type || "ellipse" == d . type || "r" != c ( p ) . charAt ( ) ) && r ( d , p ) ) { if ( "opacity" in k || "fill-opacity" in k ) { var I = a . _g . doc . getElementById ( i . getAttribute ( "fill" ) . replace ( /^url\(#|\)$/g , l ) ) ; if ( I ) { var J = I . getElementsByTagName ( "stop" ) ; q ( J [ J . length - 1 ] , { "stop-opacity" : ( "opacity" in k ? k . opacity : 1 ) * ( "fill-opacity" in k ? k [ "fill-opacity" ] : 1 ) } ) } } k . gradient = p , k . fill = "none" ; break } } else delete f . gradient , delete k . gradient , ! a . is ( k . opacity , "undefined" ) && a . is ( f . opacity , "undefined" ) && q ( i , { opacity : k . opacity } ) , ! a . is ( k [ "fill-opacity" ] , "undefined" ) && a . is ( f [ "fill-opacity" ] , "undefined" ) && q ( i , { "fill-opacity" : k [ "fill-opacity" ] } ) ; H [ b ] ( "opacity" ) && q ( i , { "fill-opacity" : H . opacity > 1 ? H . opacity / 100 : H . opacity } ) ; case "stroke" : H = a . getRGB ( p ) , i . setAttribute ( o , H . hex ) , "stroke" == o && H [ b ] ( "opacity" ) && q ( i , { "stroke-opacity" : H . opacity > 1 ? H . opacity / 100 : H . opacity } ) , "stroke" == o && d . _ . arrows && ( "startString" in d . _ . arrows && t ( d , d . _ . arrows . startString ) , "endString" in d . _ . arrows && t ( d , d . _ . arrows . endString , 1 ) ) ; break ; case "gradient" : ( "circle" == d . type || "ellipse" == d . type || "r" != c ( p ) . charAt ( ) ) && r ( d , p ) ; break ; case "opacity" : k . gradient && ! k [ b ] ( "stroke-opacity" ) && q ( i , { "stroke-opacity" : p > 1 ? p / 100 : p } ) ; case "fill-opacity" : if ( k . gradient ) { I = a . _g . doc . getElementById ( i . getAttribute ( "fill" ) . replace ( /^url\(#|\)$/g , l ) ) , I && ( J = I . getElementsByTagName ( "stop" ) , q ( J [ J . length - 1 ] , { "stop-opacity" : p } ) ) ; break } default : "font-size" == o && ( p = e ( p , 10 ) + "px" ) ; var K = o . replace ( /(\-.)/g , function ( a ) { return a . substring ( 1 ) . toUpperCase ( ) } ) ; i . style [ K ] = p , d . _ . dirty = 1 , i . setAttribute ( o , p ) } } y ( d , f ) , i . style . visibility = m } , x = 1.2 , y = function ( d , f ) { if ( "text" == d . type && ( f [ b ] ( "text" ) || f [ b ] ( "font" ) || f [ b ] ( "font-size" ) || f [ b ] ( "x" ) || f [ b ] ( "y" ) ) ) { var g = d . attrs , h = d . node , i = h . firstChild ? e ( a . _g . doc . defaultView . getComputedStyle ( h . firstChild , l ) . getPropertyValue ( "font-size" ) , 10 ) : 10 ; if ( f [ b ] ( "text" ) ) { for ( g . text = f . text ; h . firstChild ; ) h . removeChild ( h . firstChild ) ; for ( var j , k = c ( f . text ) . split ( "\n" ) , m = [ ] , n = 0 , o = k . length ; n < o ; n ++ ) j = q ( "tspan" ) , n && q ( j , { dy : i * x , x : g . x } ) , j . appendChild ( a . _g . doc . createTextNode ( k [ n ] ) ) , h . appendChild ( j ) , m [ n ] = j } else for ( m = h . getElementsByTagName ( "tspan" ) , n = 0 , o = m . length ; n < o ; n ++ ) n ? q ( m [ n ] , { dy : i * x , x : g . x } ) : q ( m [ 0 ] , { dy : 0 } ) ; q ( h , { x : g . x , y : g . y } ) , d . _ . dirty = 1 ; var p = d . _getBBox ( ) , r = g . y - ( p . y + p . height / 2 ) ; r && a . is ( r , "finite" ) && q ( m [ 0 ] , { dy : r } ) } } , z = function ( a ) { return a . parentNode && "a" === a . parentNode . tagName . toLowerCase ( ) ? a . parentNode : a } , A = function ( b , c ) { this [ 0 ] = this . node = b , b . raphael = ! 0 , this . id = a . _oid ++ , b . raphaelid = this . id , this . matrix = a . matrix ( ) , this . realPath = null , this . paper = c , this . attrs = this . attrs || { } , this . _ = { transform : [ ] , sx : 1 , sy : 1 , deg : 0 , dx : 0 , dy : 0 , dirty : 1 } , ! c . bottom && ( c . bottom = this ) , this . prev = c . top , c . top && ( c . top . next = this ) , c . top = this , this . next = null } , B = a . el ; A . prototype = B , B . constructor = A , a . _engine . path = function ( a , b ) { var c = q ( "path" ) ; b . canvas && b . canvas . appendChild ( c ) ; var d = new A ( c , b ) ; return d . type = "path" , w ( d , { fill : "none" , stroke : "#000" , path : a } ) , d } , B . rotate = function ( a , b , e ) { if ( this . removed ) return this ; if ( a = c ( a ) . split ( j ) , a . length - 1 && ( b = d ( a [ 1 ] ) , e = d ( a [ 2 ] ) ) , a = d ( a [ 0 ] ) , null == e && ( b = e ) , null == b || null == e ) { var f = this . getBBox ( 1 ) ; b = f . x + f . width / 2 , e = f . y + f . height / 2 } return this . transform ( this . _ . transform . concat ( [ [ "r" , a , b , e ] ] ) ) , this } , B . scale = function ( a , b , e , f ) { if ( this . removed ) return this ; if ( a = c ( a ) . split ( j ) , a . length - 1 && ( b = d ( a [ 1 ] ) , e = d ( a [ 2 ] ) , f = d ( a [ 3 ] ) ) , a = d ( a [ 0 ] ) , null == b && ( b = a ) , null == f && ( e = f ) , null == e || null == f ) var g = this . getBBox ( 1 ) ; return e = null == e ? g . x + g . width / 2 : e , f =
} ) , { 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 . NativeTableScrollbar ) , BI . NativeTableHorizontalScrollbar = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . NativeTableHorizontalScrollbar . superclass . _defaultConfig . apply ( this , arguments ) , { attributes : { tabIndex : 0 } , contentSize : 0 , position : 0 , size : 0 } ) } , render : function ( ) { var a = this ; this . options ; this . element . height ( 36 ) ; var b = BI . throttle ( function ( ) { a . fireEvent ( BI . NativeTableScrollbar . EVENT _SCROLL , a . element . scrollLeft ( ) ) } , 150 , { leading : ! 1 } ) ; return this . element . scroll ( function ( ) { b ( ) } ) , { type : "bi.default" , scrollx : ! 0 , items : [ { type : "bi.layout" , height : 1 , ref : function ( b ) { a . inner = b } } ] } } , setContentSize : function ( a ) { this . options . contentSize = a } , setPosition : function ( a ) { this . options . position = a } , setSize : function ( a ) { this . setWidth ( a ) , this . options . size = a } , _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 . scrollLeft ( a . position ) } catch ( b ) { } this . inner . element . width ( a . contentSize ) } , populate : function ( ) { this . _populate ( ) } } ) , BI . NativeTableHorizontalScrollbar . EVENT _SCROLL = "EVENT_SCROLL" , BI . shortcut ( "bi.native_table_horizontal_scrollbar" , BI . NativeTableHorizontalScrollbar ) , BI . TableCell = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . TableCell . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-table-cell" , textAlign : "left" , text : "" } ) } , _init : function ( ) { BI . TableCell . superclass . _init . apply ( this , arguments ) , BI . createWidget ( { type : "bi.label" , element : this , whiteSpace : "nowrap" , textAlign : this . options . textAlign , height : this . options . height , text : this . options . text , value : this . options . value , lgap : 5 } ) } } ) , BI . shortcut ( "bi.table_cell" , BI . TableCell ) , BI . CollectionTableCell = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . CollectionTableCell . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-collection-table-cell bi-border-right bi-border-bottom" , width : 0 , height : 0 , _left : 0 , _top : 0 , cell : { } } ) } , _init : function ( ) { BI . CollectionTableCell . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . cell = BI . createWidget ( BI . extend ( { type : "bi.label" } , a . cell , { cls : ( a . cell . cls || "" ) + " collection-table-cell-wrapper" , width : a . width - ( 0 === a . _left ? 1 : 0 ) - 1 , height : a . height - ( 0 === a . _top ? 1 : 0 ) - 1 } ) ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . cell , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) } , setWidth : function ( a ) { BI . CollectionTableCell . superclass . setWidth . apply ( this , arguments ) ; var b = this . options ; this . cell . setWidth ( b . width - ( 0 === b . _left ? 1 : 0 ) - 1 ) } , setHeight : function ( a ) { BI . CollectionTableCell . superclass . setHeight . apply ( this , arguments ) ; var b = this . options ; this . cell . setHeight ( b . height - ( 0 === b . _top ? 1 : 0 ) - 1 ) } } ) , BI . shortcut ( "bi.collection_table_cell" , BI . CollectionTableCell ) , BI . CollectionTable = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . CollectionTable . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-collection-table" , headerRowSize : 25 , rowSize : 25 , columnSize : [ ] , isNeedFreeze : ! 1 , freezeCols : [ ] , isNeedMerge : ! 1 , mergeCols : [ ] , mergeRule : BI . emptyFn , header : [ ] , items : [ ] , regionColumnSize : [ ] } ) } , render : function ( ) { var a = this , b = this . options ; this . _width = 0 , this . _height = 0 , this . _scrollBarSize = BI . DOM . getScrollWidth ( ) , this . topLeftCollection = BI . createWidget ( { type : "bi.collection_view" , cellSizeAndPositionGetter : function ( b ) { return a . topLeftItems [ b ] } } ) , this . topLeftCollection . on ( BI . CollectionView . EVENT _SCROLL , function ( b ) { a . bottomLeftCollection . setScrollLeft ( b . scrollLeft ) , a . _populateScrollbar ( ) , a . fireEvent ( BI . Table . EVE
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 . setScrollTop ( d ) , this . topRightGrid . setScrollLeft ( e ) , this . bottomRightGrid . setScrollLeft ( e ) , c . _populateScrollbar ( ) , this . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } , _populateTable : function ( ) { function a ( a , b , c , d , e ) { var f = c / d , g = b / e ; ( g * ( 120 / d ) >= 60 || f * ( 120 / e ) >= 60 ) && ( a . attr ( "overscanRowCount" , 100 ) , a . attr ( "overscanColumnCount" , 100 ) ) } var b = this . options , c = this . getRegionSize ( ) , d = 0 , e = 0 , f = 0 , g = [ ] , h = this . _getFreezeColLength ( ) ; BI . each ( b . columnSize , function ( a , c ) { b . isNeedFreeze === ! 0 && b . freezeCols . contains ( a ) ? d += c : e += c , f += c , 0 === a ? g [ a ] = c : g [ a ] = g [ a - 1 ] + c } ) ; var i = c , j = this . _getFreezeHeaderHeight ( ) , k = this . _width - c , l = this . _getFreezeHeaderHeight ( ) , m = c , n = this . _height - j , o = this . _width - c , p = this . _height - l ; this . topLeft . setWidth ( i ) , this . topLeft . setHeight ( j ) , this . topRight . setWidth ( k ) , this . topRight . setHeight ( l ) , this . bottomLeft . setWidth ( m ) , this . bottomLeft . setHeight ( n ) , this . bottomRight . setWidth ( o ) , this . bottomRight . setHeight ( p ) , this . topLeftGrid . setWidth ( i ) , this . topLeftGrid . setHeight ( j ) , this . topRightGrid . setWidth ( k ) , this . topRightGrid . setHeight ( l ) , this . bottomLeftGrid . setWidth ( m ) , this . bottomLeftGrid . setHeight ( n ) , this . bottomRightGrid . setWidth ( o ) , this . bottomRightGrid . setHeight ( p ) , this . topLeftGrid . setEstimatedColumnSize ( h > 0 ? d / h : 0 ) , this . topLeftGrid . setEstimatedRowSize ( b . headerRowSize ) , this . topRightGrid . setEstimatedColumnSize ( b . columnSize . length - h > 0 ? e / ( b . columnSize . length - h ) : 0 ) , this . topRightGrid . setEstimatedRowSize ( b . headerRowSize ) , this . bottomLeftGrid . setEstimatedColumnSize ( h > 0 ? d / h : 0 ) , this . bottomLeftGrid . setEstimatedRowSize ( b . rowSize ) , this . bottomRightGrid . setEstimatedColumnSize ( b . columnSize . length - h > 0 ? e / ( b . columnSize . length - h ) : 0 ) , this . bottomRightGrid . setEstimatedRowSize ( b . rowSize ) ; var q = this . contextLayout . attr ( "items" ) ; q [ 1 ] . left = c , q [ 2 ] . top = this . _getFreezeHeaderHeight ( ) , q [ 3 ] . left = c , q [ 3 ] . top = this . _getFreezeHeaderHeight ( ) , this . contextLayout . attr ( "items" , q ) , this . contextLayout . resize ( ) ; var r = [ ] , s = [ ] , t = [ ] , u = [ ] ; BI . each ( b . header , function ( a , b ) { r [ a ] = [ ] , s [ a ] = [ ] , BI . each ( b , function ( b , c ) { var d = { type : "bi.grid_table_cell" , cell : c } ; b < h ? r [ a ] . push ( d ) : s [ a ] . push ( d ) } ) } ) , BI . each ( this . _getActualItems ( ) , function ( a , b ) { t [ a ] = [ ] , u [ a ] = [ ] , BI . each ( b , function ( b , c ) { var d = { type : "bi.grid_table_cell" , cell : c } ; b < h ? t [ a ] . push ( d ) : u [ a ] . push ( d ) } ) } ) , this . topLeftGrid . attr ( { overscanColumnCount : 0 , overscanRowCount : 0 } ) , this . topRightGrid . attr ( { overscanColumnCount : 0 , overscanRowCount : 0 } ) , this . bottomLeftGrid . attr ( { overscanColumnCount : 0 , overscanRowCount : 0 } ) , this . bottomRightGrid . attr ( { overscanColumnCount : 0 , overscanRowCount : 0 } ) , h > 0 && ( a ( this . topLeftGrid , i , j , b . headerRowSize , d / h ) , a ( this . bottomLeftGrid , m , n , b . rowSize , d / h ) ) , b . columnSize . length - h > 0 && ( a ( this . topRight , k , l , b . headerRowSize , e / ( b . columnSize . length - h ) ) , a ( this . bottomRightGrid , o , p , b . rowSize , e / ( b . columnSize . length - h ) ) ) , this . topLeftGrid . populate ( r ) , this . topRightGrid . populate ( s ) , this . bottomLeftGrid . populate ( t ) , this . bottomRightGrid . populate ( u ) } } ) , BI . shortcut ( "bi.quick_grid_table" , BI . QuickGridTable ) , BI . GridTableScrollbar = BI . inherit ( BI . Widget , { _const : { FACE _MARGIN : 4 , FACE _MARGIN _2 : 8 , FACE _SIZE _MIN : 30 , KEYBOARD _SCROLL _AMOUNT : 40 } , _defaultConfig : function ( ) { return BI . extend ( BI . GridTableScrollbar . superclass . _defaultConfig . apply ( this , argum
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 ) : 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" , "" ) } ) } } ) } ; i ( g ) , i ( h ) ; var j = 0 , k = 0 ; BI . each ( a , function ( a , b ) { c . freezeCols . contains ( a ) ? j += b : k += b } ) , j = this . _calculateWidth ( j ) , k = this . _calculateWidth ( k ) , BI . isNumeric ( j ) && ( j = BI . parseFloat ( j ) + c . freezeCols . length ) , BI . isNumeric ( k ) && ( k = BI . parseFloat ( k ) + a . length - c . freezeCols . length ) , this . topLeftContainer . element . width ( d ? k : j ) , this . topRightContainer . element . width ( d ? j : k ) , this . scrollTopLeft . element [ 0 ] . scrollLeft = this . scrollBottomLeft . element [ 0 ] . scrollLeft , this . scrollTopRight . element [ 0 ] . scrollLeft = this . scrollBottomRight . element [ 0 ] . scrollLeft } else { BI . each ( this . colgroupTds , function ( c , d ) { var e = 0 | d . attr ( "width" ) ; if ( e !== a [ c ] ) { var f = b . _calculateWidth ( a [ c ] ) ; d . attr ( "width" , f ) . css ( "width" , f ) , BI . each ( b . headerTds , function ( d , e ) { if ( e [ c ] ) if ( e [ c ] . _ _mergeCols . length > 1 ) { var g = 0 ; BI . each ( a , function ( a , b ) { e [ c ] . _ _mergeCols . contains ( a ) && ( g += b ) } ) , g = b . _calculateWidth ( g ) , g > 1 && ( g += e [ c ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( g ) ? c == BI . size ( e ) - 1 ? e [ c ] . element . attr ( "width" , g - 1 ) . css ( "width" , g - 1 ) : e [ c ] . element . attr ( "width" , g ) . css ( "width" , g ) : e [ c ] . attr ( "width" , "" ) . css ( "width" , "" ) } else c == BI . size ( e ) - 1 ? e [ c ] . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : e [ c ] . attr ( "width" , f ) . css ( "width" , f ) } ) , BI . each ( b . headerItems , function ( d , e ) { if ( e [ c ] ) if ( b . headerTds [ d ] [ c ] . _ _mergeCols . length > 1 ) { var g = 0 ; BI . each ( a , function ( a , e ) { b . headerTds [ d ] [ c ] . _ _mergeCols . contains ( a ) && ( g += e ) } ) , g = b . _calculateWidth ( g ) , g > 1 && ( g += b . headerTds [ d ] [ c ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( g ) ? c == BI . size ( e ) - 1 ? e [ c ] . element . attr ( "width" , g - 1 ) . css ( "width" , g - 1 ) : e [ c ] . element . attr ( "width" , g ) . css ( "width" , g ) : e [ c ] . element . attr ( "width" , "" ) . css ( "width" , "" ) } else BI . isNumeric ( f ) ? c == BI . size ( e ) - 1 ? e [ c ] . element . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : e [ c ] . element . attr ( "width" , f ) . css ( "width" , f ) : e [ c ] . element . attr ( "width" , "" ) . css ( "width" , "" ) } ) } } ) ; var l = this . _calculateWidth ( BI . sum ( a ) ) ; l > 1.05 && ( l += a . length ) , this . tableContainer . element . width ( l ) } } , setRegionColumnSize : function ( a ) { var b = this . options ; b . regionColumnSize = a , 0 === b . freezeCols . length ? b . isNeedFreeze ? ( this . partitions . attr ( "columnSize" , this . _isRightFreeze ( ) ? [ "fill" , 0 ] : [ 0 , "fill" ] ) , this . partitions . resize ( ) ) : this . tableContainer . element . width ( a [ 0 ] ) : b . freezeCols . length > 0 && b . freezeCols . length < b . columnSize . length ? b . isNeedFreeze ? ( this . partitions . attr ( "columnSize" , a ) , this . partitions . resize ( ) ) : this . tableContainer . element . width ( a [ 0 ] ) : b . isNeedFre
! 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 ) { return $ ( a ) . parent ( "li" ) . get ( 0 ) || $ ( a ) . parentsUntil ( "li" ) . parent ( ) . get ( 0 ) } , isChildOrSelf : function ( a , b ) { return $ ( a ) . closest ( "#" + b ) . length > 0 } , uCanDo : function ( a , b ) { return ! 0 } } , view = { addNodes : function ( a , b , c , d ) { if ( ! a . data . keep . leaf || ! b || b . isParent ) if ( tools . isArray ( c ) || ( c = [ c ] ) , a . data . simpleData . enable && ( c = data . transformTozTreeFormat ( a , c ) ) , b ) { var e = $$ ( b , consts . id . SWITCH , a ) , f = $$ ( b , consts . id . ICON , a ) , g = $$ ( b , consts . id . UL , a ) ; b . open || ( view . replaceSwitchClass ( b , e , consts . folder . CLOSE ) , view . replaceIcoClass ( b , f , consts . folder . CLOSE ) , b . open = ! 1 , g . css ( { display : "none" } ) ) , data . addNodesData ( a , b , c ) , view . createNodes ( a , b . level + 1 , c , b ) , d || view . expandCollapseParentNode ( a , b , ! 0 ) } else data . addNodesData ( a , data . getRoot ( a ) , c ) , view . createNodes ( a , 0 , c , null ) } , appendNodes : function ( a , b , c , d , e , f ) { if ( ! c ) return [ ] ; for ( var g = [ ] , h = a . data . key . children , i = 0 , j = c . length ; i < j ; i ++ ) { var k = c [ i ] ; if ( e ) { var l = d ? d : data . getRoot ( a ) , m = l [ h ] , n = m . length == c . length && 0 == i , o = i == c . length - 1 ; data . initNode ( a , b , k , d , n , o , f ) , data . addNodeCache ( a , k ) } var p = [ ] ; k [ h ] && k [ h ] . length > 0 && ( p = view . appendNodes ( a , b + 1 , k [ h ] , k , e , f && k . open ) ) , f && ( view . makeDOMNodeMainBefore ( g , a , k ) , view . makeDOMNodeLine ( g , a , k ) , data . getBeforeA ( a , k , g ) , view . makeDOMNodeNameBefore ( g , a , k ) , data . getInnerBeforeA ( a , k , g ) , view . makeDOMNodeIcon ( g , a , k ) , data . getInnerAfterA ( a , k , g ) , view . makeDOMNodeNameAfter ( g , a , k ) , data . getAfterA ( a , k , g ) , k . isParent && k . open && view . makeUlHtml ( a , k , g , p . join ( "" ) ) , view . makeDOMNodeMainAfter ( g , a , k ) , data . addCreatedNode ( a , k ) ) } return g } , appendParentULDom : function ( a , b ) { var c = [ ] , d = $$ ( b , a ) ; ! d . get ( 0 ) && b . parentTId && ( view . appendParentULDom ( a , b . getParentNode ( ) ) , d = $$ ( b , a ) ) ; var e = $$ ( b , consts . id . UL , a ) ; e . get ( 0 ) && e . remove ( ) ; var f = a . data . key . children , g = view . appendNodes ( a , b . level + 1 , b [ f ] , b , ! 1 , ! 0 ) ; view . makeUlHtml ( a , b , c , g . join ( "" ) ) , d . append ( c . join ( "" ) ) } , asyncNode : function ( setting , node , isSilent , callback ) { var i , l ; if ( node && ! node . isParent ) return tools . apply ( callback ) , ! 1 ; if ( node && node . isAjaxing ) return ! 1 ; if ( 0 == tools . apply ( setting . callback . beforeAsync , [ setting . treeId , node ] , ! 0 ) ) return tools . apply ( callback ) , ! 1 ; if ( node ) { node . isAjaxing = ! 0 ; var icoObj = $$ ( node , consts . id . ICON , setting ) ; icoObj . attr ( { style : "" , "class" : consts . className . BUTTON + " " + consts . className . ICO _LOADING } ) } var tmpParam = { } ; for ( i = 0 , l = setting . async . autoParam . length ; node && i < l ; i ++ ) { var pKey = setting . async . autoParam [ i ] . split ( "=" ) , spKey = pKey ; pKey . length > 1 && ( spKey = pKey [ 1 ] , pKey = pKey [ 0 ] ) , tmpParam [ spKey ] = node [ pKey ] } if ( tools . isArray ( setting . async . otherParam ) ) for ( i = 0 , l = setting . async . otherParam . length ; i < l ; i += 2 ) tmpParam [ setting . async . otherParam [ i ] ] = setting . async . otherParam [ i + 1 ] ; else for ( var p in setting . async . otherParam ) tmpParam [ p ] = setting . async . otherParam [ p ] ; var _tmpV = data . getRoot ( setting ) . _ver ; return $ . ajax ( { contentType : setting . async . contentType , cache : ! 1 , type : setting . async . type , url : too
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 . IconButton , { _defaultConfig : function ( ) { var a = BI . TriggerIconButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-trigger-icon-button" , extraCls : "pull-down-font" } ) } , _init : function ( ) { BI . TriggerIconButton . superclass . _init . apply ( this , arguments ) } , 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 : 25 , logic : { dynamic : ! 1 } } ) } , _init : function ( ) { BI . MultiSelectItem . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.checkbox" } ) , this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : b . height , height : b . height , hgap : b . hgap , rgap : b . rgap , text : b . text , keyword : b . keyword , value : b . value , py : b . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && a . setSelected ( a . isSelected ( ) ) } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( b . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , { type : "bi.center_adapt" , items : [ this . checkbox ] , width : 36 } , this . text ) } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . MultiSelectItem . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isSelected ( ) ) , this . isValid ( ) && this . fireEvent ( BI . MultiSelectItem . EVENT _CHANGE , this . getValue ( ) , this ) } , setSelected : function ( a ) { BI . MultiSelectItem . superclass . setSelected . apply ( this , arguments ) , this . checkbox . setSelected ( a ) } } ) , BI . MultiSelectItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_item" , BI . MultiSelectItem ) , BI . SingleSelectIconTextItem = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectIconTextItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-single-select-icon-text-item bi-list-item-active" , iconClass : "" , hgap : 10 , height : 25 } ) } , _init : function ( ) { BI . SingleSelectIconTextItem . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . text = BI . createWidget ( { type : "bi.icon_text_item" , element : this , cls : b . iconClass , once : b . once , selected : b . selected , height : b . height , iconHeight : b . iconHeight , iconWidth : b . iconWidth , text : b . text , keyword : b . keyword , value : b . value , py : b . py } ) , this . text . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , isSelected : function ( ) { return this . text . isSelected ( ) } , setSelected : function ( a ) { this . text . setSelected ( a ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . SingleSelectIconTextItem . superclass . doClick . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.single_select_icon_text_item" , BI . SingleSelectIconTextItem ) , BI . SingleSelectItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-single-select-item bi-list-item-active" , hgap : 10 , height : 25 , textAlign : "left" } ) } , _init : function ( ) { BI . SingleSelectItem . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . text = BI . createWidget ( { type : "bi.label" , element : this , text
var e = { } ; Date . checkVoid ( 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 = ( new Date ) . 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 : 23 , 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 : 25 } ) ) , { 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 , ! ! Date . checkVoid ( 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 , ! ! Date . checkVoid ( 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 = ( new Date ) . getFullYear ( ) ; return a - ( ( a - b + 3 ) % BI . YearCalendar . INTERVAL + 12 ) % BI . YearCalendar . INTERVAL } , getEndYear : function ( a ) { return BI . YearCalendar . getStartYear ( a ) + BI . YearCalendar . INTERVAL } , getPageByYear : function ( a ) { var b = ( new Date ) . 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 : function ( ) { return BI . extend ( BI . ComplexCanvas . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-complex-canvas" } ) } , _init : function ( ) { BI . ComplexCanvas . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . canvas = BI . createWidget ( { type : "bi.canvas" , element : this , width : a . width , height : a . height } ) } , branch : function ( a , b , c , d , e , f ) { var g = this , h = [ ] . slice . call ( arguments ) ; if ( h . length <= 5 ) return this . canvas . line . apply ( this . canvas , arguments ) ; var i ; BI . isOdd ( h . length ) && ( i = BI . last ( h ) , h = BI . initial ( h ) ) , h = [ ] . slice . call ( h , 2 ) ; var j = BI . filter ( h , function ( a ) { return a % 2 === 0 } ) , k = BI . filter ( h , function ( a ) { return a % 2 !== 0 } ) ; i || ( i = { } ) ; var l = i . offset || 20 ; if ( b > d && b > f || b < d && b < f ) { if ( b > d && b > f ) var m = Math . max . apply ( this , k ) + l ; else var m = Math . min . apply ( this , k ) - l ; var n = Math . min . apply ( this , j ) , o = BI . indexOf ( j , n ) , p = Math . max . apply ( this , j ) , q = BI . indexOf ( j , p ) ; return this . canvas . line ( n , k [ o ] , n , m , p , m , p , k [ q ] , i ) , BI . each ( j , function ( a , b ) { a !== q && a !== o && g . canvas . line ( b , k [ a ] , b , m , i ) } ) , void this . canvas . line ( a , m , a , b , i ) } if ( a > c && a > e || a < c && a < e ) { if ( a > c && a > e ) var r = Math . max . apply ( this , j ) + l ; else var r = Math . min . apply ( this , j ) - l ; var s = Math . min . apply ( this , k ) , t = BI . indexOf ( k , s ) , u = Math . max . apply ( this , k ) , v = BI . indexOf ( k , u ) ; return this . canvas . line ( j [ t ] , s , r , s , r , u , j [ v ] , u , i ) , BI . each ( k , function ( a , b ) { a !== t && a !== v && g . canvas . line ( j [ a ] , b , r , b , i ) } ) , void this . canvas . line ( r , b , a , b , i ) } } , stroke : function ( a ) { this . canvas . stroke ( a ) } } ) , BI . shortcut ( "bi.complex_canvas" , BI . ComplexCanvas ) , BI . ArrowTreeGroupNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . ArrowTreeGroupNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-arrow-tree-group-node" , iconWidth : 13 , iconHeight : 13 } ) } , _init : function ( ) { BI . ArrowTreeGroupNodeCheckbox . superclass . _init . apply ( this , arguments ) } , setSelected : function ( a ) { BI . ArrowTreeGroupNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , a ? this . element . removeClass ( "column-next-page-h-font" ) . addClass ( " column -
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 : 3 , bottom : 3 } ] } ) , this . options . value && this . setValue ( this . options . value ) } , setValue : function ( a ) { BI . ColorChooserTrigger . superclass . setValue . apply ( this , arguments ) , "" === a ? this . colorContainer . element . css ( "background-color" , "" ) . removeClass ( "trans-color-background" ) . addClass ( "auto-color-background" ) : "transparent" === a ? this . colorContainer . element . css ( "background-color" , "" ) . removeClass ( "auto-color-background" ) . addClass ( "trans-color-background" ) : this . colorContainer . element . css ( { "background-color" : a } ) . removeClass ( "auto-color-background" ) . removeClass ( "trans-color-background" ) } } ) , BI . ColorChooserTrigger . EVENT _CHANGE = "ColorChooserTrigger.EVENT_CHANGE" , BI . shortcut ( "bi.color_chooser_trigger" , BI . ColorChooserTrigger ) , BI . ColorPickerButton = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . ColorPickerButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-color-picker-button bi-background bi-border-top bi-border-left" } ) } , _init : function ( ) { BI . ColorPickerButton . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; if ( b . value ) { this . element . css ( "background-color" , b . value ) ; var c = this . getName ( ) ; this . element . hover ( function ( ) { a . _createMask ( ) , a . isEnabled ( ) && BI . Maskers . show ( c ) } , function ( ) { a . isSelected ( ) || BI . Maskers . hide ( c ) } ) } } , _createMask : function ( ) { var a = this . options , b = this . getName ( ) ; if ( this . isEnabled ( ) && ! BI . Maskers . has ( b ) ) { var c = BI . Maskers . make ( b , this , { offset : { left : - 1 , top : - 1 , right : - 1 , bottom : - 1 } } ) ; c . element . addClass ( "color-picker-button-mask" ) . css ( "background-color" , a . value ) } } , setSelected : function ( a ) { BI . ColorPickerButton . superclass . setSelected . apply ( this , arguments ) , a && this . _createMask ( ) , BI . Maskers [ a ? "show" : "hide" ] ( this . getName ( ) ) } } ) , BI . ColorPickerButton . EVENT _CHANGE = "ColorPickerButton.EVENT_CHANGE" , BI . shortcut ( "bi.color_picker_button" , BI . ColorPickerButton ) , BI . ColorPicker = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . ColorPicker . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-color-picker" , items : null } ) } , _items : [ [ { value : "#ffffff" } , { value : "#f2f2f2" } , { value : "#e5e5e5" } , { value : "#d9d9d9" } , { value : "#cccccc" } , { value : "#bfbfbf" } , { value : "#b2b2b2" } , { value : "#a6a6a6" } , { value : "#999999" } , { value : "#8c8c8c" } , { value : "#808080" } , { value : "#737373" } , { value : "#666666" } , { value : "#4d4d4d" } , { value : "#333333" } , { value : "#000000" } ] , [ { value : "#d8b5a6" } , { value : "#ff9e9a" } , { value : "#ffc17d" } , { value : "#f5e56b" } , { value : "#d8e698" } , { value : "#e0ebaf" } , { value : "#c3d825" } , { value : "#bce2e8" } , { value : "#85d3cd" } , { value : "#bce2e8" } , { value : "#a0d8ef" } , { value : "#89c3eb" } , { value : "#bbc8e6" } , { value : "#bbbcde" } , { value : "#d6b4cc" } , { value : "#fbc0d3" } ] , [ { value : "#bb9581" } , { value : "#f37d79" } , { value : "#fba74f" } , { value : "#ffdb4f" } , { value : "#c7dc68" } , { value : "#b0ca71" } , { value : "#99ab4e" } , { value : "#84b9cb" } , { value : "#00a3af" } , { value : "#2ca9e1" } , { value : "#0095d9" } , { value : "#4c6cb3" } , { value : "#8491c3" } , { value : "#a59aca" } , { value : "#cc7eb1" } , { value : "#e89bb4" } ] , [ { value : "#9d775f" } , { value : "#dd4b4b" } , { value : "#ef8b07" } , { value : "#fcc800" } , { value : "#aacf53" } , { value : "#82ae46" } , { value : "#69821b" } , { value : "#59b9c6" } , { value : "#2a83a2" } , { value : "#007bbb" } , { value : "#19448e" } , { value : "#274a78" } , { value : "#4a488e" } , { value : "#7058a3" } , { value : "#884898" } , { value : "#d47596" } ] ] , _init : function ( ) { BI . ColorPicker . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . colors = BI . createWidget ( { type : "bi.button_group" , element : this , items : BI . createItems ( b . items || this . _items , { type : "bi.color_picker_button" , once : ! 1 } ) , layouts : [ { type : "bi.grid" } ] } ) , this . colors . on ( BI . ButtonGroup . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . ColorPicker . EVENT _CHANGE , arguments ) } ) } , populate : function ( a ) { var b = [ ] . slice . call ( arguments ) ; b [ 0 ] = BI . createItems ( a , { type : "bi.color_picker_button" , once : ! 1 } ) , this . colors . populate . apply ( this . colors , b ) } , setValue : function ( a ) { this . colors . setValue ( a ) } , getValue : function ( ) { return this . c
} , getValue : function ( ) { return this . textIconCheckCombo . getValue ( ) } , populate : function ( a ) { this . options . items = a , this . textIconCheckCombo . populate ( a ) } } ) , BI . TextValueCheckCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_value_check_combo" , BI . TextValueCheckCombo ) , BI . SmallTextValueCheckCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SmallTextValueCheckCombo . superclass . _defaultConfig . apply ( this , arguments ) , { width : 100 , height : 24 , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , text : "" } ) } , _init : function ( ) { BI . SmallTextValueCheckCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.small_select_text_trigger" , items : b . items , height : b . height , text : b . text } ) , this . popup = BI . createWidget ( { type : "bi.text_value_check_combo_popup" , chooseType : b . chooseType , items : b . items } ) , this . popup . on ( BI . TextValueCheckComboPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . SmallTextIconCheckCombo . hideView ( ) , a . fireEvent ( BI . SmallTextValueCheckCombo . EVENT _CHANGE ) } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . SmallTextIconCheckCombo = BI . createWidget ( { type : "bi.combo" , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup , maxHeight : 300 } } ) } , setValue : function ( a ) { this . SmallTextIconCheckCombo . setValue ( a ) } , getValue : function ( ) { return this . SmallTextIconCheckCombo . getValue ( ) } , populate : function ( a ) { this . options . items = a , this . SmallTextIconCheckCombo . populate ( a ) } } ) , BI . SmallTextValueCheckCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.small_text_value_check_combo" , BI . SmallTextValueCheckCombo ) , BI . TextValueCheckComboPopup = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . TextValueCheckComboPopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-text-icon-popup" , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE } ) } , _init : function ( ) { BI . TextValueCheckComboPopup . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; this . popup = BI . createWidget ( { type : "bi.button_group" , items : this . _formatItems ( a . items ) , chooseType : a . chooseType , layouts : [ { type : "bi.vertical" } ] } ) , 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 . TextValueCheckComboPopup . EVENT _CHANGE , c , d ) } ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . popup ] } ) } , _formatItems : function ( a ) { return BI . map ( a , function ( a , b ) { return BI . extend ( { type : "bi.icon_text_item" , cls : "item-check-font bi-list-item" , height : 30 } , b ) } ) } , populate : function ( a ) { BI . TextValueCheckComboPopup . superclass . populate . apply ( this , arguments ) , this . popup . populate ( this . _formatItems ( a ) ) } , getValue : function ( ) { return this . popup . getValue ( ) } , setValue : function ( a ) { this . popup . setValue ( a ) } } ) , BI . TextValueCheckComboPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_value_check_combo_popup" , BI . TextValueCheckComboPopup ) , BI . TextValueCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . TextValueCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseClass : "bi-text-value-combo" , height : 30 , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , text : "" , el : { } } ) } , _init : function ( ) { BI . TextValueCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( b . el , { type : "bi.select_text_trigger" , items : b . items , height : b . height , text : b . text } ) , this . popup = BI . createWidget ( { type : "bi.text_value_combo_popup" , chooseType : b . chooseType , items : b . items } ) , this . popup . on ( BI . TextValueComboPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . textIconCombo . hideView ( ) , a . fireEvent ( BI . TextValueCombo . 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 : 300 } } ) } , setValue : function ( a ) { this . textIconCombo . setValue ( a ) } , getValue : function ( ) { return this . textIconCombo . getValue ( ) } , populate : function ( a ) { this . options . items = a , this . textIconCombo . populate ( a ) } } ) , BI . TextValueCombo . EVENT _CHANGE = " EVENT _CHAN
this . editor . invisible ( ) , this . text . visible ( ) } , setTitle : function ( a ) { this . text . setTitle ( a ) } , setWarningTitle : function ( a ) { this . text . setWarningTitle ( a ) } , focus : function ( ) { this . _showInput ( ) , this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) , this . _showHint ( ) , this . _checkText ( ) } , doRedMark : function ( ) { "" === this . editor . getValue ( ) && BI . isKey ( this . options . watermark ) || this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { "" === this . editor . getValue ( ) && BI . isKey ( this . options . watermark ) || this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , isValid : function ( ) { return this . editor . isValid ( ) } , setErrorText : function ( a ) { this . editor . setErrorText ( a ) } , getErrorText : function ( ) { return this . editor . getErrorText ( ) } , isEditing : function ( ) { return this . editor . isEditing ( ) } , getLastValidValue : function ( ) { return this . editor . getLastValidValue ( ) } , setValue : function ( a ) { this . editor . setValue ( a ) , this . _checkText ( ) } , getValue : function ( ) { return this . editor . getValue ( ) } , getState : function ( ) { return this . text . getValue ( ) } , setState : function ( a ) { this . _showHint ( ) , this . text . setValue ( a ) } } ) , BI . SignEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . SignEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . SignEditor . EVENT _BLUR = "EVENT_BLUR" , BI . SignEditor . EVENT _CLICK = "EVENT_CLICK" , BI . SignEditor . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . SignEditor . EVENT _CLICK _LABEL = "EVENT_CLICK_LABEL" , BI . SignEditor . EVENT _START = "EVENT_START" , BI . SignEditor . EVENT _PAUSE = "EVENT_PAUSE" , BI . SignEditor . EVENT _STOP = "EVENT_STOP" , BI . SignEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . SignEditor . EVENT _VALID = "EVENT_VALID" , BI . SignEditor . EVENT _ERROR = "EVENT_ERROR" , BI . SignEditor . EVENT _ENTER = "EVENT_ENTER" , BI . SignEditor . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . SignEditor . EVENT _SPACE = "EVENT_SPACE" , BI . SignEditor . EVENT _EMPTY = "EVENT_EMPTY" , BI . shortcut ( "bi.sign_editor" , BI . SignEditor ) , BI . StateEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . StateEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-state-editor" , hgap : 4 , vgap : 2 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 0 , watermark : "" , errorText : "" , height : 30 } ) } , _init : function ( ) { BI . StateEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( { type : "bi.editor" , height : b . height , hgap : b . hgap , vgap : b . vgap , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , value : b . value , validationChecker : b . validationChecker , quitChecker : b . quitChecker , allowBlank : b . allowBlank , watermark : b . watermark , errorText : b . errorText } ) , this . text = BI . createWidget ( { type : "bi.text_button" , cls : "state-editor-infinite-text bi-disabled" , textAlign : "left" , height : b . height , text : BI . i18nText ( "BI-Basic_Unrestricted" ) , hgap : 4 , handler : function ( ) { a . _showInput ( ) , a . editor . focus ( ) , a . editor . setValue ( "" ) } } ) , this . text . on ( BI . TextButton . EVENT _CHANGE , function ( ) { BI . nextTick ( function ( ) { a . fireEvent ( BI . StateEditor . 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 . StateEditor . EVENT _FOCUS , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { a . fireEvent ( BI . StateEditor . EVENT _BLUR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { a . fireEvent ( BI . StateEditor . EVENT _CLICK , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . StateEditor . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . StateEditor . EVENT _KEY _DOWN , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { a . fireEvent ( BI . StateEditor . EVENT _VALID , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { a . _showHint ( ) , a . fireEvent ( BI . StateEditor . EVENT _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _START , function ( ) { a . fireEvent ( BI . StateEditor . EVENT _START , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _PAUSE , function ( ) { a . fireEvent
BI . ListLoader = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . ListLoader . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-list-loader" , isDefaultInit : ! 0 , el : { type : "bi.button_group" } , items : [ ] , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn , count : ! 1 , next : { } , hasNext : BI . emptyFn } ) } , _nextLoad : function ( ) { var a = this , b = this . options ; this . next . setLoading ( ) , b . itemsCreator . apply ( this , [ { times : ++ this . times } , function ( ) { a . next . setLoaded ( ) , a . addItems . apply ( a , arguments ) } ] ) } , _init : function ( ) { BI . ListLoader . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; b . itemsCreator === ! 1 && ( b . next = ! 1 ) , this . button _group = BI . createWidget ( b . el , { type : "bi.button_group" , element : this , chooseType : 0 , items : b . items , behaviors : { } , layouts : [ { type : "bi.vertical" } ] } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b === BI . Events . CLICK && a . fireEvent ( BI . ListLoader . EVENT _CHANGE , d ) } ) , b . next !== ! 1 && ( this . next = BI . createWidget ( BI . extend ( { type : "bi.loading_bar" } , b . next ) ) , this . next . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && a . _nextLoad ( ) } ) ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . next ] } ) , b . isDefaultInit && BI . isEmpty ( b . items ) && BI . nextTick ( BI . bind ( function ( ) { this . populate ( ) } , this ) ) , BI . isNotEmptyArray ( b . items ) && this . populate ( b . items ) } , hasNext : function ( ) { var a = this . options ; return BI . isNumber ( a . count ) ? this . count < a . count : ! ! a . hasNext . apply ( this , [ { times : this . times , count : this . count } ] ) } , addItems : function ( a ) { this . count += a . length , BI . isObject ( this . next ) && ( this . hasNext ( ) ? ( this . options . items = this . options . items . concat ( a ) , this . next . setLoaded ( ) ) : this . next . setEnd ( ) ) , this . button _group . addItems . apply ( this . button _group , arguments ) , this . next . element . appendTo ( this . element ) } , populate : function ( a ) { var b = this , c = this . options ; return 0 === arguments . length && BI . isFunction ( c . itemsCreator ) ? void c . itemsCreator . apply ( this , [ { times : 1 } , function ( ) { if ( 0 === arguments . length ) throw new Error ( "参数不能为空" ) ; b . populate . apply ( b , arguments ) , c . onLoaded ( ) } ] ) : ( this . options . items = a , this . times = 1 , this . count = 0 , this . count += a . length , BI . isObject ( this . next ) && ( this . hasNext ( ) ? this . next . setLoaded ( ) : this . next . invisible ( ) ) , BI . DOM . hang ( [ this . next ] ) , this . button _group . populate . apply ( this . button _group , arguments ) , void this . next . element . appendTo ( this . element ) ) } , empty : function ( ) { BI . DOM . hang ( [ this . next ] ) , this . button _group . empty ( ) , this . next . element . appendTo ( this . element ) , BI . each ( [ this . next ] , function ( a , b ) { b && b . setVisible ( ! 1 ) } ) } , setNotSelectedValue : function ( ) { this . button _group . setNotSelectedValue . apply ( this . button _group , arguments ) } , getNotSelectedValue : function ( ) { return this . button _group . getNotSelectedValue ( ) } , setValue : function ( ) { this . button _group . setValue . apply ( this . button _group , arguments ) } , getValue : function ( ) { return this . button _group . getValue . apply ( this . button _group , arguments ) } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , getAllLeaves : function ( ) { return this . button _group . getAllLeaves ( ) } , getSelectedButtons : function ( ) { return this . button _group . getSelectedButtons ( ) } , getNotSelectedButtons : function ( ) { return this . button _group . getNotSelectedButtons ( ) } , getIndexByValue : function ( a ) { return this . button _group . getIndexByValue ( a ) } , getNodeById : function ( a ) { return this . button _group . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . button _group . getNodeByValue ( a ) } } ) , BI . ListLoader . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.list_loader" , BI . ListLoader ) , BI . SortList = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SortList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-sort-list" , isDefaultInit : ! 0 , el : { type : "bi.button_group" } , items : [ ] , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn , count : ! 1 , next : { } , hasNext : BI . emptyFn } ) } , _init : function ( ) { BI . SortList . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . loader = BI . createWidget ( { type : "bi.list_loader" , element : this , isDefaultInit : b . isDefaultInit , el : b . el , items : this . _formatItems ( b . items ) , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { d ( a . _formatItems ( b ) ) } ) } , onLoaded : b . onLoaded , count : b . count , next : b . next , hasNext : b . hasNext
BI . DynamicSummaryTreeTable . superclass . setHeight . apply ( this , arguments ) , this . table . setHeight ( a ) } , setColumnSize : function ( a ) { this . options . columnSize = a } , getColumnSize : function ( ) { return this . options . columnSize } , 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 ) { switch ( BI . DynamicSummaryTreeTable . superclass . attr . apply ( this , arguments ) , a ) { case "minColumnSize" : case "maxColumnSize" : return } this . table . attr . apply ( this . table , arguments ) } , restore : function ( ) { this . table . restore ( ) } , populate : function ( a , b , c , d ) { var e = this . options ; a && ( 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 ( "minColumnSize" , f . minColumnSize ) , this . table . attr ( "maxColumnSize" , f . maxColumnSize ) , this . table . populate ( f . items , f . header ) } , destroy : function ( ) { this . table . destroy ( ) , BI . DynamicSummaryTreeTable . superclass . destroy . apply ( this , arguments ) } } ) , BI . extend ( BI . DynamicSummaryTreeTable , { formatHorizontalItems : function ( a , b , c , d ) { function e ( a , g ) { var h ; if ( BI . isArray ( g . children ) ) { if ( BI . each ( g . children , function ( b , c ) { var d ; a != - 1 ? ( d = a . slice ( ) , d . push ( g ) ) : d = [ ] , e ( d , c ) } ) , a != - 1 ? ( h = a . slice ( ) , h . push ( g ) ) : h = [ ] , ( a == - 1 || g . children . length > 1 ) && BI . isNotEmptyArray ( g . values ) ) { for ( var i = { text : BI . i18nText ( "BI-Summary_Values" ) , type : "bi.table_style_cell" , styleGetter : function ( ) { return d ( a === - 1 ) } } , j = h . length ; j < b ; j ++ ) h . push ( i ) ; if ( c || ( h = h . concat ( g . values ) ) , h . length > 0 ) if ( c ) for ( var k = 0 , l = g . values . length ; k < l ; k ++ ) f . push ( h ) ; else f . push ( h ) } } else { if ( a != - 1 ) { h = a . slice ( ) ; for ( var j = h . length ; j < b ; j ++ ) h . push ( g ) } else h = [ ] ; if ( ! c && BI . isArray ( g . values ) && ( h = h . concat ( g . values ) ) , c && BI . isArray ( g . values ) ) for ( var j = 0 , m = g . values . length ; j < m - 1 ; j ++ ) h . length > 0 && f . push ( h ) ; h . length > 0 && f . push ( h ) } } var f = [ ] ; return BI . each ( a , function ( a , b ) { e ( - 1 , b ) } ) , BI . each ( f , function ( a , c ) { for ( var d = BI . last ( c ) , e = c . length ; e < b ; e ++ ) c . push ( d ) } ) , f } , formatSummaryItems : function ( a , b , c , d ) { function e ( a ) { if ( BI . isArray ( a . children ) ) { if ( BI . each ( a . children , function ( a , b ) { e ( b ) } ) , BI . isNotEmptyArray ( a . values ) ) { if ( 1 === a . children . length ) for ( var b = 0 ; b < a . values . length ; b ++ ) f . push ( g + b + d ) ; g += a . values . length } } else a . values && a . values . length > 1 ? g += a . values . length : g ++ } var f = [ ] , g = 0 ; if ( BI . each ( c , function ( a , b ) { e ( b ) } ) , f . length > 0 ) { var h = [ ] , i = [ ] ; BI . each ( b , function ( a , b ) { var c = b . slice ( ) ; BI . removeAt ( c , f ) , h . push ( c ) } ) , BI . each ( a , function ( a , b ) { var c = b . slice ( ) ; BI . removeAt ( c , f ) , i . push ( c ) } ) , b = h , a = i } return { items : a , header : b , deletedCols : f } } } ) , BI . shortcut ( "bi.dynamic_summary_tree_table" , BI . DynamicSummaryTreeTable ) , BI . LayerTreeTableCell = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . LayerTreeTableCell . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-layer-tree-table-cell" , layer : 0 , text : "" } ) } , _init : function ( ) { BI . LayerTreeTableCell . superclass . _init . apply ( this , arguments ) ; var a = this . options ; BI . createWidget ( { type : "bi.label" , element : this . element , textAlign : "left" , whiteSpace : "nowrap" , height : a . height , text : a . text , value : a . value , lgap : 5 + 30 * a . layer , rgap : 5 } ) } } ) , BI . shortcut ( "bi.layer_tree_table_cell" , BI . LayerTreeTableCell ) , BI . LayerTreeTable = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . LayerTreeTable . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-layer-tree-table" , el : { type : "bi.resizable_table" } , isNeedResize : ! 1 , isResizeAdapt : ! 0 , isNeedFreeze : ! 1 , freezeCols : [ ] , isNeedMerge : ! 0 , mergeCols : [ ] , mergeRule : BI . emptyFn , columnSize : [ ] , minColumnSize : [ ] , maxColumnSize : [ ] , headerRowSize : 25 , rowSize : 25 , regionColumnSize : [ ] , rowHeaderCreator : null , headerCellStyleGetter : BI . emptyFn , summaryCellStyleGetter : BI . emptyFn , sequenceCellStyleGet
} } ) , BI . shortcut ( "bi.small_select_text_trigger" , BI . SmallSelectTextTrigger ) , BI . SmallTextTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 , triggerWidth : 20 } , _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 : b . triggerWidth } ) , BI . createWidget ( { element : this , type : "bi.htape" , items : [ { el : this . text } , { el : this . trigerButton , width : b . triggerWidth } ] } ) } , 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 : null , 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 . _getHeaderHeight ( ) - 2 } , { el : { type : "bi.layout" } , height : 2 } , { el : this . scrollContainer } ] } ) , this . start = this . options . startSequence , this . cache = { } , this . _nextState ( ) , this . _populate ( ) } , _getNextSequence : function ( a ) { function b ( a ) { c . cache [ a . text || a . value ] || ( c . cache [ a . text || a . value ] = e ) , e ++ } var c = this , d = this . start , e = this . start ; return BI . each ( a , function ( a , f ) { BI . isNotEmptyArray ( f . children ) && BI . each ( f . children , function ( a , f ) { 0 === a && c . cache [ f . text || f . value ] && ( d = e = c . cache [ f . text || f . value ] ) , b ( f ) } ) } ) , this . start = e , d } , _getStart : function ( a ) { var b = this , c = this . start ; return BI . some ( a , function ( a , d ) { if ( BI . isNotEmptyArray ( d . children ) ) return BI . some ( d . children , function ( a , d ) { if ( 0 === a && b . cache [ d . text || d . value ] ) return c = b . cache [ d . text || d . value ] , ! 0 } ) } ) , c } , _formatNumber : function ( a ) { function b ( a ) { var c = 0 ; return BI . isNotEmptyArray ( a . children ) ? ( BI . each ( a . children , function ( a , d ) { c += b ( d ) } ) , 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 * c . rowSize } ) , BI . isNotEmptyArray ( h . values ) && ( d . push ( { text : BI . i18nText ( "BI-Summary_Values" ) , start : f ++ , top : g , cnt : 1 , isSummary : ! 0 , height : c . rowSize } ) , g += c . rowSize ) ) } ) , d } , _layout : function ( ) { var a = this . options , b = this . _getHeaderHeight ( ) - 2 , c = this . layout . attr ( "items" ) ; a . isNeedFreeze === ! 1 ? ( c [ 0 ] . height = 0 , c [ 1 ] . height = 0 ) : a . isNeedFreeze === ! 0 && ( c [ 0 ] . height = b , c [ 1 ] . height = 2 ) , this . layout . attr ( "items" , c ) , this . layout . resize ( ) ; try { this . scrollContainer . element . scrollTop ( a . scrollTop ) } catch ( d ) { } } , _getHeaderHeight : function ( ) { var a = this . options ; return a . headerRowSize * ( a . crossHeader . length + ( a . header . length > 0 ? 1 : 0 ) ) } , _nextState : function ( ) { var a = this . options ; this . _getNextSequence ( a . items ) } , _prevState : function ( ) { var a , b = this . options ; BI . some ( b . items , function ( b , c ) { if ( BI . isNotEmptyArray ( c . children ) ) return BI . some ( c . children , function ( b , c ) { return a = c , ! 0 } ) } ) , a && BI . isNotEmptyObject ( this . cache ) ? this . start = this . cache [ a . text || a . value ] : this . start = 1 , this . _nextState ( ) } , _getMaxScrollTop : function ( a ) { var b = 0 ; return BI . each ( a , function ( a , c ) { b += c . cnt } ) , Math . max ( 0 , b * this . options . rowSize - ( this . options . height - this . _getHeaderHeight ( ) ) + BI . DOM . getScrollWidth ( ) ) } , _createHeader : function ( ) { var a = this . options
f . svg . path ( d ) . attr ( "stroke" , "#d4dadd" ) } } ) } ) ; break ; case BI . Direction . Left : BI . each ( a , function ( a , c ) { BI . each ( c , function ( a , c ) { if ( c . getChildrenLength ( ) > 0 && ! c . leaf ) { var d = "" , h = b [ c . id ] , i = h . y + e / 2 ; d += "M" + ( h . y + g . centerOffset ) + "," + h . x + "L" + i + "," + h . x ; var j = [ ] ; BI . each ( c . getChildren ( ) , function ( a , c ) { var e = j [ a ] = b [ c . id ] ; d += "M" + ( e . y + g . centerOffset ) + "," + e . x + "L" + i + "," + e . x } ) , j . length > 0 && ( d += "M" + i + "," + BI . first ( j ) . x + "L" + i + "," + BI . last ( j ) . x ) , f . svg . path ( d ) . attr ( "stroke" , "#d4dadd" ) } } ) } ) ; break ; case BI . Direction . Right : BI . each ( a , function ( a , c ) { BI . each ( c , function ( a , c ) { if ( c . getChildrenLength ( ) > 0 && ! c . leaf ) { var d = "" , h = b [ c . id ] , i = h . y - e / 2 ; d += "M" + ( h . y - g . centerOffset ) + "," + h . x + "L" + i + "," + h . x ; var j = [ ] ; BI . each ( c . getChildren ( ) , function ( a , c ) { var e = j [ a ] = b [ c . id ] ; d += "M" + ( e . y - g . centerOffset ) + "," + e . x + "L" + i + "," + e . x } ) , j . length > 0 && ( d += "M" + i + "," + BI . first ( j ) . x + "L" + i + "," + BI . last ( j ) . x ) , f . svg . path ( d ) . attr ( "stroke" , "#d4dadd" ) } } ) } ) } } , _createBranches : function ( a ) { var b = this . options ; b . direction !== BI . Direction . Bottom && b . direction !== BI . Direction . Right || ( a = a . reverse ( ) ) ; var c = this . _calculateXY ( a ) ; this . _stroke ( a , c ) } , _isNeedAdjust : function ( ) { var a = this . options ; return a . direction === BI . Direction . Top && a . align === BI . VerticalAlign . Bottom || a . direction === BI . Direction . Bottom && a . align === BI . VerticalAlign . Top || a . direction === BI . Direction . Left && a . align === BI . HorizontalAlign . Right || a . direction === BI . Direction . Right && a . align === BI . HorizontalAlign . Left } , setValue : function ( a ) { } , getValue : function ( ) { } , _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 ++ ) 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 ( a [ b ] ) ) : d . push ( a [ b ] ) ; return d } return [ a ] } , populate : function ( a ) { var b = this . options ; b . items = a || [ ] , this . empty ( ) , a = this . _transformToTreeFormat ( b . items ) , this . tree = new BI . Tree , this . tree . initTree ( a ) , this . svg = BI . createWidget ( { type : "bi.svg" } ) ; var c = this . _stratification ( ) ; if ( this . _isNeedAdjust ( ) ) { var d = this . _translate ( c ) ; d = this . _adjust ( d ) , this . _createBranches ( d ) } else { var d = this . _fill ( c ) ; this . _createBranches ( d ) } var e = BI . createWidget ( { type : "bi.layout" , width : this . _isVertical ( ) ? this . _calculateWidth ( ) : this . _calculateHeight ( ) , height : this . _isVertical ( ) ? this . _calculateHeight ( ) : this . _calculateWidth ( ) } ) ; BI . createWidget ( { type : "bi.absolute" , element : e , items : [ { el : this . svg , top : 0 , left : 0 , right : 0 , bottom : 0 } ] } ) , a = this . _isVertical ( ) ? [ { type : "bi.handstand_branch_tree" , expander : { direction : b . direction } , el : { layouts : [ { type : "bi.horizontal_adapt" , verticalAlign : b . align } ] } , items : a } ] : [ { type : "bi.branch_tree" , expander : { direction : b . direction } , el : { layouts : [ { type : "bi.vertical" } , { type : b . align === BI . HorizontalAlign . Left ? "bi.left" : "bi.right" } ] } , items : a } ] , BI . createWidget ( { type : "bi.adaptive" , element : e , items : a } ) , BI . createWidget ( { type : "bi.center_adapt" , scrollable : ! 0 , element : this , items : [ e ] } ) } } ) , BI . BranchRelation . EVENT _CHANGE = "BranchRelation.EVENT_CHANGE" , BI . shortcut ( "bi.branch_relation" , BI . BranchRelation ) , BI . MonthDateCombo = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . MonthDateCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-month-combo" , height : 25 } ) } , _init : function ( ) { BI . MonthDateCombo . superclass . _init . apply ( this , arguments ) ; var a = this ; this . options ; this . trigger = BI . createWidget ( { type : "bi.date_triangle_trigger" } ) , this . popup = BI . createWidget ( { type : "bi.month_popup" } ) , this . popup . on ( BI . YearPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , offsetStyle : "center" , element : this , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 85 , stopPropagation : ! 1 , el : this . popup } } ) , this . combo . on ( BI . Combo . EVENT _CHANGE , function ( ) { a . combo . hideView ( ) , a . fireEvent ( BI . MonthDateCombo . EVENT _CHANGE ) } ) } , setValue : function ( a ) { this . trigger . setValue ( a + 1 ) , this . popup . setValue ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } } ) , BI . MonthDateCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.month_date_combo" , BI . MonthDateCombo ) , BI . YearDateCombo = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . YearDateCombo . superclass . _de
width : b . triggerWidth } , { el : this . text } ] } ) } , _printTime : function ( a ) { return a < 10 ? "0" + a : a } , setValue : function ( a ) { var b , c = a ; if ( BI . isNull ( c ) ) c = new Date , b = c . print ( "%Y-%X-%d %H:%M:%S" ) ; else { var d = new Date ( c . year , c . month , 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 . DirectionPathChooser = BI . inherit ( BI . Widget , { _const : { lineColor : "#808080" , selectLineColor : "#009de3" } , _defaultConfig : function ( ) { return BI . extend ( BI . DirectionPathChooser . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-excel-table" , items : [ ] } ) } , _init : function ( ) { BI . DirectionPathChooser . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . pathChooser = BI . createWidget ( { type : "bi.path_chooser" , element : this , items : b . items } ) , this . pathChooser . on ( BI . PathChooser . EVENT _CHANGE , function ( b , c ) { a . _setValue ( b , c ) , a . fireEvent ( BI . DirectionPathChooser . EVENT _CHANGE ) } ) , this . _drawArrows ( ) } , _unselectAllArrows : function ( ) { var a = this . _const . lineColor ; BI . each ( this . arrows , function ( b , c ) { BI . each ( c , function ( b , c ) { BI . each ( c , function ( b , c ) { c . attr ( { fill : a , stroke : a } ) } ) } ) } ) } , _drawOneArrow : function ( a , b ) { var c = this . _const . lineColor , d = ( this . _const . selectLineColor , this . pathChooser . svg ) , e = "" ; switch ( b ) { case 0 : e = "M" + a . x + "," + a . y + "L" + ( a . x - 3 ) + "," + ( a . y + 5 ) + "L" + ( a . x + 3 ) + "," + ( a . y + 5 ) + "L" + a . x + "," + a . y ; break ; case 1 : e = "M" + a . x + "," + a . y + "L" + ( a . x - 5 ) + "," + ( a . y - 3 ) + "L" + ( a . x - 5 ) + "," + ( a . y + 3 ) + "L" + a . x + "," + a . y ; break ; case 2 : e = "M" + a . x + "," + a . y + "L" + ( a . x - 3 ) + "," + ( a . y - 5 ) + "L" + ( a . x + 3 ) + "," + ( a . y - 5 ) + "L" + a . x + "," + a . y ; break ; case 3 : e = "M" + a . x + "," + a . y + "L" + ( a . x + 5 ) + "," + ( a . y - 3 ) + "L" + ( a . x + 5 ) + "," + ( a . y + 3 ) + "L" + a . x + "," + a . y } return d . path ( e ) . attr ( { fill : c , stroke : c } ) } , _drawArrows : function ( ) { function a ( a , b ) { return b === - 1 ? 100 * ( a + 1 ) - 20 : 100 * a + 20 } function b ( a , b ) { var c = BI . find ( a , function ( c , d ) { if ( c > 0 && a [ c - 1 ] . x < b && a [ c ] . x > b ) return ! 0 } ) ; return c . y } var c = this , d = ( this . options , this . pathChooser . routes ) , e = this . pathChooser . pathes , f = this . pathChooser . store ; this . arrows = { } , BI . each ( d , function ( d , g ) { c . arrows [ d ] = [ ] , BI . each ( g , function ( g , h ) { c . arrows [ d ] [ g ] = [ ] ; var i = e [ d ] [ g ] ; BI . each ( i , function ( a , b ) { if ( a > 0 && a < i . length - 1 ) { var e ; b . y === i [ a - 1 ] . y ? i [ a + 1 ] . y != b . y && ( f [ h [ h . length - 2 ] ] . direction === - 1 ? a - 1 > 0 && ( e = c . _drawOneArrow ( i [ a - 1 ] , 3 ) ) : e = c . _drawOneArrow ( i [ a ] , 1 ) ) : b . x === i [ a - 1 ] . x && ( e = b . y > i [ a - 1 ] . y ? f [ BI . first ( h ) ] . direction === - 1 ? c . _drawOneArrow ( i [ a - 1 ] , 0 ) : c . _drawOneArrow ( b , 2 ) : f [ h [ h . length - 2 ] ] . direction === - 1 ? c . _drawOneArrow ( i [ a - 1 ] , 2 ) : c . _drawOneArrow ( b , 0 ) ) , e && c . arrows [ d ] [ g ] . push ( e ) } } ) , BI . each ( h , function ( e , j ) { if ( 0 !== e ) { var k , l = h [ e - 1 ] ; if ( f [ l ] . direction === - 1 ) { var m = c . pathChooser . getRegionIndexById ( l ) , n = a ( m , - 1 ) , o = b ( i , n ) ; k = c . _drawOneArrow ( { x : n , y : o } , 3 ) } else { var m = c . pathChooser . getRegionIndexById ( j ) , n = a ( m ) , o = b ( i , n ) ; k = c . _drawOneArrow ( { x : n , y : o } , 1 ) } k && c . arrows [ d ] [ g ] . push ( k ) } } ) } ) } ) } , _setValue : function ( a , b ) { var c = this , d = this . _const . lineColor , e = this . _const . selectLineColor , f = this . pathChooser . routes , g = this . pathChooser . start , h = [ a ] ; g . contains ( a ) && ( h = g ) , BI . each ( h , function ( a , b ) { BI . each ( c . arrows [ b ] , function ( a , b ) { BI . each ( b , function ( a , b ) { b . attr ( { fill : d , stroke : d } ) . toFront ( ) } ) } ) } ) , BI . each ( this . arrows [ a ] [ b ] , function ( a , b ) { b . attr ( { fill : e , stroke : e } ) . toFront ( ) } ) ; for ( var i = BI . last ( f [ a ] [ b ] ) ; i && f [ i ] && 1 === f [ i ] . length ; ) BI . each ( c . arrows [ i ] [ 0 ] , function ( a , b ) { b . attr ( { fill : e , stroke : e } ) . toFront ( ) } ) , i = BI . last ( f [ i ] [ 0 ] ) } , setValue : function ( a ) { this . pathChooser . setValue ( a ) , this . _unselectAllArrows ( ) ; var b = this . pathChooser . routes , c = BI . keys ( b ) , d = this , e = [ ] , f = [ ] ; BI . each ( a , function ( a , b ) { BI . contains ( c , b ) && f . length > 0 && ( f . push ( b ) , e . push ( f ) , f = [ ] ) , f . push ( b ) } ) , f . length > 0 && e . push ( f ) , BI . each ( e , function ( a , c ) { var e = c [ 0 ] , f = BI . findIndex ( b [ e ] , function ( a , b ) { if ( BI . isEqual ( c , b ) ) return ! 0 } ) ; f >= 0 && d . _setValue ( e , f ) } ) } , getValue : function ( ) { return this . pathChooser . getValue ( ) } , populate : function ( a ) { this . pathChooser . populate ( a ) , this . _drawArrows ( ) } } ) , BI . DirectionPathChooser . EVENT _CHANGE = "DirectionPathChooser.EVENT_CHANGE" , BI . shortcut ( "bi.direction_path_chooser" , BI . DirectionPathChooser ) , BI . DownListCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . DownListCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-down-list-combo" , i
} ) , this . arrangement . on ( BI . AdaptiveArrangement . EVENT _RESIZE , function ( ) { a . fireEvent ( BI . InteractiveArrangement . EVENT _RESIZE , arguments ) } ) , this . arrangement . on ( BI . AdaptiveArrangement . EVENT _ELEMENT _RESIZE , function ( b , c ) { var d = a . _getRegionClientPosition ( b ) ; a . draw ( { left : d . left , top : d . top } , c , b ) } ) , this . arrangement . on ( BI . AdaptiveArrangement . EVENT _ELEMENT _STOP _RESIZE , function ( b , c ) { a . stopDraw ( ) , a . setRegionSize ( b , c ) } ) , this . tags = [ ] } , _isEqual : function ( a , b ) { return this . arrangement . _isEqual ( a , b ) } , _getScrollOffset : function ( ) { return this . arrangement . _getScrollOffset ( ) } , _positionAt : function ( a , b ) { var c = this ; b = b || this . getAllRegions ( ) ; var d = [ ] , e = [ ] , f = [ ] , g = [ ] , h = [ ] , i = [ ] ; return BI . each ( b , function ( b , j ) { var k = c . _getRegionClientPosition ( j . id ) ; Math . abs ( k . left - a . left ) <= 3 && d . push ( j ) , Math . abs ( k . left + k . width / 2 - a . left ) <= 3 && e . push ( j ) , Math . abs ( k . left + k . width - a . left ) <= 3 && f . push ( j ) , Math . abs ( k . top - a . top ) <= 3 && g . push ( j ) , Math . abs ( k . top + k . height / 2 - a . top ) <= 3 && h . push ( j ) , Math . abs ( k . top + k . height - a . top ) <= 3 && i . push ( j ) } ) , { left : d , center : e , right : f , top : g , middle : h , bottom : i } } , _getRegionClientPosition : function ( a ) { var b = this . getRegionByName ( a ) , c = this . arrangement . _getScrollOffset ( ) ; return { top : b . top - c . top , left : b . left - c . left , width : b . width , height : b . height , id : b . id } } , _vAlign : function ( a , b ) { var c , d = this , e = this . _positionAt ( a , b ) , f = [ ] ; if ( e . left . length > 0 ) c = this . _getRegionClientPosition ( e . left [ 0 ] . id ) . left ; else if ( e . right . length > 0 ) { var g = this . _getRegionClientPosition ( e . right [ 0 ] . id ) ; c = g . left + g . width } var h = e . left . concat ( e . right ) ; return BI . each ( h , function ( b , e ) { var g = d . _getRegionClientPosition ( e . id ) ; if ( d . _isEqual ( g . left , c ) || d . _isEqual ( g . left + g . width , c ) ) { var h = { top : g . top + g . height / 2 , left : c } ; f . push ( { id : e . id , start : h , end : { left : c , top : a . top } } ) } } ) , f } , _leftAlign : function ( a , b , c ) { return this . _vAlign ( { left : a . left , top : a . top + b . height / 2 } , c ) } , _rightAlign : function ( a , b , c ) { return this . _vAlign ( { left : a . left + b . width , top : a . top + b . height / 2 } , c ) } , _hAlign : function ( a , b ) { var c , d = this , e = this . _positionAt ( a , b ) , f = [ ] ; if ( e . top . length > 0 ) { var g = this . _getRegionClientPosition ( e . top [ 0 ] . id ) ; c = g . top } else if ( e . bottom . length > 0 ) { var g = this . _getRegionClientPosition ( e . bottom [ 0 ] . id ) ; c = g . top + g . height } var h = e . top . concat ( e . bottom ) ; return BI . each ( h , function ( b , e ) { var g = d . _getRegionClientPosition ( e . id ) ; if ( d . _isEqual ( g . top , c ) || d . _isEqual ( g . top + g . height , c ) ) { var h = { top : c , left : g . left + g . width / 2 } ; f . push ( { id : g . id , start : h , end : { left : a . left , top : c } } ) } } ) , f } , _topAlign : function ( a , b , c ) { return this . _hAlign ( { left : a . left + b . width / 2 , top : a . top } , c ) } , _bottomAlign : function ( a , b , c ) { return this . _hAlign ( { left : a . left + b . width / 2 , top : a . top + b . height } , c ) } , _centerAlign : function ( a , b , c ) { var d , e = this , f = this . _positionAt ( { left : a . left + b . width / 2 , top : a . top + b . height / 2 } , c ) , g = [ ] ; if ( f . center . length > 0 ) { var h = this . _getRegionClientPosition ( f . center [ 0 ] . id ) ; d = h . left + h . width / 2 } return BI . each ( f . center , function ( c , f ) { var h = e . _getRegionClientPosition ( f . id ) ; if ( e . _isEqual ( h . left + h . width / 2 , d ) ) { var i = { top : h . top + h . height / 2 , left : h . left + h . width / 2 } ; g . push ( { id : h . id , start : i , end : { left : d , top : a . top + b . height / 2 } } ) } } ) , g } , _middleAlign : function ( a , b , c ) { var d , e = this , f = this . _positionAt ( { left : a . left + b . width / 2 , top : a . top + b . height / 2 } , c ) , g = [ ] ; if ( f . middle . length > 0 ) { var h = this . _getRegionClientPosition ( f . middle [ 0 ] . id ) ; d = h . top + h . height / 2 } return BI . each ( f . middle , function ( c , f ) { var h = e . _getRegionClientPosition ( f . id ) ; if ( e . _isEqual ( h . top + h . height / 2 , d ) ) { var i = { top : h . top + h . height / 2 , left : h . left + h . width / 2 } ; g . push ( { id : h . id , start : i , end : { left : a . left + b . width / 2 , top : d } } ) } } ) , g } , _drawOneTag : function ( a , b ) { var c = BI . createWidget ( { type : "bi.icon_button" , width : 13 , height : 13 , cls : "drag-tag-font interactive-arrangement-dragtag-icon" } ) , d = BI . createWidget ( { type : "bi.icon_button" , width : 13 , height : 13 , cls : "drag-tag-font interactive-arrangement-dragtag-icon" } ) ; if ( this . _isEqual ( a . left , b . left ) ) var e = BI . createWidget ( { type : "bi.layout" , cls : "interactive-arrangement-dragtag-line" , width : 1 , height : Math . abs ( a . top - b . top ) } ) ; else var e = BI . createWidget ( { type : "bi.layout" , cls : "interactive-arrangement-dragtag-line" , height : 1 , width : Math . abs ( a . left - b . left ) } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : c , left : a . left - 6 , top : a . top - 7 } , { el : d , left : b . left - 6 , top : b . top - 7 } , { el : e , left : Math
this . dateTab . setSelect ( BI . MultiDateCombo . MULTI _DATE _WEEK _CARD ) , this . cur = BI . MultiDateCombo . MULTI _DATE _WEEK _CARD , this . week . setValue ( { type : c , value : d } ) , e . _setInnerValue ( this . week ) ; break ; case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _PREV : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _AFTER : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _TODAY : this . dateTab . setSelect ( BI . MultiDateCombo . MULTI _DATE _DAY _CARD ) , this . cur = BI . MultiDateCombo . MULTI _DATE _DAY _CARD , this . day . setValue ( { type : c , value : d } ) , e . _setInnerValue ( this . day ) ; break ; default : if ( BI . isNull ( d ) || BI . isEmptyObject ( d ) ) { var b = new Date ; this . dateTab . setSelect ( BI . MultiDateCombo . MULTI _DATE _YMD _CARD ) , this . ymd . setValue ( { year : b . getFullYear ( ) , month : b . getMonth ( ) , day : b . getDate ( ) } ) , this . textButton . setValue ( BI . i18nText ( "BI-Multi_Date_Today" ) ) } else this . dateTab . setSelect ( BI . MultiDateCombo . MULTI _DATE _YMD _CARD ) , this . ymd . setValue ( d ) , this . textButton . setValue ( BI . i18nText ( "BI-Multi_Date_Today" ) ) ; this . textButton . setEnable ( ! 0 ) } } , getValue : function ( ) { var a = this . dateTab . getSelect ( ) ; switch ( a ) { case BI . MultiDateCombo . MULTI _DATE _YMD _CARD : return this . ymd . getValue ( ) ; case BI . MultiDateCombo . MULTI _DATE _YEAR _CARD : return this . year . getValue ( ) ; case BI . MultiDateCombo . MULTI _DATE _QUARTER _CARD : return this . quarter . getValue ( ) ; case BI . MultiDateCombo . MULTI _DATE _MONTH _CARD : return this . month . getValue ( ) ; case BI . MultiDateCombo . MULTI _DATE _WEEK _CARD : return this . week . getValue ( ) ; case BI . MultiDateCombo . MULTI _DATE _DAY _CARD : return this . day . getValue ( ) } } } ) , BI . MultiDatePopup . BUTTON _OK _EVENT _CHANGE = "BUTTON_OK_EVENT_CHANGE" , BI . MultiDatePopup . BUTTON _lABEL _EVENT _CHANGE = "BUTTON_lABEL_EVENT_CHANGE" , BI . MultiDatePopup . BUTTON _CLEAR _EVENT _CHANGE = "BUTTON_CLEAR_EVENT_CHANGE" , BI . MultiDatePopup . CALENDAR _EVENT _CHANGE = "CALENDAR_EVENT_CHANGE" , BI . shortcut ( "bi.multidate_popup" , BI . MultiDatePopup ) , BI . QuarterCard = BI . inherit ( BI . MultiDateCard , { _defaultConfig : function ( ) { return $ . extend ( BI . QuarterCard . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multidate-quartercard" } ) } , _init : function ( ) { BI . QuarterCard . superclass . _init . apply ( this , arguments ) } , dateConfig : function ( ) { return [ { selected : ! 0 , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _PREV , isEditorExist : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Quarter_Prev" ) } , { value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _AFTER , isEditorExist : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Quarter_Next" ) } , { value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _BEGIN , isEditorExist : ! 1 , text : BI . i18nText ( "BI-Multi_Date_Quarter_Begin" ) } , { value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _END , isEditorExist : ! 1 , text : BI . i18nText ( "BI-Multi_Date_Quarter_End" ) } ] } , defaultSelectedItem : function ( ) { return BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _PREV } } ) , BI . QuarterCard . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.quartercard" , BI . QuarterCard ) , BI . MultiDateSegment = BI . inherit ( BI . Single , { constants : { itemHeight : 24 , maxGap : 15 , minGap : 10 , textWidth : 30 , defaultEditorValue : "1" } , _defaultConfig : function ( ) { return $ . extend ( BI . MultiDateSegment . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multidate-segment" , text : "" , width : 130 , height : 30 , isEditorExist : ! 0 , selected : ! 1 , defaultEditorValue : "1" } ) } , _init : function ( ) { BI . MultiDateSegment . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . radio = BI . createWidget ( { type : "bi.radio" , selected : b . selected } ) , this . radio . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . textEditor = BI . createWidget ( { type : "bi.text_editor" , value : this . constants . defaultEditorValue , title : function ( ) { return a . textEditor . getValue ( ) } , cls : "bi-multidate-editor" , width : this . constants . textWidth , height : this . constants . itemHeight } ) , this . textEditor . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , cls : "bi-multidate-normal-label" , text : b . text , height : this . constants . itemHeight } ) , this . _createSegment ( ) } , _createSegment : function ( ) { return this . options . isEditorExist === ! 0 ? BI . createWidget ( { element : this , type : "bi.left" , items : [ { el : { type : "bi.center_adapt" , items : [ this . radio ] , height : this . constants . itemHeig
return { text : d , value : c , title : d } } ) } ) : void b . itemsCreator ( c , d ) } } ) , this . continueSelect = BI . createWidget ( { type : "bi.text_button" , text : BI . i18nText ( "BI-Continue_Select" ) , cls : "multi-select-check-selected bi-high-light" } ) , this . continueSelect . on ( BI . TextButton . EVENT _CHANGE , function ( ) { b . onClickContinueSelect ( ) } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { height : this . constants . height , el : { type : "bi.left" , cls : "multi-select-continue-select" , items : [ { el : { type : "bi.label" , text : BI . i18nText ( "BI-Selected_Data" ) } , lgap : this . constants . lgap , tgap : this . constants . tgap } , { el : this . continueSelect , lgap : this . constants . lgap , tgap : this . constants . tgap } ] } } , { height : "fill" , el : this . display } ] } ) } , setValue : function ( a ) { this . storeValue = a || { } } , empty : function ( ) { this . display . empty ( ) } , populate : function ( ) { this . display . populate . apply ( this . display , arguments ) } } ) , BI . shortcut ( "bi.multi_select_check_pane" , BI . MultiSelectCheckPane ) , BI . DisplaySelectedList = BI . inherit ( BI . Pane , { constants : { height : 25 , lgap : 10 } , _defaultConfig : function ( ) { return BI . extend ( BI . DisplaySelectedList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-display-list" , itemsCreator : BI . emptyFn , items : [ ] } ) } , _init : function ( ) { BI . DisplaySelectedList . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . hasNext = ! 1 , this . button _group = BI . createWidget ( { type : "bi.list_pane" , element : this , el : { type : "bi.loader" , isDefaultInit : ! 1 , logic : { dynamic : ! 0 , scrolly : ! 0 } , items : this . _createItems ( b . items ) , chooseType : BI . ButtonGroup . CHOOSE _TYPE _MULTI , layouts : [ { type : "bi.vertical" , lgap : 10 } ] } , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { a . hasNext = ! ! b . hasNext , d ( a . _createItems ( b . items ) ) } ) } , hasNext : function ( ) { return a . hasNext } } ) } , _createItems : function ( a ) { return BI . createItems ( a , { type : "bi.icon_text_item" , cls : "cursor-default check-font display-list-item bi-tips" , once : ! 0 , invalid : ! 0 , selected : ! 0 , height : this . constants . height , logic : { dynamic : ! 0 } } ) } , empty : function ( ) { this . button _group . empty ( ) } , populate : function ( a ) { 0 === arguments . length ? this . button _group . populate ( ) : this . button _group . populate ( this . _createItems ( a ) ) } } ) , BI . shortcut ( "bi.display_selected_list" , BI . DisplaySelectedList ) , BI . MultiSelectCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 28 } ) } , _init : function ( ) { BI . MultiSelectCombo . 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 = { } , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.multi_select_trigger" , height : b . height , masker : { offset : { left : 1 , top : 1 , right : 2 , bottom : 33 } } , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { 1 === c . times && BI . isNotNull ( c . keywords ) && a . trigger . setValue ( BI . deepClone ( a . getValue ( ) ) ) , d . apply ( a , arguments ) } ) } } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _START , function ( ) { a . _setStartValue ( "" ) , this . getSearcher ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _STOP , function ( ) { a . _setStartValue ( "" ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _PAUSE , function ( ) { if ( this . getSearcher ( ) . hasMatched ( ) ) { var b = this . getSearcher ( ) . getKeyword ( ) ; a . _join ( { type : BI . Selection . Multi , value : [ b ] } , function ( ) { a . combo . setValue ( a . storeValue ) , a . _setStartValue ( b ) , c ( ) , a . populate ( ) , a . _setStartValue ( "" ) } ) } } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _SEARCHING , function ( b ) { var d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . combo . setValue ( a . storeValue ) , c ( ) , a . combo . populate ( ) , a . _setStartValue ( "" ) ) : ( a . combo . setValue ( a . storeValue ) , c ( ) ) } ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _CHANGE , function ( b , d ) { d instanceof BI . MultiSelectBar ? a . _joinAll ( this . getValue ( ) , function ( ) { c ( ) } ) : a . _join ( this . getValue ( ) , function ( ) { c ( ) } ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW , functio
BI . isNotNull ( e [ b ] ) && d . storeValue . value [ d . storeValue . type === BI . Selection . Multi ? "pushDistinct" : "remove" ] ( b ) } ) , d . _adjust ( b ) } var d = this , e = this . options ; this . _assertValue ( this . storeValue ) , this . _allData ? c ( this . _allData ) : e . itemsCreator ( { type : BI . MultiSelectList . REQ _GET _ALL _DATA } , function ( a ) { d . _allData = BI . pluck ( a . items , "value" ) , c ( d . _allData ) } ) } , _joinAll : function ( a , b ) { var c = this , d = this . options ; this . _assertValue ( a ) , d . itemsCreator ( { type : BI . MultiSelectList . REQ _GET _ALL _DATA , keyword : c . trigger . getKeyword ( ) } , function ( d ) { var e = BI . pluck ( d . items , "value" ) ; if ( c . storeValue . type === a . type ) { var f = ! 1 , g = c . _makeMap ( c . storeValue . value ) ; return BI . each ( e , function ( a , b ) { BI . isNotNull ( g [ b ] ) && ( f = ! 0 , delete g [ b ] ) } ) , f && ( c . storeValue . value = BI . values ( g ) ) , void c . _adjust ( b ) } var h = c . _makeMap ( c . storeValue . value ) , i = c . _makeMap ( a . value ) , j = [ ] ; BI . each ( e , function ( a , b ) { BI . isNotNull ( h [ e [ a ] ] ) && delete h [ e [ a ] ] , BI . isNull ( i [ e [ a ] ] ) && j . push ( b ) } ) , c . storeValue . value = j . concat ( BI . values ( h ) ) , c . _adjust ( b ) } ) } , _adjust : function ( a ) { function b ( ) { c . storeValue . type === BI . Selection . All && c . storeValue . value . length >= c . _count ? c . storeValue = { type : BI . Selection . Multi , value : [ ] } : c . storeValue . type === BI . Selection . Multi && c . storeValue . value . length >= c . _count && ( c . storeValue = { type : BI . Selection . All , value : [ ] } ) } var c = this , d = this . options ; this . _count ? ( b ( ) , a ( ) ) : d . itemsCreator ( { type : BI . MultiSelectList . REQ _GET _DATA _LENGTH } , function ( d ) { c . _count = d . count , b ( ) , a ( ) } ) } , _join : function ( a , b ) { var c = this ; this . options ; if ( this . _assertValue ( a ) , this . _assertValue ( this . storeValue ) , this . 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 . adapter . setStartValue ( a ) } , isAllSelected : function ( ) { return this . adapter . isAllSelected ( ) } , resize : function ( ) { } , setValue : function ( a ) { this . storeValue = a || { } , this . _assertValue ( this . storeValue ) , this . adapter . setValue ( this . storeValue ) , this . trigger . setValue ( this . storeValue ) } , getValue : function ( ) { return BI . deepClone ( this . storeValue ) } , populate : function ( ) { this . _count = null , this . _allData = null , this . adapter . populate . apply ( this . adapter , arguments ) , this . trigger . populate . apply ( this . trigger , arguments ) } } ) , BI . extend ( BI . MultiSelectList , { REQ _GET _DATA _LENGTH : 0 , REQ _GET _ALL _DATA : - 1 } ) , BI . MultiSelectList . EVENT _CHANGE = "BI.MultiSelectList.EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_list" , BI . MultiSelectList ) , BI . MultiSelectTree = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-tree" , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectTree . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . storeValue = { value : { } } , this . adapter = BI . createWidget ( { type : "bi.multi_select_tree_popup" , itemsCreator : b . itemsCreator } ) , this . adapter . on ( BI . MultiSelectTreePopup . EVENT _CHANGE , function ( ) { a . searcher . isSearching ( ) ? a . storeValue = { value : a . searcherPane . getValue ( ) } : a . storeValue = { value : a . adapter . getValue ( ) } , a . setSelectedValue ( a . storeValue . value ) , a . fireEvent ( BI . MultiSelectTree . EVENT _CHANGE ) } ) , this . searcherPane = BI . createWidget ( { type : "bi.multi_tree_search_pane" , cls : "bi-border-left bi-border-right bi-border-bottom" , keywordGetter : function ( ) { return a . searcher . getKeyword ( ) } , itemsCreator : function ( c , d ) { c . keyword = a . searcher . getKeyword ( ) , b . itemsCreator ( c , d ) } } ) , this . searcherPane . setVisible ( ! 1 ) , this . searcher = BI . createWidget ( { type : "bi.searcher" , isAutoSearch : ! 1 , isAutoSync : ! 1 , onSearch : function ( b , c ) { c ( { keyword : a . searcher . getKeyword ( ) } ) } , adapter : this . adapter , popup : this . searcherPane , masker : ! 1 , listeners : [ { eventName : BI . Searcher . EVENT _START , action : function ( ) { a . _showSearcherPane ( ) } } , { eventName : BI . Searcher . EVENT _STOP , action : function ( ) { a . _showAdapter ( ) , BI . nextTick ( function ( ) { a . adapter . populate ( ) } ) } } , { eventName : BI . Searcher . EVENT _CHANGE , action : function ( ) { a . searcher . isSearching ( ) ? a . storeValue = { value : a . searcherPane . getValue ( ) } : a . storeValue = { value : a . adapter . getValue ( ) } ,
this . table . setVPage && this . table . setVPage ( a ) } , getHPage : function ( ) { var a = this . pager . getHPage && this . pager . getHPage ( ) ; return BI . isNotNull ( a ) ? a : ( a = this . pager . getCurrentPage && this . pager . getCurrentPage ( ) , BI . isNotNull ( a ) ? a : this . hpage ) } , getVPage : function ( ) { var a = this . pager . getVPage && this . pager . getVPage ( ) ; return BI . isNotNull ( a ) ? a : ( a = this . pager . getCurrentPage && this . pager . getCurrentPage ( ) , BI . isNotNull ( a ) ? a : this . vpage ) } , setWidth : function ( a ) { BI . PageTable . superclass . setWidth . apply ( this , arguments ) , this . table . setWidth ( a ) } , setHeight : function ( a ) { BI . PageTable . superclass . setHeight . apply ( this , arguments ) ; var b = ! 1 ; this . pager . alwaysShowPager ? b = ! 0 : this . pager . hasHNext && this . pager . hasHNext ( ) ? b = ! 0 : this . pager . hasHPrev && this . pager . hasHPrev ( ) ? b = ! 0 : this . pager . hasVNext && this . pager . hasVNext ( ) ? b = ! 0 : this . pager . hasVPrev && this . pager . hasVPrev ( ) ? b = ! 0 : this . pager . hasNext && this . pager . hasNext ( ) ? b = ! 0 : this . pager . hasPrev && this . pager . hasPrev ( ) && ( b = ! 0 ) , this . table . setHeight ( a - ( b ? 30 : 0 ) ) } , setColumnSize : function ( a ) { this . options . columnSize = a , this . table . setColumnSize ( a ) } , getColumnSize : function ( ) { return this . table . getColumnSize ( ) } , setRegionColumnSize : function ( a ) { this . options . columnSize = a , this . table . setRegionColumnSize ( a ) } , getRegionColumnSize : function ( ) { return this . table . getRegionColumnSize ( ) } , getVerticalScroll : function ( ) { return this . table . getVerticalScroll ( ) } , setLeftHorizontalScroll : function ( a ) { this . table . setLeftHorizontalScroll ( a ) } , setRightHorizontalScroll : function ( a ) { this . table . setRightHorizontalScroll ( a ) } , setVerticalScroll : function ( a ) { this . table . setVerticalScroll ( a ) } , restore : function ( ) { this . table . restore ( ) } , attr : function ( ) { BI . PageTable . superclass . attr . apply ( this , arguments ) , this . table . attr . apply ( this . table , arguments ) } , populate : function ( ) { this . pager . populate ( ) , this . table . populate . apply ( this . table , arguments ) } , destroy : function ( ) { this . table . destroy ( ) , this . pager && this . pager . destroy ( ) , BI . PageTable . superclass . destroy . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.page_table" , BI . PageTable ) , BI . PathChooser = BI . inherit ( BI . Widget , { _const : { lineColor : "#d4dadd" , selectLineColor : "#3f8ce8" } , _defaultConfig : function ( ) { return BI . extend ( BI . PathChooser . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-path-chooser" , items : [ ] } ) } , _init : function ( ) { BI . PathChooser . superclass . _init . apply ( this , arguments ) , this . populate ( this . options . items ) } , _createRegions : function ( a ) { var b = this ; this . regions = BI . createWidgets ( BI . map ( a , function ( a , c ) { return { type : "bi.path_region" , title : b . texts [ c ] || c } } ) ) , this . regionMap = { } , BI . each ( a , function ( a , c ) { b . regionMap [ c ] = a } ) , this . container = BI . createWidget ( { type : "bi.horizontal" , verticalAlign : "top" , scrollx : ! 1 , scrolly : ! 1 , hgap : 10 , items : this . regions } ) , BI . createWidget ( { type : "bi.vertical_adapt" , element : this , scrollable : ! 0 , hgap : 10 , items : [ this . container ] } ) } , getRegionIndexById : function ( a ) { var b = this . store [ a ] , c = b . get ( "region" ) ; return this . regionMap [ c ] } , _drawPath : function ( a , b , c ) { var d = this , e = [ ] ; e = BI . contains ( this . start , a ) ? this . start : [ a ] , BI . each ( e , function ( a , b ) { BI . each ( d . radios [ b ] , function ( a , b ) { b . setSelected ( ! 1 ) } ) , BI . each ( d . lines [ b ] , function ( a , b ) { b . attr ( "stroke" , d . _const . lineColor ) } ) , BI . each ( d . regionIndexes [ b ] , function ( a , b ) { d . regions [ b ] . reset ( ) } ) } ) , BI . each ( this . routes [ a ] [ c ] , function ( a , e ) { var f = d . getRegionIndexById ( e ) ; d . regions [ f ] . setSelect ( b + c , e ) } ) ; for ( var f = BI . last ( this . routes [ a ] [ c ] ) ; f && this . routes [ f ] && 1 === this . routes [ f ] . length ; ) BI . each ( this . routes [ f ] [ 0 ] , function ( a , b ) { var c = d . getRegionIndexById ( b ) ; d . regions [ c ] . setSelect ( 0 , b ) } ) , this . lines [ f ] [ 0 ] . attr ( "stroke" , d . _const . selectLineColor ) . toFront ( ) , f = BI . last ( this . routes [ f ] [ 0 ] ) ; this . lines [ a ] [ c ] . attr ( "stroke" , d . _const . selectLineColor ) . toFront ( ) , this . radios [ a ] && this . radios [ a ] [ c ] && this . radios [ a ] [ c ] . setSelected ( ! 0 ) } , _drawRadio : function ( a , b , c , d , e ) { var f = this , g = BI . createWidget ( { type : "bi.radio" , cls : "path-chooser-radio" , selected : b + c === 0 , start : a , index : c } ) ; g . on ( BI . Radio . EVENT _CHANGE , function ( ) { f . _drawPath ( a , b , c ) , f . fireEvent ( BI . PathChooser . EVENT _CHANGE , a , c ) } ) , this . radios [ a ] || ( this . radios [ a ] = [ ] ) , this . radios [ a ] . push ( g ) , BI . createWidget ( { type : "bi.absolute" , element : this . container , items : [ { el : g , left : d - 6.5 , top : e - 6.5 } ] } ) } , _drawLine : function ( a , b ) { var c = this ; this . lines [ a ] || ( th
} ) , 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 . table . getCalculateRegionColumnSize ( ) ; if ( a . isNeedFreeze === ! 0 && a . freezeCols . length > 0 && a . freezeCols . length < a . columnSize . length ) { var c = this . table . element . width ( ) ; if ( b [ 0 ] < 15 || b [ 1 ] < 15 ) { var d = a . freezeCols , e = c / 3 ; d . length > a . columnSize . length / 2 && ( e = 2 * c / 3 ) , this . table . setRegionColumnSize ( [ e , "fill" ] ) } } } , resize : function ( ) { this . table . resize ( ) , this . _resizeRegion ( ) , this . _resizeHeader ( ) } , setColumnSize : function ( a ) { this . table . setColumnSize ( a ) , this . _adjustRegion ( ) , this . _resizeHeader ( ) } , getColumnSize : function ( ) { return this . table . getColumnSize ( ) } , getCalculateColumnSize : function ( ) { return this . table . getCalculateColumnSize ( ) } , setHeaderColumnSize : function ( a ) { this . table . setHeaderColumnSize ( a ) , this . _adjustRegion ( ) , this . _resizeHeader ( ) } , setRegionColumnSize : function ( a ) { this . table . setRegionColumnSize ( a ) , this . _resizeHeader ( ) } , getRegionColumnSize : function ( ) { return this . table . getRegionColumnSize ( ) } , getCalculateRegionColumnSize : function ( ) { return this . table . getCalculateRegionColumnSize ( ) } , getCalculateReg
a . element . removeClass ( a . constants . timeErrorCls ) , a . fireEvent ( BI . TimeInterval . EVENT _CHANGE ) ) } ) , b } , _dateCheck : function ( a ) { return Date . parseDateTime ( a , "%Y-%x-%d" ) . print ( "%Y-%x-%d" ) == a || Date . parseDateTime ( a , "%Y-%X-%d" ) . print ( "%Y-%X-%d" ) == a || Date . parseDateTime ( a , "%Y-%x-%e" ) . print ( "%Y-%x-%e" ) == a || Date . parseDateTime ( a , "%Y-%X-%e" ) . print ( "%Y-%X-%e" ) == a } , _checkVoid : function ( a ) { return ! Date . checkVoid ( a . year , a . month , a . day , this . constants . DATE _MIN _VALUE , this . constants . DATE _MAX _VALUE ) [ 0 ] } , _check : function ( a , b ) { var c = a . match ( /\d+/g ) , d = b . match ( /\d+/g ) ; return this . _dateCheck ( a ) && Date . checkLegal ( a ) && this . _checkVoid ( { year : c [ 0 ] , month : c [ 1 ] , day : c [ 2 ] } ) && this . _dateCheck ( b ) && Date . checkLegal ( b ) && this . _checkVoid ( { year : d [ 0 ] , month : d [ 1 ] , day : d [ 2 ] } ) } , _compare : function ( a , b ) { return a = Date . parseDateTime ( a , "%Y-%X-%d" ) . print ( "%Y-%X-%d" ) , b = Date . parseDateTime ( b , "%Y-%X-%d" ) . print ( "%Y-%X-%d" ) , BI . isNotNull ( a ) && BI . isNotNull ( b ) && a > b } , _setTitle : function ( a ) { this . left . setTitle ( a ) , this . right . setTitle ( a ) , this . label . setTitle ( a ) } , _clearTitle : function ( ) { this . left . setTitle ( "" ) , this . right . setTitle ( "" ) , this . label . setTitle ( "" ) } , setValue : function ( a ) { a = a || { } , this . left . setValue ( a . start ) , this . right . setValue ( a . end ) } , getValue : function ( ) { return { start : this . left . getValue ( ) , end : this . right . getValue ( ) } } } ) , BI . TimeInterval . EVENT _VALID = "EVENT_VALID" , BI . TimeInterval . EVENT _ERROR = "EVENT_ERROR" , BI . TimeInterval . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.time_interval" , BI . TimeInterval ) , BI . YearCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . YearCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-year-combo" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" , height : 25 } ) } , _init : function ( ) { BI . YearCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . storeValue = "" , this . trigger = BI . createWidget ( { type : "bi.year_trigger" , min : b . min , max : b . max } ) , this . trigger . on ( BI . YearTrigger . EVENT _FOCUS , function ( ) { a . storeValue = this . getKey ( ) } ) , this . trigger . on ( BI . YearTrigger . EVENT _START , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . YearTrigger . EVENT _STOP , function ( ) { a . combo . showView ( ) } ) , this . trigger . on ( BI . YearTrigger . EVENT _ERROR , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . YearTrigger . EVENT _CONFIRM , function ( ) { a . combo . isViewVisible ( ) || ( this . getKey ( ) && this . getKey ( ) !== a . storeValue ? a . setValue ( this . getKey ( ) ) : this . getKey ( ) || a . setValue ( ) , a . fireEvent ( BI . YearCombo . EVENT _CONFIRM ) ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , element : this , destroyWhenHide : ! 0 , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 85 , stopPropagation : ! 1 , el : { type : "bi.year_popup" , ref : function ( ) { a . popup = this } , listeners : [ { eventName : BI . YearPopup . EVENT _CHANGE , action : function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . YearCombo . EVENT _CONFIRM ) } } ] , behaviors : b . behaviors , min : b . min , max : b . max } } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { var b = a . trigger . getKey ( ) ; BI . isNotNull ( b ) ? a . popup . setValue ( b ) : b || b === a . storeValue ? a . setValue ( ) : a . popup . setValue ( a . storeValue ) , a . fireEvent ( BI . YearCombo . EVENT _BEFORE _POPUPVIEW ) } ) } , setValue : function ( a ) { this . combo . setValue ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } } ) , BI . YearCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . YearCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.year_combo" , BI . YearCombo ) , BI . YearPopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . YearPopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-year-popup" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" } ) } , _createYearCalendar : function ( a ) { var b = this . options , c = this . _year , d = BI . createWidget ( { type : "bi.year_calendar" , behaviors : b . behaviors , min : b . min , max : b . max , logic : { dynamic : ! 0 } , year : c + 12 * a } ) ; return d . setValue ( this . _year ) , d } , _init : function ( ) { BI . YearPopup . superclass . _init . apply ( this , arguments ) ; var a = this ; this . selectedYear = this . _year = ( new Date ) . getFullYear ( ) ; var b = BI . createWidget ( { type : "bi.icon_button" , cls : "pre-page-h-font" , width : 25 , height : 25 , value : - 1 } ) , c = BI . createWidget ( { type : "bi.icon_button" , cls : "next-page-h-font" , width : 25 , height : 25 , value : 1 } ) ; this . navi