/*! fineui 23-10-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 ==
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 . silent ) return this
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 , Array . prototype . slice . apply ( arguments , [ 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 ) } } ) , BI . View = BI
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 ) && 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 . sc
j = h . top - k . element . outerHeight ( ) - 5 , ! f . belowMouse && ( m = Math . min ( m , j ) ) ) : ! f . belowMouse && ( m = Math . max ( m , j ) ) , k . element . css ( { left : l < 0 ? 0 : l + "px" , top : m < 0 ? 0 : m + "px" } ) , k . element . hover ( function ( ) { g . remove ( b ) , e . element . trigger ( "mouseleave.title" + e . getName ( ) ) } ) , this } , add : function ( a , b ) { return this . has ( a ) ? this : ( this . set ( a , b ) , this ) } , get : function ( a ) { return this . tooltipsManager [ a ] } , set : function ( a , b ) { this . tooltipsManager [ a ] = b } , has : function ( a ) { return null != this . tooltipsManager [ a ] } , remove : function ( a ) { return this . has ( a ) ? ( this . tooltipsManager [ a ] . destroy ( ) , delete this . tooltipsManager [ a ] , this ) : this } } ) , BI . FloatBoxRouter = BI . inherit ( BI . WRouter , { routes : { } , _init : function ( ) { this . store = { } , this . views = { } } , createView : function ( a , b , c , d ) { return BI . Factory . createView ( a , this . get ( a ) , b || { } , c || { } , d ) } , open : function ( a , b , c , d , e ) { var f = this , g = BI . isKey ( b ) ; e || ( e = { } ) , a = d . rootURL + "/" + a ; var h = void 0 ; if ( g ) { b += "" ; var i = b . split ( "." ) ; BI . each ( i , function ( a , b ) { h = 0 === a ? d . model . get ( b ) || { } : h [ b ] || { } } ) , h . id = e . id || i [ i . length - 1 ] } else h = b ; if ( BI . extend ( h , e . data ) , this . controller || ( this . controller = new BI . FloatBoxController ) , ! this . store [ a ] ) { this . store [ a ] = BI . createWidget ( { type : "bi.float_box" } , e ) ; var j = this . createView ( a , h , c , d ) ; g && d . model . addChild ( b , j . model ) , j . listenTo ( j . model , "destroy" , function ( ) { f . remove ( a , d ) } ) , d . on ( BI . Events . UNMOUNT , function ( ) { f . remove ( a , d ) } ) , this . store [ a ] . populate ( j ) , this . views [ a ] = j , this . controller . add ( a , this . store [ a ] ) , d && d . on ( "end:" + j . cid , function ( ) { BI . nextTick ( function ( ) { 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 : " _STATECHAN
e = l ; break } break ; case "%H" : case "%I" : case "%k" : case "%l" : m = parseInt ( g [ k ] , 10 ) ; break ; case "%P" : case "%p" : /pm/i . test ( g [ k ] ) && m < 12 ? m += 12 : /am/i . test ( g [ k ] ) && m >= 12 && ( m -= 12 ) ; break ; case "%M" : n = parseInt ( g [ k ] , 10 ) ; case "%S" : o = parseInt ( g [ k ] , 10 ) } if ( isNaN ( d ) && ( d = c . getFullYear ( ) ) , isNaN ( e ) && ( e = c . getMonth ( ) ) , isNaN ( f ) && ( f = c . getDate ( ) ) , isNaN ( m ) && ( m = c . getHours ( ) ) , isNaN ( n ) && ( n = c . getMinutes ( ) ) , isNaN ( o ) && ( o = c . getSeconds ( ) ) , 0 != d ) return new Date ( d , e , f , m , n , o ) ; for ( d = 0 , e = - 1 , f = 0 , k = 0 ; k < g . length ; ++ k ) if ( g [ k ] . search ( /[a-zA-Z]+/ ) != - 1 ) { var p = - 1 ; for ( l = 0 ; l < 12 ; ++ l ) if ( Date . _MN [ l ] . substr ( 0 , g [ k ] . length ) . toLowerCase ( ) == g [ k ] . toLowerCase ( ) ) { p = l ; break } p != - 1 && ( e != - 1 && ( f = e + 1 ) , e = p ) } else parseInt ( g [ k ] , 10 ) <= 12 && e == - 1 ? e = g [ k ] - 1 : parseInt ( g [ k ] , 10 ) > 31 && 0 == d ? ( d = parseInt ( g [ k ] , 10 ) , d < 100 && ( d += d > 29 ? 1900 : 2e3 ) ) : 0 == f && ( f = g [ k ] ) ; return 0 == d && ( d = c . getFullYear ( ) ) , e != - 1 && 0 != f ? new Date ( d , e , f , m , n , o ) : c } , $ . extend ( $ . Event . prototype , { stopEvent : function ( ) { this . stopPropagation ( ) , this . preventDefault ( ) } } ) , Function . prototype . before = function ( a ) { var b = this ; return function ( ) { return a . apply ( this , arguments ) !== ! 1 && b . apply ( this , arguments ) } } , Function . prototype . after = function ( a ) { var b = this ; return function ( ) { var c = b . apply ( this , arguments ) ; return c !== ! 1 && ( a . apply ( this , arguments ) , c ) } } , jQuery && ! function ( a ) { a . fn . insets || ( a . fn . insets = function ( ) { var a = this . padding ( ) , b = this . border ( ) ; return { top : a . top , bottom : a . bottom + b . bottom + b . top , left : a . left , right : a . right + b . right + b . left } } ) , a . fn . bounds || ( a . fn . bounds = function ( a ) { var b = { hasIgnoredBounds : ! 0 } ; return a ? ( isNaN ( a . x ) || ( b . left = a . x ) , isNaN ( a . y ) || ( b . top = a . y ) , null != a . width && ( b . width = a . width - ( this . outerWidth ( ! 0 ) - this . width ( ) ) , b . width = b . width >= 0 ? b . width : a . width ) , null != a . height && ( b . height = a . height - ( this . outerHeight ( ! 0 ) - this . height ( ) ) , b . height = b . height >= 0 ? b . height : a . height ) , this . css ( b ) , this ) : ( b = this . position ( ) , { x : b . left , y : b . top , width : this . outerWidth ( ) , height : this . outerHeight ( ) } ) } ) } ( jQuery ) , Number . prototype . toFixed && "0.000" === 8e-5 . toFixed ( 3 ) && "0" !== . 9. toFixed ( 0 ) && "1.25" === 1.255 . toFixed ( 2 ) && "1000000000000000128" === ( 0xde0b6b3a7640080 ) . toFixed ( 0 ) || ! function ( ) { function a ( a , b ) { for ( var c = - 1 ; ++ c < g ; ) b += a * h [ c ] , h [ c ] = b % f , b = Math . floor ( b / f ) } function b ( a ) { for ( var b = g , c = 0 ; -- b >= 0 ; ) c += h [ b ] , h [ b ] = Math . floor ( c / a ) , c = c % a * f } function c ( ) { for ( var a = g , b = "" ; -- a >= 0 ; ) if ( "" !== b || 0 === a || 0 !== h [ a ] ) { var c = String ( h [ a ] ) ; "" === b ? b = c : b += "0000000" . slice ( 0 , 7 - c . length ) + c } return b } function d ( a , b , c ) { return 0 === b ? c : b % 2 === 1 ? d ( a , b - 1 , c * a ) : d ( a * a , b / 2 , c ) } function e ( a ) { for ( var b = 0 ; a >= 4096 ; ) b += 12 , a /= 4096 ; for ( ; a >= 2 ; ) b += 1 , a /= 2 ; return b } var f , g , h ; f = 1e7 , g = 6 , h = [ 0 , 0 , 0 , 0 , 0 , 0 ] , Number . prototype . toFixed = function ( f ) { var g , h , i , j , k , l , m , n ; if ( g = Number ( f ) , g = g !== g ? 0 : Math . floor ( g ) , g < 0 || g > 20 ) throw new RangeError ( "Number.toFixed called with invalid number of decimals" ) ; if ( h = Number ( this ) , h !== h ) return "NaN" ; if ( h <= - 1e21 || h > 1e21 ) return String ( h ) ; if ( i = "" , h < 0 && ( i = "-" , h = - h ) , j = "0" , h > 1e-21 ) if ( k = e ( h * d ( 2 , 69 , 1 ) ) - 69 , l = k < 0 ? h * d ( 2 , - k , 1 ) : h / d ( 2 , k , 1 ) , l *= 4503599627370496 , k = 52 - k , k > 0 ) { for ( a ( 0 , l ) , m = g ; m >= 7 ; ) a ( 1e7 , 0 ) , m -= 7 ; for ( a ( d ( 10 , m , 1 ) , 0 ) , m = k - 1 ; m >= 23 ; ) b ( 1 << 23 ) , m -= 23 ; b ( 1 << m ) , a ( 1 , 1 ) , b ( 2 ) , j = c ( ) } else a ( 0 , l ) , a ( 1 << - k , 0 ) , j = c ( ) + "0.00000000000000000000" . slice ( 2 , 2 + g ) ; return g > 0 ? ( n = j . length , j = n <= g ? i + "0.0000000000000000000" . slice ( 0 , g - n + 2 ) + j : i + j . slice ( 0 , n - g ) + "." + j . slice ( n - g ) ) : j = i + j , j } } ( ) , Number . prototype . add = function ( a ) { return accAdd ( a , this ) } , Number . prototype . sub = function ( a ) { return accSub ( this , a ) } , Number . prototype . mul = function ( a ) { return accMul ( a , this ) } , Number . prototype . div = function ( a ) { return 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 ) { re
this . element . append ( this . $wrapper ) ) } , _getWrapper : function ( ) { return this . $wrapper } , resize : function ( ) { } , populate : function ( a ) { BI . FlexVerticalCenter . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_wrapper_vertical_center" , BI . FlexVerticalCenter ) , BI . AbsoluteLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . AbsoluteLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-absolute-layout" , hgap : null , vgap : null , lgap : null , rgap : null , tgap : null , bgap : null } ) } , render : function ( ) { BI . AbsoluteLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . AbsoluteLayout . superclass . _addElement . apply ( this , arguments ) , e = 0 , f = 0 , g = 0 , h = 0 ; return BI . isNotNull ( b . left ) && ( d . element . css ( { left : b . left } ) , e += b . left ) , BI . isNotNull ( b . right ) && ( d . element . css ( { right : b . right } ) , f += b . right ) , BI . isNotNull ( b . top ) && ( d . element . css ( { top : b . top } ) , g += b . top ) , BI . isNotNull ( b . bottom ) && ( d . element . css ( { bottom : b . bottom } ) , h += b . bottom ) , BI . isNotNull ( c . hgap ) && ( e += c . hgap , d . element . css ( { left : e } ) , f += c . hgap , d . element . css ( { right : f } ) ) , BI . isNotNull ( c . vgap ) && ( g += c . vgap , d . element . css ( { top : g } ) , h += c . vgap , d . element . css ( { bottom : h } ) ) , BI . isNotNull ( c . lgap ) && ( e += c . lgap , d . element . css ( { left : e } ) ) , BI . isNotNull ( c . rgap ) && ( f += c . rgap , d . element . css ( { right : f } ) ) , BI . isNotNull ( c . tgap ) && ( g += c . tgap , d . element . css ( { top : g } ) ) , BI . isNotNull ( c . bgap ) && ( h += c . bgap , d . element . css ( { bottom : h } ) ) , BI . isNotNull ( b . width ) && d . element . css ( { width : b . width } ) , BI . isNotNull ( b . height ) && d . element . css ( { height : b . height } ) , d . element . css ( { position : "absolute" } ) , d } , resize : function ( ) { this . stroke ( this . options . items ) } , stroke : function ( a ) { this . options . items = a || [ ] ; var b = this ; BI . each ( a , function ( a , c ) { if ( c ) { if ( ! BI . isWidget ( c ) && ! c . el ) throw new Error ( "el must be exist" ) ; b . _addElement ( a , c ) } } ) } , populate : function ( a ) { BI . AbsoluteLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.absolute" , BI . AbsoluteLayout ) , BI . AdaptiveLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . AdaptiveLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-adaptive-layout" , hgap : null , vgap : null , lgap : null , rgap : null , tgap : null , bgap : null } ) } , render : function ( ) { BI . AdaptiveLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . AdaptiveLayout . superclass . _addElement . apply ( this , arguments ) ; d . element . css ( { position : "relative" } ) ; 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" , t
} for ( var g = 0 ; g < e . columns ; g ++ ) { for ( var f = 0 ; f < e . rows ; f ++ ) { var m = this . getWidgetByName ( this . getName ( ) + f + "_" + g ) ; BI . isNull ( i [ g ] ) && ( i [ g ] = i [ g - 1 ] + ( e . columnSize [ g - 1 ] < 1 ? e . columnSize [ g - 1 ] : e . columnSize [ g - 1 ] + e . hgap + e . rgap ) ) ; var q = i [ g ] <= 1 ? 100 * i [ g ] + "%" : i [ g ] + e . hgap + e . lgap + "px" , h = "" ; BI . isNumber ( e . columnSize [ g ] ) && ( h = e . columnSize [ g ] <= 1 ? 100 * e . columnSize [ g ] + "%" : e . columnSize [ g ] + "px" ) , m . element . css ( { left : q , width : h } ) , d ( m , f , g ) } if ( ! BI . isNumber ( e . columnSize [ g ] ) ) break } for ( var g = e . columns - 1 ; g >= 0 ; g -- ) { for ( var f = 0 ; f < e . rows ; f ++ ) { var m = this . getWidgetByName ( this . getName ( ) + f + "_" + g ) ; BI . isNull ( j [ g ] ) && ( j [ g ] = j [ g + 1 ] + ( e . columnSize [ g + 1 ] < 1 ? e . columnSize [ g + 1 ] : e . columnSize [ g + 1 ] + e . hgap + e . lgap ) ) ; var r = j [ g ] <= 1 ? 100 * j [ g ] + "%" : j [ g ] + e . hgap + e . rgap + "px" , h = "" ; BI . isNumber ( e . columnSize [ g ] ) && ( h = e . columnSize [ g ] <= 1 ? 100 * e . columnSize [ g ] + "%" : e . columnSize [ g ] + "px" ) , m . element . css ( { right : r , width : h } ) , d ( m , f , g ) } if ( ! BI . isNumber ( e . columnSize [ g ] ) ) break } } , populate : function ( a ) { BI . WindowLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.window" , BI . WindowLayout ) , BI . CenterLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . CenterLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-center-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . CenterLayout . superclass . render . apply ( this , arguments ) , 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" , height : "auto" } ) , c [ a ] . el . addItem ( e ) } } ) , BI . createWidget ( { type : "bi.grid" , element : this , columns : c . length , rows : 1 , items : c } ) } , populate : function ( a ) { BI . CenterLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.center" , BI . CenterLayout ) , BI . FloatCenterLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FloatCenterLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-float-center-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FloatCenterLayout . superclass . render . apply ( this , arguments ) , 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 , it
if ( c . halfCheck = ! 1 , d && 0 !== d . length && ! /^<html>[\s,\S]*<\/html>$/gi . test ( d ) && ! l . _stop ) { var e = l . nodes , g = c . count || 0 ; c . children . length > g ? ( c . count = c . children . length , BI . delay ( function ( ) { f ( c ) } , n ) ) : ( e . updateNode ( c ) , e . selectNode ( c . children [ 0 ] ) ) } } function e ( a , b , c , d , e , f ) { l . nodes ; BI . Msg . toast ( "Error!" , "warning" ) } function f ( a , b ) { var c = l . nodes ; "refresh" == b && c . updateNode ( a ) , c . reAsyncChildNodes ( a , b , ! 0 ) } function g ( 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 = l . nodes , e = d . getSelectedNodes ( ) ; $ . each ( e , function ( a , b ) { b . halfCheck = ! 1 } ) } } function h ( a , b , c ) { l . _selectTreeNode ( b , c ) } function i ( a , b , c ) { c . halfCheck = ! 1 } function j ( a , b , c ) { } var k = this . options . paras , l = this , m = { async : { enable : ! 0 , url : b , autoParam : [ "id" , "name" ] , otherParam : BI . cjkEncodeDO ( k ) } , check : { enable : ! 0 } , data : { key : { title : "title" , name : "text" } , simpleData : { enable : ! 0 } } , view : { showIcon : ! 1 , expandSpeed : "" , nameIsHTML : ! 0 , dblClickExpand : ! 1 } , callback : { beforeExpand : c , onAsyncSuccess : d , onAsyncError : e , beforeCheck : g , onCheck : h , onExpand : i , onCollapse : j , onClick : a } } , n = 100 ; return m } , _getParentValues : function ( a ) { if ( ! a . getParentNode ( ) ) return [ ] ; var b = a . getParentNode ( ) , c = this . _getParentValues ( b ) ; return c = c . concat ( [ this . _getNodeValue ( b ) ] ) } , _getNodeValue : function ( a ) { return null == a . value ? a . text . replace ( /<[^>]+>/g , "" ) . replaceAll ( " " , " " ) : a . value } , _getHalfSelectedValues : function ( a , b ) { var c = this , d = b . getCheckStatus ( ) ; if ( d . checked !== ! 1 || d . half !== ! 1 ) { if ( BI . isNotEmptyArray ( b . children ) && d . half === ! 0 ) { var e = b . children ; return void BI . each ( e , function ( b , d ) { c . _getHalfSelectedValues ( a , d ) } ) } var f = b . parentValues || c . _getParentValues ( b ) , g = f . concat ( this . _getNodeValue ( b ) ) ; if ( BI . isNotEmptyArray ( b . children ) || d . half === ! 1 ) return void this . _buildTree ( a , g ) ; var h = BI . deepClone ( this . options . paras . selectedValues ) , i = this . _getTree ( h , g ) ; this . _addTreeNode ( a , f , this . _getNodeValue ( b ) , i ) } } , _getTree : function ( a , b ) { var c = a ; return BI . any ( b , function ( a , b ) { return null == c [ b ] || void ( c = c [ b ] ) } ) , c } , _addTreeNode : function ( a , b , c , d ) { var e = a ; BI . each ( b , function ( a , b ) { null == e [ b ] && ( e [ b ] = { } ) , e = e [ b ] } ) , e [ c ] = d } , _buildTree : function ( a , b ) { var c = a ; BI . each ( b , function ( a , b ) { null == c [ b ] && ( c [ b ] = { } ) , c = c [ b ] } ) } , _getSelectedValues : function ( ) { function a ( a ) { BI . each ( a , function ( a , d ) { var e = d . getCheckStatus ( ) ; if ( e . checked === ! 0 || e . half === ! 0 ) if ( e . half === ! 0 ) b . _getHalfSelectedValues ( c , d ) ; else { var f = d . parentValues || b . _getParentValues ( d ) , g = f . concat ( [ b . _getNodeValue ( d ) ] ) ; b . _buildTree ( c , g ) } } ) } var b = this , c = { } , d = this . nodes . getNodes ( ) ; return a ( d ) , c } , _dealWidthNodes : function ( a ) { var b = this . options , c = BI . Tree . arrayFormat ( a ) ; return BI . each ( c , function ( a , c ) { c . title = c . title || c . text || c . value , BI . isKey ( b . paras . keyword ) ? c . text = $ ( "<div>" ) . _ _textKeywordMarked _ _ ( c . text , b . paras . keyword , c . py ) . html ( ) : c . text = ( c . text + "" ) . replaceAll ( " " , " " ) } ) , a } , _loadMore : function ( ) { var a = this , b = this . options ; this . tip . setLoading ( ) ; var c = BI . extend ( { } , b . paras , { times : ++ this . times } ) ; b . itemsCreator ( c , function ( b ) { if ( a . _stop !== ! 0 ) { var c = ! ! b . hasNext , d = b . items || [ ] ; c ? a . tip . setLoaded ( ) : a . tip . setEnd ( ) , d . length > 0 && a . nodes . addNodes ( null , a . _dealWidthNodes ( d ) ) } } ) } , _initTree : function ( a ) { var b = this , c = this . options ; b . fireEvent ( BI . Events . INIT ) , this . times = 1 ; var d = this . tree ; d . empty ( ) , this . loading ( ) , 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 ) }
a . isExpanded ( ) ? ( a . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , a . expander ) , a . fireEvent ( BI . Expander . EVENT _EXPAND ) ) : ( a . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . COLLAPSE , "" , a . expander ) , a . fireEvent ( BI . Expander . EVENT _COLLAPSE ) ) ) } , BI . EVENT _RESPONSE _TIME , ! 0 ) ) } } ) } , _initExpander : function ( ) { this . expander = BI . createWidget ( this . options . el ) } , _assertPopupView : function ( ) { var a = this ; null == this . popupView && ( this . popupView = BI . createWidget ( this . options . popup , { type : "bi.button_group" , cls : "expander-popup" , layouts : [ { type : "bi.vertical" , hgap : 0 , vgap : 0 } ] } ) , this . popupView . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b === BI . Events . CLICK && a . fireEvent ( BI . Expander . EVENT _CHANGE , c , d ) } ) , this . popupView . setVisible ( this . isExpanded ( ) ) , BI . nextTick ( function ( ) { a . fireEvent ( BI . Expander . EVENT _AFTER _INIT ) } ) ) } , _assertPopupViewRender : function ( ) { this . _assertPopupView ( ) , this . _rendered || ( BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ { el : this . popupView } ] } ) , this . _rendered = ! 0 ) } , _hideView : function ( ) { this . fireEvent ( BI . Expander . EVENT _BEFORE _HIDEVIEW ) , this . _expanded = ! 1 , this . expander . setOpened ( ! 1 ) , this . popupView && this . popupView . invisible ( ) , this . element . removeClass ( this . options . expanderClass ) , this . fireEvent ( BI . Expander . EVENT _AFTER _HIDEVIEW ) } , _popupView : function ( ) { this . _assertPopupViewRender ( ) , this . fireEvent ( BI . Expander . EVENT _BEFORE _POPUPVIEW ) , this . _expanded = ! 0 , this . expander . setOpened ( ! 0 ) , this . popupView . visible ( ) , this . element . addClass ( this . options . expanderClass ) , this . fireEvent ( BI . Expander . EVENT _AFTER _POPUPVIEW ) } , populate : function ( a ) { this . popupView && this . popupView . populate . apply ( this . popupView , arguments ) , this . expander . populate . apply ( this . expander , arguments ) } , _setEnable : function ( a ) { BI . Expander . superclass . _setEnable . apply ( this , arguments ) , ! a && this . element . removeClass ( this . options . hoverClass ) , ! a && this . isViewVisible ( ) && this . _hideView ( ) } , setValue : function ( a ) { this . expander . setValue ( a ) , this . popupView && this . popupView . setValue ( a ) } , getValue : function ( ) { return this . popupView ? this . popupView . getValue ( ) : [ ] } , isViewVisible : function ( ) { return this . isEnabled ( ) && this . expander . isEnabled ( ) && ! ! this . popupView && this . popupView . isVisible ( ) } , isExpanded : function ( ) { return this . _expanded } , showView : function ( ) { this . isEnabled ( ) && this . expander . isEnabled ( ) && this . _popupView ( ) } , hideView : function ( ) { this . _hideView ( ) } , getView : function ( ) { return this . popupView } , getAllLeaves : function ( ) { return this . popupView && this . popupView . getAllLeaves ( ) } , getNodeById : function ( a ) { return this . expander . options . id === a ? this . expander : this . popupView && this . popupView . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . expander . getValue ( ) === a ? this . expander : this . popupView && this . popupView . getNodeByValue ( a ) } , destroy : function ( ) { BI . Expander . superclass . destroy . apply ( this , arguments ) } } ) , BI . Expander . EVENT _EXPAND = "EVENT_EXPAND" , BI . Expander . EVENT _COLLAPSE = "EVENT_COLLAPSE" , BI . Expander . EVENT _TRIGGER _CHANGE = "EVENT_TRIGGER_CHANGE" , BI . Expander . EVENT _CHANGE = "EVENT_CHANGE" , BI . Expander . EVENT _AFTER _INIT = "EVENT_AFTER_INIT" , BI . Expander . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . Expander . EVENT _AFTER _POPUPVIEW = "EVENT_AFTER_POPUPVIEW" , BI . Expander . EVENT _BEFORE _HIDEVIEW = "EVENT_BEFORE_HIDEVIEW" , BI . Expander . EVENT _AFTER _HIDEVIEW = "EVENT_AFTER_HIDEVIEW" , BI . shortcut ( "bi.expander" , BI . Expander ) , 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 =
} , 20 ) } function j ( a ) { var b = a . display . gutters , c = a . options . gutters ; Ne ( b ) ; for ( var d = 0 ; d < c . length ; ++ d ) { var e = c [ d ] , f = b . appendChild ( Me ( "div" , null , "CodeMirror-gutter " + e ) ) ; "CodeMirror-linenumbers" == e && ( a . display . lineGutter = f , f . style . width = ( a . display . lineNumWidth || 1 ) + "px" ) } b . style . display = d ? "" : "none" , k ( a ) } function k ( a ) { var b = a . display . gutters . offsetWidth ; a . display . sizer . style . marginLeft = b + "px" } function l ( a ) { if ( 0 == a . height ) return 0 ; for ( var b , c = a . text . length , d = a ; b = ld ( d ) ; ) { var e = b . find ( 0 , ! 0 ) ; d = e . from . line , c += e . from . ch - e . to . ch } for ( d = a ; b = md ( d ) ; ) { var e = b . find ( 0 , ! 0 ) ; c -= d . text . length - e . from . ch , d = e . to . line , c += d . text . length - e . to . ch } return c } function m ( a ) { var b = a . display , c = a . doc ; b . maxLine = Vd ( c , c . first ) , b . maxLineLength = l ( b . maxLine ) , b . maxLineChanged = ! 0 , c . iter ( function ( a ) { var c = l ( a ) ; c > b . maxLineLength && ( b . maxLineLength = c , b . maxLine = a ) } ) } function n ( a ) { var b = De ( a . gutters , "CodeMirror-linenumbers" ) ; b == - 1 && a . lineNumbers ? a . gutters = a . gutters . concat ( [ "CodeMirror-linenumbers" ] ) : b > - 1 && ! a . lineNumbers && ( a . gutters = a . gutters . slice ( 0 ) , a . gutters . splice ( b , 1 ) ) } function o ( a ) { var b = a . display , c = b . gutters . offsetWidth , d = Math . round ( a . doc . height + Ra ( a . display ) ) ; return { clientHeight : b . scroller . clientHeight , viewHeight : b . wrapper . clientHeight , scrollWidth : b . scroller . scrollWidth , clientWidth : b . scroller . clientWidth , viewWidth : b . wrapper . clientWidth , barLeft : a . options . fixedGutter ? c : 0 , docHeight : d , scrollHeight : d + Ta ( a ) + b . barHeight , nativeBarWidth : b . nativeBarWidth , gutterWidth : c } } function p ( a , b , c ) { this . cm = c ; var d = this . vert = Me ( "div" , [ Me ( "div" , null , null , "min-width: 1px" ) ] , "CodeMirror-vscrollbar" ) , e = this . horiz = Me ( "div" , [ Me ( "div" , null , null , "height: 100%; min-height: 1px" ) ] , "CodeMirror-hscrollbar" ) ; a ( d ) , a ( e ) , xg ( d , "scroll" , function ( ) { d . clientHeight && b ( d . scrollTop , "vertical" ) } ) , xg ( e , "scroll" , function ( ) { e . clientWidth && b ( e . scrollLeft , "horizontal" ) } ) , this . checkedOverlay = ! 1 , nf && of < 8 && ( this . horiz . style . minHeight = this . vert . style . minWidth = "18px" ) } function q ( ) { } function r ( b ) { b . display . scrollbars && ( b . display . scrollbars . clear ( ) , b . display . scrollbars . addClass && Qg ( b . display . wrapper , b . display . scrollbars . addClass ) ) , b . display . scrollbars = new a . scrollbarModel [ b . options . scrollbarStyle ] ( function ( a ) { b . display . wrapper . insertBefore ( a , b . display . scrollbarFiller ) , xg ( a , "mousedown" , function ( ) { b . state . focused && setTimeout ( function ( ) { b . display . input . focus ( ) } , 0 ) } ) , a . setAttribute ( "cm-not-content" , "true" ) } , function ( a , c ) { "horizontal" == c ? bc ( b , a ) : ac ( b , a ) } , b ) , b . display . scrollbars . addClass && Rg ( b . display . wrapper , b . display . scrollbars . addClass ) } function s ( a , b ) { b || ( b = o ( a ) ) ; var c = a . display . barWidth , d = a . display . barHeight ; t ( a , b ) ; for ( var e = 0 ; e < 4 && c != a . display . barWidth || d != a . display . barHeight ; e ++ ) c != a . display . barWidth && a . options . lineWrapping && F ( a ) , t ( a , o ( a ) ) , c = a . display . barWidth , d = a . display . barHeight } function t ( a , b ) { var c = a . display , d = c . scrollbars . update ( b ) ; c . sizer . style . paddingRight = ( c . barWidth = d . right ) + "px" , c . sizer . style . paddingBottom = ( c . barHeight = d . bottom ) + "px" , d . right && d . bottom ? ( c . scrollbarFiller . style . display = "block" , c . scrollbarFiller . style . height = d . bottom + "px" , c . scrollbarFiller . style . width = d . right + "px" ) : c . scrollbarFiller . style . display = "" , d . bottom && a . options . coverGutterNextToScrollbar && a . options . fixedGutter ? ( c . gutterFiller . style . display = "block" , c . gutterFiller . style . height = d . bottom + "px" , 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 . gu
e || 10 } function tb ( a ) { a . curOp = { cm : a , viewChanged : ! 1 , startHeight : a . doc . height , forceUpdate : ! 1 , updateInput : null , typing : ! 1 , changeObjs : null , cursorActivityHandlers : null , cursorActivityCalled : 0 , selectionChanged : ! 1 , updateMaxLine : ! 1 , scrollLeft : null , scrollTop : null , scrollToPos : null , focus : ! 1 , id : ++ Nf } , Mf ? Mf . ops . push ( a . curOp ) : a . curOp . ownsGroup = Mf = { ops : [ a . curOp ] , delayedCallbacks : [ ] } } function ub ( a ) { var b = a . delayedCallbacks , c = 0 ; do { for ( ; c < b . length ; c ++ ) b [ c ] ( ) ; for ( var d = 0 ; d < a . ops . length ; d ++ ) { var e = a . ops [ d ] ; if ( e . cursorActivityHandlers ) for ( ; e . cursorActivityCalled < e . cursorActivityHandlers . length ; ) e . cursorActivityHandlers [ e . cursorActivityCalled ++ ] ( e . cm ) } } while ( c < b . length ) } function vb ( a ) { var b = a . curOp , c = b . ownsGroup ; if ( c ) try { ub ( c ) } finally { Mf = null ; for ( var d = 0 ; d < c . ops . length ; d ++ ) c . ops [ d ] . cm . curOp = null ; wb ( c ) } } function wb ( a ) { for ( var b = a . ops , c = 0 ; c < b . length ; c ++ ) xb ( b [ c ] ) ; for ( var c = 0 ; c < b . length ; c ++ ) yb ( b [ c ] ) ; for ( var c = 0 ; c < b . length ; c ++ ) zb ( b [ c ] ) ; for ( var c = 0 ; c < b . length ; c ++ ) Ab ( b [ c ] ) ; for ( var c = 0 ; c < b . length ; c ++ ) Bb ( b [ c ] ) } function xb ( a ) { var b = a . cm , c = b . display ; A ( b ) , a . updateMaxLine && m ( b ) , a . mustUpdate = a . viewChanged || a . forceUpdate || null != a . scrollTop || a . scrollToPos && ( a . scrollToPos . from . line < c . viewFrom || a . scrollToPos . to . line >= c . viewTo ) || c . maxLineChanged && b . options . lineWrapping , a . update = a . mustUpdate && new z ( b , a . mustUpdate && { top : a . scrollTop , ensure : a . scrollToPos } , a . forceUpdate ) } function yb ( a ) { a . updatedDisplay = a . mustUpdate && B ( a . cm , a . update ) } function zb ( a ) { var b = a . cm , c = b . display ; a . updatedDisplay && F ( b ) , a . barMeasure = o ( b ) , c . maxLineChanged && ! b . options . lineWrapping && ( a . adjustWidthTo = Za ( b , c . maxLine , c . maxLine . text . length ) . left + 3 , b . display . sizerWidth = a . adjustWidthTo , a . barMeasure . scrollWidth = Math . max ( c . scroller . clientWidth , c . sizer . offsetLeft + a . adjustWidthTo + Ta ( b ) + b . display . barWidth ) , a . maxScrollLeft = Math . max ( 0 , c . sizer . offsetLeft + a . adjustWidthTo - Ua ( b ) ) ) , ( a . updatedDisplay || a . selectionChanged ) && ( a . preparedSelection = c . input . prepareSelection ( ) ) } function Ab ( a ) { var b = a . cm ; null != a . adjustWidthTo && ( b . display . sizer . style . minWidth = a . adjustWidthTo + "px" , a . maxScrollLeft < b . doc . scrollLeft && bc ( b , Math . min ( b . display . scroller . scrollLeft , a . maxScrollLeft ) , ! 0 ) , b . display . maxLineChanged = ! 1 ) , a . preparedSelection && b . display . input . showSelection ( a . preparedSelection ) , a . updatedDisplay && E ( b , a . barMeasure ) , ( a . updatedDisplay || a . startHeight != b . doc . height ) && s ( b , a . barMeasure ) , a . selectionChanged && La ( b ) , b . state . focused && a . updateInput && b . display . input . reset ( a . typing ) , a . focus && a . focus == Pe ( ) && Y ( a . cm ) } function Bb ( a ) { var b = a . cm , c = b . display , d = b . doc ; if ( a . updatedDisplay && C ( b , a . update ) , null == c . wheelStartX || null == a . scrollTop && null == a . scrollLeft && ! a . scrollToPos || ( c . wheelStartX = c . wheelStartY = null ) , null == a . scrollTop || c . scroller . scrollTop == a . scrollTop && ! a . forceScroll || ( d . scrollTop = Math . max ( 0 , Math . min ( c . scroller . scrollHeight - c . scroller . clientHeight , a . scrollTop ) ) , c . scrollbars . setScrollTop ( d . scrollTop ) , c . scroller . scrollTop = d . scrollTop ) , null == a . scrollLeft || c . scroller . scrollLeft == a . scrollLeft && ! a . forceScroll || ( d . scrollLeft = Math . max ( 0 , Math . min ( c . scroller . scrollWidth - Ua ( b ) , a . scrollLeft ) ) , c . scrollbars . setScrollLeft ( d . scrollLeft ) , c . scroller . scrollLeft = d . scrollLeft , v ( b ) ) , a . scrollToPos ) { var e = Ec ( b , qa ( d , a . scrollToPos . from ) , qa ( d , a . scrollToPos . to ) , a . scrollToPos . margin ) ; a . scrollToPos . isCursor && b . state . focused && Dc ( b , e ) } 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 , t
if ( h ) for ( var l = 0 ; l < h . length ; ++ l ) { var m = h [ l ] ; if ( null == m . to ) { var n = Yc ( i , m . marker ) ; n ? j && ( m . to = null == n . to ? null : n . to + k ) : m . to = e } } if ( i ) for ( var l = 0 ; l < i . length ; ++ l ) { var m = i [ l ] ; if ( null != m . to && ( m . to += k ) , null == m . from ) { var n = Yc ( h , m . marker ) ; n || ( m . from = k , j && ( h || ( h = [ ] ) ) . push ( m ) ) } else m . from += k , j && ( h || ( h = [ ] ) ) . push ( m ) } h && ( h = cd ( h ) ) , i && i != h && ( i = cd ( i ) ) ; var o = [ h ] ; if ( ! j ) { var p , q = b . text . length - 2 ; if ( q > 0 && h ) for ( var l = 0 ; l < h . length ; ++ l ) null == h [ l ] . to && ( p || ( p = [ ] ) ) . push ( new Xc ( h [ l ] . marker , null , null ) ) ; for ( var l = 0 ; l < q ; ++ l ) o . push ( p ) ; o . push ( i ) } return o } function cd ( a ) { for ( var b = 0 ; b < a . length ; ++ b ) { var c = a [ b ] ; null != c . from && c . from == c . to && c . marker . clearWhenEmpty !== ! 1 && a . splice ( b -- , 1 ) } return a . length ? a : null } function dd ( a , b ) { var c = le ( a , b ) , d = bd ( a , b ) ; if ( ! c ) return d ; if ( ! d ) return c ; for ( var e = 0 ; e < c . length ; ++ e ) { var f = c [ e ] , g = d [ e ] ; if ( f && g ) a : for ( var h = 0 ; h < g . length ; ++ h ) { for ( var i = g [ h ] , j = 0 ; j < f . length ; ++ j ) if ( f [ j ] . marker == i . marker ) continue a ; f . push ( i ) } else g && ( c [ e ] = g ) } return c } function ed ( a , b , c ) { var d = null ; if ( a . iter ( b . line , c . line + 1 , function ( a ) { if ( a . markedSpans ) for ( var b = 0 ; b < a . markedSpans . length ; ++ b ) { var c = a . markedSpans [ b ] . marker ; ! c . readOnly || d && De ( d , c ) != - 1 || ( d || ( d = [ ] ) ) . push ( c ) } } ) , ! d ) return null ; for ( var e = [ { from : b , to : c } ] , f = 0 ; f < d . length ; ++ f ) for ( var g = d [ f ] , h = g . find ( 0 ) , i = 0 ; i < e . length ; ++ i ) { var j = e [ i ] ; if ( ! ( Gf ( j . to , h . from ) < 0 || Gf ( j . from , h . to ) > 0 ) ) { var k = [ i , 1 ] , l = Gf ( j . from , h . from ) , m = Gf ( j . to , h . to ) ; ( l < 0 || ! g . inclusiveLeft && ! l ) && k . push ( { from : j . from , to : h . from } ) , ( m > 0 || ! g . inclusiveRight && ! m ) && k . push ( { from : h . to , to : j . to } ) , e . splice . apply ( e , k ) , i += k . length - 1 } } return e } function fd ( a ) { var b = a . markedSpans ; if ( b ) { for ( var c = 0 ; c < b . length ; ++ c ) b [ c ] . marker . detachLine ( a ) ; a . markedSpans = null } } function gd ( a , b ) { if ( b ) { for ( var c = 0 ; c < b . length ; ++ c ) b [ c ] . marker . attachLine ( a ) ; a . markedSpans = b } } function hd ( a ) { return a . inclusiveLeft ? - 1 : 0 } function id ( a ) { return a . inclusiveRight ? 1 : 0 } function jd ( a , b ) { var c = a . lines . length - b . lines . length ; if ( 0 != c ) return c ; var d = a . find ( ) , e = b . find ( ) , f = Gf ( d . from , e . from ) || hd ( a ) - hd ( b ) ; if ( f ) return - f ; var g = Gf ( d . to , e . to ) || id ( a ) - id ( b ) ; return g ? g : b . id - a . id } function kd ( a , b ) { var c , d = Ef && a . markedSpans ; if ( d ) for ( var e , f = 0 ; f < d . length ; ++ f ) e = d [ f ] , e . marker . collapsed && null == ( b ? e . from : e . to ) && ( ! c || jd ( c , e . marker ) < 0 ) && ( c = e . marker ) ; return c } function ld ( a ) { return kd ( a , ! 0 ) } function md ( a ) { return kd ( a , ! 1 ) } function nd ( a , b , c , d , e ) { var f = Vd ( a , b ) , g = Ef && f . markedSpans ; if ( g ) for ( var h = 0 ; h < g . length ; ++ h ) { var i = g [ h ] ; if ( i . marker . collapsed ) { var j = i . marker . find ( 0 ) , k = Gf ( j . from , c ) || hd ( i . marker ) - hd ( e ) , l = Gf ( j . to , d ) || id ( i . marker ) - id ( e ) ; if ( ! ( k >= 0 && l <= 0 || k <= 0 && l >= 0 ) && ( k <= 0 && ( Gf ( j . to , c ) > 0 || i . marker . inclusiveRight && e . inclusiveLeft ) || k >= 0 && ( Gf ( j . from , d ) < 0 || i . marker . inclusiveLeft && e . inclusiveRight ) ) ) return ! 0 } } } function od ( a ) { for ( var b ; b = ld ( a ) ; ) a = b . find ( - 1 , ! 0 ) . line ; return a } function pd ( a ) { for ( var b , c ; b = md ( a ) ; ) a = b . find ( 1 , ! 0 ) . line , ( c || ( c = [ ] ) ) . push ( a ) ; return c } function qd ( a , b ) { var c = Vd ( a , b ) , d = od ( c ) ; return c == d ? b : Zd ( d ) } function rd ( a , b ) { if ( b > a . lastLine ( ) ) return b ; var c , d = Vd ( a , b ) ; if ( ! sd ( a , d ) ) return b ; for ( ; c = md ( d ) ; ) d = c . find ( 1 , ! 0 ) . line ; return Zd ( d ) + 1 } function sd ( a , b ) { var c = Ef && b . markedSpans ; if ( c ) for ( var d , e = 0 ; e < c . length ; ++ e ) if ( d = c [ e ] , d . marker . collapsed ) { if ( null == d . from ) return ! 0 ; if ( ! d . marker . widgetNode && 0 == d . from && d . marker . inclusiveLeft && td ( a , b , d ) ) return ! 0 } } 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 . alignWid
} ) , xg ( e , "compositionend" , function ( a ) { var b = c . composing ; b && ( a . data == b . startData || /\u200b/ . test ( a . data ) || ( b . data = a . data ) , setTimeout ( function ( ) { b . handled || c . applyComposition ( b ) , c . composing == b && ( c . composing = null ) } , 50 ) ) } ) , xg ( e , "touchstart" , function ( ) { c . forceCompositionEnd ( ) } ) , xg ( e , "input" , function ( ) { c . composing || c . pollContent ( ) || Cb ( c . cm , function ( ) { Ib ( d ) } ) } ) , xg ( e , "copy" , b ) , xg ( e , "cut" , b ) } , prepareSelection : function ( ) { var a = Ia ( this . cm , ! 1 ) ; return a . focus = this . cm . state . focused , a } , showSelection : function ( a ) { a && this . cm . display . view . length && ( a . focus && this . showPrimarySelection ( ) , this . showMultipleSelections ( a ) ) } , showPrimarySelection : function ( ) { var a = window . getSelection ( ) , b = this . cm . doc . sel . primary ( ) , c = ia ( this . cm , a . anchorNode , a . anchorOffset ) , d = ia ( this . cm , a . focusNode , a . focusOffset ) ; if ( ! c || c . bad || ! d || d . bad || 0 != Gf ( X ( c , d ) , b . from ( ) ) || 0 != Gf ( W ( c , d ) , b . to ( ) ) ) { var e = ga ( this . cm , b . from ( ) ) , f = ga ( this . cm , b . to ( ) ) ; if ( e || f ) { var g = this . cm . display . view , h = a . rangeCount && a . getRangeAt ( 0 ) ; if ( e ) { if ( ! f ) { var i = g [ g . length - 1 ] . measure , j = i . maps ? i . maps [ i . maps . length - 1 ] : i . map ; f = { node : j [ j . length - 1 ] , offset : j [ j . length - 2 ] - j [ j . length - 3 ] } } } else e = { node : g [ 0 ] . measure . map [ 2 ] , offset : 0 } ; try { var k = Jg ( e . node , e . offset , f . offset , f . node ) } catch ( l ) { } k && ( a . removeAllRanges ( ) , a . addRange ( k ) , h && null == a . anchorNode ? a . addRange ( h ) : kf && this . startGracePeriod ( ) ) , this . rememberSelection ( ) } } } , startGracePeriod : function ( ) { var a = this ; clearTimeout ( this . gracePeriod ) , this . gracePeriod = setTimeout ( function ( ) { a . gracePeriod = ! 1 , a . selectionChanged ( ) && a . cm . operation ( function ( ) { a . cm . curOp . selectionChanged = ! 0 } ) } , 20 ) } , showMultipleSelections : function ( a ) { Oe ( this . cm . display . cursorDiv , a . cursors ) , Oe ( this . cm . display . selectionDiv , a . selection ) } , rememberSelection : function ( ) { var a = window . getSelection ( ) ; this . lastAnchorNode = a . anchorNode , this . lastAnchorOffset = a . anchorOffset , this . lastFocusNode = a . focusNode , this . lastFocusOffset = a . focusOffset } , selectionInEditor : function ( ) { var a = window . getSelection ( ) ; if ( ! a . rangeCount ) return ! 1 ; var b = a . getRangeAt ( 0 ) . commonAncestorContainer ; return Ng ( this . div , b ) } , focus : function ( ) { "nocursor" != this . cm . options . readOnly && this . div . focus ( ) } , blur : function ( ) { this . div . blur ( ) } , getField : function ( ) { return this . div } , supportsTouch : function ( ) { return ! 0 } , receivedFocus : function ( ) { function a ( ) { b . cm . state . focused && ( b . pollSelection ( ) , b . polling . set ( b . cm . options . pollInterval , a ) ) } var b = this ; this . selectionInEditor ( ) ? this . pollSelection ( ) : Cb ( this . cm , function ( ) { b . cm . curOp . selectionChanged = ! 0 } ) , this . polling . set ( this . cm . options . pollInterval , a ) } , selectionChanged : function ( ) { var a = window . getSelection ( ) ; return a . anchorNode != this . lastAnchorNode || a . anchorOffset != this . lastAnchorOffset || a . focusNode != this . lastFocusNode || a . focusOffset != this . lastFocusOffset } , pollSelection : function ( ) { if ( ! this . composing && ! this . gracePeriod && this . selectionChanged ( ) ) { var a = window . getSelection ( ) , b = this . cm ; this . rememberSelection ( ) ; var c = ia ( b , a . anchorNode , a . anchorOffset ) , d = ia ( b , a . focusNode , a . focusOffset ) ; c && d && Cb ( b , function ( ) { Ba ( b . doc , oa ( c , d ) , Dg ) , ( c . bad || d . bad ) && ( b . curOp . selectionChanged = ! 0 ) } ) } } , pollContent : function ( ) { var a = this . cm , b = a . display , c = a . doc . sel . primary ( ) , d = c . from ( ) , e = c . to ( ) ; if ( d . line < b . viewFrom || e . line > b . viewTo - 1 ) return ! 1 ; var f ; if ( d . line == b . viewFrom || 0 == ( f = Lb ( a , d . line ) ) ) var g = Zd ( b . view [ 0 ] . line ) , h = b . view [ 0 ] . node ; else var g = Zd ( b . view [ f ] . line ) , h = b . view [ f - 1 ] . node . nextSibling ; 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 . forceCompo
} } ; var jg = 0 , lg = a . SharedTextMarker = function ( a , b ) { this . markers = a , this . primary = b ; for ( var c = 0 ; c < a . length ; ++ c ) a [ c ] . parent = this } ; ye ( lg ) , lg . prototype . clear = function ( ) { if ( ! this . explicitlyCleared ) { this . explicitlyCleared = ! 0 ; for ( var a = 0 ; a < this . markers . length ; ++ a ) this . markers [ a ] . clear ( ) ; te ( this , "clear" ) } } , lg . prototype . find = function ( a , b ) { return this . primary . find ( a , b ) } ; var mg = a . LineWidget = function ( a , b , c ) { if ( c ) for ( var d in c ) c . hasOwnProperty ( d ) && ( this [ d ] = c [ d ] ) ; this . doc = a , this . node = b } ; ye ( mg ) , mg . prototype . clear = function ( ) { var a = this . doc . cm , b = this . line . widgets , c = this . line , d = Zd ( c ) ; if ( null != d && b ) { for ( var e = 0 ; e < b . length ; ++ e ) b [ e ] == this && b . splice ( e -- , 1 ) ; b . length || ( c . widgets = null ) ; var f = vd ( this ) ; Yd ( c , Math . max ( 0 , c . height - f ) ) , a && Cb ( a , function ( ) { ud ( a , c , - f ) , Jb ( a , d , "widget" ) } ) } } , mg . prototype . changed = function ( ) { var a = this . height , b = this . doc . cm , c = this . line ; this . height = null ; var d = vd ( this ) - a ; d && ( Yd ( c , c . height + d ) , b && Cb ( b , function ( ) { b . curOp . forceUpdate = ! 0 , ud ( b , c , d ) } ) ) } ; var ng = a . Line = function ( a , b , c ) { this . text = a , gd ( this , b ) , this . height = c ? c ( this ) : 1 } ; ye ( ng ) , ng . prototype . lineNo = function ( ) { return Zd ( this ) } ; var og = { } , pg = { } ; Rd . prototype = { chunkSize : function ( ) { return this . lines . length } , removeInner : function ( a , b ) { for ( var c = a , d = a + b ; c < d ; ++ c ) { var e = this . lines [ c ] ; this . height -= e . height , yd ( e ) , te ( e , "delete" ) } this . lines . splice ( a , b ) } , collapse : function ( a ) { a . push . apply ( a , this . lines ) } , insertInner : function ( a , b , c ) { this . height += c , this . lines = this . lines . slice ( 0 , a ) . concat ( b ) . concat ( this . lines . slice ( a ) ) ; for ( var d = 0 ; d < b . length ; ++ d ) b [ d ] . parent = this } , iterN : function ( a , b , c ) { for ( var d = a + b ; a < d ; ++ a ) if ( c ( this . lines [ a ] ) ) return ! 0 } } , Sd . prototype = { chunkSize : function ( ) { return this . size } , removeInner : function ( a , b ) { this . size -= b ; for ( var c = 0 ; c < this . children . length ; ++ c ) { var d = this . children [ c ] , e = d . chunkSize ( ) ; if ( a < e ) { var f = Math . min ( b , e - a ) , g = d . height ; if ( d . removeInner ( a , f ) , this . height -= g - d . height , e == f && ( this . children . splice ( c -- , 1 ) , d . parent = null ) , 0 == ( b -= f ) ) break ; a = 0 } else a -= e } if ( this . size - b < 25 && ( this . children . length > 1 || ! ( this . children [ 0 ] instanceof Rd ) ) ) { var h = [ ] ; this . collapse ( h ) , this . children = [ new Rd ( h ) ] , this . children [ 0 ] . parent = this } } , collapse : function ( a ) { for ( var b = 0 ; b < this . children . length ; ++ b ) this . children [ b ] . collapse ( a ) } , insertInner : function ( a , b , c ) { this . size += b . length , this . height += c ; for ( var d = 0 ; d < this . children . length ; ++ d ) { var e = this . children [ d ] , f = e . chunkSize ( ) ; if ( a <= f ) { if ( e . insertInner ( a , b , c ) , e . lines && e . lines . length > 50 ) { for ( ; e . lines . length > 50 ; ) { var g = e . lines . splice ( e . lines . length - 25 , 25 ) , h = new Rd ( g ) ; e . height -= h . height , this . children . splice ( d + 1 , 0 , h ) , h . parent = this } this . maybeSpill ( ) } break } a -= f } } , maybeSpill : function ( ) { if ( ! ( this . children . length <= 10 ) ) { var a = this ; do { var b = a . children . splice ( a . children . length - 5 , 5 ) , c = new Sd ( b ) ; if ( a . parent ) { a . size -= c . size , a . height -= c . height ; var d = De ( a . parent . children , a ) ; a . parent . children . splice ( d + 1 , 0 , c ) } else { var e = new Sd ( a . children ) ; e . parent = a , a . children = [ e , c ] , a = e } c . parent = a . parent } while ( a . children . length > 10 ) ; a . parent . maybeSpill ( ) } } , iterN : function ( a , b , c ) { for ( var d = 0 ; d < this . children . length ; ++ d ) { var e = this . children [ d ] , f = e . chunkSize ( ) ; if ( a < f ) { var g = Math . min ( b , f - a ) ; if ( e . iterN ( a , g , c ) ) return ! 0 ; if ( 0 == ( b -= g ) ) break ; a = 0 } else a -= f } } } ; var qg = 0 , rg = a . Doc = function ( a , b , c ) { if ( ! ( this instanceof rg ) ) return new rg ( a , b , c ) ; null == c && ( c = 0 ) , Sd . call ( this , [ new Rd ( [ new ng ( "" , null ) ] ) ] ) , 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 ,
BI . FormulaEditor = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return $ . extend ( BI . FormulaEditor . superclass . _defaultConfig . apply ( ) , { baseCls : "bi-formula-editor bi-card" , watermark : "" , value : "" , fieldTextValueMap : { } , showHint : ! 0 , lineHeight : 2 } ) } , _init : function ( ) { BI . FormulaEditor . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; if ( this . editor = CodeMirror ( this . element [ 0 ] , { textWrapping : ! 0 , lineWrapping : ! 0 , lineNumbers : ! 1 , mode : "formula" } ) , 1 === a . lineHeight ? this . element . addClass ( "codemirror-low-line-height" ) : this . element . addClass ( "codemirror-high-line-height" ) , this . editor . on ( "change" , function ( c , d ) { b . _checkWaterMark ( ) , a . showHint && CodeMirror . showHint ( c , CodeMirror . formulaHint , { completeSingle : ! 1 } ) , BI . nextTick ( function ( ) { b . fireEvent ( BI . FormulaEditor . EVENT _CHANGE ) } ) } ) , this . editor . on ( "focus" , function ( ) { b . _checkWaterMark ( ) , b . fireEvent ( BI . FormulaEditor . EVENT _FOCUS ) } ) , this . editor . on ( "blur" , function ( ) { b . fireEvent ( BI . FormulaEditor . EVENT _BLUR ) } ) , BI . isKey ( a . value ) && b . setValue ( a . value ) , BI . isKey ( this . options . watermark ) ) { var b = this ; this . watermark = BI . createWidget ( { type : "bi.label" , cls : "bi-water-mark" , text : this . options . watermark , whiteSpace : "nowrap" , textAlign : "left" } ) , BI . createWidget ( { type : "bi.absolute" , element : b , items : [ { el : b . watermark , left : 0 , top : 0 } ] } ) , this . watermark . element . bind ( "mousedown" , function ( a ) { b . insertString ( "" ) , b . editor . focus ( ) , a . stopEvent ( ) } ) , this . watermark . element . bind ( "click" , function ( a ) { b . editor . focus ( ) , a . stopEvent ( ) } ) , this . watermark . element . css ( { position : "absolute" , left : 3 , right : 3 , top : 6 , bottom : 0 } ) } } , _checkWaterMark : function ( ) { var a = this . options ; ! this . disabledWaterMark && BI . isEmptyString ( this . editor . getValue ( ) ) && BI . isKey ( a . watermark ) ? this . watermark && this . watermark . visible ( ) : this . watermark && this . watermark . invisible ( ) } , disableWaterMark : function ( ) { this . disabledWaterMark = ! 0 , this . _checkWaterMark ( ) } , focus : function ( ) { this . editor . focus ( ) } , insertField : function ( a ) { var b = this . editor . getCursor ( ) ; this . editor . replaceSelection ( a ) ; var c = this . editor . getCursor ( ) ; this . editor . markText ( b , c , { className : "fieldName" , atomic : ! 0 , startStyle : "start" , endStyle : "end" } ) , this . editor . replaceSelection ( " " ) , this . editor . focus ( ) } , insertFunction : function ( a ) { var b = this . editor . getCursor ( ) ; this . editor . replaceSelection ( a ) ; var c = this . editor . getCursor ( ) ; this . editor . markText ( b , c , { className : "#function" , atomic : ! 0 } ) , this . editor . replaceSelection ( "() " ) , c = this . editor . getCursor ( ) , c . ch = c . ch - 2 , this . editor . setCursor ( c ) , this . editor . focus ( ) } , insertOperator : function ( a ) { var b = this . editor . getCursor ( ) ; this . editor . replaceSelection ( a ) ; var c = this . editor . getCursor ( ) ; this . editor . markText ( b , c , { className : "%operator" , atomic : ! 0 } ) , this . editor . replaceSelection ( " " ) , this . editor . focus ( ) } , setFunction : function ( a ) { var b = this . editor . getCursor ( ) ; this . editor . replaceSelection ( a ) ; var c = this . editor . getCursor ( ) ; this . editor . markText ( b , c , { className : "#function" , atomic : ! 0 } ) } , insertString : function ( a ) { this . editor . replaceSelection ( a ) , this . editor . focus ( ) } , getFormulaString : function ( ) { return this . editor . getValue ( ) } , getUsedFields : function ( ) { var a = this . options . fieldTextValueMap , b = [ ] ; return this . editor . getValue ( ! 0 , function ( c ) { 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 . Form
a . stopEvent ( ) , ! 1 ) : ( BI . Key [ a . keyCode ] || a . keyCode === BI . KeyCode . TAB || a . keyCode === BI . KeyCode . ENTER || a . keyCode === BI . KeyCode . SPACE ) && this . _isParam ( b ) ? ( a . stopEvent ( ) , ! 1 ) : a . keyCode !== BI . KeyCode . BACKSPACE && a . keyCode !== BI . KeyCode . DELETE || ! this . _isParam ( b ) ? void 0 : ( b . destroy ( ) , a . preventDefault ( ) , ! 1 ) } , key : function ( a ) { } } ) , BI . RichEditorTextToolbar = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . RichEditorTextToolbar . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-rich-editor-text-toolbar bi-background" , buttons : [ { type : "bi.rich_editor_size_chooser" } , { type : "bi.rich_editor_bold_button" } , { type : "bi.rich_editor_italic_button" } , { type : "bi.rich_editor_underline_button" } , { type : "bi.rich_editor_color_chooser" } , { type : "bi.rich_editor_background_color_chooser" } , { type : "bi.rich_editor_align_left_button" } , { type : "bi.rich_editor_align_center_button" } , { type : "bi.rich_editor_align_right_button" } , { type : "bi.rich_editor_param_button" } ] , height : 28 } ) } , _init : function ( ) { BI . RichEditorTextToolbar . superclass . _init . apply ( this , arguments ) ; var a = this . options ; BI . createWidget ( { type : "bi.left" , element : this , items : BI . map ( a . buttons , function ( b , c ) { return BI . extend ( c , { editor : a . editor } ) } ) , hgap : 3 , vgap : 3 } ) } , mounted : function ( ) { var a = this ; BI . isIE9Below ( ) && ( this . element . mousedown ( function ( ) { a . _noSelect ( a . element [ 0 ] ) } ) , this . _noSelect ( this . element [ 0 ] ) ) } , _noSelect : function ( a ) { a . setAttribute && "input" != a . nodeName . toLowerCase ( ) && "textarea" != a . nodeName . toLowerCase ( ) && a . setAttribute ( "unselectable" , "on" ) ; for ( var b = 0 ; b < a . childNodes . length ; b ++ ) this . _noSelect ( a . childNodes [ b ] ) } } ) , BI . shortcut ( "bi.rich_editor_text_toolbar" , BI . RichEditorTextToolbar ) , ! function ( ) { BI . NicEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . NicEditor . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-nic-editor" } ) } , _init : function ( ) { BI . NicEditor . superclass . _init . apply ( this , arguments ) ; this . options ; $ ( document ) . bind ( "mousedown." + this . getName ( ) , BI . bind ( this . selectCheck , this ) ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ { type : "bi.layout" , height : 1 } , this . instance = this . addInstance ( ) ] } ) } , addInstance : function ( ) { var a = this . options , c = { ne : this , height : a . height - 1 , maxHeight : a . maxHeight ? a . maxHeight : null } ; if ( this . element [ 0 ] . contentEditable || window . opera ) var d = new b ( c ) ; else console . error ( "不支持此浏览器" ) ; return d } , nicCommand : function ( a , b ) { this . selectedInstance && this . selectedInstance . nicCommand ( a , b ) } , selectCheck : function ( b ) { var c = b . target ; do if ( "svg" !== c . nodeName && c . className && c . className . indexOf ( a ) != - 1 ) return ; while ( c = c . parentNode ) ; this . fireEvent ( "blur" , c ) , this . lastSelectedInstance = this . selectedInstance , this . selectedInstance = null } , setValue : function ( a ) { this . instance . setContent ( a ) } , getValue : function ( ) { return this . instance . getContent ( ) } , destroyed : function ( ) { $ ( document ) . unbind ( "mousedown." + this . getName ( ) ) } } ) , BI . NicEditor . EVENT _SELECTED = "selected" , BI . NicEditor . EVENT _BLUR = "blur" , BI . NicEditor . EVENT _KEYDOWN = "keydown" , BI . shortcut ( "bi.nic_editor" , BI . NicEditor ) ; var a = "niceditor-" , b = BI . inherit ( BI . Layout , { isSelected : ! 1 , _init : function ( ) { b . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . ne = this . options . ne , this . elm = BI . createWidget ( { type : "bi.layout" , width : a . width - 8 , scrollable : ! 1 } ) , this . elm . element . css ( { margin : "4px" , minHeight : a . height - 8 + "px" , outline : "none" } ) . html ( a . value ) , this . element . css ( "maxHeight" , a . maxHeight ? a . maxHeight + "px" : null ) , this . e = BI . createWidget ( { type : "bi.layout" , invisible : ! 0 , tagName : "textarea" } ) , BI . createWidget ( { type : "bi.default" , element : this , scrolly : ! 0 , items : [ this . elm , this . e ] } ) , this . ne . on ( "blur" , BI . bind ( this . blur , this ) ) , this . start ( ) , this . blur ( ) } , start : function ( ) { this . elm . element . attr ( "contentEditable" , ! 0 ) , "" == this . getContent ( ) , this . instanceDoc = document . defaultView , this . elm . element . on ( "mousedown" , BI . bind ( this . selected , this ) ) , this . elm . element . on ( "keydown" , BI . bind ( this . keyDown , this ) ) , this . elm . element . on ( "focus" , BI . bind ( this . selected , this ) ) , this . elm . element . on ( "blur" , BI . bind ( this . blur , this ) ) , this . elm . element . on ( "keyup" , BI . bind ( this . selected , this ) ) , this . ne . fireEvent ( "add" ) } , disable : function ( ) { this . elm . element . attr ( "contentEditable" , ! 1 ) } , getSel : function ( ) { re
} ) ; var c = BI . createWidget ( { type : "bi.center_adapt" , cls : a . iconCls1 , width : b . commonWidth , height : a . height , items : [ { el : { type : "bi.icon" , width : a . iconWidth , height : a . iconHeight } } ] } ) , d = BI . createWidget ( { type : "bi.layout" , width : b . commonWidth } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.center_adapt" , cls : a . iconCls2 , width : b . commonWidth , items : [ { el : { type : "bi.icon" , width : a . iconWidth , height : a . iconHeight } } ] } , top : 0 , bottom : 0 , right : 0 } ] } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , c , this . text , d ) } ) ) ) ) } , doClick : function ( ) { BI . IconTextIconItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . IconTextIconItem . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } } ) , BI . IconTextIconItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_icon_item" , BI . IconTextIconItem ) , BI . IconTextItem = BI . inherit ( BI . BasicButton , { _const : { commonWidth : 25 } , _defaultConfig : function ( ) { var a = BI . IconTextItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-icon-text-item" , direction : BI . Direction . Left , logic : { dynamic : ! 1 } , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . IconTextItem . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , hgap : a . textHgap , vgap : a . textVgap , lgap : a . textLgap , rgap : a . textRgap , text : a . text , value : a . value , keyword : a . keyword , height : a . height } ) , this . icon = BI . createWidget ( { type : "bi.center_adapt" , width : b . commonWidth , height : a . height , items : [ { el : { type : "bi.icon" , width : a . iconWidth , height : a . iconHeight } } ] } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( a . direction ) , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( a . direction , this . icon , this . text ) } ) ) ) ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } , doClick : function ( ) { BI . IconTextItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . IconTextItem . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } } ) , BI . IconTextItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_item" , BI . IconTextItem ) , BI . TextIconItem = BI . inherit ( BI . BasicButton , { _const : { commonWidth : 25 } , _defaultConfig : function ( ) { var a = BI . TextIconItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-icon-item" , logic : { dynamic : ! 1 } , cls : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . TextIconItem . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , hgap : a . textHgap , vgap : a . textVgap , lgap : a . textLgap , rgap : a . textRgap , text : a . text , value : a . value , keyword : a . keyword , height : a . height } ) , this . icon = BI . createWidget ( { type : "bi.center_adapt" , width : b . commonWidth , height : a . height , items : [ { el : { type : "bi.icon" , width : a . iconWidth , height : a . iconHeight } } ] } ) , BI . createWidget
1 == a . maxlength ? a . attach _array [ 0 ] = b : a . attach _array . push ( b ) } } ; else { var h = { loaded : 0 , total : a . file . fileSize || a . file . size , simulation : ! 0 } ; h . interval = setInterval ( function ( ) { h . loaded += 256 , h . total <= h . loaded && ( h . loaded = h . total ) , f . onprogress ( h ) } , 100 ) , e . onabort = function ( ) { f . onabort ( { } ) } , e . onerror = function ( ) { f . onerror ( { } ) } , e . onreadystatechange = function ( ) { switch ( e . readyState ) { case 2 : case 3 : h . total <= h . loaded && ( h . loaded = h . total ) , f . onprogress ( h ) ; break ; case 4 : if ( clearInterval ( h . interval ) , h . interval = 0 , h . loaded = h . total , f . onprogress ( h ) , 199 < e . status && e . status < 400 ) { f . onload ( { } ) ; var b = BI . jsonDecode ( e . responseText ) ; b . filename = a . file . fileName , a . file . type . indexOf ( "image" ) != - 1 && ( b . attach _type = "image" ) , a . attach _array . push ( b ) } else f . onerror ( { } ) } } , f . onloadstart ( h ) } var i = "AjaxUploadBoundary" + ( new Date ) . getTime ( ) ; if ( e . setRequestHeader ( "Content-Type" , "multipart/form-data; boundary=" + i ) , a . file . getAsBinary ) e [ e . sendAsBinary ? "sendAsBinary" : "send" ] ( multipart ( i , a . name , a . file ) ) ; else { e . setRequestHeader ( "Content-Type" , "multipart/form-data" ) ; var j = new FormData ; j . append ( "FileData" , a . file ) , e . send ( j ) } return a } : function ( handler , maxSize , width , height ) { var url = handler . url . concat ( - 1 === handler . url . indexOf ( "?" ) ? "?" : "&" , "AjaxUploadFrame=true" ) , rpe = { loaded : 1 , total : 100 , simulation : ! 0 , interval : setInterval ( function ( ) { rpe . loaded < rpe . total && ++ rpe . loaded , isFunction ( handler . onprogress ) && handler . onprogress ( rpe , { } ) } , 100 ) } , onload = function ( ) { iframe . onreadystatechange = iframe . onload = iframe . onerror = null , form . parentNode . removeChild ( form ) , form = null , clearInterval ( rpe . interval ) ; try { var a = ( iframe . contentWindow . document || iframe . contentWindow . contentDocument ) . body . innerHTML , b = BI . jsonDecode ( a ) ; handler . file . type . indexOf ( "image" ) != - 1 && ( b . attach _type = "image" ) , b . filename = BI . cjkDecode ( handler . file . fileName ) , 1 == handler . maxlength ? handler . attach _array [ 0 ] = b : handler . attach _array . push ( b ) } catch ( c ) { isFunction ( handler . onerror ) && handler . onerror ( rpe , event || window . event ) } isFunction ( handler . onload ) && handler . onload ( rpe , { responseText : a } ) } , target = [ "AjaxUpload" , ( new Date ) . getTime ( ) , String ( Math . random ( ) ) . substring ( 2 ) ] . join ( "_" ) ; try { var form = document . createElement ( '<form enctype="multipart/form-data"></form>' ) , iframe = handler . iframe || ( handler . iframe = document . createElement ( '<iframe id="' + target + '" name="' + target + '" src="' + url + '"></iframe>' ) ) } catch ( e ) { var form = document . createElement ( "form" ) , iframe = handler . iframe || ( handler . iframe = document . createElement ( "iframe" ) ) ; form . setAttribute ( "enctype" , "multipart/form-data" ) , iframe . setAttribute ( "name" , iframe . id = target ) , iframe . setAttribute ( "src" , url ) } with ( iframe . style . position = "absolute" , iframe . style . left = iframe . style . top = "-10000px" , iframe . onload = onload , iframe . onerror = function ( a ) { isFunction ( handler . onerror ) && handler . onerror ( rpe , a || window . event ) } , iframe . onreadystatechange = function ( ) { /loaded|complete/i . test ( iframe . readyState ) ? onload ( ) : isFunction ( handler . onloadprogress ) && ( rpe . loaded < rpe . total && ++ rpe . loaded , handler . onloadprogress ( rpe , { readyState : { loading : 2 , interactive : 3 , loaded : 4 , complete : 4 } [ iframe . readyState ] || 1 } ) ) } , form . setAttribute ( "action" , handler . url ) , form . setAttribute ( "target" , iframe . id ) , form . setAttribute ( "method" , "post" ) , form . appendChild ( handler . file ) , form . style . display = "none" , isFunction ( handler . onloadstart ) && handler . onloadstart ( rpe , { } ) , document . body || document . documentElement ) appendChild ( iframe ) , appendChild ( form ) , form . submit ( ) ; return handler } , xhr = null , sendFile } ( Object . prototype . toString ) , sendFiles = function ( a , b , c , d ) { var e = a . files . length , f = a . onload , g = a . onloadstart ; for ( a . current = 0 , a . total = 0 , a . sent = 0 ; a . current < e ; ) a . total += a . files [ a . current ] . fileSize || a . files [ a . current ] . size , a . current ++ ; return a . current = 0 , e && a . files [ 0 ] . fileSize !== - 1 ? ( a . file = a . files [ a . current ] , sendFile ( a , b , c , d ) . onload = function ( h , i ) { a . onloadstart = null , a . sent += a . files [ a . current ] . fileSize || a . files [ a . current ] . size , ++ a . current < e ? ( a . file = a . files [ a . current ] , sendFile ( a , b , c , d ) . onload = arguments . callee ) : f && ( a . onloadstart = g , a . onload = f , a . onload ( h , i ) ) } ) : e && ( a . total = 100 * e , a . file = a . files [ a . current ] , sendFile ( a , b , c , d ) . onload = function ( h , i ) { var j = arguments . callee ; a . onloadstart = null , a . sent += 100 , ++ a . current < e ? ( /\b(chrome|safari)\b/i . test ( navigator
w [ x ] . bez2 = o ; p = p . concat ( w ) } } } } } return p } function n ( a , b , c , d , e , f ) { null != a ? ( this . a = + a , this . b = + b , this . c = + c , this . d = + d , this . e = + e , this . f = + f ) : ( this . a = 1 , this . b = 0 , this . c = 0 , this . d = 1 , this . e = 0 , this . f = 0 ) } function o ( ) { return this . x + G + this . y + G + this . width + " × " + this . height } function p ( a , b , c , d , e , f ) { function g ( a ) { return ( ( l * a + k ) * a + j ) * a } function h ( a , b ) { var c = i ( a , b ) ; return ( ( o * c + n ) * c + m ) * c } function i ( a , b ) { var c , d , e , f , h , i ; for ( e = a , i = 0 ; i < 8 ; i ++ ) { if ( f = g ( e ) - a , P ( f ) < b ) return e ; if ( h = ( 3 * l * e + 2 * k ) * e + j , P ( h ) < 1e-6 ) break ; e -= f / h } if ( c = 0 , d = 1 , e = a , e < c ) return c ; if ( e > d ) return d ; for ( ; c < d ; ) { if ( f = g ( e ) , P ( f - a ) < b ) return e ; a > f ? c = e : d = e , e = ( d - c ) / 2 + c } return e } var j = 3 * b , k = 3 * ( d - b ) - j , l = 1 - j - k , m = 3 * c , n = 3 * ( e - c ) - m , o = 1 - m - n ; return h ( a , 1 / ( 200 * f ) ) } function q ( a , b ) { var c = [ ] , d = { } ; if ( this . ms = b , this . times = 1 , a ) { for ( var e in a ) a [ y ] ( e ) && ( d [ $ ( e ) ] = a [ e ] , c . push ( $ ( e ) ) ) ; c . sort ( ka ) } this . anim = d , this . top = c [ c . length - 1 ] , this . percents = c } function r ( c , d , e , f , g , h ) { e = $ ( e ) ; var i , j , k , l , m , o , q = c . ms , r = { } , s = { } , t = { } ; if ( f ) for ( w = 0 , x = fb . length ; w < x ; w ++ ) { var u = fb [ w ] ; if ( u . el . id == d . id && u . anim == c ) { u . percent != e ? ( fb . splice ( w , 1 ) , k = 1 ) : j = u , d . attr ( u . totalOrigin ) ; break } } else f = + s ; for ( var w = 0 , x = c . percents . length ; w < x ; w ++ ) { if ( c . percents [ w ] == e || c . percents [ w ] > f * c . top ) { e = c . percents [ w ] , m = c . percents [ w - 1 ] || 0 , q = q / c . top * ( e - m ) , l = c . percents [ w + 1 ] , i = c . anim [ e ] ; break } f && d . attr ( c . anim [ c . percents [ w ] ] ) } if ( i ) { if ( j ) j . initstatus = f , j . start = new Date - j . ms * f ; else { for ( var z in i ) if ( i [ y ] ( z ) && ( ca [ y ] ( z ) || d . paper . customAttributes [ y ] ( z ) ) ) switch ( r [ z ] = d . attr ( z ) , null == r [ z ] && ( r [ z ] = ba [ z ] ) , s [ z ] = i [ z ] , ca [ z ] ) { case S : t [ z ] = ( s [ z ] - r [ z ] ) / q ; break ; case "colour" : r [ z ] = b . getRGB ( r [ z ] ) ; var A = b . getRGB ( s [ z ] ) ; t [ z ] = { r : ( A . r - r [ z ] . r ) / q , g : ( A . g - r [ z ] . g ) / q , b : ( A . b - r [ z ] . b ) / q } ; break ; case "path" : var B = Ia ( r [ z ] , s [ z ] ) , C = B [ 1 ] ; for ( r [ z ] = B [ 0 ] , t [ z ] = [ ] , w = 0 , x = r [ z ] . length ; w < x ; w ++ ) { t [ z ] [ w ] = [ 0 ] ; for ( var E = 1 , F = r [ z ] [ w ] . length ; E < F ; E ++ ) t [ z ] [ w ] [ E ] = ( C [ w ] [ E ] - r [ z ] [ w ] [ E ] ) / q } break ; case "transform" : var G = d . _ , J = Na ( G [ z ] , s [ z ] ) ; if ( J ) for ( r [ z ] = J . from , s [ z ] = J . to , t [ z ] = [ ] , t [ z ] . real = ! 0 , w = 0 , x = r [ z ] . length ; w < x ; w ++ ) for ( t [ z ] [ w ] = [ r [ z ] [ w ] [ 0 ] ] , E = 1 , F = r [ z ] [ w ] . length ; E < F ; E ++ ) t [ z ] [ w ] [ E ] = ( s [ z ] [ w ] [ E ] - r [ z ] [ w ] [ E ] ) / q ; else { var K = d . matrix || new n , L = { _ : { transform : G . transform } , getBBox : function ( ) { return d . getBBox ( 1 ) } } ; r [ z ] = [ K . a , K . b , K . c , K . d , K . e , K . f ] , La ( L , s [ z ] ) , s [ z ] = L . _ . transform , t [ z ] = [ ( L . matrix . a - K . a ) / q , ( L . matrix . b - K . b ) / q , ( L . matrix . c - K . c ) / q , ( L . matrix . d - K . d ) / q , ( L . matrix . e - K . e ) / q , ( L . matrix . f - K . f ) / q ] } break ; case "csv" : var M = H ( i [ z ] ) [ I ] ( v ) , N = H ( r [ z ] ) [ I ] ( v ) ; if ( "clip-rect" == z ) for ( r [ z ] = N , t [ z ] = [ ] , w = N . length ; w -- ; ) t [ z ] [ w ] = ( M [ w ] - r [ z ] [ w ] ) / q ; s [ z ] = M ; break ; default : for ( M = [ ] [ D ] ( i [ z ] ) , N = [ ] [ D ] ( r [ z ] ) , t [ z ] = [ ] , w = d . paper . customAttributes [ z ] . length ; w -- ; ) t [ z ] [ w ] = ( ( M [ w ] || 0 ) - ( N [ w ] || 0 ) ) / q } var O = i . easing , P = b . easing _formulas [ O ] ; if ( ! P ) if ( P = H ( O ) . match ( Y ) , P && 5 == P . length ) { var Q = P ; P = function ( a ) { return p ( a , + Q [ 1 ] , + Q [ 2 ] , + Q [ 3 ] , + Q [ 4 ] , q ) } } else P = la ; if ( o = i . start || c . start || + new Date , u = { anim : c , percent : e , timestamp : o , start : o + ( c . del || 0 ) , status : 0 , initstatus : f || 0 , stop : ! 1 , ms : q , easing : P , from : r , diff : t , to : s , el : d , callback : i . callback , prev : m , next : l , repeat : h || c . times , origin : d . attr ( ) , totalOrigin : g } , fb . push ( u ) , f && ! j && ! k && ( u . stop = ! 0 , u . start = new Date - q * f , 1 == fb . length ) ) return hb ( ) ; k && ( u . start = new Date - u . ms * f ) , 1 == fb . length && gb ( hb ) } a ( "raphael.anim.start." + d . id , d , c ) } } function s ( a ) { for ( var b = 0 ; b < fb . length ; b ++ ) fb [ b ] . el . paper == a && fb . splice ( b -- , 1 ) } b . version = "2.1.4" , b . eve = a ; var t , u , v = /[, ]+/ , w = { circle : 1 , rect : 1 , path : 1 , ellipse : 1 , text : 1 , image : 1 } , x = /\{(\d+)\}/g , y = "hasOwnProperty" , z = { doc : document , win : window } , A = { was : Object . prototype [ y ] . call ( z . win , "Raphael" ) , is : z . win . Raphael } , B = function ( ) { this . ca = this . customAttributes = { } } , C = "apply" , D = "concat" , E = "ontouchstart" in z . win || z . win . DocumentTouch && z . doc instanceof DocumentTouch , F = "" , G = " " , H = String , I = "split" , J = "click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel" [ I ] ( G ) , K = { mousedown : "touchstart" , mousemove : "touchmove" , mouseup : "touchend" } , L = H . prototype . toLowerCase , M = Math , N = M . max , O = M . min , P = M . abs , Q = M . pow , R = M . PI , S = "number" , T = "string" , U = "array" , V = Object . prototype . toString , W = ( b . _ISURL = /^url\(['"]?(.+?)['"]?\)$/i , / ^ \ s * ( ( # [ a - f \ d ] { 6 } ) | ( # [ a - f \ d ] { 3 } ) | r g b a ? \ ( \ s * ( [ \ d \ . ] + % ? \ s * , \ s * [ \ d \ . ] + % ? \ s * , \ s * [ \ d \ . ] + % ? ( ? : \ s * , \ s * [ \ d \ . ] + % ? ) ? ) \ s * \ ) | h s b a ? \ ( \ s * ( [ \ d \ . ] + ( ? : d e g | \ x b 0 | % ) ? \ s * ,
} return a ( "raphael.data.get." + this . id , this , e [ c ] , c ) , e [ c ] } return e [ c ] = d , a ( "raphael.data.set." + this . id , this , d , c ) , this } , Xa . datum = function ( ) { return 0 == arguments . length ? this . _bindData : ( this . _bindData = arguments [ 0 ] , this ) } , Xa . removeData = function ( a ) { return null == a ? ja [ this . id ] = { } : ja [ this . id ] && delete ja [ this . id ] [ a ] , this } , Xa . getData = function ( ) { return c ( ja [ this . id ] || { } ) } , Xa . hover = function ( a , b , c , d ) { return this . mouseover ( a , c ) . mouseout ( b , d || c ) } , Xa . unhover = function ( a , b ) { return this . unmouseover ( a ) . unmouseout ( b ) } ; var Za = [ ] ; Xa . drag = function ( c , d , e , f , g , h ) { function i ( i ) { ( i . originalEvent || i ) . preventDefault ( ) ; var j = i . clientX , k = i . clientY , l = z . doc . documentElement . scrollTop || z . doc . body . scrollTop , m = z . doc . documentElement . scrollLeft || z . doc . body . scrollLeft ; if ( this . _drag . id = i . identifier , E && i . touches ) for ( var n , o = i . touches . length ; o -- ; ) if ( n = i . touches [ o ] , this . _drag . id = n . identifier , n . identifier == this . _drag . id ) { j = n . clientX , k = n . clientY ; break } this . _drag . x = j + m , this . _drag . y = k + l , ! Ua . length && b . mousemove ( Va ) . mouseup ( Wa ) , Ua . push ( { el : this , move _scope : f , start _scope : g , end _scope : h } ) , d && a . on ( "raphael.drag.start." + this . id , d ) , c && a . on ( "raphael.drag.move." + this . id , c ) , e && a . on ( "raphael.drag.end." + this . id , e ) , a ( "raphael.drag.start." + this . id , g || f || this , i . clientX + m , i . clientY + l , i ) } return this . _drag = { } , Za . push ( { el : this , start : i } ) , this . mousedown ( i ) , this } , Xa . onDragOver = function ( b ) { b ? a . on ( "raphael.drag.over." + this . id , b ) : a . unbind ( "raphael.drag.over." + this . id ) } , Xa . undrag = function ( ) { for ( var c = Za . length ; c -- ; ) Za [ c ] . el == this && ( this . unmousedown ( Za [ c ] . start ) , Za . splice ( c , 1 ) , a . unbind ( "raphael.drag.*." + this . id ) ) ; ! Za . length && b . unmousemove ( Va ) . unmouseup ( Wa ) , Ua = [ ] } , u . circle = function ( a , c , d ) { var e = b . _engine . circle ( this , a || 0 , c || 0 , d || 0 ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( e ) , e } , u . rect = function ( a , c , d , e , f ) { var g = b . _engine . rect ( this , a || 0 , c || 0 , d || 0 , e || 0 , f || 0 ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( g ) , g } , u . ellipse = function ( a , c , d , e ) { var f = b . _engine . ellipse ( this , a || 0 , c || 0 , d || 0 , e || 0 ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( f ) , f } , u . path = function ( a ) { a && ! b . is ( a , T ) && ! b . is ( a [ 0 ] , U ) && ( a += F ) ; var c = b . _engine . path ( b . format [ C ] ( b , arguments ) , this ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( c ) , c } , u . image = function ( a , c , d , e , f ) { var g = b . _engine . image ( this , a || "about:blank" , c || 0 , d || 0 , e || 0 , f || 0 ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( g ) , g } , u . text = function ( a , c , d ) { var e = b . _engine . text ( this , a || 0 , c || 0 , H ( d ) ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( e ) , e } , u . set = function ( a ) { ! b . is ( a , "array" ) && ( a = Array . prototype . splice . call ( arguments , 0 , arguments . length ) ) ; var c = new jb ( a ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( c ) , c . paper = this , c . type = "set" , c } , u . setStart = function ( a ) { this . _ _set _ _ = a || this . set ( ) } , u . setFinish = function ( a ) { var b = this . _ _set _ _ ; return delete this . _ _set _ _ , b } , u . getSize = function ( ) { var a = this . canvas . parentNode ; return { width : a . offsetWidth , height : a . offsetHeight } } , u . setSize = function ( a , c ) { return b . _engine . setSize . call ( this , a , c ) } , u . setViewBox = function ( a , c , d , e , f ) { return b . _engine . setViewBox . call ( this , a , c , d , e , f ) } , u . top = u . bottom = null , u . raphael = b ; var $a = function ( a ) { var b = a . getBoundingClientRect ( ) , c = a . ownerDocument , d = c . body , e = c . documentElement , f = e . clientTop || d . clientTop || 0 , g = e . clientLeft || d . clientLeft || 0 , h = b . top + ( z . win . pageYOffset || e . scrollTop || d . scrollTop ) - f , i = b . left + ( z . win . pageXOffset || e . scrollLeft || d . scrollLeft ) - g ; return { y : h , x : i } } ; u . getElementByPoint = function ( a , b ) { var c = this , d = c . canvas , e = z . doc . elementFromPoint ( a , b ) ; if ( z . win . opera && "svg" == e . tagName ) { var f = $a ( d ) , g = d . createSVGRect ( ) ; g . x = a - f . x , g . y = b - f . y , g . width = g . height = 1 ; var h = d . getIntersectionList ( g , null ) ; h . length && ( e = h [ h . length - 1 ] ) } if ( ! e ) return null ; for ( ; e . parentNode && e != d . parentNode && ! e . raphael ; ) e = e . parentNode ; return e == c . canvas . parentNode && ( e = d ) , e = e && e . raphael ? c . getById ( e . raphaelid ) : null } , u . getElementsByBBox = function ( a ) { var c = this . set ( ) ; return this . forEach ( function ( d ) { b . isBBoxIntersect ( d . getBBox ( ) , a ) && c . push ( d ) } ) , c } , u . getById = function ( a ) { for ( var b = this . bottom ; b ; ) { if ( b . id == a ) return b ; b = b . next } return null } , u . forEach = function ( a , b ) { for ( var c = this . bottom ; c ; ) { if ( a . call ( b , c ) === ! 1 ) return this ; c = c . next } return this } , u . getElementsByPoint = function ( a , b ) { var c = this . set ( ) ; return this . forEach ( function ( d ) { d . isPointInside ( a
cy : c , r : d , fill : "none" , stroke : "#000" } , f . type = "circle" , q ( e , f . attrs ) , f } , a . _engine . rect = function ( a , b , c , d , e , f ) { var g = q ( "rect" ) ; a . canvas && a . canvas . appendChild ( g ) ; var h = new A ( g , a ) ; return h . attrs = { x : b , y : c , width : d , height : e , rx : f || 0 , ry : f || 0 , fill : "none" , stroke : "#000" } , h . type = "rect" , q ( g , h . attrs ) , h } , a . _engine . ellipse = function ( a , b , c , d , e ) { var f = q ( "ellipse" ) ; a . canvas && a . canvas . appendChild ( f ) ; var g = new A ( f , a ) ; return g . attrs = { cx : b , cy : c , rx : d , ry : e , fill : "none" , stroke : "#000" } , g . type = "ellipse" , q ( f , g . attrs ) , g } , a . _engine . image = function ( a , b , c , d , e , f ) { var g = q ( "image" ) ; q ( g , { x : c , y : d , width : e , height : f , preserveAspectRatio : "none" } ) , g . setAttributeNS ( n , "href" , b ) , a . canvas && a . canvas . appendChild ( g ) ; var h = new A ( g , a ) ; return h . attrs = { x : c , y : d , width : e , height : f , src : b } , h . type = "image" , h } , a . _engine . text = function ( b , c , d , e ) { var f = q ( "text" ) ; b . canvas && b . canvas . appendChild ( f ) ; var g = new A ( f , b ) ; return g . attrs = { x : c , y : d , "text-anchor" : "middle" , text : e , "font-family" : a . _availableAttrs [ "font-family" ] , "font-size" : a . _availableAttrs [ "font-size" ] , stroke : "none" , fill : "#000" } , g . type = "text" , w ( g , g . attrs ) , g } , a . _engine . setSize = function ( a , b ) { return this . width = a || this . width , this . height = b || this . height , this . canvas . setAttribute ( "width" , this . width ) , this . canvas . setAttribute ( "height" , this . height ) , this . _viewBox && this . setViewBox . apply ( this , this . _viewBox ) , this } , a . _engine . create = function ( ) { var b = a . _getContainer . apply ( 0 , arguments ) , c = b && b . container , d = b . x , e = b . y , f = b . width , g = b . height ; if ( ! c ) throw new Error ( "SVG container not found." ) ; var h , i = q ( "svg" ) , j = "overflow:hidden;" ; return d = d || 0 , e = e || 0 , f = f || 512 , g = g || 342 , q ( i , { height : g , version : 1.1 , width : f , xmlns : "http://www.w3.org/2000/svg" , "xmlns:xlink" : "http://www.w3.org/1999/xlink" } ) , 1 == c ? ( i . style . cssText = j + "position:absolute;left:" + d + "px;top:" + e + "px" , a . _g . doc . body . appendChild ( i ) , h = 1 ) : ( i . style . cssText = j + "position:relative" , c . firstChild ? c . insertBefore ( i , c . firstChild ) : c . appendChild ( i ) ) , c = new a . _Paper , c . width = f , c . height = g , c . canvas = i , c . clear ( ) , c . _left = c . _top = 0 , h && ( c . renderfix = function ( ) { } ) , c . renderfix ( ) , c } , a . _engine . setViewBox = function ( a , b , c , d , e ) { k ( "raphael.setViewBox" , this , this . _viewBox , [ a , b , c , d , e ] ) ; var f , h , i = this . getSize ( ) , j = g ( c / i . width , d / i . height ) , l = this . top , n = e ? "xMidYMid meet" : "xMinYMin" ; for ( null == a ? ( this . _vbSize && ( j = 1 ) , delete this . _vbSize , f = "0 0 " + this . width + m + this . height ) : ( this . _vbSize = j , f = a + m + b + m + c + m + d ) , q ( this . canvas , { viewBox : f , preserveAspectRatio : n } ) ; j && l ; ) h = "stroke-width" in l . attrs ? l . attrs [ "stroke-width" ] : 1 , l . attr ( { "stroke-width" : h } ) , l . _ . dirty = 1 , l . _ . dirtyT = 1 , l = l . prev ; return this . _viewBox = [ a , b , c , d , ! ! e ] , this } , a . prototype . renderfix = function ( ) { var a , b = this . canvas , c = b . style ; try { a = b . getScreenCTM ( ) || b . createSVGMatrix ( ) } catch ( d ) { a = b . createSVGMatrix ( ) } var e = - a . e % 1 , f = - a . f % 1 ; ( e || f ) && ( e && ( this . _left = ( this . _left + e ) % 1 , c . left = this . _left + "px" ) , f && ( this . _top = ( this . _top + f ) % 1 , c . top = this . _top + "px" ) ) } , a . prototype . clear = function ( ) { a . eve ( "raphael.clear" , this ) ; for ( var b = this . canvas ; b . firstChild ; ) b . removeChild ( b . firstChild ) ; this . bottom = this . top = null , ( this . desc = q ( "desc" ) ) . appendChild ( a . _g . doc . createTextNode ( "Created with Raphaël " + a . version ) ) , b . appendChild ( this . desc ) , b . appendChild ( this . defs = q ( "defs" ) ) } , a . prototype . remove = function ( ) { k ( "raphael.remove" , this ) , this . canvas . parentNode && this . canvas . parentNode . removeChild ( this . canvas ) ; for ( var b in this ) this [ b ] = "function" == typeof this [ b ] ? a . _removedFactory ( b ) : null } ; var C = a . st ; for ( var D in B ) B [ b ] ( D ) && ! C [ b ] ( D ) && ( C [ D ] = function ( a ) { return function ( ) { var b = arguments ; return this . forEach ( function ( c ) { c [ a ] . apply ( c , b ) } ) } } ( D ) ) } } ) , function ( a , b ) { "function" == typeof define && define . amd ? define ( "raphael.vml" , [ "raphael.core" ] , function ( a ) { return b ( a ) } ) : b ( "object" == typeof exports ? require ( "raphael" ) : a . Raphael ) } ( this , function ( a ) { if ( ! a || a . vml ) { var b = "hasOwnProperty" , c = String , d = parseFloat , e = Math , f = e . round , g = e . max , h = e . min , i = e . abs , j = "fill" , k = /[, ]+/ , l = a . eve , m = " progid:DXImageTransform.Microsoft" , n = " " , o = "" , p = { M : "m" , L : "l" , C : "c" , Z : "x" , m : "t" , l : "r" , c : "v" , z : "x" } , q = /([clmz]),?([^clmz]*)/gi , r = / progid:\S+Blur\([^\)]+\)/g , s = /-?[^,\s-]+/g , t = "position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)" , u = 21600 , v = { path : 1 , rect : 1 , image : 1 } , w = { circle : 1 , ellipse : 1 } , x = function ( b
this . leftScrollbar . setPosition ( this . bottomLeftCollection . getScrollLeft ( ) ) , this . leftScrollbar . populate ( ) , this . rightScrollbar . setContentSize ( d ) , this . rightScrollbar . setSize ( this . _width - b ) , this . rightScrollbar . setPosition ( this . bottomRightCollection . getScrollLeft ( ) ) , this . rightScrollbar . populate ( ) ; var g = this . scrollBarLayout . attr ( "items" ) ; g [ 0 ] . top = this . _getFreezeHeaderHeight ( ) , g [ 1 ] . top = this . _height , g [ 2 ] . top = this . _height , g [ 2 ] . left = b , this . scrollBarLayout . attr ( "items" , g ) , this . scrollBarLayout . resize ( ) } , _populateTable : function ( ) { var a = this . options , b = this . getRegionSize ( ) , c = 0 , d = 0 , e = 0 , f = [ ] ; BI . each ( a . columnSize , function ( b , g ) { a . isNeedFreeze === ! 0 && a . freezeCols . contains ( b ) ? c += g : d += g , e += g , 0 === b ? f [ b ] = g : f [ b ] = f [ b - 1 ] + g } ) ; var g = b , h = this . _getFreezeHeaderHeight ( ) , i = this . _width - b , j = this . _getFreezeHeaderHeight ( ) , k = b , l = this . _height - h , m = this . _width - b , n = this . _height - j , o = g + this . _scrollBarSize , p = h + this . _scrollBarSize , q = i + this . _scrollBarSize , r = j + this . _scrollBarSize , s = k + this . _scrollBarSize , t = l + this . _scrollBarSize , u = m + this . _scrollBarSize , v = n + this . _scrollBarSize , w = function ( a ) { a . element . css ( { overflow : "scroll" , overflowX : "scroll" , overflowY : "scroll" } ) } ; this . topLeft . setWidth ( g ) , this . topLeft . setHeight ( h ) , this . topRight . setWidth ( i ) , this . topRight . setHeight ( j ) , this . bottomLeft . setWidth ( k ) , this . bottomLeft . setHeight ( l ) , this . bottomRight . setWidth ( m ) , this . bottomRight . setHeight ( n ) , this . topLeftCollection . setWidth ( o ) , this . topLeftCollection . setHeight ( p ) , this . topRightCollection . setWidth ( q ) , this . topRightCollection . setHeight ( r ) , this . bottomLeftCollection . setWidth ( s ) , this . bottomLeftCollection . setHeight ( t ) , this . bottomRightCollection . setWidth ( u ) , this . bottomRightCollection . setHeight ( v ) , w ( this . topLeftCollection ) , w ( this . topRightCollection ) , w ( this . bottomLeftCollection ) , w ( this . bottomRightCollection ) ; var x = this . contextLayout . attr ( "items" ) ; x [ 1 ] . left = b , x [ 2 ] . top = this . _getFreezeHeaderHeight ( ) , x [ 3 ] . left = b , x [ 3 ] . top = this . _getFreezeHeaderHeight ( ) , this . contextLayout . attr ( "items" , x ) , this . contextLayout . resize ( ) ; var y = [ ] , z = [ ] , A = [ ] , B = [ ] , C = function ( a , b , c ) { BI . each ( a , function ( a , d ) { var e = { type : "bi.collection_table_cell" , cell : b [ d . row ] [ d . col ] } ; c . push ( e ) } ) } ; C ( this . topLeftItems , a . header , y ) , C ( this . topRightItems , a . header , z ) , C ( this . bottomLeftItems , this . _getActualItems ( ) , A ) , C ( this . bottomRightItems , this . _getActualItems ( ) , B ) , this . topLeftCollection . _populate ( y ) , this . topRightCollection . _populate ( z ) , this . bottomLeftCollection . _populate ( A ) , this . bottomRightCollection . _populate ( B ) } , _digest : function ( ) { var a = this . options , b = this . _getFreezeColLength ( ) ; this . _getFreezeHeaderHeight ( ) <= 0 ? ( this . topLeftItems = [ ] , this . topRightItems = [ ] , this . bottomLeftItems = this . _serialize ( this . _getActualItems ( ) , 0 , b , a . rowSize , a . columnSize , a . mergeCols , BI . range ( a . header . length ) ) , this . bottomRightItems = this . _serialize ( this . _getActualItems ( ) , b , a . columnSize . length , a . rowSize , a . columnSize , a . mergeCols , BI . range ( a . header . length ) ) ) : ( this . topLeftItems = this . _serialize ( a . header , 0 , b , a . headerRowSize , a . columnSize , a . mergeCols ) , this . topRightItems = this . _serialize ( a . header , b , a . columnSize . length , a . headerRowSize , a . columnSize , ! 0 ) , this . bottomLeftItems = this . _serialize ( a . items , 0 , b , a . rowSize , a . columnSize , a . mergeCols ) , this . bottomRightItems = this . _serialize ( a . items , b , a . columnSize . length , a . rowSize , a . columnSize , a . mergeCols ) ) } , _serialize : function ( a , b , c , d , e , f , g ) { f = f || [ ] , g = g || [ ] ; for ( var h = this . options , i = [ ] , j = { } , k = { } , l = { } , m = { } , n = [ ] , o = b ; o < c ; o ++ ) o === b ? n [ o ] = e [ o ] : n [ o ] = n [ o - 1 ] + e [ o ] ; var p = function ( a , b ) { k [ b ] . _height += d , k [ b ] . _ _mergeRows . push ( a ) } , q = function ( a , b ) { l [ a ] . _width += e [ b ] , l [ a ] . _ _mergeCols . push ( b ) } , r = function ( a , b ) { var c = e [ b ] , f = d ; m [ a ] [ b ] . _row = a , m [ a ] [ b ] . _col = b , m [ a ] [ b ] . _width = c , m [ a ] [ b ] . _height = f , k [ b ] = m [ a ] [ b ] , k [ b ] . _ _mergeRows = [ a ] , l [ a ] = m [ a ] [ b ] , l [ a ] . _ _mergeCols = [ b ] , i . push ( { x : n [ b ] - e [ b ] , y : + a * d , item : m [ a ] [ b ] } ) } ; return BI . each ( a , function ( a , d ) { for ( var e = b ; e < c ; e ++ ) if ( j [ a ] || ( j [ a ] = { } ) , m [ a ] || ( m [ a ] = { } ) , j [ a ] [ e ] = d [ e ] , m [ a ] [ e ] = { } , f === ! 0 || f . indexOf ( e ) > - 1 || g === ! 0 || g . indexOf ( a ) > - 1 ) if ( 0 === a && e === b ) r ( 0 , b ) ; else if ( e === b && a > 0 ) { var i = h . mergeRule ( j [ a ] [ e ] , j [ a - 1 ] [ e ] ) ; i === ! 0 ? ( p ( a , e ) , l [ a ] = k [ e ] ) : r ( a , e ) } else if ( 0 === a && e > b ) { var n = h . mergeRule ( j [ a ] [ e ] , j [ a ] [ e - 1 ] ) ; n === ! 0 ? ( q ( a , e ) , k [ e ] = l [ a ] ) : r ( a , e ) } else { var i = h . mergeRule ( j [ a ] [ e ] , j [ a - 1 ] [
BI . shortcut ( "bi.grid_table_scrollbar" , BI . GridTableScrollbar ) , BI . GridTableHorizontalScrollbar = 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 . GridTableHorizontalScrollbar . superclass . _defaultConfig . apply ( this , arguments ) , { attributes : { tabIndex : 0 } , contentSize : 0 , position : 0 , size : 0 } ) } , _init : function ( ) { BI . GridTableHorizontalScrollbar . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . scrollbar = BI . createWidget ( { type : "bi.grid_table_scrollbar" , orientation : "horizontal" , isOpaque : ! 0 , position : b . position , contentSize : b . contentSize , size : b . size } ) , this . scrollbar . on ( BI . GridTableScrollbar . EVENT _SCROLL , function ( ) { a . fireEvent ( BI . GridTableHorizontalScrollbar . EVENT _SCROLL , arguments ) } ) , BI . createWidget ( { type : "bi.absolute" , cls : "horizontal-scrollbar" , element : this , width : b . size , height : BI . GridTableScrollbar . SIZE , items : [ { el : { type : "bi.absolute" , scrollable : ! 1 , height : BI . GridTableScrollbar . SIZE , items : [ { el : this . scrollbar , left : 0 , top : 0 } ] } , top : 0 , left : 0 , right : 0 } ] } ) } , setContentSize : function ( a ) { this . options . contentSize = a , this . scrollbar . setContentSize ( a ) } , setPosition : function ( a ) { this . options . position = a , this . scrollbar . setPosition ( a ) } , setSize : function ( a ) { this . setWidth ( a ) , this . options . size = a , this . scrollbar . setSize ( a ) } , populate : function ( ) { this . scrollbar . populate ( ) ; var a = this . options ; return a . size < 1 || a . contentSize <= a . size ? void this . setVisible ( ! 1 ) : void this . setVisible ( ! 0 ) } } ) , BI . GridTableHorizontalScrollbar . EVENT _SCROLL = "EVENT_SCROLL" , BI . shortcut ( "bi.grid_table_horizontal_scrollbar" , BI . GridTableHorizontalScrollbar ) , BI . TableHeaderCell = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . TableHeaderCell . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-table-header-cell" , text : "" } ) } , _init : function ( ) { BI . TableHeaderCell . superclass . _init . apply ( this , arguments ) , BI . createWidget ( { type : "bi.label" , element : this , textAlign : "center" , height : this . options . height , text : this . options . text , value : this . options . value } ) } } ) , BI . shortcut ( "bi.table_header_cell" , BI . TableHeaderCell ) , BI . Table = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Table . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-table" , logic : { dynamic : ! 1 } , isNeedFreeze : ! 1 , freezeCols : [ ] , isNeedMerge : ! 1 , mergeCols : [ ] , mergeRule : function ( a , b ) { return BI . isEqual ( a , b ) } , columnSize : [ ] , headerRowSize : 25 , footerRowSize : 25 , rowSize : 25 , regionColumnSize : ! 1 , header : [ ] , footer : ! 1 , items : [ ] } ) } , _calculateWidth : function ( a ) { return a && "0" !== a ? ( a = BI . parseFloat ( a ) , a < 0 && ( a = 0 ) , a > 1.01 ? a : 100 * a + "%" ) : "" } , _calculateHeight : function ( a ) { return a ? a : "" } , _isRightFreeze : function ( ) { return BI . isNotEmptyArray ( this . options . freezeCols ) && 0 !== BI . first ( this . options . freezeCols ) } , _createTopLeft : function ( ) { var a = this . options , b = this . _isRightFreeze ( ) ; this . topLeftColGroupTds = { } , this . topLeftBodyTds = { } , this . topLeftBodyItems = { } ; var c = this . _table ( ) , d = this . _createColGroup ( this . columnLeft , this . topLeftColGroupTds ) , e = this . topLeftBody = this . _body ( ) ; if ( e . element . append ( this . _createHeaderCells ( this . topLeftItems , this . columnLeft , this . mergeLeft , this . topLeftBodyTds , this . topLeftBodyItems ) ) , BI . createWidget ( { type : "bi.adaptive" , element : c , items : [ d , e ] } ) , b ) { var f = 0 ; BI . each ( a . columnSize , function ( b , c ) { a . freezeCols . contains ( b ) || ( f += c ) } ) , BI . isNumeric ( f ) && f > 1 && ( f = BI . parseFloat ( f ) + a . columnSize . length - a . freezeCols . length ) } return this . topLeftContainer = BI . createWidget ( { type : "bi.adaptive" , width : this . _calculateWidth ( f ) , items : [ c ] } ) } , _createTopRight : function ( ) { var a = this . options , b = this . _isRightFreeze ( ) ; this . topRightColGroupTds = { } , this . topRightBodyTds = { } , this . topRightBodyItems = { } ; var c = this . _table ( ) , d = this . _createColGroup ( this . columnRight , this . topRightColGroupTds ) , e = this . topRightBody = this . _body ( ) ; if ( e . element . append ( this . _createHeaderCells ( this . topRightItems , this . columnRight , this . mergeRight , this . topRightBodyTds , this . topRightBodyItems , this . columnLeft . length ) ) , BI . createWidget ( { type : "bi.adaptive" , element : c , items : [ d , e ] } ) , ! b ) { var f = 0 ; BI . each ( a . columnSize , function ( b , c ) { a . freezeCols . contains ( b ) || ( f += c ) } ) , BI . isNumeric ( f ) && ( f = BI . parseFloat ( f ) + a . columnSize . length - a . freezeC
c . resize ( e ) ) } , function ( ) { d === ! 0 && ( e = a ( e ) , c . stop ( e ) , e = 0 , f = 0 , g = c . width , d = ! 1 ) , b . handler . element . removeClass ( "dragging" ) , b . handler . element . removeClass ( "suitable" ) , h . releaseMouseMoves ( ) } , document ) ; this . handler = BI . createWidget ( { type : "bi.absolute" , cls : "resizable-table-cell-resizer-container" , width : 6 , items : [ { el : { type : "bi.layout" , cls : "resizable-table-cell-resizer-knob" , width : 4 } , right : 0 , top : 0 , bottom : 0 } ] } ) , this . handler . element . on ( "mousedown" , function ( b ) { g = c . width , a ( g ) , h . captureMouseMoves ( b ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . cell , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : this . handler , right : 0 , top : 0 , bottom : 0 } ] } ) } , setWidth : function ( a ) { BI . ResizableTableCell . superclass . setWidth . apply ( this , arguments ) ; var b = this . options ; this . cell . setWidth ( b . width ) } , setHeight : function ( a ) { BI . ResizableTableCell . superclass . setHeight . apply ( this , arguments ) ; var b = this . options ; this . cell . setHeight ( b . height ) } } ) , BI . shortcut ( "bi.resizable_table_cell" , BI . ResizableTableCell ) , BI . ResizableTable = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . ResizableTable . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-resizable-table" , el : { type : "bi.grid_table" } , isNeedFreeze : ! 1 , isNeedResize : ! 0 , isResizeAdapt : ! 1 , headerRowSize : 25 , rowSize : 25 , isNeedMerge : ! 0 , mergeCols : [ ] , mergeRule : BI . emptyFn , columnSize : [ ] , minColumnSize : [ ] , maxColumnSize : [ ] , freezeCols : [ ] , header : [ ] , items : [ ] , regionColumnSize : [ ] } ) } , _init : function ( ) { BI . ResizableTable . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . resizer = BI . createWidget ( { type : "bi.layout" , cls : "resizable-table-resizer" , invisible : ! 0 , width : 2 } ) , this . regionResizerHandler = this . _createResizerHandler ( ) , this . table = BI . createWidget ( b . el , { type : "bi.grid_table" , element : this , width : b . width , height : b . height , headerRowSize : b . headerRowSize , rowSize : b . rowSize , columnSize : b . columnSize , isNeedFreeze : b . isNeedFreeze , freezeCols : b . freezeCols , isNeedMerge : b . isNeedMerge , mergeCols : b . mergeCols , mergeRule : BI . bind ( this . _mergeRule , this ) , header : this . _formatHeader ( b . header ) , items : b . items , regionColumnSize : b . regionColumnSize } ) , this . table . on ( BI . Table . EVENT _TABLE _SCROLL , function ( ) { a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . regionResizerHandler , left : 0 , top : 0 , bottom : 0 } , { el : this . resizer , left : 0 , top : 0 } ] } ) , this . _populate ( ) } , _mergeRule : function ( a , b ) { var c = this . options ; return "bi.resizable_table_cell" === a . type && ( a = a . cell ) , "bi.resizable_table_cell" === b . type && ( b = b . cell ) , c . mergeRule ( a , b ) } , _createResizerHandler : function ( ) { var a = this , b = this . options , c = BI . createWidget ( { type : "bi.absolute" , cls : "resizable-table-region-resizer" , invisible : ! 0 , width : 6 , items : [ { el : { type : "bi.layout" , width : 2 , cls : "resizable-table-region-resizer-knob" } , left : 2 , top : 0 , bottom : 0 } ] } ) , d = 0 , e = 0 , f = 0 , g = ! 1 , h = new BI . MouseMoveTracker ( function ( c , i ) { h . isDragging ( ) && ( g = ! 0 , e += c , d = BI . clamp ( f + e , 15 , b . width - 15 ) , a . regionResizerHandler . element . addClass ( "dragging" ) , a . _setRegionResizerHandlerPosition ( d - 3 , 0 ) ) } , function ( ) { if ( g === ! 0 ) { if ( b . regionColumnSize [ 0 ] = BI . clamp ( d , 15 , b . width - 15 ) , a . table . setRegionColumnSize ( b . regionColumnSize ) , b . isResizeAdapt === ! 0 ) { var c = a . _getFreezeColumnSize ( ) ; b . columnSize [ a . _getFreezeColLength ( ) - 1 ] += b . regionColumnSize [ 0 ] - c , a . table . setColumnSize ( b . columnSize ) } a . table . populate ( ) , a . _populate ( ) , a . regionResizerHandler . element . removeClass ( "dragging" ) , a . fireEvent ( BI . Table . EVENT _TABLE _AFTER _REGION _RESIZE ) , g = ! 1 } h . releaseMouseMoves ( ) } , document ) ; return c . element . on ( "mousedown" , function ( b ) { f = d = a . _getRegionSize ( ) , e = 0 , a . _setResizerPosition ( 0 , 0 ) , h . captureMouseMoves ( b ) } ) , c } , _setResizerPosition : function ( a , b ) { this . resizer . element . css ( { left : a + "px" , top : b + "px" } ) } , _setRegionResizerHandlerPosition : function ( a , b ) { this . regionResizerHandler . element . css ( { left : a + "px" , top : b + "px" } ) } , _getRegionSize : function ( ) { var a = this . options , b = a . regionColumnSize [ 0 ] || 0 ; return a . isNeedFreeze === ! 1 || 0 === a . freezeCols . length ? 0 : ( b || BI . each ( a . freezeCols , function ( c , d ) { b += a . columnSize [ d ] } ) , b ) } , _getRegionRowSize : function ( ) { var a = this . options ; return [ a . header . length * a . headerRowSize , Math . min ( a . height - a . header . length * a . headerRowSize , a . items . length * a . rowSize ) ] } , _getFree
var c = tools . apply ( a . view . fontCss , [ a . treeId , b ] , a . view . fontCss ) ; return c && "function" != typeof c ? c : { } } , makeNodeIcoClass : function ( a , b ) { var c = [ "ico" ] ; return b . isAjaxing || ( c [ 0 ] = ( b . iconSkin ? b . iconSkin + "_" : "" ) + c [ 0 ] , b . isParent ? c . push ( b . open ? consts . folder . OPEN : consts . folder . CLOSE ) : c . push ( consts . folder . DOCU ) ) , consts . className . BUTTON + " " + c . join ( "_" ) } , makeNodeIcoStyle : function ( a , b ) { var c = [ ] ; if ( ! b . isAjaxing ) { var d = b . isParent && b . iconOpen && b . iconClose ? b . open ? b . iconOpen : b . iconClose : b . icon ; d && c . push ( "background:url(" , d , ") 0 0 no-repeat;" ) , 0 != a . view . showIcon && tools . apply ( a . view . showIcon , [ a . treeId , b ] , ! 0 ) || c . push ( "width:0px;height:0px;" ) } return c . join ( "" ) } , makeNodeLineClass : function ( a , b ) { var c = [ ] ; return a . view . showLine ? 0 == b . level && b . isFirstNode && b . isLastNode ? c . push ( consts . line . ROOT ) : 0 == b . level && b . isFirstNode ? c . push ( consts . line . ROOTS ) : b . isLastNode ? c . push ( consts . line . BOTTOM ) : c . push ( consts . line . CENTER ) : c . push ( consts . line . NOLINE ) , b . isParent ? c . push ( b . open ? consts . folder . OPEN : consts . folder . CLOSE ) : c . push ( consts . folder . DOCU ) , view . makeNodeLineClassEx ( b ) + c . join ( "_" ) } , makeNodeLineClassEx : function ( a ) { return consts . className . BUTTON + " " + consts . className . LEVEL + a . level + " " + consts . className . SWITCH + " " } , makeNodeTarget : function ( a ) { return a . target || "_blank" } , makeNodeUrl : function ( a , b ) { var c = a . data . key . url ; return b [ c ] ? b [ c ] : null } , makeUlHtml : function ( a , b , c , d ) { c . push ( "<ul id='" , b . tId , consts . id . UL , "' class='" , consts . className . LEVEL , b . level , " " , view . makeUlLineClass ( a , b ) , "' style='display:" , b . open ? "block" : "none" , "'>" ) , c . push ( d ) , c . push ( "</ul>" ) } , makeUlLineClass : function ( a , b ) { return a . view . showLine && ! b . isLastNode ? consts . line . LINE : "" } , removeChildNodes : function ( a , b ) { if ( b ) { var c = a . data . key . children , d = b [ c ] ; if ( d ) { for ( var e = 0 , f = d . length ; e < f ; e ++ ) data . removeNodeCache ( a , d [ e ] ) ; if ( data . removeSelectedNode ( a ) , delete b [ c ] , a . data . keep . parent ) $$ ( b , consts . id . UL , a ) . empty ( ) ; else { b . isParent = ! 1 , b . open = ! 1 ; var g = $$ ( b , consts . id . SWITCH , a ) , h = $$ ( b , consts . id . ICON , a ) ; view . replaceSwitchClass ( b , g , consts . folder . DOCU ) , view . replaceIcoClass ( b , h , consts . folder . DOCU ) , $$ ( b , consts . id . UL , a ) . remove ( ) } } } } , setFirstNode : function ( a , b ) { var c = a . data . key . children , d = b [ c ] . length ; d > 0 && ( b [ c ] [ 0 ] . isFirstNode = ! 0 ) } , setLastNode : function ( a , b ) { var c = a . data . key . children , d = b [ c ] . length ; d > 0 && ( b [ c ] [ d - 1 ] . isLastNode = ! 0 ) } , removeNode : function ( a , b ) { var c = data . getRoot ( a ) , d = a . data . key . children , e = b . parentTId ? b . getParentNode ( ) : c ; if ( b . isFirstNode = ! 1 , b . isLastNode = ! 1 , b . getPreNode = function ( ) { return null } , b . getNextNode = function ( ) { return null } , data . getNodeCache ( a , b . tId ) ) { $$ ( b , a ) . remove ( ) , data . removeNodeCache ( a , b ) , data . removeSelectedNode ( a , b ) ; for ( var f = 0 , g = e [ d ] . length ; f < g ; f ++ ) if ( e [ d ] [ f ] . tId == b . tId ) { e [ d ] . splice ( f , 1 ) ; break } view . setFirstNode ( a , e ) , view . setLastNode ( a , e ) ; var h , i , j , k = e [ d ] . length ; if ( a . data . keep . parent || 0 != k ) { if ( a . view . showLine && k > 0 ) { var l = e [ d ] [ k - 1 ] ; if ( h = $$ ( l , consts . id . UL , a ) , i = $$ ( l , consts . id . SWITCH , a ) , j = $$ ( l , consts . id . ICON , a ) , e == c ) if ( 1 == e [ d ] . length ) view . replaceSwitchClass ( l , i , consts . line . ROOT ) ; else { var m = $$ ( e [ d ] [ 0 ] , consts . id . SWITCH , a ) ; view . replaceSwitchClass ( e [ d ] [ 0 ] , m , consts . line . ROOTS ) , view . replaceSwitchClass ( l , i , consts . line . BOTTOM ) } else view . replaceSwitchClass ( l , i , consts . line . BOTTOM ) ; h . removeClass ( consts . line . LINE ) } } else e . isParent = ! 1 , e . open = ! 1 , h = $$ ( e , consts . id . UL , a ) , i = $$ ( e , consts . id . SWITCH , a ) , j = $$ ( e , consts . id . ICON , a ) , view . replaceSwitchClass ( e , i , consts . folder . DOCU ) , view . replaceIcoClass ( e , j , consts . folder . DOCU ) , h . css ( "display" , "none" ) } } , replaceIcoClass : function ( a , b , c ) { if ( b && ! a . isAjaxing ) { var d = b . attr ( "class" ) ; if ( void 0 != d ) { var e = d . split ( "_" ) ; switch ( c ) { case consts . folder . OPEN : case consts . folder . CLOSE : case consts . folder . DOCU : e [ e . length - 1 ] = c } b . attr ( "class" , e . join ( "_" ) ) } } } , replaceSwitchClass : function ( a , b , c ) { if ( b ) { var d = b . attr ( "class" ) ; if ( void 0 != d ) { var e = d . split ( "_" ) ; switch ( c ) { case consts . line . ROOT : case consts . line . ROOTS : case consts . line . CENTER : case consts . line . BOTTOM : case consts . line . NOLINE : e [ 0 ] = view . makeNodeLineClassEx ( a ) + c ; break ; case consts . folder . OPEN : case consts . folder . CLOSE : case consts . folder . DOCU : e [ 1 ] = c } b . attr ( "class" , e . join ( "_" ) ) , c !== consts . folder . DOCU ? b . removeAttr ( "disabled" ) : b . attr ( "disabled" , "disabled" ) } } } , selectNode : function ( a , b , c ) { c ||
logic : { dynamic : ! 1 } , id : "" , pId : "" , open : ! 1 , height : 25 , iconHeight : 13 , iconWidth : 13 , iconCls : "" } ) } , _init : function ( ) { BI . IconArrowNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.tree_group_node_checkbox" , width : 23 , stopPropagation : ! 0 } ) ; var c = BI . createWidget ( { type : "bi.center_adapt" , cls : b . iconCls , width : 23 , items : [ { type : "bi.icon" , height : b . iconHeight , width : b . iconWidth } ] } ) ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : b . height , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && ( this . isSelected ( ) ? a . triggerExpand ( ) : a . triggerCollapse ( ) ) } ) ; var d = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , e = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 25 , el : this . checkbox } , { width : 23 , el : c } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( d , BI . extend ( b . logic , { items : e } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . IconArrowNode . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . IconArrowNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( a ) } } ) , BI . shortcut ( "bi.icon_arrow_node" , BI . IconArrowNode ) , BI . LastPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . LastPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-last-plus-group-node bi-list-item" , logic : { dynamic : ! 1 } , id : "" , pId : "" , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . LastPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.last_tree_node_checkbox" , stopPropagation : ! 0 } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : b . height , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && ( this . isSelected ( ) ? a . triggerExpand ( ) : a . triggerCollapse ( ) ) } ) ; var c = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , d = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 25 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( c , BI . extend ( b . logic , { items : d } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . LastPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . LastPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( a ) } } ) , BI . shortcut ( "bi.last_plus_group_node" , BI . LastPlusGroupNode ) , BI . MidPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . MidPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-mid-plus-group-node bi-list-item" , logic : { dynamic : ! 1 } , id : "" , pId : "" , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . MidPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.mid_tree_node_checkbox" , stopPropagation : ! 0 } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : b . height , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && ( this . isSelected ( ) ? a . triggerExpand ( ) : a . triggerCollapse ( ) ) } ) ; var c = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , d = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 25 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( c , BI . extend ( b . logic , { items : d } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , argu
} , c . nodeList = function ( a ) { var b = Object . prototype . toString . call ( a ) ; return void 0 !== a && ( "[object NodeList]" === b || "[object HTMLCollection]" === b ) && "length" in a && ( 0 === a . length || c . node ( a [ 0 ] ) ) } , c . string = function ( a ) { return "string" == typeof a || a instanceof String } , c . fn = function ( a ) { var b = Object . prototype . toString . call ( a ) ; return "[object Function]" === b } } , { } ] , 4 : [ function ( a , b , c ) { function d ( a , b , c ) { if ( ! a && ! b && ! c ) throw new Error ( "Missing required arguments" ) ; if ( ! h . string ( b ) ) throw new TypeError ( "Second argument must be a String" ) ; if ( ! h . fn ( c ) ) throw new TypeError ( "Third argument must be a Function" ) ; if ( h . node ( a ) ) return e ( a , b , c ) ; if ( h . nodeList ( a ) ) return f ( a , b , c ) ; if ( h . string ( a ) ) return g ( a , b , c ) ; throw new TypeError ( "First argument must be a String, HTMLElement, HTMLCollection, or NodeList" ) } function e ( a , b , c ) { return a . addEventListener ( b , c ) , { destroy : function ( ) { a . removeEventListener ( b , c ) } } } function f ( a , b , c ) { return Array . prototype . forEach . call ( a , function ( a ) { a . addEventListener ( b , c ) } ) , { destroy : function ( ) { Array . prototype . forEach . call ( a , function ( a ) { a . removeEventListener ( b , c ) } ) } } } function g ( a , b , c ) { return i ( document . body , a , b , c ) } var h = a ( "./is" ) , i = a ( "delegate" ) ; b . exports = d } , { "./is" : 3 , delegate : 2 } ] , 5 : [ function ( a , b , c ) { function d ( a ) { var b ; if ( "SELECT" === a . nodeName ) a . focus ( ) , b = a . value ; else if ( "INPUT" === a . nodeName || "TEXTAREA" === a . nodeName ) { var c = a . hasAttribute ( "readonly" ) ; c || a . setAttribute ( "readonly" , "" ) , a . select ( ) , a . setSelectionRange ( 0 , a . value . length ) , c || a . removeAttribute ( "readonly" ) , b = a . value } else { a . hasAttribute ( "contenteditable" ) && a . focus ( ) ; var d = window . getSelection ( ) , e = document . createRange ( ) ; e . selectNodeContents ( a ) , d . removeAllRanges ( ) , d . addRange ( e ) , b = d . toString ( ) } return b } b . exports = d } , { } ] , 6 : [ function ( a , b , c ) { function d ( ) { } d . prototype = { on : function ( a , b , c ) { var d = this . e || ( this . e = { } ) ; return ( d [ a ] || ( d [ a ] = [ ] ) ) . push ( { fn : b , ctx : c } ) , this } , once : function ( a , b , c ) { function d ( ) { e . off ( a , d ) , b . apply ( c , arguments ) } var e = this ; return d . _ = b , this . on ( a , d , c ) } , emit : function ( a ) { var b = [ ] . slice . call ( arguments , 1 ) , c = ( ( this . e || ( this . e = { } ) ) [ a ] || [ ] ) . slice ( ) , d = 0 , e = c . length ; for ( d ; d < e ; d ++ ) c [ d ] . fn . apply ( c [ d ] . ctx , b ) ; return this } , off : function ( a , b ) { var c = this . e || ( this . e = { } ) , d = c [ a ] , e = [ ] ; if ( d && b ) for ( var f = 0 , g = d . length ; f < g ; f ++ ) d [ f ] . fn !== b && d [ f ] . fn . _ !== b && e . push ( d [ f ] ) ; return e . length ? c [ a ] = e : delete c [ a ] , this } } , b . exports = d } , { } ] , 7 : [ function ( b , c , d ) { ! function ( e , f ) { if ( "function" == typeof a && a . amd ) a ( [ "module" , "select" ] , f ) ; else if ( "undefined" != typeof d ) f ( c , b ( "select" ) ) ; else { var g = { exports : { } } ; f ( g , e . select ) , e . clipboardAction = g . exports } } ( this , function ( a , b ) { "use strict" ; function c ( a ) { return a && a . _ _esModule ? a : { "default" : a } } function d ( a , b ) { if ( ! ( a instanceof b ) ) throw new TypeError ( "Cannot call a class as a function" ) } var e = c ( b ) , f = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( a ) { return typeof a } : function ( a ) { return a && "function" == typeof Symbol && a . constructor === Symbol && a !== Symbol . prototype ? "symbol" : typeof a } , g = function ( ) { function a ( a , b ) { for ( var c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; d . enumerable = d . enumerable || ! 1 , d . configurable = ! 0 , "value" in d && ( d . writable = ! 0 ) , Object . defineProperty ( a , d . key , d ) } } return function ( b , c , d ) { return c && a ( b . prototype , c ) , d && a ( b , d ) , b } } ( ) , h = function ( ) { function a ( b ) { d ( this , a ) , this . resolveOptions ( b ) , this . initSelection ( ) } return g ( a , [ { key : "resolveOptions" , value : function ( ) { var a = arguments . length > 0 && void 0 !== arguments [ 0 ] ? arguments [ 0 ] : { } ; this . action = a . action , this . emitter = a . emitter , this . target = a . target , this . text = a . text , this . trigger = a . trigger , this . selectedText = "" } } , { key : "initSelection" , value : function ( ) { this . text ? this . selectFake ( ) : this . target && this . selectTarget ( ) } } , { key : "selectFake" , value : function ( ) { var a = this , b = "rtl" == document . documentElement . getAttribute ( "dir" ) ; this . removeFake ( ) , this . fakeHandlerCallback = function ( ) { return a . removeFake ( ) } , this . fakeHandler = document . body . addEventListener ( "click" , this . fakeHandlerCallback ) || ! 0 , this . fakeElem = document . createElement ( "textarea" ) , this . fakeElem . style . fontSize = "12pt" , this . fakeElem . style . border = "0" , this . fakeElem . style . padding = "0" , this . fakeElem . style . margin = "0" , this . fakeElem . style . position = "absolute" , this . fakeElem . style [ b ? "right" : "left" ] = "-9999px" ; var c = window . pageYOf
this } , c . widgetCoords = function ( a ) { var b , d , e = a . target || a . srcElement , f = c . wheel ; if ( "undefined" != typeof a . offsetX ) { for ( var g = { x : a . offsetX , y : a . offsetY } , h = e ; h ; ) h . mouseX = g . x , h . mouseY = g . y , g . x += h . offsetLeft , g . y += h . offsetTop , h = h . offsetParent ; for ( var h = f , i = { x : 0 , y : 0 } ; h ; ) { if ( "undefined" != typeof h . mouseX ) { b = h . mouseX - i . x , d = h . mouseY - i . y ; break } i . x += h . offsetLeft , i . y += h . offsetTop , h = h . offsetParent } for ( h = e ; h ; ) h . mouseX = void 0 , h . mouseY = void 0 , h = h . offsetParent } else { var g = c . absolutePosition ( f ) ; b = ( a . pageX || 0 * ( a . clientX + $ ( "html" ) . get ( 0 ) . scrollLeft ) ) - g . x , d = ( a . pageY || 0 * ( a . clientY + $ ( "html" ) . get ( 0 ) . scrollTop ) ) - g . y } return { x : b - c . width / 2 , y : d - c . width / 2 } } , c . click = function ( a ) { var b = c . widgetCoords ( a ) ; return c . circleDrag = 2 * Math . max ( Math . abs ( b . x ) , Math . abs ( b . y ) ) > c . square , c . mousemove ( a ) , ! 1 } , c . mousemove = function ( a ) { var b = c . widgetCoords ( a ) ; if ( c . circleDrag ) { var d = Math . atan2 ( b . x , - b . y ) / 6.28 ; d < 0 && ( d += 1 ) , c . setHSL ( [ d , c . hsl [ 1 ] , c . hsl [ 2 ] ] ) } else { var e = Math . max ( 0 , Math . min ( 1 , - ( b . x / c . square ) + . 5 ) ) , f = Math . max ( 0 , Math . min ( 1 , - ( b . y / c . square ) + . 5 ) ) ; c . setHSL ( [ c . hsl [ 0 ] , e , f ] ) } return ! 1 } , c . updateDisplay = function ( ) { var a = 6.28 * c . hsl [ 0 ] ; $ ( ".h-marker" , d ) . css ( { left : Math . round ( Math . sin ( a ) * c . radius + c . width / 2 ) + "px" , top : Math . round ( - Math . cos ( a ) * c . radius + c . width / 2 ) + "px" } ) , $ ( ".sl-marker" , d ) . css ( { left : Math . round ( c . square * ( . 5 - c . hsl [ 1 ] ) + c . width / 2 ) + "px" , top : Math . round ( c . square * ( . 5 - c . hsl [ 2 ] ) + c . width / 2 ) + "px" } ) , $ ( ".color" , d ) . css ( "backgroundColor" , c . pack ( c . HSLToRGB ( [ c . hsl [ 0 ] , 1 , . 5 ] ) ) ) , "object" == typeof c . callback ? ( $ ( c . callback ) . css ( { backgroundColor : c . color , color : c . hsl [ 2 ] > . 5 ? "#000" : "#fff" } ) , $ ( c . callback ) . each ( function ( ) { this . value && this . value != c . color && ( this . value = c . color ) } ) ) : "function" == typeof c . callback && c . callback . call ( c , c . color ) } , c . absolutePosition = function ( a ) { var b = { x : a . offsetLeft , y : a . offsetTop } ; if ( a . offsetParent ) { var d = c . absolutePosition ( a . offsetParent ) ; b . x += d . x , b . y += d . y } return b } , c . pack = function ( a ) { var b = Math . round ( 255 * a [ 0 ] ) , c = Math . round ( 255 * a [ 1 ] ) , d = Math . round ( 255 * a [ 2 ] ) ; return "#" + ( b < 16 ? "0" : "" ) + b . toString ( 16 ) + ( c < 16 ? "0" : "" ) + c . toString ( 16 ) + ( d < 16 ? "0" : "" ) + d . toString ( 16 ) } , c . unpack = function ( a ) { return 7 == a . length ? [ parseInt ( "0x" + a . substring ( 1 , 3 ) ) / 255 , parseInt ( "0x" + a . substring ( 3 , 5 ) ) / 255 , parseInt ( "0x" + a . substring ( 5 , 7 ) ) / 255 ] : 4 == a . length ? [ parseInt ( "0x" + a . substring ( 1 , 2 ) ) / 15 , parseInt ( "0x" + a . substring ( 2 , 3 ) ) / 15 , parseInt ( "0x" + a . substring ( 3 , 4 ) ) / 15 ] : void 0 } , c . HSLToRGB = function ( a ) { var b , c , d = a [ 0 ] , e = a [ 1 ] , f = a [ 2 ] ; return c = f <= . 5 ? f * ( e + 1 ) : f + e - f * e , b = 2 * f - c , [ this . hueToRGB ( b , c , d + . 33333 ) , this . hueToRGB ( b , c , d ) , this . hueToRGB ( b , c , d - . 33333 ) ] } , c . hueToRGB = function ( a , b , c ) { return c = c < 0 ? c + 1 : c > 1 ? c - 1 : c , 6 * c < 1 ? a + ( b - a ) * c * 6 : 2 * c < 1 ? b : 3 * c < 2 ? a + ( b - a ) * ( . 66666 - c ) * 6 : a } , c . RGBToHSL = function ( a ) { var b , c , d , e , f , g , h = a [ 0 ] , i = a [ 1 ] , j = a [ 2 ] ; return b = Math . min ( h , Math . min ( i , j ) ) , c = Math . max ( h , Math . max ( i , j ) ) , d = c - b , g = ( b + c ) / 2 , f = 0 , g > 0 && g < 1 && ( f = d / ( g < . 5 ? 2 * g : 2 - 2 * g ) ) , e = 0 , d > 0 && ( c == h && c != i && ( e += ( i - j ) / d ) , c == i && c != j && ( e += 2 + ( j - h ) / d ) , c == j && c != h && ( e += 4 + ( h - i ) / d ) , e /= 6 ) , [ e , f , g ] } , $ ( "*" , d ) . click ( c . click ) , c . setColor ( "#000000" ) , b && c . linkTo ( b ) } , BI . BubbleCombo = BI . inherit ( BI . Widget , { _const : { TRIANGLE _LENGTH : 6 } , _defaultConfig : function ( ) { return BI . extend ( BI . BubbleCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-bubble-combo" , trigger : "click" , toggle : ! 0 , direction : "bottom" , isDefaultInit : ! 1 , destroyWhenHide : ! 1 , isNeedAdjustHeight : ! 0 , isNeedAdjustWidth : ! 0 , stopPropagation : ! 1 , adjustLength : 0 , hideChecker : BI . emptyFn , offsetStyle : "left" , el : { } , popup : { } } ) } , _init : function ( ) { BI . BubbleCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . combo = BI . createWidget ( { type : "bi.combo" , element : this , trigger : b . trigger , toggle : b . toggle , direction : b . direction , isDefaultInit : b . isDefaultInit , destroyWhenHide : b . destroyWhenHide , isNeedAdjustHeight : b . isNeedAdjustHeight , isNeedAdjustWidth : b . isNeedAdjustWidth , adjustLength : this . _getAdjustLength ( ) , stopPropagation : b . stopPropagation , adjustXOffset : 0 , adjustYOffset : 0 , hideChecker : b . hideChecker , offsetStyle : b . offsetStyle , el : b . el , popup : BI . extend ( { type : "bi.bubble_popup_view" } , b . popup ) } ) , this . combo . on ( BI . Combo . EVENT _TRIGGER _CHANGE , function ( ) { a . fireEvent ( BI . BubbleCombo . EVENT _TRIGGER _CHANGE , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . BubbleCombo . EV
} ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _FOCUS , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _FOCUS , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _BLUR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _CLICK , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . ShelterEditor . EVENT _KEY _DOWN , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _VALID , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { a . _showHint ( ) , a . _checkText ( ) , a . fireEvent ( BI . ShelterEditor . EVENT _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _START , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _START , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _PAUSE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _STOP , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _STOP , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _SPACE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _SPACE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ERROR , function ( ) { a . _checkText ( ) , a . fireEvent ( BI . ShelterEditor . EVENT _ERROR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ENTER , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _ENTER , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _RESTRICT , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _RESTRICT , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _EMPTY , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _EMPTY , arguments ) } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ this . editor ] } ) , this . _showHint ( ) , a . _checkText ( ) } , _checkText : function ( ) { var a = this . options ; "" === this . editor . getValue ( ) ? ( this . text . setValue ( a . watermark || "" ) , this . text . element . addClass ( "bi-water-mark" ) ) : ( this . text . setValue ( this . editor . getValue ( ) ) , this . text . element . removeClass ( "bi-water-mark" ) ) } , _showInput : function ( ) { this . editor . visible ( ) , this . text . invisible ( ) } , _showHint : function ( ) { this . editor . invisible ( ) , this . text . visible ( ) } , 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 ( ) } , setTextStyle : function ( a ) { this . text . setStyle ( a ) } , 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 . ShelterEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . ShelterEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . ShelterEditor . EVENT _BLUR = "EVENT_BLUR" , BI . ShelterEditor . EVENT _CLICK = "EVENT_CLICK" , BI . ShelterEditor . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . ShelterEditor . EVENT _CLICK _LABEL = "EVENT_CLICK_LABEL" , BI . ShelterEditor . EVENT _START = "EVENT_START" , BI . ShelterEditor . EVENT _PAUSE = "EVENT_PAUSE" , BI . ShelterEditor . EVENT _STOP = "EVENT_STOP" , BI . ShelterEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . ShelterEditor . EVENT _VALID = "EVENT_VALID" , BI . ShelterEditor . EVENT _ERROR = "EVENT_ERROR" , BI . ShelterEditor . EVENT _ENTER = "EVENT_ENTER" , BI . ShelterEditor . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . ShelterEditor . EVENT _SPACE = "EVENT_SPACE" , BI . ShelterEditor . EVENT _EMPTY = " EVENT _E
tgap : b . tgap , bgap : b . bgap , vgap : b . vgap , hgap : b . hgap } , b . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Top , this . button _group ) } ) ) ) ) } , hasPrev : function ( ) { return this . button _group . hasPrev && this . button _group . hasPrev ( ) } , hasNext : function ( ) { return this . button _group . hasNext && this . button _group . hasNext ( ) } , prependItems : function ( a ) { this . options . items = a . concat ( this . options . items ) , this . button _group . prependItems . apply ( this . button _group , arguments ) , this . check ( ) } , addItems : function ( a ) { this . options . items = this . options . items . concat ( a ) , this . button _group . addItems . apply ( this . button _group , arguments ) , this . check ( ) } , removeItemAt : function ( a ) { a = a || [ ] , BI . removeAt ( this . options . items , a ) , this . button _group . removeItemAt . apply ( this . button _group , arguments ) , this . check ( ) } , populate : function ( a ) { var b = this ; this . options ; return 0 === arguments . length && BI . isFunction ( this . button _group . attr ( "itemsCreator" ) ) ? void this . button _group . attr ( "itemsCreator" ) . apply ( this , [ { times : 1 } , function ( ) { if ( 0 === arguments . length ) throw new Error ( "参数不能为空" ) ; b . populate . apply ( b , arguments ) } ] ) : ( BI . ListPane . superclass . populate . apply ( this , arguments ) , void this . button _group . populate . apply ( this . button _group , arguments ) ) } , empty : function ( ) { this . button _group . empty ( ) } , setNotSelectedValue : function ( ) { this . button _group . setNotSelectedValue . apply ( this . button _group , arguments ) } , getNotSelectedValue : function ( ) { return this . button _group . getNotSelectedValue ( ) } , setValue : function ( ) { this . button _group . setValue . apply ( this . button _group , arguments ) } , getValue : function ( ) { return this . button _group . getValue . apply ( this . button _group , arguments ) } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , getAllLeaves : function ( ) { return this . button _group . getAllLeaves ( ) } , getSelectedButtons : function ( ) { return this . button _group . getSelectedButtons ( ) } , getNotSelectedButtons : function ( ) { return this . button _group . getNotSelectedButtons ( ) } , getIndexByValue : function ( a ) { return this . button _group . getIndexByValue ( a ) } , getNodeById : function ( a ) { return this . button _group . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . button _group . getNodeByValue ( a ) } } ) , BI . ListPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.list_pane" , BI . ListPane ) , BI . Panel = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Panel . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-panel bi-border" , title : "" , titleButtons : [ ] , el : { } , logic : { dynamic : ! 1 } } ) } , _init : function ( ) { BI . Panel . superclass . _init . apply ( this , arguments ) ; var a = this . options ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "vertical" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "top" , this . _createTitle ( ) , this . options . el ) } ) ) ) ) } , _createTitle : function ( ) { var a = this , b = this . options ; return this . text = BI . createWidget ( { type : "bi.label" , cls : "panel-title-text" , text : b . title , height : 30 } ) , this . button _group = BI . createWidget ( { type : "bi.button_group" , items : b . titleButtons , layouts : [ { type : "bi.center_adapt" , lgap : 10 } ] } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . button _group . on ( BI . ButtonGroup . EVENT _CHANGE , function ( b , c ) { a . fireEvent ( BI . Panel . EVENT _CHANGE , b , c ) } ) , { el : { type : "bi.left_right_vertical_adapt" , cls : "panel-title bi-tips bi-border-bottom bi-background" , height : 30 , items : { left : [ this . text ] , right : [ this . button _group ] } , lhgap : 10 , rhgap : 10 } , height : 30 } } , setTitle : function ( a ) { this . text . setValue ( a ) } } ) , BI . Panel . EVENT _CHANGE = "Panel.EVENT_CHANGE" , BI . shortcut ( "bi.panel" , BI . Panel ) , BI . SelectList = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-list" , direction : BI . Direction . Top , logic : { dynamic : ! 0 } , items : [ ] , itemsCreator : BI . emptyFn , hasNext : BI . emptyFn , onLoaded : BI . emptyFn , toolbar : { type : "bi.multi_select_bar" } , el : { type : "bi.list_pane" } } ) } , _init : function ( ) { BI . SelectList . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . toolbar = BI . createWidget ( b . toolbar ) , this . toolbar . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { var e = this . isSelected ( ) ; b === BI . Events . CLICK && ( a . setAllSelected ( e ) , a . fireEvent ( BI . SelectL
return "freezeCols" === a ? c : this . table . attr . apply ( this . table , arguments ) } , restore : function ( ) { this . table . restore ( ) } , populate : function ( a ) { this . options ; this . _populate ( ) , this . table . populate . apply ( this . table , arguments ) } , destroy : function ( ) { this . table . destroy ( ) , BI . AdaptiveTable . superclass . destroy . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.adaptive_table" , BI . AdaptiveTable ) , BI . DynamicSummaryLayerTreeTable = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . DynamicSummaryLayerTreeTable . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-dynamic-summary-layer-tree-table" , el : { type : "bi.resizable_table" } , isNeedResize : ! 0 , isResizeAdapt : ! 0 , isNeedFreeze : ! 1 , freezeCols : [ ] , isNeedMerge : ! 0 , mergeCols : [ ] , mergeRule : BI . emptyFn , columnSize : [ ] , minColumnSize : [ ] , maxColumnSize : [ ] , headerRowSize : 25 , footerRowSize : 25 , rowSize : 25 , regionColumnSize : [ ] , rowHeaderCreator : null , headerCellStyleGetter : BI . emptyFn , summaryCellStyleGetter : BI . emptyFn , sequenceCellStyleGetter : BI . emptyFn , header : [ ] , footer : ! 1 , items : [ ] , crossHeader : [ ] , crossItems : [ ] } ) } , _getVDeep : function ( ) { return this . options . crossHeader . length } , _getHDeep : function ( ) { var a = this . options ; return Math . max ( a . mergeCols . length , a . freezeCols . length , BI . TableTree . maxDeep ( a . items ) - 1 ) } , _createHeader : function ( a ) { var b = this . options , c = b . header || [ ] , d = b . crossHeader || [ ] , e = BI . TableTree . formatCrossItems ( b . crossItems , a , b . headerCellStyleGetter ) , f = [ ] ; if ( BI . each ( e , function ( a , b ) { var c = [ d [ a ] ] ; f . push ( c . concat ( b || [ ] ) ) } ) , c && c . length > 0 ) { var g = this . _formatColumns ( c ) , h = this . _getHDeep ( ) ; h <= 0 ? g . unshift ( b . rowHeaderCreator || { type : "bi.table_style_cell" , text : BI . i18nText ( "BI-Row_Header" ) , styleGetter : b . headerCellStyleGetter } ) : g [ 0 ] = b . rowHeaderCreator || { type : "bi.table_style_cell" , text : BI . i18nText ( "BI-Row_Header" ) , styleGetter : b . headerCellStyleGetter } , f . push ( g ) } return f } , _formatItems : function ( a , b , c ) { function d ( a , b ) { a . type || ( a . type = "bi.layer_tree_table_cell" ) , a . layer = b ; var c = [ a ] ; c = c . concat ( a . values || [ ] ) , c . length > 0 && f . push ( c ) , BI . isNotEmptyArray ( a . children ) && BI . each ( a . children , function ( a , c ) { d ( c , b + 1 ) } ) } var e = this . options , f = [ ] ; return BI . each ( a , function ( a , b ) { if ( BI . each ( b . children , function ( a , b ) { d ( b , 0 ) } ) , BI . isArray ( b . values ) ) { var c = [ { type : "bi.table_style_cell" , text : BI . i18nText ( "BI-Summary_Values" ) , styleGetter : function ( ) { return e . summaryCellStyleGetter ( ! 0 ) } } ] . concat ( b . values ) ; f . push ( c ) } } ) , BI . DynamicSummaryTreeTable . formatSummaryItems ( f , b , e . crossItems , 1 ) } , _formatColumns : function ( a , b ) { return BI . isNotEmptyArray ( a ) ? ( b = b || this . _getHDeep ( ) , a . slice ( Math . max ( 0 , b - 1 ) ) ) : a } , _formatFreezeCols : function ( ) { return this . options . freezeCols . length > 0 ? [ 0 ] : [ ] } , _formatColumnSize : function ( a , b ) { if ( a . length <= 0 ) return [ ] ; var c = [ 0 ] ; return b = b || this . _getHDeep ( ) , BI . each ( a , function ( a , d ) { return a < b ? void ( c [ 0 ] += d ) : void c . push ( d ) } ) , c } , _recomputeColumnSize : function ( ) { var a = this . options ; a . regionColumnSize = this . table . getRegionColumnSize ( ) ; var b = this . table . getColumnSize ( ) . slice ( ) ; if ( a . freezeCols . length > 1 ) for ( var c = 0 ; c < a . freezeCols . length - 1 ; c ++ ) b . splice ( 1 , 0 , 0 ) ; a . columnSize = b } , _digest : function ( ) { var a = this . options , b = this . _getHDeep ( ) , c = this . _getVDeep ( ) , d = this . _createHeader ( c ) , e = this . _formatItems ( a . items , d , b ) , f = a . columnSize . slice ( ) , g = a . minColumnSize . slice ( ) , h = a . maxColumnSize . slice ( ) ; return BI . removeAt ( f , e . deletedCols ) , BI . removeAt ( g , e . deletedCols ) , BI . removeAt ( h , e . deletedCols ) , { header : e . header , items : e . items , columnSize : this . _formatColumnSize ( f , b ) , minColumnSize : this . _formatColumns ( g , b ) , maxColumnSize : this . _formatColumns ( h , b ) , freezeCols : this . _formatFreezeCols ( ) } } , _init : function ( ) { BI . DynamicSummaryLayerTreeTable . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = this . _digest ( ) ; this . table = BI . createWidget ( b . el , { type : "bi.resizable_table" , element : this , width : b . width , height : b . height , isNeedResize : b . isNeedResize , isResizeAdapt : b . isResizeAdapt , isNeedFreeze : b . isNeedFreeze , freezeCols : c . freezeCols , isNeedMerge : b . isNeedMerge , mergeCols : [ ] , mergeRule : b . mergeRule , columnSize : c . columnSize , minColumnSize : c . minColumnSize , maxColumnSize : c . maxColumnSize , headerRowSize : b . headerRowSize , rowSize : b . rowSize , regionColumnSize : b . regionColumnSize , header : c . header , items : c . items } ) , this . table . on ( BI . Table . EVENT _TABLE _SCROLL , f
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 . HandStandBranchExpander = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . HandStandBranchExpander . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-handstand-branch-expander" , direction : BI . Direction . Top , logic : { dynamic : ! 0 } , el : { type : "bi.label" } , popup : { } } ) } , _init : function ( ) { BI . HandStandBranchExpander . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . _initExpander ( ) , this . _initBranchView ( ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( a . direction ) , BI . extend ( { } , a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( a . direction , { type : "bi.center_adapt" , items : [ this . expander ] } , this . branchView ) } ) ) ) ) } , _initExpander : function ( ) { var a = this , b = this . options ; this . expander = BI . createWidget ( b . el ) , this . expander . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , _initBranchView : function ( ) { var a = this , b = this . options ; this . branchView = BI . createWidget ( b . popup , { } ) , this . branchView . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , populate : function ( a ) { this . branchView . populate . apply ( this . branchView , arguments ) } , getValue : function ( ) { return this . branchView . getValue ( ) } } ) , BI . HandStandBranchExpander . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.handstand_branch_expander" , BI . HandStandBranchExpander ) , BI . BranchExpander = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . BranchExpander . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-branch-expander" , direction : BI . Direction . Left , logic : { dynamic : ! 0 } , el : { } , popup : { } } ) } , _init : function ( ) { BI . BranchExpander . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . _initExpander ( ) , this . _initBranchView ( ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( a . direction ) , BI . extend ( { } , a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( a . direction , this . expander , this . branchView ) } ) ) ) ) } , _initExpander : function ( ) { var a = this , b = this . options ; this . expander = BI . createWidget ( b . el , { type : "bi.label" , width : 30 , height : "100%" } ) , this . expander . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , _initBranchView : function ( ) { var a = this , b = this . options ; this . branchView = BI . createWidget ( b . popup , { } ) , this . branchView . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , populate : function ( a ) { this . branchView . populate . apply ( this . branchView , arguments ) } , getValue : function ( ) { return this . branchView . getValue ( ) } } ) , BI . BranchExpander . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.branch_expander" , BI . BranchExpander ) , BI . HandStandBranchTree = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . HandStandBranchTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseC
b . push ( c . id || c . attr ( "id" ) ) } ) , b } , _getRegionsByNames : function ( a , b ) { if ( a = BI . isArray ( a ) ? a : [ a ] , b = b || this . regions , BI . isArray ( b ) ) { var c = [ ] ; BI . each ( b , function ( b , d ) { a . contains ( d . id || d . attr ( "id" ) ) && c . push ( d ) } ) } else { var c = { } ; BI . each ( a , function ( a , d ) { c [ d ] = b [ d ] } ) } return c } , _cloneRegion : function ( a ) { var b = { } ; return BI . each ( a || this . regions , function ( a , c ) { b [ a ] = { } , b [ a ] . el = c . el , b [ a ] . id = c . id , b [ a ] . left = c . left , b [ a ] . top = c . top , b [ a ] . width = c . width , b [ a ] . height = c . height } ) , b } , _test : function ( a ) { return ! BI . any ( a || this . regions , function ( a , b ) { if ( BI . isNaN ( b . width ) || BI . isNaN ( b . height ) || b . width <= 21 || b . height <= 21 ) return ! 0 } ) } , _getScrollOffset : function ( ) { return { left : this . scrollContainer . element [ 0 ] . scrollLeft , top : this . scrollContainer . element [ 0 ] . scrollTop } } , _createOneRegion : function ( a ) { var b = BI . createWidget ( a . el ) ; return b . setVisible ( ! 0 ) , { id : b . attr ( "id" ) , left : a . left , top : a . top , width : a . width , height : a . height , el : b } } , _applyRegion : function ( a ) { this . options ; BI . each ( a || this . regions , function ( a , b ) { b . el . element . css ( { left : b . left , top : b . top , width : b . width , height : b . height } ) } ) , this . _applyContainer ( ) , this . ratio = this . getLayoutRatio ( ) } , _renderRegion : function ( ) { var a = BI . toArray ( this . regions ) ; BI . each ( a , function ( a , b ) { BI . isNotNull ( b . el ) ? b . el . options . key = b . id : b . key = b . id } ) , BI . isNull ( this . wrapper ) && ( this . wrapper = BI . createWidget ( { type : "bi.absolute" , element : this . container } ) ) , this . wrapper . populate ( a ) } , getClientWidth : function ( ) { return this . scrollContainer . element [ 0 ] . clientWidth } , getClientHeight : function ( ) { return this . scrollContainer . element [ 0 ] . clientHeight } , _applyContainer : function ( ) { this . scrollContainer . element . css ( "overflow" , "hidden" ) ; var a = this . _getRegionOccupied ( ) ; return this . container . element . width ( a . left + a . width ) . height ( a . top + a . height ) , this . scrollContainer . element . css ( "overflow" , "auto" ) , a } , _modifyRegion : function ( a ) { BI . each ( this . regions , function ( b , c ) { a [ b ] && ( c . left = a [ b ] . left , c . top = a [ b ] . top , c . width = a [ b ] . width , c . height = a [ b ] . height ) } ) } , _addRegion : function ( a ) { var b = this . _createOneRegion ( a ) ; this . regions [ b . id ] = b , BI . createWidget ( { type : "bi.absolute" , element : this . container , items : [ b ] } ) } , _deleteRegionByName : function ( a ) { this . regions [ a ] . el . setVisible ( ! 1 ) , delete this . regions [ a ] } , _setArrangeSize : function ( a ) { this . arrangement . element . css ( { left : a . left , top : a . top , width : a . width , height : a . height } ) } , _getOneWidthPortion : function ( ) { return this . getClientWidth ( ) / BI . Arrangement . PORTION } , _getOneHeightPortion : function ( ) { return this . getClientHeight ( ) / BI . Arrangement . H _PORTION } , _getGridPositionAndSize : function ( a ) { var b = this . _getOneWidthPortion ( ) , c = this . _getOneHeightPortion ( ) , d = Math . round ( a . width / b ) , e = Math . round ( a . left / b ) , f = Math . round ( a . top / c ) , g = Math . round ( a . height / c ) ; return 0 === d && ( d = 1 ) , 0 === g && ( g = 1 ) , { x : e , y : f , w : d , h : g } } , _getBlockPositionAndSize : function ( a ) { var b = this . _getOneWidthPortion ( ) , c = this . _getOneHeightPortion ( ) ; return { left : a . x * b , top : a . y * c , width : a . w * b , height : a . h * c } } , _getLayoutsByRegions : function ( a ) { var b = this , c = [ ] ; return BI . each ( a || this . regions , function ( a , d ) { c . push ( BI . extend ( b . _getGridPositionAndSize ( d ) , { i : d . id } ) ) } ) , c } , _getLayoutIndexByName : function ( a , b ) { return BI . findIndex ( a , function ( a , c ) { return c . i === b } ) } , _setBlockPositionAndSize : function ( a ) { this . block . element . css ( { left : a . left , top : a . top , width : a . width , height : a . height } ) } , _getRegionsByLayout : function ( a ) { var b = this , c = { } ; return BI . each ( a , function ( a , d ) { c [ d . i ] = BI . extend ( b . _getBlockPositionAndSize ( d ) , { id : d . i } ) } ) , c } , _setRegionsByLayout : function ( a , b ) { var c = this ; return a || ( a = this . regions ) , BI . each ( b , function ( b , d ) { a [ d . i ] && BI . extend ( a [ d . i ] , c . _getBlockPositionAndSize ( d ) ) } ) , a } , _moveElement : function ( a , b , c , d , e ) { function f ( a , b ) { return BI . filter ( a , function ( a , c ) { return g . _collides ( c , b ) } ) } var g = this ; if ( b . _static ) return a ; if ( b . y === d && b . x === c ) return a ; var h = d && b . y > d ; "number" == typeof c && ( b . x = c ) , "number" == typeof d && ( b . y = d ) , b . moved = ! 0 ; var i = this . _sortLayoutItemsByRowCol ( a ) ; h && ( i = i . reverse ( ) ) ; for ( var j = f ( i , b ) , k = 0 , l = j . length ; k < l ; k ++ ) { var m = j [ k ] ; m . moved || b . y > m . y && b . y - m . y > m . h / 4 || ( a = m . _static ? this . _moveElementAwayFromCollision ( a , m , b , e ) : this . _moveElementAwayFromCollision ( a , b , m , e ) ) } return a } , _sortLayoutItemsByRowCol : function ( a ) { return [ ] . concat ( a ) . sort ( function ( a , b ) { return a . y > b . y || a . y === b . y && a . x > b . x ? 1 : -
0 === a . _month ? a . setValue ( { year : a . year . getValue ( ) - 1 , month : 11 } ) : a . setValue ( { year : a . year . getValue ( ) , month : a . month . getValue ( ) - 1 } ) , a . fireEvent ( BI . DatePicker . EVENT _CHANGE ) , a . _checkLeftValid ( ) , a . _checkRightValid ( ) } ) , this . right = BI . createWidget ( { type : "bi.icon_button" , cls : "next-page-h-font" , width : 25 , height : 25 } ) , this . right . on ( BI . IconButton . EVENT _CHANGE , function ( ) { 11 === a . _month ? a . setValue ( { year : a . year . getValue ( ) + 1 , month : 0 } ) : a . setValue ( { year : a . year . getValue ( ) , month : a . month . getValue ( ) + 1 } ) , a . fireEvent ( BI . DatePicker . EVENT _CHANGE ) , a . _checkLeftValid ( ) , a . _checkRightValid ( ) } ) , this . year = BI . createWidget ( { type : "bi.year_date_combo" , min : b . min , max : b . max } ) , this . year . on ( BI . YearDateCombo . EVENT _CHANGE , function ( ) { a . setValue ( { year : a . year . getValue ( ) , month : a . month . getValue ( ) } ) , a . fireEvent ( BI . DatePicker . EVENT _CHANGE ) } ) , this . month = BI . createWidget ( { type : "bi.month_date_combo" } ) , this . month . on ( BI . MonthDateCombo . EVENT _CHANGE , function ( ) { a . setValue ( { year : a . year . getValue ( ) , month : a . month . getValue ( ) } ) , a . fireEvent ( BI . DatePicker . EVENT _CHANGE ) } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . left , width : 25 } , { type : "bi.center_adapt" , items : [ { type : "bi.horizontal" , width : 100 , items : [ this . year , this . month ] } ] } , { el : this . right , width : 25 } ] } ) , this . setValue ( { year : this . _year , month : this . _month } ) } , _checkLeftValid : function ( ) { var a = this . options , b = ! ( 0 === this . _month && this . _year === Date . parseDateTime ( a . min , "%Y-%X-%d" ) . getFullYear ( ) ) ; return this . left . setEnable ( b ) , b } , _checkRightValid : function ( ) { var a = this . options , b = ! ( 11 === this . _month && this . _year === Date . parseDateTime ( a . max , "%Y-%X-%d" ) . getFullYear ( ) ) ; return this . right . setEnable ( b ) , b } , setValue : function ( a ) { this . _year = a . year , this . _month = a . month , this . year . setValue ( a . year ) , this . month . setValue ( a . month ) , this . _checkLeftValid ( ) , this . _checkRightValid ( ) } , getValue : function ( ) { return { year : this . year . getValue ( ) , month : this . month . getValue ( ) } } } ) , BI . DatePicker . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.date_picker" , BI . DatePicker ) , BI . DateCalendarPopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . DateCalendarPopup . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-date-calendar-popup" , min : "1900-01-01" , max : "2099-12-31" , selectedTime : null } ) } , _createNav : function ( a ) { var b = BI . Calendar . getDateJSONByPage ( a ) , c = BI . createWidget ( { type : "bi.calendar" , logic : { dynamic : ! 0 } , min : this . options . min , max : this . options . max , year : b . year , month : b . month , day : this . selectedTime . day } ) ; return c } , _init : function ( ) { BI . DateCalendarPopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . today = new Date , this . _year = this . today . getFullYear ( ) , this . _month = this . today . getMonth ( ) , this . _day = this . today . getDate ( ) , this . selectedTime = b . selectedTime || { year : this . _year , month : this . _month , day : this . _day } , this . datePicker = BI . createWidget ( { type : "bi.date_picker" , min : b . min , max : b . max } ) , this . calendar = BI . createWidget ( { direction : "top" , element : this , logic : { dynamic : ! 0 } , type : "bi.navigation" , tab : this . datePicker , cardCreator : BI . bind ( this . _createNav , this ) , afterCardCreated : function ( ) { } , afterCardShow : function ( ) { this . setValue ( a . selectedTime ) } } ) , this . datePicker . on ( BI . DatePicker . EVENT _CHANGE , function ( ) { a . selectedTime = a . datePicker . getValue ( ) , a . selectedTime . day = 1 , a . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( a . selectedTime ) ) } ) , this . calendar . on ( BI . Navigation . EVENT _CHANGE , function ( ) { a . selectedTime = a . calendar . getValue ( ) , a . setValue ( a . selectedTime ) , a . fireEvent ( BI . DateCalendarPopup . EVENT _CHANGE ) } ) } , setValue : function ( a ) { this . datePicker . setValue ( a ) , this . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( a ) ) , this . calendar . setValue ( a ) , this . selectedTime = a } , getValue : function ( ) { return this . selectedTime } } ) , BI . DateCalendarPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.date_calendar_popup" , BI . DateCalendarPopup ) , BI . DateTriangleTrigger = BI . inherit ( BI . Trigger , { _const : { height : 25 , iconWidth : 16 , iconHeight : 13 } , _defaultConfig : function ( ) { return BI . extend ( BI . DateTriangleTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-date-triangle-trigger pull-down-ha-font cursor-pointer" , height : 25 } ) } , _init : function ( ) { BI . DateTriangleTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options ,
} ) } , getValue : function ( ) { return this . downlistgroup . getValue ( ) } , setValue : function ( a ) { this . downlistgroup . setValue ( a ) } } ) , BI . DownListGroup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.down_list_group" , BI . DownListGroup ) , BI . DownListItem = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . DownListItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-down-list-item bi-list-item-active" , cls : "" , height : 25 , logic : { dynamic : ! 0 } , selected : ! 1 , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . DownListItem . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . text = BI . createWidget ( { type : "bi.icon_text_item" , element : this , height : b . height , text : b . text , value : b . value , logic : b . logic , selected : b . selected , disabled : b . disabled , iconHeight : b . iconHeight , iconWidth : b . iconWidth , textHgap : b . textHgap , textVgap : b . textVgap , textLgap : b . textLgap , textRgap : b . textRgap , father : b . father } ) , this . text . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . text . on ( BI . IconTextItem . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . DownListItem . EVENT _CHANGE ) } ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , isSelected : function ( ) { return this . text . isSelected ( ) } , setSelected : function ( a ) { this . text . setSelected ( a ) } , setValue : function ( a ) { this . text . setValue ( a ) } , getValue : function ( ) { return this . text . getValue ( ) } } ) , BI . DownListItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.down_list_item" , BI . DownListItem ) , BI . DownListGroupItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . DownListGroupItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-down-list-group-item" , logic : { dynamic : ! 1 } , iconCls1 : "dot-e-font" , iconCls2 : "pull-right-e-font" } ) } , _init : function ( ) { BI . DownListGroupItem . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-group-item-text" , textAlign : "left" , text : a . text , value : a . value , height : a . height } ) , this . icon1 = BI . createWidget ( { type : "bi.icon_button" , cls : a . iconCls1 , width : 25 , forceNotSelected : ! 0 } ) , this . icon2 = BI . createWidget ( { type : "bi.icon_button" , cls : a . iconCls2 , width : 25 , forceNotSelected : ! 0 } ) ; var c = BI . createWidget ( { type : "bi.layout" , width : 25 } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . icon2 , top : 0 , bottom : 0 , right : 0 } ] } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , this . icon1 , this . text , c ) } ) ) ) ) , this . element . hover ( function ( ) { b . isEnabled ( ) && b . hover ( ) } , function ( ) { b . isEnabled ( ) && b . dishover ( ) } ) } , hover : function ( ) { BI . DownListGroupItem . superclass . hover . apply ( this , arguments ) , this . icon1 . element . addClass ( "hover" ) , this . icon2 . element . addClass ( "hover" ) } , dishover : function ( ) { BI . DownListGroupItem . superclass . dishover . apply ( this , arguments ) , this . icon1 . element . removeClass ( "hover" ) , this . icon2 . element . removeClass ( "hover" ) } , doClick : function ( ) { BI . DownListGroupItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . DownListGroupItem . EVENT _CHANGE , this . getValue ( ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , setValue : function ( a ) { var b = this , c = this . options ; a = BI . isArray ( a ) ? a : [ a ] , BI . find ( a , function ( a , d ) { return BI . contains ( c . childValues , d ) ? ( b . icon1 . setSelected ( ! 0 ) , ! 0 ) : void b . icon1 . setSelected ( ! 1 ) } ) } } ) , BI . DownListGroupItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.down_list_group_item" , BI . DownListGroupItem ) , BI . DownListPopup = BI . inherit ( BI . Pane , { constants : { nextIcon : "pull-right-e-font" , height : 25 , iconHeight : 12 , iconWidth : 12 , hgap : 0 , vgap : 0 , border : 1 } , _defaultConfig : function ( ) { var a = BI . DownListPopup . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-down-list-popup" , items : [ ] , chooseType : BI . Selection . Multi } ) } , _init : function ( ) { BI . DownListPopup . superclass . _init . apply ( this , arguments ) , this . singleValues = [ ] , this . childValueMap = { } , this . fa
return this . arrangement . getClientHeight ( ) } , getPosition : function ( a , b , c ) { var d , e = this . getAllRegions ( ) ; a && ( d = this . _getRegionClientPosition ( a ) ) ; var f = this . _getRegionExcept ( a , e ) ; b = b || { left : d . left , top : d . top } , c = c || { width : d . width , height : d . height } ; var g = this . _leftAlign ( b , c , f ) , h = this . _rightAlign ( b , c , f ) , i = this . _topAlign ( b , c , f , f ) , j = this . _bottomAlign ( b , c , f ) , k = this . _centerAlign ( b , c , f ) , l = this . _middleAlign ( b , c , f ) ; return BI . each ( k , function ( a , d ) { b . left = d . end . left - c . width / 2 } ) , BI . each ( h , function ( a , d ) { b . left = d . end . left - c . width } ) , BI . each ( g , function ( a , c ) { b . left = c . end . left } ) , BI . each ( l , function ( a , d ) { b . top = d . end . top - c . height / 2 } ) , BI . each ( j , function ( a , d ) { b . top = d . end . top - c . height } ) , BI . each ( i , function ( a , c ) { b . top = c . end . top } ) , b } , getSize : function ( a , b , c ) { var d , e = this . getAllRegions ( ) ; a && ( d = this . _getRegionClientPosition ( a ) ) ; var f = this . _getRegionExcept ( a , e ) ; b = b || { left : d . left , top : d . top } , c = c || { width : d . width , height : d . height } ; var g = this . _leftAlign ( b , c , f ) , h = this . _rightAlign ( b , c , f ) , i = this . _topAlign ( b , c , f , f ) , j = this . _bottomAlign ( b , c , f ) , k = this . _centerAlign ( b , c , f ) , l = this . _middleAlign ( b , c , f ) ; return BI . each ( k , function ( a , d ) { c . width = 2 * ( d . end . left - b . left ) } ) , BI . each ( h , function ( a , d ) { c . width = d . end . left - b . left } ) , BI . each ( g , function ( a , b ) { } ) , BI . each ( l , function ( a , d ) { c . height = 2 * ( d . end . top - b . top ) } ) , BI . each ( j , function ( a , d ) { c . height = d . end . top - b . top } ) , BI . each ( i , function ( a , b ) { } ) , c } , draw : function ( a , b , c ) { var d = this ; switch ( this . stopDraw ( ) , this . getLayoutType ( ) ) { case BI . Arrangement . LAYOUT _TYPE . FREE : var e = this . _getRegionExcept ( c ) , f = this . _leftAlign ( a , b , e ) , g = this . _rightAlign ( a , b , e ) , h = this . _topAlign ( a , b , e ) , i = this . _bottomAlign ( a , b , e ) , j = this . _centerAlign ( a , b , e ) , k = this . _middleAlign ( a , b , e ) ; BI . each ( j , function ( a , b ) { d . _drawOneTag ( b . start , b . end ) } ) , BI . each ( g , function ( a , b ) { d . _drawOneTag ( b . start , b . end ) } ) , BI . each ( f , function ( a , b ) { d . _drawOneTag ( b . start , b . end ) } ) , BI . each ( k , function ( a , b ) { d . _drawOneTag ( b . start , b . end ) } ) , BI . each ( i , function ( a , b ) { d . _drawOneTag ( b . start , b . end ) } ) , BI . each ( h , function ( a , b ) { d . _drawOneTag ( b . start , b . end ) } ) ; break ; case BI . Arrangement . LAYOUT _TYPE . GRID : } } , addRegion : function ( a , b ) { return this . stopDraw ( ) , this . arrangement . addRegion ( a , b ) } , deleteRegion : function ( a ) { return this . arrangement . deleteRegion ( a ) } , setRegionSize : function ( a , b ) { return b = this . getSize ( a , null , b ) , this . arrangement . setRegionSize ( a , b ) } , setPosition : function ( a , b ) { if ( this . stopDraw ( ) , a . left > 0 && a . top > 0 ) switch ( this . getLayoutType ( ) ) { case BI . Arrangement . LAYOUT _TYPE . FREE : a = this . getPosition ( null , a , b ) , this . draw ( a , b ) ; break ; case BI . Arrangement . LAYOUT _TYPE . GRID : } var c = this . arrangement . setPosition ( a , b ) ; return c } , setRegionPosition : function ( a , b ) { if ( b . left > 0 && b . top > 0 ) switch ( this . getLayoutType ( ) ) { case BI . Arrangement . LAYOUT _TYPE . FREE : b = this . getPosition ( a , b ) ; break ; case BI . Arrangement . LAYOUT _TYPE . GRID : } return this . arrangement . setRegionPosition ( a , b ) } , setDropPosition : function ( a , b ) { var c = this ; if ( this . stopDraw ( ) , a . left > 0 && a . top > 0 ) switch ( this . getLayoutType ( ) ) { case BI . Arrangement . LAYOUT _TYPE . FREE : a = this . getPosition ( null , a , b ) , this . draw ( a , b ) ; break ; case BI . Arrangement . LAYOUT _TYPE . GRID : } var d = c . arrangement . setDropPosition ( a , b ) ; return function ( ) { d ( ) , c . stopDraw ( ) } } , scrollInterval : function ( ) { this . arrangement . scrollInterval . apply ( this . arrangement , arguments ) } , scrollEnd : function ( ) { this . arrangement . scrollEnd . apply ( this . arrangement , arguments ) } , scrollTo : function ( a ) { this . arrangement . scrollTo ( a ) } , zoom : function ( a ) { this . arrangement . zoom ( a ) } , resize : function ( ) { return this . arrangement . resize ( ) } , relayout : function ( ) { return this . arrangement . relayout ( ) } , setLayoutType : function ( a ) { this . arrangement . setLayoutType ( a ) } , getLayoutType : function ( ) { return this . arrangement . getLayoutType ( ) } , getLayoutRatio : function ( ) { return this . arrangement . getLayoutRatio ( ) } , getHelper : function ( ) { return this . arrangement . getHelper ( ) } , getRegionByName : function ( a ) { return this . arrangement . getRegionByName ( a ) } , getAllRegions : function ( ) { return this . arrangement . getAllRegions ( ) } , revoke : function ( ) { return this . arrangement . revoke ( ) } , populate : function ( a ) { this . arrangement . populate ( a ) } } ) , BI . InteractiveArrangement . EVENT _RESIZE = "InteractiveArrangement.EVENT_RESIZE" , BI . InteractiveArrangement . EVENT _SCROLL = " InteractiveArrangement . EVENT _SCRO
} , isSelected : function ( ) { return this . radio . isSelected ( ) } , getValue : function ( ) { return this . options . value } , getInputValue : function ( ) { return 0 | this . textEditor . getValue ( ) } , setInputValue : function ( a ) { this . textEditor . setValue ( a ) } , isEditorExist : function ( ) { return this . options . isEditorExist } } ) , BI . MultiDateSegment . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multidate_segment" , BI . MultiDateSegment ) , BI . WeekCard = BI . inherit ( BI . MultiDateCard , { _defaultConfig : function ( ) { return $ . extend ( BI . WeekCard . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multidate-weekcard" } ) } , _init : function ( ) { BI . WeekCard . superclass . _init . apply ( this , arguments ) } , dateConfig : function ( ) { return [ { selected : ! 0 , isEditorExist : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Week_Prev" ) , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _WEEK _PREV } , { isEditorExist : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Week_Next" ) , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _WEEK _AFTER } ] } , defaultSelectedItem : function ( ) { return BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _WEEK _PREV } } ) , BI . WeekCard . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.weekcard" , BI . WeekCard ) , BI . YearCard = BI . inherit ( BI . MultiDateCard , { _defaultConfig : function ( ) { return $ . extend ( BI . YearCard . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multidate-yearcard" } ) } , _init : function ( ) { BI . YearCard . superclass . _init . apply ( this , arguments ) } , dateConfig : function ( ) { return [ { selected : ! 0 , isEditorExist : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Year_Prev" ) , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _PREV } , { isEditorExist : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Year_Next" ) , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _AFTER } , { isEditorExist : ! 1 , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _BEGIN , text : BI . i18nText ( "BI-Multi_Date_Year_Begin" ) } , { isEditorExist : ! 1 , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _END , text : BI . i18nText ( "BI-Multi_Date_Year_End" ) } ] } , defaultSelectedItem : function ( ) { return BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _PREV } } ) , BI . YearCard . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.yearcard" , BI . YearCard ) , BI . MultiLayerSelectTreeCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSelectTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multilayer_select_tree-combo" , isDefaultInit : ! 1 , height : 30 , text : "" , items : [ ] } ) } , _init : function ( ) { BI . MultiLayerSelectTreeCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.single_tree_trigger" , text : b . text , height : b . height , items : b . items } ) , this . popup = BI . createWidget ( { type : "bi.multilayer_select_tree_popup" , isDefaultInit : b . isDefaultInit , items : b . items } ) , this . combo = BI . createWidget ( { type : "bi.combo" , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup } } ) , this . combo . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . popup . on ( BI . MultiLayerSelectTreePopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . MultiLayerSelectTreeCombo . EVENT _CHANGE ) } ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , this . trigger . setValue ( a ) , this . popup . setValue ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } , populate : function ( a ) { this . combo . populate ( a ) } } ) , BI . MultiLayerSelectTreeCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multilayer_select_tree_combo" , BI . MultiLayerSelectTreeCombo ) , BI . MultiLayerSelectLevelTree = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSelectLevelTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multilayer-select-level-tree" , isDefaultInit : ! 1 , items : [ ] , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . MultiLayerSelectLevelTree . superclass . _init . apply ( this , arguments ) , this . initTree ( this . options . items ) } , _formatItems : function ( a , b ) { var c = this ; return BI . each ( a , function ( d , e ) { var f = { } ; if ( e . layer = b , BI . isKey ( e . id ) || ( e . id = BI . UUID ( ) ) , e . isParent === ! 0 || BI . isNotEmptyArray ( e . children ) ) { switch ( d ) { case 0 : f . type = "bi.multilayer_select_tree_first_plus_group_node" ; break ; case a . length - 1 : f . type = "bi.multilayer_select_tree_last_plus_group_node" ; break ; default : f . type = " bi . multilayer _select _tree _mid _plus _group _no
action : function ( ) { a . storeValue = this . getValue ( ) , a . _adjust ( function ( ) { c ( ) } ) } } , { eventName : BI . MultiSelectPopupView . EVENT _CLICK _CONFIRM , action : function ( ) { a . _defaultState ( ) } } , { eventName : BI . MultiSelectPopupView . EVENT _CLICK _CLEAR , action : function ( ) { a . setValue ( ) , a . _defaultState ( ) } } ] , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , onLoaded : function ( ) { BI . nextTick ( function ( ) { a . combo . adjustWidth ( ) , a . combo . adjustHeight ( ) , a . trigger . getCounter ( ) . adjustView ( ) , a . trigger . getSearcher ( ) . adjustView ( ) } ) } } , hideChecker : function ( a ) { return 0 === d . element . find ( a . target ) . length } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { this . setValue ( a . storeValue ) , BI . nextTick ( function ( ) { a . populate ( ) } ) } ) , this . wants2Quit = ! 1 , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { a . trigger . stopEditing ( ) , a . requesting === ! 0 ? a . wants2Quit = ! 0 : a . fireEvent ( BI . MultiSelectCombo . EVENT _CONFIRM ) } ) ; var d = BI . createWidget ( { type : "bi.trigger_icon_button" , width : b . height , height : b . height , cls : "multi-select-trigger-icon-button bi-border-left" } ) ; d . on ( BI . TriggerIconButton . EVENT _CHANGE , function ( ) { a . trigger . getCounter ( ) . hideView ( ) , a . combo . isViewVisible ( ) ? a . combo . hideView ( ) : a . combo . showView ( ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . combo , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : d , right : 0 , top : 0 , bottom : 0 } ] } ) } , _defaultState : function ( ) { this . trigger . stopEditing ( ) , this . combo . hideView ( ) } , _assertValue : function ( a ) { a || ( a = { } ) , a . type || ( a . type = BI . Selection . Multi ) , a . value || ( a . value = [ ] ) } , _makeMap : function ( a ) { return BI . makeObject ( a || [ ] ) } , _joinKeywords : function ( a , b ) { function c ( c ) { var e = d . _makeMap ( c ) ; BI . each ( a , function ( a , b ) { BI . isNotNull ( e [ b ] ) && d . storeValue . value [ d . storeValue . type === BI . Selection . Multi ? "pushDistinct" : "remove" ] ( b ) } ) , d . _adjust ( b ) } var d = this , e = this . options ; this . _assertValue ( this . storeValue ) , this . requesting = ! 0 , e . itemsCreator ( { type : BI . MultiSelectCombo . REQ _GET _ALL _DATA , keywords : a } , function ( a ) { var b = BI . pluck ( a . items , "value" ) ; c ( b ) } ) } , _joinAll : function ( a , b ) { var c = this , d = this . options ; this . _assertValue ( a ) , this . requesting = ! 0 , d . itemsCreator ( { type : BI . MultiSelectCombo . REQ _GET _ALL _DATA , keywords : [ this . trigger . getKey ( ) ] } , 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 . wants2Quit === ! 0 && ( c . fireEvent ( BI . MultiSelectCombo . EVENT _CONFIRM ) , c . wants2Quit = ! 1 ) , c . requesting = ! 1 } var c = this ; this . options ; b ( ) , a ( ) } , _join : function ( a , b ) { var c = this ; this . options ; if ( this . _assertValue ( a ) , this . _assertValue ( this . storeValue ) , this . storeValue . type === a . type ) { var d = this . _makeMap ( this . storeValue . value ) ; BI . each ( a . value , function ( a , b ) { d [ b ] || ( c . storeValue . value . push ( b ) , d [ b ] = b ) } ) ; var e = ! 1 ; return BI . each ( a . assist , function ( a , b ) { BI . isNotNull ( d [ b ] ) && ( e = ! 0 , delete d [ b ] ) } ) , e && ( this . storeValue . value = BI . values ( d ) ) , void c . _adjust ( b ) } this . _joinAll ( a , b ) } , _setStartValue : function ( a ) { this . _startValue = a , this . popup . setStartValue ( a ) } , setValue : function ( a ) { this . storeValue = a || { } , this . _assertValue ( this . storeValue ) , this . combo . setValue ( this . storeValue ) } , getValue : function ( ) { return BI . deepClone ( this . storeValue ) } , populate : function ( ) { this . _count = null , this . combo . populate . apply ( this . combo , arguments ) } } ) , BI . extend ( BI . MultiSelectCombo , { REQ _GET _DATA _LENGTH : 0 , REQ _GET _ALL _DATA : - 1 } ) , BI . MultiSelectCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.multi_select_combo" , BI . MultiSelectCombo ) , BI . MultiSelectLoader = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectLoader . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-loader" , logic : { dynamic : ! 0 } , el : { height : 400 } , valueFormatter : BI . emptyFn , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectLoader . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = ! 1 ; this . button _group = BI
this . searcher . stopSearch ( ) } , updateValue : function ( a ) { this . adapter . updateValue ( a ) } , getValue : function ( ) { return this . storeValue . value } , populate : function ( ) { this . searcher . populate . apply ( this . searcher , arguments ) , this . adapter . populate . apply ( this . adapter , arguments ) } } ) , BI . MultiSelectTree . EVENT _CHANGE = "BI.MultiSelectTree.EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_tree" , BI . MultiSelectTree ) , BI . MultiSelectTreePopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectTreePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-tree-popup bi-border-left bi-border-right bi-border-bottom" , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectTreePopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . popup = BI . createWidget ( { type : "bi.async_tree" , element : this , itemsCreator : b . itemsCreator } ) , this . popup . on ( BI . TreeView . EVENT _AFTERINIT , function ( ) { a . fireEvent ( BI . MultiSelectTreePopup . EVENT _AFTER _INIT ) } ) , this . popup . on ( BI . TreeView . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectTreePopup . EVENT _CHANGE ) } ) } , hasChecked : function ( ) { return this . popup . hasChecked ( ) } , getValue : function ( ) { return this . popup . getValue ( ) } , setValue : function ( a ) { a || ( a = { } ) , this . popup . setValue ( a ) } , setSelectedValue : function ( a ) { a || ( a = { } ) , this . popup . setSelectedValue ( a ) } , updateValue : function ( a ) { this . popup . updateValue ( a ) , this . popup . refresh ( ) } , populate : function ( a ) { this . popup . stroke ( a ) } } ) , BI . MultiSelectTreePopup . EVENT _AFTER _INIT = "BI.MultiSelectTreePopup.EVENT_AFTER_INIT" , BI . MultiSelectTreePopup . EVENT _CHANGE = "BI.MultiSelectTreePopup.EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_tree_popup" , BI . MultiSelectTreePopup ) , BI . MultiTreeCheckPane = BI . inherit ( BI . Pane , { constants : { height : 25 , lgap : 10 , tgap : 5 } , _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreeCheckPane . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-check-pane bi-background" , onClickContinueSelect : BI . emptyFn } ) } , _init : function ( ) { BI . MultiTreeCheckPane . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . selectedValues = { } ; var c = BI . createWidget ( { type : "bi.text_button" , text : BI . i18nText ( "BI-Continue_Select" ) , cls : "multi-tree-check-selected" } ) ; c . on ( BI . TextButton . EVENT _CHANGE , function ( ) { b . onClickContinueSelect ( ) , BI . nextTick ( function ( ) { a . empty ( ) } ) } ) ; var d = BI . createWidget ( { type : "bi.left" , cls : "multi-tree-continue-select" , items : [ { el : { type : "bi.label" , text : BI . i18nText ( "BI-Selected_Data" ) } , lgap : this . constants . lgap , tgap : this . constants . tgap } , { el : c , lgap : this . constants . lgap , tgap : this . constants . tgap } ] } ) ; this . display = BI . createWidget ( { type : "bi.display_tree" , cls : "bi-multi-tree-display" , itemsCreator : function ( a , c ) { a . type = BI . TreeView . REQ _TYPE _GET _SELECTED _DATA , b . itemsCreator ( a , c ) } } ) , this . display . on ( BI . Events . AFTERINIT , function ( ) { a . fireEvent ( BI . Events . AFTERINIT ) } ) , this . display . on ( BI . TreeView . EVENT _INIT , function ( ) { d . setVisible ( ! 1 ) } ) , this . display . on ( BI . TreeView . EVENT _AFTERINIT , function ( ) { d . setVisible ( ! 0 ) } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { height : this . constants . height , el : d } , { height : "fill" , el : this . display } ] } ) } , empty : function ( ) { this . display . empty ( ) } , populate : function ( a ) { this . display . stroke ( a ) } , setValue : function ( a ) { a || ( a = { } ) , this . display . setSelectedValue ( a . value ) } , getValue : function ( ) { } } ) , BI . MultiTreeCheckPane . EVENT _CONTINUE _CLICK = "EVENT_CONTINUE_CLICK" , BI . shortcut ( "bi.multi_tree_check_pane" , BI . MultiTreeCheckPane ) , BI . MultiTreeCombo = BI . inherit ( BI . Single , { constants : { offset : { top : 1 , left : 1 , right : 2 , bottom : 33 } } , _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-combo" , itemsCreator : BI . emptyFn , height : 25 } ) } , _init : function ( ) { function a ( ) { h ( ) ? b . storeValue = { value : b . trigger . getValue ( ) } : i ( ) && ( b . storeValue = { value : b . combo . getValue ( ) } ) , b . trigger . setValue ( b . storeValue ) } BI . MultiTreeCombo . superclass . _init . apply ( this , arguments ) ; var b = this , c = this . options , d = ! 1 , e = ! 1 ; this . trigger = BI . createWidget ( { type : "bi.multi_select_trigger" , height : c . height , masker : { offset : this . constants . offset } , searcher : { type : "bi.multi_tree_searcher" , itemsCreator : c . itemsCreator } , switcher : { el : { type : " bi . multi _tree _check _sele
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 ] || ( this . lines [ a ] = [ ] ) , this . pathes [ a ] || ( this . pathes [ a ] = [ ] ) ; var d = this . getRegionIndexById ( a ) , e = this . regions [ d ] . getIndexByValue ( a ) ; BI . each ( b , function ( f , g ) { c . pathes [ a ] [ f ] = [ ] ; var h = f + e , i = "" , j = 47.5 + 29 * h , k = 50 + 100 * d , l = k , m = j , n = j , o = c . getRegionIndexById ( BI . last ( g ) ) , p = c . regions [ o ] . getIndexByValue ( BI . last ( g ) ) , q = 50 + 100 * o ; if ( BI . contains ( c . start , a ) ? ( l = k - 50 , i += "M" + ( k - 50 ) + "," + j , c . pathes [ a ] [ f ] . push ( { x : k - 50 , y : j } ) ) : 0 === h ? ( l = k + 50 , i += "M" + k + "," + j , c . pathes [ a ] [ f ] . push ( { x : k , y : j } ) ) : ( l = k + 50 , i += "M" + k + ",47.5L" + ( k + 50 ) + ",47.5L" + ( k + 50 ) + "," + j , c . pathes [ a ] [ f ] . push ( { x : k , y : 47.5 } ) , c . pathes [ a ] [ f ] . push ( { x : k + 50 , y : 47.5 } ) , c . pathes [ a ] [ f ] . push ( { x : k + 50 , y : j } ) ) , h > 0 ) { var r = 29 * p + 47.5 ; i += "L" + ( q - 50 ) + "," + n + "L" + ( q - 50 ) + "," + r + "L" + q + "," + r , c . pathes [ a ] [ f ] . push ( { x : q - 50 , y : n } ) , c . pathes [ a ] [ f ] . push ( { x : q - 50 , y : r } ) , c . pathes [ a ] [ f ] . push ( { x : q , y : r } ) } else i += "L" + q + "," + n , c . pathes [ a ] [ f ] . push ( { x : q , y : n } ) ; var s = c . svg . path ( i ) . attr ( { stroke : 0 === h ? c . _const . selectLineColor : c . _const . lineColor , "stroke-dasharray" : "-" } ) ; c . lines [ a ] . push ( s ) , b . length > 1 && c . lines [ a ] [ 0 ] . toFront ( ) , BI . contains ( c . start , a ) && c . lines [ c . regions [ 0 ] . getValueByIndex ( 0 ) ] [ 0 ] . toFront ( ) , ( b . length > 1 || BI . contains ( c . start , a ) ) && c . _drawRadio ( a , e , f , l , m ) } ) } , _drawLines : function ( a ) { var b = this ; this . lines = { } , this . pathes = { } , this . radios = { } , this . regionIndexes = { } , BI . each ( a , function ( a , c ) { b . regionIndexes [ a ] || ( b . regionIndexes [ a ] = [ ] ) , BI . each ( c , function ( c , d ) { BI . each ( d , function ( c , d ) { var e = b . getRegionIndexById ( d ) ; BI . contains ( b . regionIndexes [ a ] , e ) || b . regionIndexes [ a ] . push ( e ) } ) } ) } ) , BI . each ( a , function ( a , c ) { b . _drawLine ( a , c ) } ) } , _pushNodes : function ( a ) { for ( var b = this , c = [ ] , d = 0 ; d < a . length ; d ++ ) { var e = a [ d ] , f = b . getRegionIndexById ( e ) ; c . push ( f ) ; var g = b . regions [ f ] ; if ( d === a . length - 1 ) { g . hasItem ( e ) || g . addItem ( e , b . texts [ e ] ) ; break } ( d > 0 || BI . contains ( b . start , e ) ) && g . addItem ( e , b . texts [ e ] ) } for ( var d = BI . first ( c ) ; d < BI . last ( c ) ; d ++ ) BI . contains ( c , d ) || b . regions [ d ] . addItem ( "" ) } , _createNodes : function ( ) { var a = this , b = this . options ; this . store = { } , this . texts = { } , this . start = [ ] , this . end = [ ] , BI . each ( b . items , function ( b , c ) { a . start . push ( BI . first ( c ) . value ) , a . end . push ( BI . last ( c ) . value ) } ) , this . start = BI . uniq ( this . start ) , this . end = BI . uniq ( this . end ) ; var c = [ ] , d = new BI . Tree , e = { } , f = 0 ; BI . each ( b . items , function ( b , c ) { BI . each ( c , function ( b , g ) { BI . has ( e , g . value ) || ( e [ g . value ] = 0 ) , e [ g . value ] ++ , f = Math . max ( f , e [ g . value ] ) ; var h = { } ; b > 0 && ( h = c [ b - 1 ] ) ; var i = a . store [ h . value || "" ] , j = a . store [ g . value ] || new BI . Node ( g . value ) ; j . set ( g ) , a . store [ g . value ] = j , a . texts [ g . value ] = g . text , a . texts [ g . region ] = g . regionText , i = BI . isNull ( i ) ? d . getRoot ( ) : i , i . getChildIndex ( g . value ) === - 1 && d . addNode ( i , j ) } ) } ) , d . traverse ( function ( a ) { BI . each ( a . getChildren ( ) , function ( b , d ) { if ( BI . contains ( c , d . get ( "region" ) ) ) { var e = BI . indexOf ( c , a . get ( "region" ) ) , f = BI . indexOf ( c , d . get ( "region" ) ) ; if ( e > f ) { for ( var g = c [ f ] , h = f ; h < e ; h ++ ) c [ h ] = c [ h + 1 ] ; c [ e ] = g } } else c . push ( d . get ( "region" ) ) } ) } ) , this . _createRegions ( c ) , BI . each ( e , function ( a , b ) { b < f && delete e [ a ] } ) ; for ( var g = [ ] , h = d . getRoot ( ) ; h && 1 === h . getChildrenLength ( ) ; ) BI . has ( e , h . getChildren ( ) [ 0 ] . id ) ? ( delete
( 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 ( ) } , getCalculateRegionRowSize : function ( ) { return this . table . getCalculateRegionRowSize ( ) } , getClientRegionColumnSize : function ( ) { return this . table . getClientRegionColumnSize ( ) } , getScrollRegionColumnSize : function ( ) { return this . table . getScrollRegionColumnSize ( ) } , getScrollRegionRowSize : function ( ) { return this . table . getScrollRegionRowSize ( ) } , hasVerticalScroll : function ( ) { return this . table . hasVerticalScroll ( ) } , 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 ( ) } , getColumns : function ( ) { return this . table . getColumns ( ) } , attr : function ( ) { BI . ResponisveTable . superclass . attr . apply ( this , arguments ) , this . table . attr . apply ( this . table , arguments ) } , populate : function ( a ) { var b = this , c = this . options ; this . table . populate . apply ( this . table , arguments ) , c . isNeedFreeze === ! 0 && BI . nextTick ( function ( ) { b . _initRegionSize ( ) , b . table . resize ( ) , b . _resizeHeader ( ) } ) } } ) , BI . shortcut ( "bi.responsive_table" , BI . ResponisveTable ) , BI . SelectTreeFirstPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . SelectTreeFirstPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-select-tree-first-plus-group-node bi-list-item-active" , logic : { dynamic : ! 1 } , id : "" , pId : "" , readonly : ! 0 , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . SelectTreeFirstPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.first_tree_node_checkbox" , stopPropagation : ! 0 } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : b . height , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && ( this . isSelected ( ) ? a . triggerExpand ( ) : a . triggerCollapse ( ) ) } ) ; var c = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , d = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 25 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( c , BI . extend ( b . logic , { items : d } ) ) ) ) } , isOnce : function ( ) { return ! 0 } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . NodeButton . superclass . doClick . apply ( this , arguments ) } , setOpened : function ( a ) { BI . SelectTreeFirstPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( a ) } } ) , BI . shortcut ( "bi.select_tree_first_plus_group_node" , BI . SelectTreeFirstPlusGroupNode ) , BI . SelectTreeLastPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . SelectTreeLastPlusGroupNode . sup
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 . navigation = BI . createWidget ( { type : "bi.navigation" , element : this , single : ! 0 , logic : { dynamic : ! 0 } , tab : { cls : "year-popup-navigation bi-high-light bi-border-top" , height : 25 , items : [ b , c ] } , cardCreator : BI . bind ( this . _createYearCalendar , this ) , afterCardShow : function ( ) { this . setValue ( a . selectedYear ) ; var d = this . getSelectedCard ( ) ; b . setEnable ( ! d . isFrontYear ( ) ) , c . setEnable ( ! d . isFinalYear ( ) ) } } ) , this . navigation . on ( BI . Navigation . EVENT _CHANGE , function ( ) { a . selectedYear = this . getValue ( ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a . fireEvent ( BI . YearPopup . EVENT _CHANGE , a . selectedYear ) } ) } , getValue : function ( ) { return this . selectedYear } , setValue : function ( a ) { var b = this . options ; Date . checkVoid ( a , 1 , 1 , b . min , b . max ) [ 0 ] ? ( a = ( new Date ) . getFullYear ( ) , this . selectedYear = "" , this . navigation . setSelect ( BI . YearCalendar . getPageByYear ( a ) ) , this . navigation . setValue ( "" ) ) : ( this . selectedYear = a , this . navigation . setSelect ( BI . YearCalendar . getPageByYear ( a ) ) , this . navigation . setValue ( a ) ) } } ) , BI . YearPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.year_popup" , BI . YearPopup ) , BI . YearTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 , vgap : 2 , triggerWidth : 25 , errorText : BI . i18nText ( "BI-Please_Input_Positive_Integer" ) , errorTextInvalid : BI . i18nText ( "BI-Year_Trigger_Invalid_Text" ) } , _defaultConfig : function ( ) { return BI . extend ( BI . YearTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-year-trigger bi-border" , min : "1900-01-01" , max : "2099-12-31" , height : 25 } ) } , _init : function ( ) { BI . YearTrigger . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = this . _const ; this . editor = BI . createWidget ( { type : "bi.sign_editor" , height : b . height , validationChecker : function ( d ) { return a . editor . setErrorText ( BI . isPositiveInteger ( d ) ? c . errorTextInvalid : c . errorText ) , "" === d || BI . isPositiveInteger ( d ) && ! Date . checkVoid ( d , 1 , 1 , b . min , b . max ) [ 0 ] } , quitChecker : function ( a ) { return ! 1 } , hgap : c . hgap , vgap : c . vgap , allowBlank : ! 0 , errorText : c . errorText } ) , this . editor . on ( BI . SignEditor . EVENT _FOCUS , function ( ) { a . fireEvent ( BI . YearTrigger . EVENT _FOCUS ) } ) , this . editor . on ( BI . SignEditor . EVENT _STOP , function ( ) { a . fireEvent ( BI . YearTrigger . EVENT _STOP ) } ) , this . editor . on ( BI . SignEditor . EVENT _CONFIRM , function ( ) { var b = a . editor . getValue ( ) ; BI . isNotNull ( b ) && ( a . editor . setValue ( b ) , a . editor . setTitle ( b ) ) , a . fireEvent ( BI . YearTrigger . EVENT _CONFIRM ) } ) , this . editor . on ( BI . SignEditor . EVENT _SPACE , function ( ) { a . editor . isValid ( ) && a . editor . blur ( ) } ) , this . editor . on ( BI . SignEditor . EVENT _START , function ( ) { a . fireEvent ( BI . YearTrigger . EVENT _START ) } ) , this . editor . on ( BI . SignEditor . EVENT _ERROR , function ( ) { a . fireEvent ( BI . YearTrigger . EVENT _ERROR ) } ) , BI . createWidget ( { element : this , type : "bi.htape" , items : [ { el : this . editor } , { el : { type : "bi.text_button" , baseCls : "bi-trigger-year-text" , text : BI . i18nText ( "BI-Multi_Date_Year" ) , width : c . triggerWidth } , width : c . triggerWidth } , { el : { type : "bi.trigger_icon_button" , width : c . triggerWidth } , width : c . triggerWidth } ] } ) } , setValue : function ( a ) { this . editor . setState ( a ) , this . editor . setValue ( a ) , this . editor . setTitle ( a ) } , getKey : function ( ) { return 0 |