/*! fineui */
function accAdd ( a , b ) { var c , d , e , f ; try { c = a . toString ( ) . split ( "." ) [ 1 ] . length } catch ( g ) { c = 0 } try { d = b . toString ( ) . split ( "." ) [ 1 ] . length } catch ( g ) { d = 0 } if ( f = Math . abs ( c - d ) , e = Math . pow ( 10 , Math . max ( c , d ) ) , f > 0 ) { var h = Math . pow ( 10 , f ) ; c > d ? ( a = Number ( a . toString ( ) . replace ( "." , "" ) ) , b = Number ( b . toString ( ) . replace ( "." , "" ) ) * h ) : ( a = Number ( a . toString ( ) . replace ( "." , "" ) ) * h , b = Number ( b . toString ( ) . replace ( "." , "" ) ) ) } else a = Number ( a . toString ( ) . replace ( "." , "" ) ) , b = Number ( b . toString ( ) . replace ( "." , "" ) ) ; return ( a + b ) / e } function accSub ( a , b ) { var c , d , e , f ; try { c = a . toString ( ) . split ( "." ) [ 1 ] . length } catch ( g ) { c = 0 } try { d = b . toString ( ) . split ( "." ) [ 1 ] . length } catch ( g ) { d = 0 } return e = Math . pow ( 10 , Math . max ( c , d ) ) , f = c >= d ? c : d , ( ( a * e - b * e ) / e ) . toFixed ( f ) } function accMul ( a , b ) { var c = 0 , d = a . toString ( ) , e = b . toString ( ) ; try { c += d . split ( "." ) [ 1 ] . length } catch ( f ) { } try { c += e . split ( "." ) [ 1 ] . length } catch ( f ) { } return Number ( d . replace ( "." , "" ) ) * Number ( e . replace ( "." , "" ) ) / Math . pow ( 10 , c ) } function accDiv ( arg1 , arg2 ) { var t1 = 0 , t2 = 0 , r1 , r2 ; try { t1 = arg1 . toString ( ) . split ( "." ) [ 1 ] . length } catch ( e ) { } try { t2 = arg2 . toString ( ) . split ( "." ) [ 1 ] . length } catch ( e ) { } with ( Math ) return r1 = Number ( arg1 . toString ( ) . replace ( "." , "" ) ) , r2 = Number ( arg2 . toString ( ) . replace ( "." , "" ) ) , t2 > t1 ? r1 / r2 * pow ( 10 , t2 - t1 ) : r1 / r2 / pow ( 10 , t1 - t2 ) } ! function ( a , b ) { function c ( a ) { var b = a . length , c = ia . type ( a ) ; return ! ia . isWindow ( a ) && ( ! ( 1 !== a . nodeType || ! b ) || ( "array" === c || "function" !== c && ( 0 === b || "number" == typeof b && b > 0 && b - 1 in a ) ) ) } function d ( a ) { var b = xa [ a ] = { } ; return ia . each ( a . match ( ka ) || [ ] , function ( a , c ) { b [ c ] = ! 0 } ) , b } function e ( a , c , d , e ) { if ( ia . acceptData ( a ) ) { var f , g , h = ia . expando , i = "string" == typeof c , j = a . nodeType , k = j ? ia . cache : a , l = j ? a [ h ] : a [ h ] && h ; if ( l && k [ l ] && ( e || k [ l ] . data ) || ! i || d !== b ) return l || ( j ? a [ h ] = l = _ . pop ( ) || ia . guid ++ : l = h ) , k [ l ] || ( k [ l ] = { } , j || ( k [ l ] . toJSON = ia . noop ) ) , "object" != typeof c && "function" != typeof c || ( e ? k [ l ] = ia . extend ( k [ l ] , c ) : k [ l ] . data = ia . extend ( k [ l ] . data , c ) ) , f = k [ l ] , e || ( f . data || ( f . data = { } ) , f = f . data ) , d !== b && ( f [ ia . camelCase ( c ) ] = d ) , i ? ( g = f [ c ] , null == g && ( g = f [ ia . camelCase ( c ) ] ) ) : g = f , g } } function f ( a , b , c ) { if ( ia . acceptData ( a ) ) { var d , e , f , g = a . nodeType , i = g ? ia . cache : a , j = g ? a [ ia . expando ] : ia . expando ; if ( i [ j ] ) { if ( b && ( f = c ? i [ j ] : i [ j ] . data ) ) { ia . isArray ( b ) ? b = b . concat ( ia . map ( b , ia . camelCase ) ) : b in f ? b = [ b ] : ( b = ia . camelCase ( b ) , b = b in f ? [ b ] : b . split ( " " ) ) ; for ( d = 0 , e = b . length ; d < e ; d ++ ) delete f [ b [ d ] ] ; if ( ! ( c ? h : ia . isEmptyObject ) ( f ) ) return } ( c || ( delete i [ j ] . data , h ( i [ j ] ) ) ) && ( g ? ia . cleanData ( [ a ] , ! 0 ) : ia . support . deleteExpando || i != i . window ? delete i [ j ] : i [ j ] = null ) } } } function g ( a , c , d ) { if ( d === b && 1 === a . nodeType ) { var e = "data-" + c . replace ( za , "-$1" ) . toLowerCase ( ) ; if ( d = a . getAttribute ( e ) , "string" == typeof d ) { try { d = "true" === d || "false" !== d && ( "null" === d ? null : + d + "" === d ? + d : ya . test ( d ) ? ia . parseJSON ( d ) : d ) } catch ( f ) { } ia . data ( a , c , d ) } else d = b } return d } function h ( a ) { var b ; for ( b in a ) if ( ( "data" !== b || ! ia . isEmptyObject ( a [ b ] ) ) && "toJSON" !== b ) return ! 1 ; return ! 0 } function i ( ) { return ! 0 } function j ( ) { return ! 1 } function k ( a , b ) { do a = a [ b ] ; while ( a && 1 !== a . nodeType ) ; return a } function l ( a , b , c ) { if ( b = b || 0 , ia . isFunction ( b ) ) return ia . grep ( a , function ( a , d ) { var e = ! ! b . call ( a , d , a ) ; return e === c } ) ; if ( b . nodeType ) return ia . grep ( a , function ( a ) { return a === b === c } ) ; if ( "string" == typeof b ) { var d = ia . grep ( a , function ( a ) { return 1 === a . nodeType } ) ; if ( Ra . test ( b ) ) return ia . filter ( b , d , ! c ) ; b = ia . filter ( b , d ) } return ia . grep ( a , function ( a ) { return ia . inArray ( a , b ) >= 0 === c } ) } function m ( a ) { var b = Ua . split ( "|" ) , c = a . createDocumentFragment ( ) ; if ( c . createElement ) for ( ; b . length ; ) c . createElement ( b . pop ( ) ) ; return c } function n ( a , b ) { return a . getElementsByTagName ( b ) [ 0 ] || a . appendChild ( a . ownerDocument . createElement ( b ) ) } function o ( a ) { var b = a . getAttributeNode ( "type" ) ; return a . type = ( b && b . specified ) + "/" + a . type , a } function p ( a ) { var b = eb . exec ( a . type ) ; return b ? a . type = b [ 1 ] : a . removeAttribute ( "type" ) , a } function q ( a , b ) { for ( var c , d = 0 ; null != ( c = a [ d ] ) ; d ++ ) ia . _data ( c , "globalEval" , ! b || ia . _data ( b [ d ] , "globalEval" ) ) } function r ( a , b ) { if ( 1 === b . nodeType && ia . hasData ( a ) ) { var c , d , e , f = ia . _data ( a ) , g = ia . _data ( b , f ) , h = f . events ; if ( h ) { delete g . handle , g . events = { } ; for ( c in h ) for ( d = 0 , e = h [ c ] . length ; d < e ; d ++ ) ia . event . add ( b , c , h [ c ] [ d ] ) } g . data && ( g . data = ia . extend ( { } , g . data ) ) } } function s ( a , b ) { var c , d , e ; if ( 1 === b . nodeType ) { if ( c = b . nodeName . toLowerCase ( ) , ! ia . support . noCloneEvent &&
Ga . test ( c ) ? ! Ia && Ha . test ( c ) ? a [ ia . camelCase ( "default-" + c ) ] = a [ d ] = ! 1 : a [ d ] = ! 1 : ia . attr ( a , c , "" ) , a . removeAttribute ( Ia ? c : d ) } , attrHooks : { type : { set : function ( a , b ) { if ( ! ia . support . radioValue && "radio" === b && ia . nodeName ( a , "input" ) ) { var c = a . value ; return a . setAttribute ( "type" , b ) , c && ( a . value = c ) , b } } } } , propFix : { tabindex : "tabIndex" , readonly : "readOnly" , "for" : "htmlFor" , "class" : "className" , maxlength : "maxLength" , cellspacing : "cellSpacing" , cellpadding : "cellPadding" , rowspan : "rowSpan" , colspan : "colSpan" , usemap : "useMap" , frameborder : "frameBorder" , contenteditable : "contentEditable" } , prop : function ( a , c , d ) { var e , f , g , h = a . nodeType ; if ( a && 3 !== h && 8 !== h && 2 !== h ) return g = 1 !== h || ! ia . isXMLDoc ( a ) , g && ( c = ia . propFix [ c ] || c , f = ia . propHooks [ c ] ) , d !== b ? f && "set" in f && ( e = f . set ( a , d , c ) ) !== b ? e : a [ c ] = d : f && "get" in f && null !== ( e = f . get ( a , c ) ) ? e : a [ c ] } , propHooks : { tabIndex : { get : function ( a ) { var c = a . getAttributeNode ( "tabindex" ) ; return c && c . specified ? parseInt ( c . value , 10 ) : Ea . test ( a . nodeName ) || Fa . test ( a . nodeName ) && a . href ? 0 : b } } } } ) , Ba = { get : function ( a , c ) { var d = ia . prop ( a , c ) , e = "boolean" == typeof d && a . getAttribute ( c ) , f = "boolean" == typeof d ? Ja && Ia ? null != e : Ha . test ( c ) ? a [ ia . camelCase ( "default-" + c ) ] : ! ! e : a . getAttributeNode ( c ) ; return f && f . value !== ! 1 ? c . toLowerCase ( ) : b } , set : function ( a , b , c ) { return b === ! 1 ? ia . removeAttr ( a , c ) : Ja && Ia || ! Ha . test ( c ) ? a . setAttribute ( ! Ia && ia . propFix [ c ] || c , c ) : a [ ia . camelCase ( "default-" + c ) ] = a [ c ] = ! 0 , c } } , Ja && Ia || ( ia . attrHooks . value = { get : function ( a , c ) { var d = a . getAttributeNode ( c ) ; return ia . nodeName ( a , "input" ) ? a . defaultValue : d && d . specified ? d . value : b } , set : function ( a , b , c ) { return ia . nodeName ( a , "input" ) ? void ( a . defaultValue = b ) : Aa && Aa . set ( a , b , c ) } } ) , Ia || ( Aa = ia . valHooks . button = { get : function ( a , c ) { var d = a . getAttributeNode ( c ) ; return d && ( "id" === c || "name" === c || "coords" === c ? "" !== d . value : d . specified ) ? d . value : b } , set : function ( a , c , d ) { var e = a . getAttributeNode ( d ) ; return e || a . setAttributeNode ( e = a . ownerDocument . createAttribute ( d ) ) , e . value = c += "" , "value" === d || c === a . getAttribute ( d ) ? c : b } } , ia . attrHooks . contenteditable = { get : Aa . get , set : function ( a , b , c ) { Aa . set ( a , "" !== b && b , c ) } } , ia . each ( [ "width" , "height" ] , function ( a , b ) { ia . attrHooks [ b ] = ia . extend ( ia . attrHooks [ b ] , { set : function ( a , c ) { if ( "" === c ) return a . setAttribute ( b , "auto" ) , c } } ) } ) ) , ia . support . hrefNormalized || ( ia . each ( [ "href" , "src" , "width" , "height" ] , function ( a , c ) { ia . attrHooks [ c ] = ia . extend ( ia . attrHooks [ c ] , { get : function ( a ) { var d = a . getAttribute ( c , 2 ) ; return null == d ? b : d } } ) } ) , ia . each ( [ "href" , "src" ] , function ( a , b ) { ia . propHooks [ b ] = { get : function ( a ) { return a . getAttribute ( b , 4 ) } } } ) ) , ia . support . style || ( ia . attrHooks . style = { get : function ( a ) { return a . style . cssText || b } , set : function ( a , b ) { return a . style . cssText = b + "" } } ) , ia . support . optSelected || ( ia . propHooks . selected = ia . extend ( ia . propHooks . selected , { get : function ( a ) { var b = a . parentNode ; return b && ( b . selectedIndex , b . parentNode && b . parentNode . selectedIndex ) , null } } ) ) , ia . support . enctype || ( ia . propFix . enctype = "encoding" ) , ia . support . checkOn || ia . each ( [ "radio" , "checkbox" ] , function ( ) { ia . valHooks [ this ] = { get : function ( a ) { return null === a . getAttribute ( "value" ) ? "on" : a . value } } } ) , ia . each ( [ "radio" , "checkbox" ] , function ( ) { ia . valHooks [ this ] = ia . extend ( ia . valHooks [ this ] , { set : function ( a , b ) { if ( ia . isArray ( b ) ) return a . checked = ia . inArray ( ia ( a ) . val ( ) , b ) >= 0 } } ) } ) ; var Ka = /^(?:input|select|textarea)$/i , La = /^key/ , Ma = /^(?:mouse|contextmenu)|click/ , Na = /^(?:focusinfocus|focusoutblur)$/ , Oa = /^([^.]*)(?:\.(.+)|)$/ ; ia . event = { global : { } , add : function ( a , c , d , e , f ) { var g , h , i , j , k , l , m , n , o , p , q , r = ia . _data ( a ) ; if ( r ) { for ( d . handler && ( j = d , d = j . handler , f = j . selector ) , d . guid || ( d . guid = ia . guid ++ ) , ( h = r . events ) || ( h = r . events = { } ) , ( l = r . handle ) || ( l = r . handle = function ( a ) { return typeof ia === V || a && ia . event . triggered === a . type ? b : ia . event . dispatch . apply ( l . elem , arguments ) } , l . elem = a ) , c = ( c || "" ) . match ( ka ) || [ "" ] , i = c . length ; i -- ; ) g = Oa . exec ( c [ i ] ) || [ ] , o = q = g [ 1 ] , p = ( g [ 2 ] || "" ) . split ( "." ) . sort ( ) , k = ia . event . special [ o ] || { } , o = ( f ? k . delegateType : k . bindType ) || o , k = ia . event . special [ o ] || { } , m = ia . extend ( { type : o , origType : q , data : e , handler : d , guid : d . guid , selector : f , needsContext : f && ia . expr . match . needsContext . test ( f ) , namespace : p . join ( "." ) } , j ) , ( n = h [ o ] ) || ( n = h [ o ] = [ ] , n . delegateCount = 0 , k . setup && k . setup . call ( a , e , p , l ) !== ! 1 || ( a . addEventListener ? a . addEventListener ( o , l , ! 1 ) : a . att
return this . pushStack ( l ( this , a , ! 0 ) ) } , is : function ( a ) { return ! ! a && ( "string" == typeof a ? Sa . test ( a ) ? ia ( a , this . context ) . index ( this [ 0 ] ) >= 0 : ia . filter ( a , this ) . length > 0 : this . filter ( a ) . length > 0 ) } , closest : function ( a , b ) { for ( var c , d = 0 , e = this . length , f = [ ] , g = Sa . test ( a ) || "string" != typeof a ? ia ( a , b || this . context ) : 0 ; d < e ; d ++ ) for ( c = this [ d ] ; c && c . ownerDocument && c !== b && 11 !== c . nodeType ; ) { if ( g ? g . index ( c ) > - 1 : ia . find . matchesSelector ( c , a ) ) { f . push ( c ) ; break } c = c . parentNode } return this . pushStack ( f . length > 1 ? ia . unique ( f ) : f ) } , index : function ( a ) { return a ? "string" == typeof a ? ia . inArray ( this [ 0 ] , ia ( a ) ) : ia . inArray ( a . jquery ? a [ 0 ] : a , this ) : this [ 0 ] && this [ 0 ] . parentNode ? this . first ( ) . prevAll ( ) . length : - 1 } , add : function ( a , b ) { var c = "string" == typeof a ? ia ( a , b ) : ia . makeArray ( a && a . nodeType ? [ a ] : a ) , d = ia . merge ( this . get ( ) , c ) ; return this . pushStack ( ia . unique ( d ) ) } , addBack : function ( a ) { return this . add ( null == a ? this . prevObject : this . prevObject . filter ( a ) ) } } ) , ia . fn . andSelf = ia . fn . addBack , ia . each ( { parent : function ( a ) { var b = a . parentNode ; return b && 11 !== b . nodeType ? b : null } , parents : function ( a ) { return ia . dir ( a , "parentNode" ) } , parentsUntil : function ( a , b , c ) { return ia . dir ( a , "parentNode" , c ) } , next : function ( a ) { return k ( a , "nextSibling" ) } , prev : function ( a ) { return k ( a , "previousSibling" ) } , nextAll : function ( a ) { return ia . dir ( a , "nextSibling" ) } , prevAll : function ( a ) { return ia . dir ( a , "previousSibling" ) } , nextUntil : function ( a , b , c ) { return ia . dir ( a , "nextSibling" , c ) } , prevUntil : function ( a , b , c ) { return ia . dir ( a , "previousSibling" , c ) } , siblings : function ( a ) { return ia . sibling ( ( a . parentNode || { } ) . firstChild , a ) } , children : function ( a ) { return ia . sibling ( a . firstChild ) } , contents : function ( a ) { return ia . nodeName ( a , "iframe" ) ? a . contentDocument || a . contentWindow . document : ia . merge ( [ ] , a . childNodes ) } } , function ( a , b ) { ia . fn [ a ] = function ( c , d ) { var e = ia . map ( this , b , c ) ; return Pa . test ( a ) || ( d = c ) , d && "string" == typeof d && ( e = ia . filter ( d , e ) ) , e = this . length > 1 && ! Ta [ a ] ? ia . unique ( e ) : e , this . length > 1 && Qa . test ( a ) && ( e = e . reverse ( ) ) , this . pushStack ( e ) } } ) , ia . extend ( { filter : function ( a , b , c ) { return c && ( a = ":not(" + a + ")" ) , 1 === b . length ? ia . find . matchesSelector ( b [ 0 ] , a ) ? [ b [ 0 ] ] : [ ] : ia . find . matches ( a , b ) } , dir : function ( a , c , d ) { for ( var e = [ ] , f = a [ c ] ; f && 9 !== f . nodeType && ( d === b || 1 !== f . nodeType || ! ia ( f ) . is ( d ) ) ; ) 1 === f . nodeType && e . push ( f ) , f = f [ c ] ; return e } , sibling : function ( a , b ) { for ( var c = [ ] ; a ; a = a . nextSibling ) 1 === a . nodeType && a !== b && c . push ( a ) ; return c } } ) ; var Ua = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video" , Va = / jQuery\d+="(?:null|\d+)"/g , Wa = new RegExp ( "<(?:" + Ua + ")[\\s/>]" , "i" ) , Xa = /^\s+/ , Ya = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi , Za = /<([\w:]+)/ , $a = /<tbody/i , _a = /<|&#?\w+;/ , ab = /<(?:script|style|link)/i , bb = /^(?:checkbox|radio)$/i , cb = /checked\s*(?:[^=]|=\s*.checked.)/i , db = /^$|\/(?:java|ecma)script/i , eb = /^true\/(.*)/ , fb = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g , gb = { option : [ 1 , "<select multiple='multiple'>" , "</select>" ] , legend : [ 1 , "<fieldset>" , "</fieldset>" ] , area : [ 1 , "<map>" , "</map>" ] , param : [ 1 , "<object>" , "</object>" ] , thead : [ 1 , "<table>" , "</table>" ] , tr : [ 2 , "<table><tbody>" , "</tbody></table>" ] , col : [ 2 , "<table><tbody></tbody><colgroup>" , "</colgroup></table>" ] , td : [ 3 , "<table><tbody><tr>" , "</tr></tbody></table>" ] , _default : ia . support . htmlSerialize ? [ 0 , "" , "" ] : [ 1 , "X<div>" , "</div>" ] } , hb = m ( W ) , ib = hb . appendChild ( W . createElement ( "div" ) ) ; gb . optgroup = gb . option , gb . tbody = gb . tfoot = gb . colgroup = gb . caption = gb . thead , gb . th = gb . td , ia . fn . extend ( { text : function ( a ) { return ia . access ( this , function ( a ) { return a === b ? ia . text ( this ) : this . empty ( ) . append ( ( this [ 0 ] && this [ 0 ] . ownerDocument || W ) . createTextNode ( a ) ) } , null , a , arguments . length ) } , wrapAll : function ( a ) { if ( ia . isFunction ( a ) ) return this . each ( function ( b ) { ia ( this ) . wrapAll ( a . call ( this , b ) ) } ) ; if ( this [ 0 ] ) { var b = ia ( a , this [ 0 ] . ownerDocument ) . eq ( 0 ) . clone ( ! 0 ) ; this [ 0 ] . parentNode && b . insertBefore ( this [ 0 ] ) , b . map ( function ( ) { for ( var a = this ; a . firstChild && 1 === a . firstChild . nodeType ; ) a = a . firstChild ; return a } ) . append ( this ) } return this } , wrapInner : function ( a ) { return ia . isFunction ( a ) ? this . each ( function ( b ) { ia ( this ) . wrapInner ( a . call ( this , b ) ) } ) : this . each ( function ( ) { var b = ia ( this ) , c = b . contents ( ) ; c . leng
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 === c ) return 1 ; if ( c < d || void 0 === d ) return - 1 } return a . index - b . index } ) , "value" ) } ; var y = function ( a ) { return function ( b , c , d ) { var e = { } ; return c = t ( c , d ) , r . each ( b , function ( d , f ) { var g = c ( d , f , b ) ; a ( e , d , g ) } ) , e } } ; r . groupBy = y ( function ( a , b , c ) { r . has ( a , c ) ? a [ c ] . push ( b ) : a [ c ] = [ b ] } ) , r . indexBy = y ( function ( a , b , c ) { a [ c ] = b } ) , r . countBy = y ( function ( a , b , c ) { r . has ( a , c ) ? a [ c ] ++ : a [ c ] = 1 } ) , r . toArray = function ( a ) { return a ? r . isArray ( a ) ? j . call ( a ) : x ( a ) ? r . map ( a , r . identity ) : r . values ( a ) : [ ] } , r . size = function ( a ) { return null == a ? 0 : x ( a ) ? a . length : r . keys ( a ) . length } , r . partition = function ( a , b , c ) { b = t ( b , c ) ; var d = [ ] , e = [ ] ; return r . each ( a , function ( a , c , f ) { ( b ( a , c , f ) ? d : e ) . push ( a ) } ) , [ d , e ] } , r . first = r . head = r . take = function ( a , b , c ) { if ( null != a ) return null == b || c ? a [ 0 ] : r . initial ( a , a . length - b ) } , r . initial = function ( a , b , c ) { return j . call ( a , 0 , Math . max ( 0 , a . length - ( null == b || c ? 1 : b ) ) ) } , r . last = function ( a , b , c ) { if ( null != a ) return null == b || c ? a [ a . length - 1 ] : r . rest ( a , Math . max ( 0 , a . length - b ) ) } , r . rest = r . tail = r . drop = function ( a , b , c ) { return j . call ( a , null == b || c ? 1 : b ) } , r . compact = function ( a ) { return r . filter ( a , r . identity ) } ; var z = function ( a , b , c , d ) { for ( var e = [ ] , f = 0 , g = d || 0 , h = a && a . length ; g < h ; g ++ ) { var i = a [ g ] ; if ( x ( i ) && ( r . isArray ( i ) || r . isArguments ( i ) ) ) { b || ( i = z ( i , b , c ) ) ; var j = 0 , k = i . length ; for ( e . length += k ; j < k ; ) e [ f ++ ] = i [ j ++ ] } else c || ( e [ f ++ ] = i ) } return e } ; r . flatten = function ( a , b ) { return z ( a , b , ! 1 ) } , r . without = function ( a ) { return r . difference ( a , j . call ( arguments , 1 ) ) } , r . uniq = r . unique = function ( a , b , c , d ) { if ( null == a ) return [ ] ; r . isBoolean ( b ) || ( d = c , c = b , b = ! 1 ) , null != c && ( c = t ( c , d ) ) ; for ( var e = [ ] , f = [ ] , g = 0 , h = a . length ; g < h ; g ++ ) { var i = a [ g ] ,
a . attributes && this . element . attr ( a . attributes ) , a . data && this . element . data ( a . data ) , this . _children = { } } , _initElementWidth : function ( ) { var a = this . options ; BI . isWidthOrHeight ( a . width ) && this . element . css ( "width" , a . width ) } , _initElementHeight : function ( ) { var a = this . options ; BI . isWidthOrHeight ( a . height ) && this . element . css ( "height" , a . height ) } , _initVisual : function ( ) { var a = this . options ; a . invisible && this . element . css ( "display" , "none" ) } , _initEffects : function ( ) { var a = this . options ; ( a . disabled || a . invalid ) && ( this . options . disabled && this . setEnable ( ! 1 ) , this . options . invalid && this . setValid ( ! 1 ) ) } , _initState : function ( ) { this . _isMounted = ! 1 } , _initElement : function ( ) { var a = this , b = this . render && this . render ( ) ; BI . isPlainObject ( b ) && ( b = [ b ] ) , BI . isArray ( b ) && BI . each ( b , function ( b , c ) { BI . createWidget ( c , { element : a } ) } ) , this . _mount ( ) } , _setParent : function ( a ) { this . _parent = a } , _mount : function ( ) { var a = this , b = this . _isMounted ; ! b && this . isVisible ( ) && ( this . _isRoot === ! 0 ? b = ! 0 : this . _parent && this . _parent . _isMounted === ! 0 && ( b = ! 0 ) , b && ( this . beforeMount && this . beforeMount ( ) , this . _isMounted = ! 0 , this . _mountChildren && this . _mountChildren ( ) , BI . each ( this . _children , function ( b , c ) { ! a . isEnabled ( ) && c . _setEnable ( ! 1 ) , ! a . isValid ( ) && c . _setValid ( ! 1 ) , c . _mount && c . _mount ( ) } ) , this . mounted && this . mounted ( ) ) ) } , _mountChildren : null , isMounted : function ( ) { return this . _isMounted } , setWidth : function ( a ) { this . options . width = a , this . _initElementWidth ( ) } , setHeight : function ( a ) { this . options . height = a , this . _initElementHeight ( ) } , _setEnable : function ( a ) { a === ! 0 ? this . options . disabled = ! 1 : a === ! 1 && ( this . options . disabled = ! 0 ) , BI . each ( this . _children , function ( b , c ) { ! c . _manualSetEnable && c . _setEnable && c . _setEnable ( a ) } ) } , _setValid : function ( a ) { a === ! 0 ? this . options . invalid = ! 1 : a === ! 1 && ( this . options . invalid = ! 0 ) , BI . each ( this . _children , function ( b , c ) { ! c . _manualSetValid && c . _setValid && c . _setValid ( a ) } ) } , _setVisible : function ( a ) { a === ! 0 ? this . options . invisible = ! 1 : a === ! 1 && ( this . options . invisible = ! 0 ) } , setEnable : function ( a ) { this . _manualSetEnable = ! 0 , this . _setEnable ( a ) , a === ! 0 ? this . element . removeClass ( "base-disabled disabled" ) : a === ! 1 && this . element . addClass ( "base-disabled disabled" ) } , setVisible : function ( a ) { this . _setVisible ( a ) , a === ! 0 ? ( this . element . css ( "display" , "" ) , this . _mount ( ) ) : a === ! 1 && this . element . css ( "display" , "none" ) , this . fireEvent ( BI . Events . VIEW , a ) } , setValid : function ( a ) { this . _manualSetValid = ! 0 , this . _setValid ( a ) , a === ! 0 ? this . element . removeClass ( "base-invalid invalid" ) : a === ! 1 && this . element . addClass ( "base-invalid invalid" ) } , doBehavior : function ( ) { var a = arguments ; BI . each ( this . _children , function ( b , c ) { c . doBehavior && c . doBehavior . apply ( c , a ) } ) } , getWidth : function ( ) { return this . options . width } , getHeight : function ( ) { return this . options . height } , isValid : function ( ) { return ! this . options . invalid } , addWidget : function ( a , b ) { var c = this ; if ( a instanceof BI . Widget && ( b = a , a = b . getName ( ) ) , BI . isKey ( a ) && ( a += "" ) , a = a || b . getName ( ) || BI . uniqueId ( "widget" ) , this . _children [ a ] ) throw new Error ( "name has already been existed" ) ; return b . _setParent && b . _setParent ( this ) , b . on ( BI . Events . DESTROY , function ( ) { BI . remove ( c . _children , this ) } ) , this . _children [ a ] = b } , getWidgetByName : function ( a ) { if ( ! BI . isKey ( a ) || a === this . getName ( ) ) return this ; a += "" ; var b = void 0 , c = { } ; return BI . any ( this . _children , function ( d , e ) { return d === a ? ( b = e , ! 0 ) : void ( c [ d ] = e ) } ) , b || BI . any ( c , function ( a , c ) { return b = c . getWidgetByName ( a ) } ) , b } , removeWidget : function ( a ) { BI . isWidget ( a ) ? BI . remove ( this . _children , a ) : delete this . _children [ a ] } , hasWidget : function ( a ) { return null != this . _children [ a ] } , getName : function ( ) { return this . widgetName } , setTag : function ( a ) { this . options . tag = a } , getTag : function ( ) { return this . options . tag } , attr : function ( a , b ) { var c = this ; return BI . isPlainObject ( a ) ? void BI . each ( a , function ( a , b ) { c . attr ( a , b ) } ) : BI . isNotNull ( b ) ? this . options [ a ] = b : this . options [ a ] } , getText : function ( ) { } , setText : function ( a ) { } , getValue : function ( ) { } , setValue : function ( a ) { } , isEnabled : function ( ) { return ! this . options . disabled } , isVisible : function ( ) { return ! this . options . invisible } , disable : function ( ) { this . setEnable ( ! 1 ) } , enable : function ( ) { this . setEnable ( ! 0 ) } , valid : function ( ) { this . setValid ( ! 0 ) } , invalid : function ( ) { this . setValid ( ! 1 ) } , invisible : function ( ) { this . setVisible ( ! 1 ) } , visible : function ( ) { this . setVisible
19969 : "DZ" , 19975 : "WM" , 19988 : "QJ" , 20048 : "YL" , 20056 : "SC" , 20060 : "NM" , 20094 : "QG" , 20127 : "QJ" , 20167 : "QC" , 20193 : "YG" , 20250 : "KH" , 20256 : "ZC" , 20282 : "SC" , 20285 : "QJG" , 20291 : "TD" , 20314 : "YD" , 20315 : "BF" , 20340 : "NE" , 20375 : "TD" , 20389 : "YJ" , 20391 : "CZ" , 20415 : "PB" , 20446 : "YS" , 20447 : "SQ" , 20504 : "TC" , 20608 : "KG" , 20854 : "QJ" , 20857 : "ZC" , 20911 : "PF" , 20985 : "AW" , 21032 : "PB" , 21048 : "XQ" , 21049 : "SC" , 21089 : "YS" , 21119 : "JC" , 21242 : "SB" , 21273 : "SC" , 21305 : "YP" , 21306 : "QO" , 21330 : "ZC" , 21333 : "SDC" , 21345 : "QK" , 21378 : "CA" , 21397 : "SC" , 21414 : "XS" , 21442 : "SC" , 21477 : "JG" , 21480 : "TD" , 21484 : "ZS" , 21494 : "YX" , 21505 : "YX" , 21512 : "HG" , 21523 : "XH" , 21537 : "PB" , 21542 : "PF" , 21549 : "KH" , 21571 : "E" , 21574 : "DA" , 21588 : "TD" , 21589 : "O" , 21618 : "ZC" , 21621 : "KHA" , 21632 : "ZJ" , 21654 : "KG" , 21679 : "LKG" , 21683 : "KH" , 21710 : "A" , 21719 : "YH" , 21734 : "WOE" , 21769 : "A" , 21780 : "WN" , 21804 : "XH" , 21834 : "A" , 21899 : "ZD" , 21903 : "RN" , 21908 : "WO" , 21939 : "ZC" , 21956 : "SA" , 21964 : "YA" , 21970 : "TD" , 22003 : "A" , 22031 : "JG" , 22040 : "XS" , 22060 : "ZC" , 22066 : "ZC" , 22079 : "MH" , 22129 : "XJ" , 22179 : "XA" , 22237 : "NJ" , 22244 : "TD" , 22280 : "JQ" , 22300 : "YH" , 22313 : "XW" , 22331 : "YQ" , 22343 : "YJ" , 22351 : "PH" , 22395 : "DC" , 22412 : "TD" , 22484 : "PB" , 22500 : "PB" , 22534 : "ZD" , 22549 : "DH" , 22561 : "PB" , 22612 : "TD" , 22771 : "KQ" , 22831 : "HB" , 22841 : "JG" , 22855 : "QJ" , 22865 : "XQ" , 23013 : "ML" , 23081 : "WM" , 23487 : "SX" , 23558 : "QJ" , 23561 : "YW" , 23586 : "YW" , 23614 : "YW" , 23615 : "SN" , 23631 : "PB" , 23646 : "ZS" , 23663 : "ZT" , 23673 : "YG" , 23762 : "TD" , 23769 : "ZS" , 23780 : "QJ" , 23884 : "QK" , 24055 : "XH" , 24113 : "DC" , 24162 : "ZC" , 24191 : "GA" , 24273 : "QJ" , 24324 : "NL" , 24377 : "TD" , 24378 : "QJ" , 24439 : "PF" , 24554 : "ZS" , 24683 : "TD" , 24694 : "WE" , 24733 : "LK" , 24925 : "TN" , 25094 : "ZG" , 25100 : "XQ" , 25103 : "XH" , 25153 : "PB" , 25170 : "PB" , 25179 : "KG" , 25203 : "PB" , 25240 : "ZS" , 25282 : "FB" , 25303 : "NA" , 25324 : "KG" , 25341 : "ZY" , 25373 : "WZ" , 25375 : "XJ" , 25384 : "A" , 25457 : "A" , 25528 : "SD" , 25530 : "SC" , 25552 : "TD" , 25774 : "ZC" , 25874 : "ZC" , 26044 : "YW" , 26080 : "WM" , 26292 : "PB" , 26333 : "PB" , 26355 : "ZY" , 26366 : "CZ" , 26397 : "ZC" , 26399 : "QJ" , 26415 : "ZS" , 26451 : "SB" , 26526 : "ZC" , 26552 : "JG" , 26561 : "TD" , 26588 : "JG" , 26597 : "CZ" , 26629 : "ZS" , 26638 : "YL" , 26646 : "XQ" , 26653 : "KG" , 26657 : "XJ" , 26727 : "HG" , 26894 : "ZC" , 26937 : "ZS" , 26946 : "ZC" , 26999 : "KJ" , 27099 : "KJ" , 27449 : "YQ" , 27481 : "XS" , 27542 : "ZS" , 27663 : "ZS" , 27748 : "TS" , 27784 : "SC" , 27788 : "ZD" , 27795 : "TD" , 27812 : "O" , 27850 : "PB" , 27852 : "MB" , 27895 : "SL" , 27898 : "PL" , 27973 : "QJ" , 27981 : "KH" , 27986 : "HX" , 27994 : "XJ" , 28044 : "YC" , 28065 : "WG" , 28177 : "SM" , 28267 : "QJ" , 28291 : "KH" , 28337 : "ZQ" , 28463 : "TL" , 28548 : "DC" , 28601 : "TD" , 28689 : "PB" , 28805 : "JG" , 28820 : "QG" , 28846 : "PB" , 28952 : "TD" , 28975 : "ZC" , 29100 : "A" , 29325 : "QJ" , 29575 : "SL" , 29602 : "FB" , 30010 : "TD" , 30044 : "CX" , 30058 : "PF" , 30091 : "YSP" , 30111 : "YN" , 30229 : "XJ" , 30427 : "SC" , 30465 : "SX" , 30631 : "YQ" , 30655 : "QJ" , 30684 : "QJG" , 30707 : "SD" , 30729 : "XH" , 30796 : "LG" , 30917 : "PB" , 31074 : "NM" , 31085 : "JZ" , 31109 : "SC" , 31181 : "ZC" , 31192 : "MLB" , 31293 : "JQ" , 31400 : "YX" , 31584 : "YJ" , 31896 : "ZN" , 31909 : "ZY" , 31995 : "XJ" , 32321 : "PF" , 32327 : "ZY" , 32418 : "HG" , 32420 : "XQ" , 32421 : "HG" , 32438 : "LG" , 32473 : "GJ" , 32488 : "TD" , 32521 : "QJ" , 32527 : "PB" , 32562 : "ZSQ" , 32564 : "JZ" , 32735 : "ZD" , 32793 : "PB" , 33071 : "PF" , 33098 : "XL" , 33100 : "YA" , 33152 : "PB" , 33261 : "CX" , 33324 : "BP" , 33333 : "TD" , 33406 : "YA" , 33426 : "WM" , 33432 : "PB" , 33445 : "JG" , 33486 : "ZN" , 33493 : "TS" , 33507 : "QJ" , 33540 : "QJ" , 33544 : "ZC" , 33564 : "XQ" , 33617 : "YT" , 33632 : "QJ" , 33636 : "XH" , 33637 : "YX" , 33694 : "WG" , 33705 : "PF" , 33728 : "YW" , 33882 : "SR" , 34067 : "WM" , 34074 : "YW" , 34121 : "QJ" , 34255 : "ZC" , 34259 : "XL" , 34425 : "JH" , 34430 : "XH" , 34485 : "KH" , 34503 : "YS" , 34532 : "HG" , 34552 : "XS" , 34558 : "YE" , 34593 : "ZL" , 34660 : "YQ" , 34892 : "XH" , 34928 : "SC" , 34999 : "QJ" , 35048 : "PB" , 35059 : "SC" , 35098 : "ZC" , 35203 : "TQ" , 35265 : "JX" , 35299 : "JX" , 35782 : "SZ" , 35828 : "YS" , 35830 : "E" , 35843 : "TD" , 35895 : "YG" , 35977 : "MH" , 36158 : "JG" , 36228 : "QJ" , 36426 : "XQ" , 36466 : "DC" , 36710 : "JC" , 36711 : "ZYG" , 36767 : "PB" , 36866 : "SK" , 36951 : "YW" , 37034 : "YX" , 37063 : "XH" , 37218 : "ZC" , 37325 : "ZC" , 38063 : "PB" , 38079 : "TD" , 38085 : "QY" , 38107 : "DC" , 38116 : "TD" , 38123 : "YD" , 38224 : "HG" , 38241 : "XTC" , 38271 : "ZC" , 38415 : "YE" , 38426 : "KH" , 38461 : "YD" , 38463 : "AE" , 38466 : "PB" , 38477 : "XJ" , 38518 : "YT" , 38551 : "WK" , 38585 : "ZC" , 38704 : "XS" , 38739 : "LJ" , 38761 : "GJ" , 38808 : "SQ" , 39048 : "JG" , 39049 : "XJ" , 39052 : "HG" , 39076 : "CZ" , 39271 : "XT" , 39534 : "TD" , 39552 : "TD" , 39584 : "PB" , 39647 : "SB" , 39730 : "LG" , 39748 : "TPB" , 40109 : "ZQ" , 40479 : "ND" , 40516 : "HG" , 40536 : "HG" , 40583 : "QJ" , 40765 : "YQ" , 40784 : "QJ" , 40840 : "YK" , 40863 : "QJG" } , c = function (
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 . scrollable ) { case ! 0 : this . element . css ( "overflow" , "auto" ) ; brea
g . hide ( a ) } ) , this . showingTips = { } , this . has ( b ) || this . create ( b , c , d , f . container || e ) , ! f . belowMouse ) { var h = e . element . offset ( ) , i = e . element . bounds ( ) ; if ( 0 === i . height || 0 === i . width ) return ; var j = h . top + i . height + 5 } var k = this . get ( b ) ; k . setText ( c ) , k . element . css ( { left : "0px" , top : "0px" } ) , k . visible ( ) , k . element . height ( k . element [ 0 ] . scrollHeight ) , this . showingTips [ b ] = ! 0 ; var l = ( a . pageX || a . clientX ) + 15 , m = ( a . pageY || a . clientY ) + 15 ; return l + k . element . outerWidth ( ) > $ ( "body" ) . outerWidth ( ) && ( l -= k . element . outerWidth ( ) + 15 ) , m + k . element . outerHeight ( ) > $ ( "body" ) . outerHeight ( ) ? ( m -= k . element . outerHeight ( ) + 15 , ! f . belowMouse && ( m = Math . min ( m , h . top - k . element . outerHeight ( ) - 5 ) ) ) : ! f . belowMouse && ( m = Math . max ( m , j ) ) , k . element . css ( { left : l < 0 ? 0 : l + "px" , top : m < 0 ? 0 : m + "px" } ) , k . element . hover ( function ( ) { g . remove ( b ) , e . element . trigger ( "mouseleave.title" + e . getName ( ) ) } ) , this } , add : function ( a , b ) { return this . has ( a ) ? this : ( this . set ( a , b ) , this ) } , get : function ( a ) { return this . tooltipsManager [ a ] } , set : function ( a , b ) { this . tooltipsManager [ a ] = b } , has : function ( a ) { return null != this . tooltipsManager [ a ] } , remove : function ( a ) { return this . has ( a ) ? ( this . tooltipsManager [ a ] . destroy ( ) , delete this . tooltipsManager [ a ] , this ) : this } } ) , _ . extend ( BI , { Events : { KEYDOWN : "_KEYDOWN" , BACKSPACE : "_BACKSPACE" , SPACE : "_SPACE" , ENTER : "_ENTER" , CONFIRM : "_CONFIRM" , ERROR : "_ERROR" , PAUSE : "_PAUSE" , DESTROY : "_DESTROY" , UNMOUNT : "_UNMOUNT" , CLEAR : "_CLEAR" , ADD : "_ADD" , EDITING : "_EDITING" , EMPTY : "_EMPTY" , VIEW : "_VIEW" , RESIZE : "_RESIZE" , BEFOREEDIT : "_BEFOREEDIT" , AFTEREDIT : "_AFTEREDIT" , STARTEDIT : "_STARTEDIT" , STOPEDIT : "_STOPEDIT" , CHANGE : "_CHANGE" , EXPAND : "_EXPAND" , COLLAPSE : "_COLLAPSE" , CALLBACK : "_CALLBACK" , CLICK : "_CLICK" , STATECHANGE : "_STATECHANGE" , BEFORESTATECHANGE : "_BEFORESTATECHANGE" , INIT : "_INIT" , AFTERINIT : "_AFTERINIT" , SCROLL : "_SCROLL" , STARTLOAD : "_STARTLOAD" , AFTERLOAD : "_AFTERLOAD" , BS : "beforesubmit" , AS : "aftersubmit" , SC : "submitcomplete" , SF : "submitfailure" , SS : "submitsuccess" , BVW : "beforeverifywrite" , AVW : "afterverifywrite" , AV : "afterverify" , BW : "beforewrite" , AW : "afterwrite" , WS : "writesuccess" , WF : "writefailure" , BA : "beforeappend" , AA : "afterappend" , BD : "beforedelete" , AD : "beforedelete" , UC : "unloadcheck" , BTOPDF : "beforetopdf" , ATOPDF : "aftertopdf" , BTOEXCEL : "beforetoexcel" , ATOEXCEL : "aftertoexcel" , BTOWORD : "beforetoword" , ATOWORD : "aftertoword" , BTOIMAGE : "beforetoimage" , ATOIMAGE : "aftertoimage" , BTOHTML : "beforetohtml" , ATOHTML : "aftertohtml" , BIMEXCEL : "beforeimportexcel" , AIMEXCEL : "afterimportexcel" , BPDFPRINT : "beforepdfprint" , APDFPRINT : "afterpdfprint" , BFLASHPRINT : "beforeflashprint" , AFLASHPRINT : "afterflashprint" , BAPPLETPRINT : "beforeappletprint" , AAPPLETPRINT : "afterappletprint" , BSEVERPRINT : "beforeserverprint" , ASERVERPRINT : "afterserverprint" , BEMAIL : "beforeemail" , AEMAIL : "afteremail" } } ) , BI . extend ( jQuery . fn , { destroy : function ( ) { this . remove ( ) , BI . isIE ( ) === ! 0 && ( this [ 0 ] . outerHTML = "" ) } , _ _textKeywordMarked _ _ : function ( a , b , c ) { if ( ! BI . isKey ( b ) || ( a + "" ) . length > 100 ) return this . html ( BI . htmlEncode ( a ) ) ; b += "" , b = BI . toUpperCase ( b ) ; var d = ( a || "" ) + "" ; for ( c = ( c || BI . makeFirstPY ( a ) ) + "" , null != c && ( c = BI . toUpperCase ( c ) ) , this . empty ( ) ; ; ) { var e = BI . toUpperCase ( d ) . indexOf ( b ) , f = null ; if ( null != c && ( f = c . indexOf ( b ) , f >= 0 && ( f %= a . length ) ) , e >= 0 ) this . append ( d . substr ( 0 , e ) ) , this . append ( $ ( "<span>" ) . addClass ( "bi-keyword-red-mark" ) . html ( BI . htmlEncode ( d . substr ( e , b . length ) ) ) ) , d = d . substr ( e + b . length ) , null != c && ( c = c . substr ( e + b . length ) ) ; else { if ( ! ( null != f && f >= 0 && Math . floor ( f / a . length ) === Math . floor ( ( f + b . length - 1 ) / a . length ) ) ) { this . append ( d ) ; break } this . append ( d . substr ( 0 , f ) ) , this . append ( $ ( "<span>" ) . addClass ( "bi-keyword-red-mark" ) . html ( BI . htmlEncode ( d . substr ( f , b . length ) ) ) ) , null != c && ( c = c . substr ( f + b . length ) ) , d = d . substr ( f + b . length ) } } return this } , getDomHeight : function ( a ) { var b = $ ( this ) . clone ( ) ; b . appendTo ( $ ( a || "body" ) ) ; var c = b . height ( ) ; return b . remove ( ) , c } , hasVerticalScroll : function ( ) { return this . height ( ) > 0 && this [ 0 ] . clientWidth < this [ 0 ] . offsetWidth } , hasHorizonScroll : function ( ) { return this . width ( ) > 0 && this [ 0 ] . clientHeight < this [ 0 ] . offsetHeight } , getStyle : function ( a ) { var b = this [ 0 ] , c = void 0 ; if ( window . getComputedStyle && ( c = window . getComputedStyle ( b , null ) ) ) return c . getPropertyValue ( BI . hyphenate ( a ) ) ; if ( document . defaultView && document . defaultView . getComputedStyle ) { if ( c = document . defaultV
function a ( a , b ) { for ( var c = - 1 ; ++ c < g ; ) b += a * h [ c ] , h [ c ] = b % f , b = Math . floor ( b / f ) } function b ( a ) { for ( var b = g , c = 0 ; -- b >= 0 ; ) c += h [ b ] , h [ b ] = Math . floor ( c / a ) , c = c % a * f } function c ( ) { for ( var a = g , b = "" ; -- a >= 0 ; ) if ( "" !== b || 0 === a || 0 !== h [ a ] ) { var c = String ( h [ a ] ) ; "" === b ? b = c : b += "0000000" . slice ( 0 , 7 - c . length ) + c } return b } function d ( a , b , c ) { return 0 === b ? c : b % 2 === 1 ? d ( a , b - 1 , c * a ) : d ( a * a , b / 2 , c ) } function e ( a ) { for ( var b = 0 ; a >= 4096 ; ) b += 12 , a /= 4096 ; for ( ; a >= 2 ; ) b += 1 , a /= 2 ; return b } var f , g , h ; f = 1e7 , g = 6 , h = [ 0 , 0 , 0 , 0 , 0 , 0 ] , Number . prototype . toFixed = function ( f ) { var g , h , i , j , k , l , m , n ; if ( g = Number ( f ) , g = g !== g ? 0 : Math . floor ( g ) , g < 0 || g > 20 ) throw new RangeError ( "Number.toFixed called with invalid number of decimals" ) ; if ( h = Number ( this ) , h !== h ) return "NaN" ; if ( h <= - 1e21 || h > 1e21 ) return String ( h ) ; if ( i = "" , h < 0 && ( i = "-" , h = - h ) , j = "0" , h > 1e-21 ) if ( k = e ( h * d ( 2 , 69 , 1 ) ) - 69 , l = k < 0 ? h * d ( 2 , - k , 1 ) : h / d ( 2 , k , 1 ) , l *= 4503599627370496 , k = 52 - k , k > 0 ) { for ( a ( 0 , l ) , m = g ; m >= 7 ; ) a ( 1e7 , 0 ) , m -= 7 ; for ( a ( d ( 10 , m , 1 ) , 0 ) , m = k - 1 ; m >= 23 ; ) b ( 1 << 23 ) , m -= 23 ; b ( 1 << m ) , a ( 1 , 1 ) , b ( 2 ) , j = c ( ) } else a ( 0 , l ) , a ( 1 << - k , 0 ) , j = c ( ) + "0.00000000000000000000" . slice ( 2 , 2 + g ) ; return g > 0 ? ( n = j . length , j = n <= g ? i + "0.0000000000000000000" . slice ( 0 , g - n + 2 ) + j : i + j . slice ( 0 , n - g ) + "." + j . slice ( n - g ) ) : j = i + j , j } } ( ) , Number . prototype . add = function ( a ) { return accAdd ( a , this ) } , Number . prototype . sub = function ( a ) { return accSub ( this , a ) } , Number . prototype . mul = function ( a ) { return accMul ( a , this ) } , Number . prototype . div = function ( a ) { return accDiv ( this , a ) } , $ . extend ( String . prototype , { startWith : function ( a ) { return ! ( null == a || "" == a || 0 === this . length || a . length > this . length ) && this . substr ( 0 , a . length ) == a } , endWith : function ( a ) { return ! ( null == a || "" == a || 0 === this . length || a . length > this . length ) && this . substring ( this . length - a . length ) == a } , getQuery : function ( a ) { var b = new RegExp ( "(^|&)" + a + "=([^&]*)(&|$)" ) , c = this . substr ( this . indexOf ( "?" ) + 1 ) . match ( b ) ; return c ? unescape ( c [ 2 ] ) : null } , appendQuery : function ( a ) { if ( ! a ) return this ; var b = this ; return b . indexOf ( "?" ) === - 1 && ( b += "?" ) , b . endWith ( "?" ) !== ! 1 || ( b += "&" ) , $ . each ( a , function ( a , c ) { "string" == typeof a && ( b += a + "=" + c + "&" ) } ) , b = b . substr ( 0 , b . length - 1 ) } , replaceAll : function ( a , b ) { return this . replace ( new RegExp ( a , "gm" ) , b ) } , perfectStart : function ( a ) { return this . startWith ( a ) ? this : a + this } , allIndexOf : function ( a ) { if ( "string" != typeof a ) return [ ] ; for ( var b = this , c = [ ] , d = 0 ; b . length > 0 ; ) { var e = b . indexOf ( a ) ; if ( e === - 1 ) break ; c . push ( d + e ) , b = b . substring ( e + a . length , b . length ) , d += e + a . length } return c } } ) , $ . extend ( String , { escape : function ( a ) { return a . replace ( /('|\\)/g , "\\$1" ) } , leftPad : function ( a , b , c ) { var d = String ( a ) ; for ( c || ( c = " " ) ; d . length < b ; ) d = c + d ; return d . toString ( ) } , format : function ( a ) { var b = Array . prototype . slice . call ( arguments , 1 ) ; return a . replace ( /\{(\d+)\}/g , function ( a , c ) { return b [ c ] } ) } } ) , BI . EventListener = { listen : function ( a , b , c ) { return a . addEventListener ? ( a . addEventListener ( b , c , ! 1 ) , { remove : function ( ) { a . removeEventListener ( b , c , ! 1 ) } } ) : a . attachEvent ? ( a . attachEvent ( "on" + b , c ) , { remove : function ( ) { a . detachEvent ( "on" + b , c ) } } ) : void 0 } , capture : function ( a , b , c ) { return a . addEventListener ? ( a . addEventListener ( b , c , ! 0 ) , { remove : function ( ) { a . removeEventListener ( b , c , ! 0 ) } } ) : { remove : BI . emptyFn } } , registerDefault : function ( ) { } } , ! function ( ) { var a = window . cancelAnimationFrame || window . webkitCancelAnimationFrame || window . mozCancelAnimationFrame || window . oCancelAnimationFrame || window . msCancelAnimationFrame || window . clearTimeout , b = window . requestAnimationFrame || window . webkitRequestAnimationFrame || window . mozRequestAnimationFrame || window . oRequestAnimationFrame || window . msRequestAnimationFrame || window . setTimeout ; BI . MouseMoveTracker = function ( a , b , c ) { this . _isDragging = ! 1 , this . _animationFrameID = null , this . _domNode = c , this . _onMove = a , this . _onMoveEnd = b , this . _onMouseMove = BI . bind ( this . _onMouseMove , this ) , this . _onMouseUp = BI . bind ( this . _onMouseUp , this ) , this . _didMouseMove = BI . bind ( this . _didMouseMove , this ) } , BI . MouseMoveTracker . prototype = { constructor : BI . MouseMoveTracker , captureMouseMoves : function ( a ) { this . _eventMoveToken || this . _eventUpToken || ( this . _eventMoveToken = BI . EventListener . listen ( this . _domNode , "mousemove" , this . _onMouseMove ) , this . _eventUpToken = BI . EventListener . listen ( this . _domNode , "mouseup" , this . _onMouseUp ) ) , this . _isDragging || ( this . _deltaX = 0 , this . _deltaY = 0 , this . _isDragging = ! 0 , this . _x = a . clientX , this . _y = a . cl
return BI . extend ( BI . AdaptiveLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-adaptive-layout" , hgap : null , vgap : null , lgap : null , rgap : null , tgap : null , bgap : null } ) } , render : function ( ) { BI . AdaptiveLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . AdaptiveLayout . superclass . _addElement . apply ( this , arguments ) ; d . element . css ( { position : "relative" } ) ; var e = 0 , f = 0 , g = 0 , h = 0 ; return BI . isNotNull ( b . left ) && d . element . css ( { "margin-left" : b . left } ) , BI . isNotNull ( b . right ) && d . element . css ( { "margin-right" : b . right } ) , BI . isNotNull ( b . top ) && d . element . css ( { "margin-top" : b . top } ) , BI . isNotNull ( b . bottom ) && d . element . css ( { "margin-bottom" : b . bottom } ) , BI . isNotNull ( c . hgap ) && ( e += c . hgap , d . element . css ( { left : e } ) , f += c . hgap , d . element . css ( { right : f } ) ) , BI . isNotNull ( c . vgap ) && ( g += c . vgap , d . element . css ( { top : g } ) , h += c . vgap , d . element . css ( { bottom : h } ) ) , BI . isNotNull ( c . lgap ) && ( e += c . lgap , d . element . css ( { left : e } ) ) , BI . isNotNull ( c . rgap ) && ( f += c . rgap , d . element . css ( { right : f } ) ) , BI . isNotNull ( c . tgap ) && ( g += c . tgap , d . element . css ( { top : g } ) ) , BI . isNotNull ( c . bgap ) && ( h += c . bgap , d . element . css ( { bottom : h } ) ) , BI . isNotNull ( b . width ) && d . element . css ( { width : b . width } ) , BI . isNotNull ( b . height ) && d . element . css ( { height : b . height } ) , d } , resize : function ( ) { this . stroke ( this . options . items ) } , populate : function ( a ) { BI . AbsoluteLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.adaptive" , BI . AdaptiveLayout ) , BI . BorderLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . BorderLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-border-layout" , items : { } } ) } , render : function ( ) { BI . BorderLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { this . stroke ( this . options . items ) } , addItem : function ( a ) { throw new Error ( "cannot be added" ) } , stroke : function ( a ) { var b , c = 0 , d = 0 , e = 0 , f = 0 ; if ( "north" in a && ( b = a . north , null != b ) ) { if ( b . el ) { if ( ! this . hasWidget ( this . getName ( ) + "north" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "north" , g ) } this . getWidgetByName ( this . getName ( ) + "north" ) . element . height ( b . height ) . css ( { position : "absolute" , top : b . top || 0 , left : b . left || 0 , right : b . right || 0 , bottom : "initial" } ) } c = ( b . height || 0 ) + ( b . top || 0 ) + ( b . bottom || 0 ) } if ( "south" in a && ( b = a . south , null != b ) ) { if ( b . el ) { if ( ! this . hasWidget ( this . getName ( ) + "south" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "south" , g ) } this . getWidgetByName ( this . getName ( ) + "south" ) . element . height ( b . height ) . css ( { position : "absolute" , bottom : b . bottom || 0 , left : b . left || 0 , right : b . right || 0 , top : "initial" } ) } d = ( b . height || 0 ) + ( b . top || 0 ) + ( b . bottom || 0 ) } if ( "west" in a && ( b = a . west , null != b ) ) { if ( b . el ) { if ( ! this . hasWidget ( this . getName ( ) + "west" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "west" , g ) } this . getWidgetByName ( this . getName ( ) + "west" ) . element . width ( b . width ) . css ( { position : "absolute" , left : b . left || 0 , top : c , bottom : d , right : "initial" } ) } e = ( b . width || 0 ) + ( b . left || 0 ) + ( b . right || 0 ) } if ( "east" in a && ( b = a . east , null != b ) ) { if ( b . el ) { if ( ! this . hasWidget ( this . getName ( ) + "east" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "east" , g ) } this . getWidgetByName ( this . getName ( ) + "east" ) . element . width ( b . width ) . css ( { position : "absolute" , right : b . right || 0 , top : c , bottom : d , left : "initial" } ) } f = ( b . width || 0 ) + ( b . left || 0 ) + ( b . right || 0 ) } if ( "center" in a && ( b = a . center , null != b ) ) { if ( ! this . hasWidget ( this . getName ( ) + "center" ) ) { var g = BI . createWidget ( b ) ; this . addWidget ( this . getName ( ) + "center" , g ) } this . getWidgetByName ( this . getName ( ) + "center" ) . element . css ( { position : "absolute" , top : c , bottom : d , left : e , right : f } ) } } , populate : function ( a ) { BI . BorderLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.border" , BI . BorderLayout ) , BI . CardLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . CardLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-card-layout" , items : [ ] } ) } , render : function ( ) { BI . CardLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { } , stroke : function ( a ) { var b = this , c = this . options ; this . showIndex = void 0 , BI . each ( a , function ( a , d ) { if ( d ) { if ( b . hasWidget ( d . cardName ) ) var e = b . getWidgetByName ( d . cardName ) ; else { var e = BI . cr
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 , items : c } ) } , populate : function ( a ) { BI . HorizontalCenterLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.horizontal_center" , BI . HorizontalCenterLayout ) , BI . VerticalCenterLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . VerticalCenterLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-vertical-center-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . VerticalCenterLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { } , addItem : function ( a ) { throw new Error ( "cannot be added" ) } , stroke : function ( a ) { var b = this . options , c = [ ] ; BI . each ( a , function ( b ) { c . push ( { column : 0 , row : b , el : BI . createWidget ( { type : "bi.default" , cls : "center-element " + ( 0 === b ? "first-element " : "" ) + ( b === a . length - 1 ? "last-element" : "" ) } ) } ) } ) , BI . each ( a , function ( a , d ) { if ( d ) { var e = BI . createWidget ( d ) ; e . element . css ( { position : "absolute" , left : b . hgap + b . lgap , right : b . hgap + b . rgap , top : b . vgap + b . tgap , bottom : b . vgap + b . bgap , height : "auto" } ) , c [ a ] . el . addItem ( e ) } } ) , BI . createWidget ( { type : "bi.grid" , element : this , columns : 1 , rows : c . length , items : c } ) } , populate : function ( a ) { BI . VerticalCenterLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.vertical_center" , BI . VerticalCenterLayout ) , BI . Data = Data = { } , Data . Constant = BICst = { } , function ( ) { var a = { } ; Data . BufferPool = { put : function ( b , c ) { if ( BI . isNotNull ( a [ b ] ) ) throw new Error ( "Buffer Pool has the key already!" ) ; a [ b ] = c } , get : function ( b ) { return a [ b ] } } } ( ) , function ( ) { var a = { } ; Data . SharingPool = { _Shared : a , put : function ( b , c ) { a [ b ] = c } , cat : function ( ) { for ( var b = Array . prototype . slice . call ( arguments , 0 ) , c = a , d = 0 ; d < b . length ; d ++ ) c = c && c [ b [ d ] ] ; return c } , get : function ( ) { return BI . deepClone ( this . cat . apply ( this , arguments ) ) } , remove : function ( b ) { delete a [ b ] } } } ( ) , Data . Req = { } , Data . Source = BISource = { } , function ( a ) { "function" == typeof define && define . amd ? define ( [ "../core/jquery" ] , a ) : "object" == typeof exports ? module . exports = a : a ( jQuery ) } ( function ( a ) { function b ( b ) { var g = b || window . event , h = i . call ( arguments , 1 ) , j = 0 , l = 0 , m = 0 , n =
name : "ARRAY" , type : "ARRAY" } , { def : 'TOBINARY(int): 将一个十进制整型数转换成二进制表示的字符串。\nint:表示需要进行转换的十进制整数。\n示例:\nTOBINARY(10)等于 "1010"。\nTOBINARY(20)等于 "10100"。' , name : "TOBINARY" , type : "MATH" } , { def : "NVL(value1,value2,value3,...):在所有参数中返回第一个不是null的值value1:可以为任意数,也可以为null。\nvalue2:可以为任意数,也可以为null。\n当字符串长度为0时, 返回也为null\n示例:\nNVL(12,20)等于12。\nNVL(null,12)等于12。\nNVL(null,null)等于null。\nNVL(20,null)等于20。\nNVL(null,null,10)等于10。" , name : "NVL" , type : "OTHER" } , { def : "CORREL(array1,array2): 求两个相同长度数据系列的相关系数(与Excel的同名函数作用相同)。\n如果数组或引用参数包含文本、逻辑值或空白单元格,则这些值将被忽略;但包含零值的单元格将计算在内。\n函数计算结果出现负数表示负相关。相关系数的取值范围是[-1,1]之间的数。相关系数的绝对值越大,表示误差越小。 Array1 和 Array2 的数据点的个数必须相同,例如:\nCORREL([1,2,3],[2,4,6])=1。\n" , name : "CORREL" , type : "OTHER" } , { def : 'COLNAME(tableData,colIndex)返回的是tableData中列序号colIndex的列名。\ntableData:表示TableData的名字,字符串形式。\ncolIndex:表示列序号。\n备注:\n TableData先从私有数据源中查找,再从公有数据源中查找。\n示例:\nCOLNAME("Check",3)等于AcceName。\nCOLNAME("country",4)等于Area。' , name : "COLNAME" , type : "REPORT" } , { def : "DECIMAL(number): 返回number的大数类型,常用于精确计算。" , name : "DECIMAL" , type : "MATH" } , { def : "CLASS(object):返回object对象的所属的类。" , name : "CLASS" , type : "OTHER" } , { def : 'VALUE(tableData,col,row)返回tableData中列号为col的值, 行号为row。\ntableData:tableData的名字,字符串形式的。\nrow:行号。\ncol:列号。\n备注:\n 先从报表数据集中查找,然后再从服务器数据集中查找,返回的是tableData的行数。\n示例:\nVALUE("country",5,3)等于South America。\nVALUE("Simple",8,3)等于jonnason。\n示例:VALUE("country",5,"大陆")等于South America。\n\nVALUE(tableData,col)返回tableData中列号为col的一列值。\nVALUE(tableData,targetCol, orgCol, element)返回tableData中第targetCol列中的元素,这些元素对应的第orgCol列的值为element。\n示例:\ntableData : co\n国家 省份\n\n中国 江苏\n中国 浙江\n中国 北京\n美国 纽约\n美国 新泽西\nVALUE("co",2, 1, "中国")等于["江苏", "浙江", "北京"]。\n特别说明:列号也可以写为列名。\nVALUE(tableData,targetCol, orgCol, element, idx)返回VALUE(tableData,targetCol, orgCol, element)数组的第idx个值。\n特别说明:idx的值小于0时,会取数组的第一个值,idx的值大于数组长度时,会取数组的最后一个值。\n' , name : "VALUE" , type : "REPORT" } , { def : 'JOINARRAY(array,sepa):返回一个由sepa作为分隔符的字符串.\narray:[arg1,arg2...]格式的数组;\nsepa:分隔符。\n示例:\nJOINARRAY([1,2],";") = [1;2].\nJOINARRAY([hello,world],"-") = [hello-world].' , name : "JOINARRAY" , type : "ARRAY" } , { def : 'DATETONUMBER(date):返回自 1970 年 1 月 1 日 00:00:00 GMT 经过的毫秒数。\n示例:\nDATETONUMBER("2008-08-08")等于1218124800000。' , name : "DATETONUMBER" , type : "DATETIME" } , { def : 'INDEXOF(str1,index):返回字符串str1在index位置上的字符。\n备注:\n index是从0开始计数的。\n示例:\nINDEXOF("FineReport",0)等于\'F\'。\nINDEXOF("FineReport",2)等于\'n\'。\nINDEXOF("FineReport",9)等于\'t\'。\n\nINDEXOF(array, index):返回数组在index位置上的元素。\n备注:\n index是从1开始计数的。\n示例:\nString[] array = {"a", "b", "c"}\nINDEXOF(array, 1)等于"a".\n' , name : "INDEXOF" , type : "TEXT" } , { def : " PRODUCT ( number1 , number2 , ... ) : 将所有以参数形式给出的数字相乘 , 并返回乘积值 。 \ nnumber1 , number2 , ... : 为 1 到 30 个需要相乘的数字参数 。 \ n示例 : \ nPRODUCT ( 3 , 4 ) 等于 12 \ nPRODUCT ( 3 , 4 , 5 ) 等 <EFBFBD> <EFBFBD>
return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-node" , open : ! 1 } ) } , _init : function ( ) { BI . NodeButton . superclass . _init . apply ( this , arguments ) ; var a = this ; BI . nextTick ( function ( ) { a . setOpened ( a . isOpened ( ) ) } ) } , doClick : function ( ) { BI . NodeButton . superclass . doClick . apply ( this , arguments ) , this . setOpened ( ! this . isOpened ( ) ) } , isOnce : function ( ) { return ! 1 } , isOpened : function ( ) { return ! ! this . options . open } , setOpened : function ( a ) { this . options . open = ! ! a } , triggerCollapse : function ( ) { this . isOpened ( ) && ( this . setOpened ( ! 1 ) , this . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . COLLAPSE , this . getValue ( ) , this ) ) } , triggerExpand : function ( ) { this . isOpened ( ) || ( this . setOpened ( ! 0 ) , this . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , this . getValue ( ) , this ) ) } } ) , BI . Tip = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Link . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-tip" , zIndex : BI . zIndex _tip } ) } , _init : function ( ) { BI . Tip . superclass . _init . apply ( this , arguments ) , this . element . css ( { zIndex : this . options . zIndex } ) } } ) , BI . ButtonGroup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . ButtonGroup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-button-group" , behaviors : { } , items : [ ] , chooseType : BI . Selection . Single , layouts : [ { type : "bi.center" , hgap : 0 , vgap : 0 } ] } ) } , _init : function ( ) { BI . ButtonGroup . superclass . _init . apply ( this , arguments ) ; var a = { } ; BI . each ( this . options . behaviors , function ( b , c ) { a [ b ] = BI . BehaviorFactory . createBehavior ( b , { rule : c } ) } ) , this . behaviors = a , this . populate ( this . options . items ) } , _createBtns : function ( a ) { this . options ; return BI . createWidgets ( BI . createItems ( a , { type : "bi.text_button" } ) ) } , _btnsCreator : function ( a ) { var b = this , c = Array . prototype . slice . call ( arguments ) , d = this . options , e = this . _createBtns ( a ) ; return c [ 0 ] = e , BI . each ( this . behaviors , function ( a , b ) { b . doBehavior . apply ( b , c ) } ) , BI . each ( e , function ( a , c ) { c . on ( BI . Controller . EVENT _CHANGE , function ( a , e , f ) { if ( a === BI . Events . CLICK ) { switch ( d . chooseType ) { case BI . ButtonGroup . CHOOSE _TYPE _SINGLE : b . setValue ( c . getValue ( ) ) ; break ; case BI . ButtonGroup . CHOOSE _TYPE _NONE : b . setValue ( [ ] ) } b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b . fireEvent ( BI . ButtonGroup . EVENT _CHANGE , e , f ) } else b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , c . on ( BI . Events . DESTROY , function ( ) { BI . remove ( b . buttons , c ) } ) } ) , e } , _packageBtns : function ( a ) { for ( var b = this . options , c = b . layouts . length - 1 ; c > 0 ; c -- ) a = BI . map ( a , function ( a , d ) { return BI . extend ( { } , b . layouts [ c ] , { items : [ BI . extend ( { } , b . layouts [ c ] . el , { el : d } ) ] } ) } ) ; return a } , _packageSimpleItems : function ( a ) { var b = this . options ; return BI . map ( b . items , function ( b , c ) { return BI . stripEL ( c ) === c ? a [ b ] : BI . extend ( { } , c , { el : a [ b ] } ) } ) } , _packageItems : function ( a , b ) { return BI . createItems ( BI . makeArrayByArray ( a , { } ) , BI . clone ( b ) ) } , _packageLayout : function ( a ) { for ( var b = this . options , c = BI . deepClone ( b . layouts [ 0 ] ) , d = BI . formatEL ( c ) . el ; d && d . items && ! BI . isEmpty ( d . items ) ; ) d = BI . formatEL ( d . items [ 0 ] ) . el ; return d . items = a , c } , _isSimpleLayout : function ( ) { var a = this . options ; return 1 === a . layouts . length && ! BI . isArray ( a . items [ 0 ] ) } , doBehavior : function ( ) { var a = Array . prototype . slice . call ( arguments ) ; a . unshift ( this . buttons ) , BI . each ( this . behaviors , function ( b , c ) { c . doBehavior . apply ( c , a ) } ) } , prependItems : function ( a ) { var b = ( this . options , this . _btnsCreator . apply ( this , arguments ) ) ; return this . buttons = BI . concat ( b , this . buttons ) , this . _isSimpleLayout ( ) && this . layouts && this . layouts . prependItems ? void this . layouts . prependItems ( b ) : ( a = this . _packageItems ( a , this . _packageBtns ( b ) ) , void this . layouts . prependItems ( this . _packageLayout ( a ) . items ) ) } , addItems : function ( a ) { var b = ( this . options , this . _btnsCreator . apply ( this , arguments ) ) ; return this . buttons = BI . concat ( this . buttons , b ) , this . _isSimpleLayout ( ) && this . layouts && this . layouts . addItems ? void this . layouts . addItems ( b ) : ( a = this . _packageItems ( a , this . _packageBtns ( b ) ) , void this . layouts . addItems ( this . _packageLayout ( a ) . items ) ) } , removeItemAt : function ( a ) { BI . removeAt ( this . buttons , a ) , this . layouts . removeItemAt ( a ) } , removeItems : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] ; var b = [ ] ; BI . each ( this . buttons , function ( c , d ) { BI . deepContains ( a , d . getValue ( ) ) && b . push ( c ) } ) , BI . removeAt ( this . buttons , b ) , this . layouts . removeItemAt ( b ) } , populate : f
function a ( ) { b . isEnabled ( ) && b . isValid ( ) && b . combo . isEnabled ( ) && b . combo . isValid ( ) && c . toggle === ! 0 && ( b . _hideView ( ) , b . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . COLLAPSE , "" , b . combo ) , b . fireEvent ( BI . Combo . EVENT _COLLAPSE ) ) , b . popupView && b . popupView . element . off ( "mouseenter." + b . getName ( ) ) . off ( "mouseleave." + b . getName ( ) ) , f = ! 1 } var b = this , c = this . options , d = this . options . trigger . split ( "," ) , e = function ( a ) { c . stopEvent && a . stopEvent ( ) , c . stopPropagation && a . stopPropagation ( ) } , f = ! 1 ; BI . each ( d , function ( d , g ) { switch ( g ) { case "hover" : b . element . on ( "mouseenter." + b . getName ( ) , function ( a ) { b . isEnabled ( ) && b . isValid ( ) && b . combo . isEnabled ( ) && b . combo . isValid ( ) && ( b . _popupView ( ) , b . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , b . combo ) , b . fireEvent ( BI . Combo . EVENT _EXPAND ) ) } ) , b . element . on ( "mouseleave." + b . getName ( ) , function ( c ) { b . popupView && ( b . popupView . element . on ( "mouseenter." + b . getName ( ) , function ( c ) { f = ! 0 , b . popupView . element . on ( "mouseleave." + b . getName ( ) , function ( b ) { a ( ) } ) , b . popupView . element . off ( "mouseenter." + b . getName ( ) ) } ) , BI . defer ( function ( ) { f || a ( ) } , 50 ) ) } ) ; break ; case "click" : var h = BI . debounce ( function ( a ) { b . combo . element . _ _isMouseInBounds _ _ ( a ) && b . isEnabled ( ) && b . isValid ( ) && b . combo . isEnabled ( ) && b . combo . isValid ( ) && ( c . toggle ? b . _toggle ( ) : b . _popupView ( ) , b . isViewVisible ( ) ? ( b . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , b . combo ) , b . fireEvent ( BI . Combo . EVENT _EXPAND ) ) : ( b . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . COLLAPSE , "" , b . combo ) , b . fireEvent ( BI . Combo . EVENT _COLLAPSE ) ) ) } , BI . EVENT _RESPONSE _TIME , ! 0 ) ; b . element . off ( g + "." + b . getName ( ) ) . on ( g + "." + b . getName ( ) , function ( a ) { h ( a ) , e ( a ) } ) ; break ; case "click-hover" : var h = BI . debounce ( function ( a ) { b . combo . element . _ _isMouseInBounds _ _ ( a ) && b . isEnabled ( ) && b . isValid ( ) && b . combo . isEnabled ( ) && b . combo . isValid ( ) && ( b . _popupView ( ) , b . isViewVisible ( ) && ( b . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , b . combo ) , b . fireEvent ( BI . Combo . EVENT _EXPAND ) ) ) } , BI . EVENT _RESPONSE _TIME , ! 0 ) ; b . element . off ( "click." + b . getName ( ) ) . on ( "click." + b . getName ( ) , function ( a ) { h ( a ) , e ( a ) } ) , b . element . on ( "mouseleave." + b . getName ( ) , function ( c ) { b . popupView && ( b . popupView . element . on ( "mouseenter." + b . getName ( ) , function ( c ) { f = ! 0 , b . popupView . element . on ( "mouseleave." + b . getName ( ) , function ( b ) { a ( ) } ) , b . popupView . element . off ( "mouseenter." + b . getName ( ) ) } ) , BI . defer ( function ( ) { f || a ( ) } , 50 ) ) } ) } } ) } , _initCombo : function ( ) { this . combo = BI . createWidget ( this . options . el ) } , _assertPopupView : function ( ) { var a = this ; null == this . popupView && ( this . popupView = BI . createWidget ( this . options . popup , { type : "bi.popup_view" } ) , this . popupView . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { b === BI . Events . CLICK && ( a . combo . setValue ( a . getValue ( ) ) , a . fireEvent ( BI . Combo . EVENT _CHANGE , c , d ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . popupView . setVisible ( ! 1 ) , BI . nextTick ( function ( ) { a . fireEvent ( BI . Combo . EVENT _AFTER _INIT ) } ) ) } , _assertPopupViewRender : function ( ) { this . _assertPopupView ( ) , this . _rendered || ( BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this . options . container || this , items : [ { el : this . popupView } ] } ) , this . _rendered = ! 0 ) } , _hideIf : function ( a ) { if ( ! ( this . element . find ( a . target ) . length > 0 || "CodeMirror-cursor" === a . target . className || $ ( a . target ) . closest ( ".CodeMirror-hints" ) . length > 0 ) ) { var b = this . options . hideChecker . apply ( this , [ a ] ) ; b !== ! 1 && this . _hideView ( ) } } , _hideView : function ( ) { this . fireEvent ( BI . Combo . EVENT _BEFORE _HIDEVIEW ) , this . options . destroyWhenHide === ! 0 ? ( this . popupView && this . popupView . destroy ( ) , this . popupView = null , this . _rendered = ! 1 ) : this . popupView && this . popupView . invisible ( ) , this . element . removeClass ( this . options . comboClass ) , $ ( document ) . unbind ( "mousedown." + this . getName ( ) ) . unbind ( "mousewheel." + this . getName ( ) ) , this . fireEvent ( BI . Combo . EVENT _AFTER _HIDEVIEW ) } , _popupView : function ( ) { this . _assertPopupViewRender ( ) , this . fireEvent ( BI . Combo . EVENT _BEFORE _POPUPVIEW ) , this . popupView . visible ( ) , this . adjustWidth ( ) , this . adjustHeight ( ) , this . element . addClass ( this . options . comboClass ) , $ ( document ) . unbind ( "mousedown." + this . getName ( ) ) . unbind ( "mousewheel." + this . getName ( ) ) , $ ( document ) . bind ( "mousedown." + this . getName ( ) , BI . bind ( this . _hideIf , this ) ) . bind ( "mousewheel." + this . getName ( ) , BI . bind ( this . _hideIf , this ) ) , this . fireEvent ( BI . Combo . EVENT _AFTER _
a . isExpanded ( ) ? ( a . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , a . switcher ) , a . fireEvent ( BI . Switcher . EVENT _EXPAND ) ) : ( a . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . COLLAPSE , "" , a . switcher ) , a . fireEvent ( BI . Switcher . EVENT _COLLAPSE ) ) ) } , BI . EVENT _RESPONSE _TIME , ! 0 ) ) } } ) } , _initSwitcher : function ( ) { this . switcher = BI . createWidget ( this . options . el ) } , _assertPopupView : function ( ) { var a = this , b = this . options ; this . _created || ( this . popupView = BI . createWidget ( b . popup , { type : "bi.button_group" , element : b . adapter && BI . Maskers . create ( this . getName ( ) , b . adapter , BI . extend ( { container : this } , b . masker ) ) , cls : "switcher-popup" , layouts : [ { type : "bi.vertical" , hgap : 0 , vgap : 0 } ] } ) , this . popupView . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b === BI . Events . CLICK && a . fireEvent ( BI . Switcher . EVENT _CHANGE , c , d ) } ) , b . direction === BI . Direction . Custom || b . adapter || BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ { el : this . popupView } ] } ) , this . _created = ! 0 , BI . nextTick ( function ( ) { a . fireEvent ( BI . Switcher . EVENT _AFTER _INIT ) } ) ) } , _hideView : function ( ) { this . fireEvent ( BI . Switcher . EVENT _BEFORE _HIDEVIEW ) ; var a = this , b = this . options ; b . adapter ? BI . Maskers . hide ( a . getName ( ) ) : a . popupView && a . popupView . setVisible ( ! 1 ) , BI . nextTick ( function ( ) { b . adapter ? BI . Maskers . hide ( a . getName ( ) ) : a . popupView && a . popupView . setVisible ( ! 1 ) , a . element . removeClass ( b . switcherClass ) , a . fireEvent ( BI . Switcher . EVENT _AFTER _HIDEVIEW ) } ) } , _popupView : function ( ) { var a = this , b = this . options ; this . _assertPopupView ( ) , this . fireEvent ( BI . Switcher . EVENT _BEFORE _POPUPVIEW ) , b . adapter ? BI . Maskers . show ( this . getName ( ) ) : a . popupView . setVisible ( ! 0 ) , BI . nextTick ( function ( c ) { b . adapter ? BI . Maskers . show ( c ) : a . popupView . setVisible ( ! 0 ) , a . element . addClass ( b . switcherClass ) , a . fireEvent ( BI . Switcher . EVENT _AFTER _POPUPVIEW ) } , this . getName ( ) ) } , populate : function ( a ) { this . _assertPopupView ( ) , this . popupView . populate . apply ( this . popupView , arguments ) , this . switcher . populate . apply ( this . switcher , arguments ) } , _setEnable : function ( a ) { BI . Switcher . superclass . _setEnable . apply ( this , arguments ) , ! a && this . isViewVisible ( ) && this . _hideView ( ) } , setValue : function ( a ) { this . _assertPopupView ( ) , this . switcher . setValue ( a ) , this . popupView && this . popupView . setValue ( a ) } , getValue : function ( ) { return this . _assertPopupView ( ) , this . popupView ? this . popupView . getValue ( ) : [ ] } , setAdapter : function ( a ) { this . options . adapter = a , BI . Maskers . remove ( this . getName ( ) ) } , isViewVisible : function ( ) { return this . isEnabled ( ) && this . switcher . isEnabled ( ) && ( this . options . adapter ? BI . Maskers . isVisible ( this . getName ( ) ) : this . popupView && this . popupView . isVisible ( ) ) } , isExpanded : function ( ) { return this . isViewVisible ( ) } , showView : function ( ) { this . isEnabled ( ) && this . switcher . isEnabled ( ) && this . _popupView ( ) } , hideView : function ( ) { this . _hideView ( ) } , getView : function ( ) { return this . popupView } , adjustView : function ( ) { this . isViewVisible ( ) && BI . Maskers . show ( this . getName ( ) ) } , getAllLeaves : function ( ) { return this . popupView && this . popupView . getAllLeaves ( ) } , getNodeById : function ( a ) { return this . switcher . attr ( "id" ) === a ? this . switcher : this . popupView && this . popupView . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . switcher . getValue ( ) === a ? this . switcher : this . popupView && this . popupView . getNodeByValue ( a ) } , empty : function ( ) { this . popupView && this . popupView . empty ( ) } , destroy : function ( ) { BI . Switcher . superclass . destroy . apply ( this , arguments ) } } ) , BI . Switcher . EVENT _EXPAND = "EVENT_EXPAND" , BI . Switcher . EVENT _COLLAPSE = "EVENT_COLLAPSE" , BI . Switcher . EVENT _TRIGGER _CHANGE = "EVENT_TRIGGER_CHANGE" , BI . Switcher . EVENT _CHANGE = "EVENT_CHANGE" , BI . Switcher . EVENT _AFTER _INIT = "EVENT_AFTER_INIT" , BI . Switcher . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . Switcher . EVENT _AFTER _POPUPVIEW = "EVENT_AFTER_POPUPVIEW" , BI . Switcher . EVENT _BEFORE _HIDEVIEW = "EVENT_BEFORE_HIDEVIEW" , BI . Switcher . EVENT _AFTER _HIDEVIEW = "EVENT_AFTER_HIDEVIEW" , BI . shortcut ( "bi.switcher" , BI . Switcher ) , BI . Tab = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Tab . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-tab" , direction : "top" , single : ! 1 , logic : { dynamic : ! 1 } , defaultShowIndex : ! 1 , tab : ! 1 , cardCreator : function ( a ) { return BI . createWidget ( ) } } ) } , render : function ( ) { var a = this , b = this . op
f . style . display = "" , f . style . left = d . other . left + "px" , f . style . top = d . other . top + "px" , f . style . height = . 85 * ( d . other . bottom - d . other . top ) + "px" } } function Ka ( a , b , c ) { function d ( a , b , c , d ) { b < 0 && ( b = 0 ) , b = Math . round ( b ) , d = Math . round ( d ) , h . appendChild ( Me ( "div" , null , "CodeMirror-selected" , "position: absolute; left: " + a + "px; top: " + b + "px; width: " + ( null == c ? k - a : c ) + "px; height: " + ( d - b ) + "px" ) ) } function e ( b , c , e ) { function f ( c , d ) { return lb ( a , Ff ( b , c ) , "div" , l , d ) } var h , i , l = Vd ( g , b ) , m = l . text . length ; return Ye ( ae ( l ) , c || 0 , null == e ? m : e , function ( a , b , g ) { var l , n , o , p = f ( a , "left" ) ; if ( a == b ) l = p , n = o = p . left ; else { if ( l = f ( b - 1 , "right" ) , "rtl" == g ) { var q = p ; p = l , l = q } n = p . left , o = l . right } null == c && 0 == a && ( n = j ) , l . top - p . top > 3 && ( d ( n , p . top , null , p . bottom ) , n = j , p . bottom < l . top && d ( n , p . bottom , null , l . top ) ) , null == e && b == m && ( o = k ) , ( ! h || p . top < h . top || p . top == h . top && p . left < h . left ) && ( h = p ) , ( ! i || l . bottom > i . bottom || l . bottom == i . bottom && l . right > i . right ) && ( i = l ) , n < j + 1 && ( n = j ) , d ( n , l . top , o - n , l . bottom ) } ) , { start : h , end : i } } var f = a . display , g = a . doc , h = document . createDocumentFragment ( ) , i = Sa ( a . display ) , j = i . left , k = Math . max ( f . sizerWidth , Ua ( a ) - f . sizer . offsetLeft ) - i . right , l = b . from ( ) , m = b . to ( ) ; if ( l . line == m . line ) e ( l . line , l . ch , m . ch ) ; else { var n = Vd ( g , l . line ) , o = Vd ( g , m . line ) , p = od ( n ) == od ( o ) , q = e ( l . line , l . ch , p ? n . text . length + 1 : null ) . end , r = e ( m . line , p ? 0 : null , m . ch ) . start ; p && ( q . top < r . top - 2 ? ( d ( q . right , q . top , null , q . bottom ) , d ( j , r . top , r . left , r . bottom ) ) : d ( q . right , q . top , r . left - q . right , q . bottom ) ) , q . bottom < r . top && d ( j , q . bottom , null , r . top ) } c . appendChild ( h ) } function La ( a ) { if ( a . state . focused ) { var b = a . display ; clearInterval ( b . blinker ) ; var c = ! 0 ; b . cursorDiv . style . visibility = "" , a . options . cursorBlinkRate > 0 ? b . blinker = setInterval ( function ( ) { b . cursorDiv . style . visibility = ( c = ! c ) ? "" : "hidden" } , a . options . cursorBlinkRate ) : a . options . cursorBlinkRate < 0 && ( b . cursorDiv . style . visibility = "hidden" ) } } function Ma ( a , b ) { a . doc . mode . startState && a . doc . frontier < a . display . viewTo && a . state . highlight . set ( b , Ie ( Na , a ) ) } function Na ( a ) { var b = a . doc ; if ( b . frontier < b . first && ( b . frontier = b . first ) , ! ( b . frontier >= a . display . viewTo ) ) { var c = + new Date + a . options . workTime , d = bg ( b . mode , Pa ( a , b . frontier ) ) , e = [ ] ; b . iter ( b . frontier , Math . min ( b . first + b . size , a . display . viewTo + 500 ) , function ( f ) { if ( b . frontier >= a . display . viewFrom ) { var g = f . styles , h = Ed ( a , f , d , ! 0 ) ; f . styles = h . styles ; var i = f . styleClasses , j = h . classes ; j ? f . styleClasses = j : i && ( f . styleClasses = null ) ; for ( var k = ! g || g . length != f . styles . length || i != j && ( ! i || ! j || i . bgClass != j . bgClass || i . textClass != j . textClass ) , l = 0 ; ! k && l < g . length ; ++ l ) k = g [ l ] != f . styles [ l ] ; k && e . push ( b . frontier ) , f . stateAfter = bg ( b . mode , d ) } else Gd ( a , f . text , d ) , f . stateAfter = b . frontier % 5 == 0 ? bg ( b . mode , d ) : null ; if ( ++ b . frontier , + new Date > c ) return Ma ( a , a . options . workDelay ) , ! 0 } ) , e . length && Cb ( a , function ( ) { for ( var b = 0 ; b < e . length ; b ++ ) Jb ( a , e [ b ] , "text" ) } ) } } function Oa ( a , b , c ) { for ( var d , e , f = a . doc , g = c ? - 1 : b - ( a . doc . mode . innerMode ? 1e3 : 100 ) , h = b ; h > g ; -- h ) { if ( h <= f . first ) return f . first ; var i = Vd ( f , h - 1 ) ; if ( i . stateAfter && ( ! c || h <= f . frontier ) ) return h ; var j = Gg ( i . text , null , a . options . tabSize ) ; ( null == e || d > j ) && ( e = h - 1 , d = j ) } return e } function Pa ( a , b , c ) { var d = a . doc , e = a . display ; if ( ! d . mode . startState ) return ! 0 ; var f = Oa ( a , b , c ) , g = f > d . first && Vd ( d , f - 1 ) . stateAfter ; return g = g ? bg ( d . mode , g ) : cg ( d . mode ) , d . iter ( f , b , function ( c ) { Gd ( a , c . text , g ) ; var h = f == b - 1 || f % 5 == 0 || f >= e . viewFrom && f < e . viewTo ; c . stateAfter = h ? bg ( d . mode , g ) : null , ++ f } ) , c && ( d . frontier = f ) , g } function Qa ( a ) { return a . lineSpace . offsetTop } function Ra ( a ) { return a . mover . offsetHeight - a . lineSpace . offsetHeight } function Sa ( a ) { if ( a . cachedPaddingH ) return a . cachedPaddingH ; var b = Oe ( a . measure , Me ( "pre" , "x" ) ) , c = window . getComputedStyle ? window . getComputedStyle ( b ) : b . currentStyle , d = { left : parseInt ( c . paddingLeft ) , right : parseInt ( c . paddingRight ) } ; return isNaN ( d . left ) || isNaN ( d . right ) || ( a . cachedPaddingH = d ) , d } function Ta ( a ) { return Bg - a . display . nativeBarWidth } function Ua ( a ) { return a . display . scroller . clientWidth - Ta ( a ) - a . display . barWidth } function Va ( a ) { return a . display . scroller . clientHeight - Ta ( a ) - a . display . barHeight } function Wa ( a , b , c ) { var d = a . options . lineWrapping , e = d && Ua ( a ) ; if ( ! b . measure . heights || d && b . measure . width != e ) { var f = b . measure . heights = [ ] ; if ( d ) { b . measure . width = e ; for ( var g = b . text . firstChild . getClientRects ( ) , h = 0 ; h < g . length - 1 ; h ++ ) { var i = g [ h ] ,
} ) } } function yc ( a , b , c ) { if ( ! a . cm || ! a . cm . state . suppressEdits ) { for ( var d , e = a . history , f = a . sel , g = "undo" == b ? e . done : e . undone , h = "undo" == b ? e . undone : e . done , i = 0 ; i < g . length && ( d = g [ i ] , c ? ! d . ranges || d . equals ( a . sel ) : d . ranges ) ; i ++ ) ; if ( i != g . length ) { for ( e . lastOrigin = e . lastSelOrigin = null ; d = g . pop ( ) , d . ranges ; ) { if ( ie ( d , h ) , c && ! d . equals ( a . sel ) ) return void Ba ( a , d , { clearRedo : ! 1 } ) ; f = d } var j = [ ] ; ie ( f , h ) , h . push ( { changes : j , generation : e . generation } ) , e . generation = d . generation || ++ e . maxGeneration ; for ( var k = xe ( a , "beforeChange" ) || a . cm && xe ( a . cm , "beforeChange" ) , i = d . changes . length - 1 ; i >= 0 ; -- i ) { var l = d . changes [ i ] ; if ( l . origin = b , k && ! vc ( a , l , ! 1 ) ) return void ( g . length = 0 ) ; j . push ( ce ( a , l ) ) ; var m = i ? sc ( a , l ) : Ce ( g ) ; Ac ( a , l , m , dd ( a , l ) ) , ! i && a . cm && a . cm . scrollIntoView ( { from : l . from , to : Uf ( l ) } ) ; var n = [ ] ; Td ( a , function ( a , b ) { b || De ( n , a . history ) != - 1 || ( pe ( a . history , l ) , n . push ( a . history ) ) , Ac ( a , l , null , dd ( a , l ) ) } ) } } } } function zc ( a , b ) { if ( 0 != b && ( a . first += b , a . sel = new la ( Ee ( a . sel . ranges , function ( a ) { return new ma ( Ff ( a . anchor . line + b , a . anchor . ch ) , Ff ( a . head . line + b , a . head . ch ) ) } ) , a . sel . primIndex ) , a . cm ) ) { Ib ( a . cm , a . first , a . first - b , b ) ; for ( var c = a . cm . display , d = c . viewFrom ; d < c . viewTo ; d ++ ) Jb ( a . cm , d , "gutter" ) } } function Ac ( a , b , c , d ) { if ( a . cm && ! a . cm . curOp ) return Db ( a . cm , Ac ) ( a , b , c , d ) ; if ( b . to . line < a . first ) return void zc ( a , b . text . length - 1 - ( b . to . line - b . from . line ) ) ; if ( ! ( b . from . line > a . lastLine ( ) ) ) { if ( b . from . line < a . first ) { var e = b . text . length - 1 - ( a . first - b . from . line ) ; zc ( a , e ) , b = { from : Ff ( a . first , 0 ) , to : Ff ( b . to . line + e , b . to . ch ) , text : [ Ce ( b . text ) ] , origin : b . origin } } var f = a . lastLine ( ) ; b . to . line > f && ( b = { from : b . from , to : Ff ( f , Vd ( a , f ) . text . length ) , text : [ b . text [ 0 ] ] , origin : b . origin } ) , b . removed = Wd ( a , b . from , b . to ) , c || ( c = sc ( a , b ) ) , a . cm ? Bc ( a . cm , b , d ) : Qd ( a , b , d ) , Ca ( a , c , Dg ) } } function Bc ( a , b , c ) { var d = a . doc , e = a . display , g = b . from , h = b . to , i = ! 1 , j = g . line ; a . options . lineWrapping || ( j = Zd ( od ( Vd ( d , g . line ) ) ) , d . iter ( j , h . line + 1 , function ( a ) { if ( a == e . maxLine ) return i = ! 0 , ! 0 } ) ) , d . sel . contains ( b . from , b . to ) > - 1 && we ( a ) , Qd ( d , b , c , f ( a ) ) , a . options . lineWrapping || ( d . iter ( j , g . line + b . text . length , function ( a ) { var b = l ( a ) ; b > e . maxLineLength && ( e . maxLine = a , e . maxLineLength = b , e . maxLineChanged = ! 0 , i = ! 1 ) } ) , i && ( a . curOp . updateMaxLine = ! 0 ) ) , d . frontier = Math . min ( d . frontier , g . line ) , Ma ( a , 400 ) ; var k = b . text . length - ( h . line - g . line ) - 1 ; b . full ? Ib ( a ) : g . line != h . line || 1 != b . text . length || Pd ( a . doc , b ) ? Ib ( a , g . line , h . line + 1 , k ) : Jb ( a , g . line , "text" ) ; var m = xe ( a , "changes" ) , n = xe ( a , "change" ) ; if ( n || m ) { var o = { from : g , to : h , text : b . text , removed : b . removed , origin : b . origin } ; n && te ( a , "change" , a , o ) , m && ( a . curOp . changeObjs || ( a . curOp . changeObjs = [ ] ) ) . push ( o ) } a . display . selForContextMenu = null } function Cc ( a , b , c , d , e ) { if ( d || ( d = c ) , Gf ( d , c ) < 0 ) { var f = d ; d = c , c = f } "string" == typeof b && ( b = Ug ( b ) ) , wc ( a , { from : c , to : d , text : b , origin : e } ) } function Dc ( a , b ) { if ( ! ve ( a , "scrollCursorIntoView" ) ) { var c = a . display , d = c . sizer . getBoundingClientRect ( ) , e = null ; if ( b . top + d . top < 0 ? e = ! 0 : b . bottom + d . top > ( window . innerHeight || document . documentElement . clientHeight ) && ( e = ! 1 ) , null != e && ! vf ) { var f = Me ( "div" , " " , null , "position: absolute; top: " + ( b . top - c . viewOffset - Qa ( a . display ) ) + "px; height: " + ( b . bottom - b . top + Ta ( a ) + c . barHeight ) + "px; left: " + b . left + "px; width: 2px;" ) ; a . display . lineSpace . appendChild ( f ) , f . scrollIntoView ( e ) , a . display . lineSpace . removeChild ( f ) } } } function Ec ( a , b , c , d ) { null == d && ( d = 0 ) ; for ( var e = 0 ; e < 5 ; e ++ ) { var f = ! 1 , g = mb ( a , b ) , h = c && c != b ? mb ( a , c ) : g , i = Gc ( a , Math . min ( g . left , h . left ) , Math . min ( g . top , h . top ) - d , Math . max ( g . left , h . left ) , Math . max ( g . bottom , h . bottom ) + d ) , j = a . doc . scrollTop , k = a . doc . scrollLeft ; if ( null != i . scrollTop && ( ac ( a , i . scrollTop ) , Math . abs ( a . doc . scrollTop - j ) > 1 && ( f = ! 0 ) ) , null != i . scrollLeft && ( bc ( a , i . scrollLeft ) , Math . abs ( a . doc . scrollLeft - k ) > 1 && ( f = ! 0 ) ) , ! f ) break } return g } function Fc ( a , b , c , d , e ) { var f = Gc ( a , b , c , d , e ) ; null != f . scrollTop && ac ( a , f . scrollTop ) , null != f . scrollLeft && bc ( a , f . scrollLeft ) } function Gc ( a , b , c , d , e ) { var f = a . display , g = rb ( a . display ) ; c < 0 && ( c = 0 ) ; var h = a . curOp && null != a . curOp . scrollTop ? a . curOp . scrollTop : f . scroller . scrollTop , i = Va ( a ) , j = { } ; e - c > i && ( e = c + i ) ; var k = a . doc . height + Ra ( f ) , l = c < g , m = e > k - g ; if ( c < h ) j . scrollTop = l ? 0 : c ; else if ( e > h + i ) { var n = Math . min ( c , ( m ? k : e ) - i ) ; n != h && ( j . scrollTop = n ) } var o = a . curOp && null != a . curOp . scrollLeft ? a . curOp . scrollLeft : f . scroller . scrollLeft , p = Ua ( a ) - ( a . options . fixedGutter ? f . gut
return Xg = Math . abs ( c . left - d . left ) > 1 } function Ye ( a , b , c , d ) { if ( ! a ) return d ( b , c , "ltr" ) ; for ( var e = ! 1 , f = 0 ; f < a . length ; ++ f ) { var g = a [ f ] ; ( g . from < c && g . to > b || b == c && g . to == b ) && ( d ( Math . max ( g . from , b ) , Math . min ( g . to , c ) , 1 == g . level ? "rtl" : "ltr" ) , e = ! 0 ) } e || d ( b , c , "ltr" ) } function Ze ( a ) { return a . level % 2 ? a . to : a . from } function $e ( a ) { return a . level % 2 ? a . from : a . to } function _e ( a ) { var b = ae ( a ) ; return b ? Ze ( b [ 0 ] ) : 0 } function af ( a ) { var b = ae ( a ) ; return b ? $e ( Ce ( b ) ) : a . text . length } function bf ( a , b ) { var c = Vd ( a . doc , b ) , d = od ( c ) ; d != c && ( b = Zd ( d ) ) ; var e = ae ( d ) , f = e ? e [ 0 ] . level % 2 ? af ( d ) : _e ( d ) : 0 ; return Ff ( b , f ) } function cf ( a , b ) { for ( var c , d = Vd ( a . doc , b ) ; c = md ( d ) ; ) d = c . find ( 1 , ! 0 ) . line , b = null ; var e = ae ( d ) , f = e ? e [ 0 ] . level % 2 ? _e ( d ) : af ( d ) : d . text . length ; return Ff ( null == b ? Zd ( d ) : b , f ) } function df ( a , b ) { var c = bf ( a , b . line ) , d = Vd ( a . doc , c . line ) , e = ae ( d ) ; if ( ! e || 0 == e [ 0 ] . level ) { var f = Math . max ( 0 , d . text . search ( /\S/ ) ) , g = b . line == c . line && b . ch <= f && b . ch ; return Ff ( c . line , g ? 0 : f ) } return c } function ef ( a , b , c ) { var d = a [ 0 ] . level ; return b == d || c != d && b < c } function ff ( a , b ) { Zg = null ; for ( var c , d = 0 ; d < a . length ; ++ d ) { var e = a [ d ] ; if ( e . from < b && e . to > b ) return d ; if ( e . from == b || e . to == b ) { if ( null != c ) return ef ( a , e . level , a [ c ] . level ) ? ( e . from != e . to && ( Zg = c ) , d ) : ( e . from != e . to && ( Zg = d ) , c ) ; c = d } } return c } function gf ( a , b , c , d ) { if ( ! d ) return b + c ; do b += c ; while ( b > 0 && Le ( a . text . charAt ( b ) ) ) ; return b } function hf ( a , b , c , d ) { var e = ae ( a ) ; if ( ! e ) return jf ( a , b , c , d ) ; for ( var f = ff ( e , b ) , g = e [ f ] , h = gf ( a , b , g . level % 2 ? - c : c , d ) ; ; ) { if ( h > g . from && h < g . to ) return h ; if ( h == g . from || h == g . to ) return ff ( e , h ) == f ? h : ( g = e [ f += c ] , c > 0 == g . level % 2 ? g . to : g . from ) ; if ( g = e [ f += c ] , ! g ) return null ; h = c > 0 == g . level % 2 ? gf ( a , g . to , - 1 , d ) : gf ( a , g . from , 1 , d ) } } function jf ( a , b , c , d ) { var e = b + c ; if ( d ) for ( ; e > 0 && Le ( a . text . charAt ( e ) ) ; ) e += c ; return e < 0 || e > a . text . length ? null : e } var kf = /gecko\/\d/i . test ( navigator . userAgent ) , lf = /MSIE \d/ . test ( navigator . userAgent ) , mf = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/ . exec ( navigator . userAgent ) , nf = lf || mf , of = nf && ( lf ? document . documentMode || 6 : mf [ 1 ] ) , pf = /WebKit\// . test ( navigator . userAgent ) , qf = pf && /Qt\/\d+\.\d+/ . test ( navigator . userAgent ) , rf = /Chrome\// . test ( navigator . userAgent ) , sf = /Opera\// . test ( navigator . userAgent ) , tf = /Apple Computer/ . test ( navigator . vendor ) , uf = /Mac OS X 1\d\D([8-9]|\d\d)\D/ . test ( navigator . userAgent ) , vf = /PhantomJS/ . test ( navigator . userAgent ) , wf = /AppleWebKit/ . test ( navigator . userAgent ) && /Mobile\/\w+/ . test ( navigator . userAgent ) , xf = wf || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i . test ( navigator . userAgent ) , yf = wf || /Mac/ . test ( navigator . platform ) , zf = /win/i . test ( navigator . platform ) , Af = sf && navigator . userAgent . match ( /Version\/(\d*\.\d*)/ ) ; Af && ( Af = Number ( Af [ 1 ] ) ) , Af && Af >= 15 && ( sf = ! 1 , pf = ! 0 ) ; var Bf = yf && ( qf || sf && ( null == Af || Af < 12.11 ) ) , Cf = kf || nf && of >= 9 , Df = ! 1 , Ef = ! 1 ; p . prototype = He ( { update : function ( a ) { var b = a . scrollWidth > a . clientWidth + 1 , c = a . scrollHeight > a . clientHeight + 1 , d = a . nativeBarWidth ; if ( c ) { this . vert . style . display = "block" , this . vert . style . bottom = b ? d + "px" : "0" ; var e = a . viewHeight - ( b ? d : 0 ) ; this . vert . firstChild . style . height = Math . max ( 0 , a . scrollHeight - a . clientHeight + e ) + "px" } else this . vert . style . display = "" , this . vert . firstChild . style . height = "0" ; if ( b ) { this . horiz . style . display = "block" , this . horiz . style . right = c ? d + "px" : "0" , this . horiz . style . left = a . barLeft + "px" ; var f = a . viewWidth - a . barLeft - ( c ? d : 0 ) ; this . horiz . firstChild . style . width = a . scrollWidth - a . clientWidth + f + "px" } else this . horiz . style . display = "" , this . horiz . firstChild . style . width = "0" ; return ! this . checkedOverlay && a . clientHeight > 0 && ( 0 == d && this . overlayHack ( ) , this . checkedOverlay = ! 0 ) , { right : c ? d : 0 , bottom : b ? d : 0 } } , setScrollLeft : function ( a ) { this . horiz . scrollLeft != a && ( this . horiz . scrollLeft = a ) } , setScrollTop : function ( a ) { this . vert . scrollTop != a && ( this . vert . scrollTop = a ) } , overlayHack : function ( ) { var a = yf && ! uf ? "12px" : "18px" ; this . horiz . style . minHeight = this . vert . style . minWidth = a ; var b = this , c = function ( a ) { re ( a ) != b . vert && re ( a ) != b . horiz && Db ( b . cm , Ub ) ( a ) } ; xg ( this . vert , "mousedown" , c ) , xg ( this . horiz , "mousedown" , c ) } , clear : function ( ) { var a = this . horiz . parentNode ; a . removeChild ( this . horiz ) , a . removeChild ( this . vert ) } } , p . prototype ) , q . prototype = He ( { update : function ( ) { return { bottom : 0 , right : 0 } } , setScrollLeft : function ( ) { } , setScrollTop : function ( ) { } , clear : function ( ) { } } , q . prototype ) , a . scrollbarModel = { "native" :
} , goLineStart : function ( a ) { a . extendSelectionsBy ( function ( b ) { return bf ( a , b . head . line ) } , { origin : "+move" , bias : 1 } ) } , goLineStartSmart : function ( a ) { a . extendSelectionsBy ( function ( b ) { return df ( a , b . head ) } , { origin : "+move" , bias : 1 } ) } , goLineEnd : function ( a ) { a . extendSelectionsBy ( function ( b ) { return cf ( a , b . head . line ) } , { origin : "+move" , bias : - 1 } ) } , goLineRight : function ( a ) { a . extendSelectionsBy ( function ( b ) { var c = a . charCoords ( b . head , "div" ) . top + 5 ; return a . coordsChar ( { left : a . display . lineDiv . offsetWidth + 100 , top : c } , "div" ) } , Fg ) } , goLineLeft : function ( a ) { a . extendSelectionsBy ( function ( b ) { var c = a . charCoords ( b . head , "div" ) . top + 5 ; return a . coordsChar ( { left : 0 , top : c } , "div" ) } , Fg ) } , goLineLeftSmart : function ( a ) { a . extendSelectionsBy ( function ( b ) { var c = a . charCoords ( b . head , "div" ) . top + 5 , d = a . coordsChar ( { left : 0 , top : c } , "div" ) ; return d . ch < a . getLine ( d . line ) . search ( /\S/ ) ? df ( a , b . head ) : d } , Fg ) } , goLineUp : function ( a ) { a . moveV ( - 1 , "line" ) } , goLineDown : function ( a ) { a . moveV ( 1 , "line" ) } , goPageUp : function ( a ) { a . moveV ( - 1 , "page" ) } , goPageDown : function ( a ) { a . moveV ( 1 , "page" ) } , goCharLeft : function ( a ) { a . moveH ( - 1 , "char" ) } , goCharRight : function ( a ) { a . moveH ( 1 , "char" ) } , goColumnLeft : function ( a ) { a . moveH ( - 1 , "column" ) } , goColumnRight : function ( a ) { a . moveH ( 1 , "column" ) } , goWordLeft : function ( a ) { a . moveH ( - 1 , "word" ) } , goGroupRight : function ( a ) { a . moveH ( 1 , "group" ) } , goGroupLeft : function ( a ) { a . moveH ( - 1 , "group" ) } , goWordRight : function ( a ) { a . moveH ( 1 , "word" ) } , delCharBefore : function ( a ) { a . deleteH ( - 1 , "char" ) } , delCharAfter : function ( a ) { a . deleteH ( 1 , "char" ) } , delWordBefore : function ( a ) { a . deleteH ( - 1 , "word" ) } , delWordAfter : function ( a ) { a . deleteH ( 1 , "word" ) } , delGroupBefore : function ( a ) { a . deleteH ( - 1 , "group" ) } , delGroupAfter : function ( a ) { a . deleteH ( 1 , "group" ) } , indentAuto : function ( a ) { a . indentSelection ( "smart" ) } , indentMore : function ( a ) { a . indentSelection ( "add" ) } , indentLess : function ( a ) { a . indentSelection ( "subtract" ) } , insertTab : function ( a ) { a . replaceSelection ( "\t" ) } , insertSoftTab : function ( a ) { for ( var b = [ ] , c = a . listSelections ( ) , d = a . options . tabSize , e = 0 ; e < c . length ; e ++ ) { var f = c [ e ] . from ( ) , g = Gg ( a . getLine ( f . line ) , f . ch , d ) ; b . push ( new Array ( d - g % d + 1 ) . join ( " " ) ) } a . replaceSelections ( b ) } , defaultTab : function ( a ) { a . somethingSelected ( ) ? a . indentSelection ( "add" ) : a . execCommand ( "insertTab" ) } , transposeChars : function ( a ) { Cb ( a , function ( ) { for ( var b = a . listSelections ( ) , c = [ ] , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] . head , f = Vd ( a . doc , e . line ) . text ; if ( f ) if ( e . ch == f . length && ( e = new Ff ( e . line , e . ch - 1 ) ) , e . ch > 0 ) e = new Ff ( e . line , e . ch + 1 ) , a . replaceRange ( f . charAt ( e . ch - 1 ) + f . charAt ( e . ch - 2 ) , Ff ( e . line , e . ch - 2 ) , e , "+transpose" ) ; else if ( e . line > a . doc . first ) { var g = Vd ( a . doc , e . line - 1 ) . text ; g && a . replaceRange ( f . charAt ( 0 ) + "\n" + g . charAt ( g . length - 1 ) , Ff ( e . line - 1 , g . length - 1 ) , Ff ( e . line , 1 ) , "+transpose" ) } c . push ( new ma ( e , e ) ) } a . setSelections ( c ) } ) } , newlineAndIndent : function ( a ) { Cb ( a , function ( ) { for ( var b = a . listSelections ( ) . length , c = 0 ; c < b ; c ++ ) { var d = a . listSelections ( ) [ c ] ; a . replaceRange ( "\n" , d . anchor , d . head , "+input" ) , a . indentLine ( d . from ( ) . line + 1 , null , ! 0 ) , Ic ( a ) } } ) } , toggleOverwrite : function ( a ) { a . toggleOverwrite ( ) } } , eg = a . keyMap = { } ; eg . basic = { Left : "goCharLeft" , Right : "goCharRight" , Up : "goLineUp" , Down : "goLineDown" , End : "goLineEnd" , Home : "goLineStartSmart" , PageUp : "goPageUp" , PageDown : "goPageDown" , Delete : "delCharAfter" , Backspace : "delCharBefore" , "Shift-Backspace" : "delCharBefore" , Tab : "defaultTab" , "Shift-Tab" : "indentAuto" , Enter : "newlineAndIndent" , Insert : "toggleOverwrite" , Esc : "singleSelection" } , eg . pcDefault = { "Ctrl-A" : "selectAll" , "Ctrl-D" : "deleteLine" , "Ctrl-Z" : "undo" , "Shift-Ctrl-Z" : "redo" , "Ctrl-Y" : "redo" , "Ctrl-Home" : "goDocStart" , "Ctrl-End" : "goDocEnd" , "Ctrl-Up" : "goLineUp" , "Ctrl-Down" : "goLineDown" , "Ctrl-Left" : "goGroupLeft" , "Ctrl-Right" : "goGroupRight" , "Alt-Left" : "goLineStart" , "Alt-Right" : "goLineEnd" , "Ctrl-Backspace" : "delGroupBefore" , "Ctrl-Delete" : "delGroupAfter" , "Ctrl-S" : "save" , "Ctrl-F" : "find" , "Ctrl-G" : "findNext" , "Shift-Ctrl-G" : "findPrev" , "Shift-Ctrl-F" : "replace" , "Shift-Ctrl-R" : "replaceAll" , "Ctrl-[" : "indentLess" , "Ctrl-]" : "indentMore" , "Ctrl-U" : "undoSelection" , "Shift-Ctrl-U" : "redoSelection" , "Alt-U" : "redoSelection" , fallthrough : "basic" } , eg . emacsy = { "Ctrl-F" : "goCharRight" , "Ctrl-B" : "goCharLeft" , "Ctrl-P" : "goLineUp" , "Ctrl-N" : "goLineDown" , "Alt-F" : "goWordRight" , "Alt-B" : " goWordL
this . startLen = this . cm . getLine ( this . startPos . line ) . length ; var c = this ; a . on ( "cursorActivity" , this . activityFunc = function ( ) { c . cursorActivity ( ) } ) } function c ( a ) { return "string" == typeof a ? a : a . text } function d ( a , b ) { function c ( a , c ) { var e ; e = "string" != typeof c ? function ( a ) { return c ( a , b ) } : d . hasOwnProperty ( c ) ? d [ c ] : c , f [ a ] = e } var d = { Up : function ( ) { b . moveFocus ( - 1 ) } , Down : function ( ) { b . moveFocus ( 1 ) } , PageUp : function ( ) { b . moveFocus ( - b . menuSize ( ) + 1 , ! 0 ) } , PageDown : function ( ) { b . moveFocus ( b . menuSize ( ) - 1 , ! 0 ) } , Home : function ( ) { b . setFocus ( 0 ) } , End : function ( ) { b . setFocus ( b . length - 1 ) } , Enter : b . pick , Tab : b . pick , Esc : b . close } , e = a . options . customKeys , f = e ? { } : d ; if ( e ) for ( var g in e ) e . hasOwnProperty ( g ) && c ( g , e [ g ] ) ; var h = a . options . extraKeys ; if ( h ) for ( var g in h ) h . hasOwnProperty ( g ) && c ( g , h [ g ] ) ; return f } function e ( a , b ) { for ( ; b && b != a ; ) { if ( "LI" === b . nodeName . toUpperCase ( ) && b . parentNode == a ) return b ; b = b . parentNode } } function f ( b , f ) { this . completion = b , this . data = f , this . picked = ! 1 ; var i = this , j = b . cm , k = this . hints = document . createElement ( "ul" ) ; k . className = "CodeMirror-hints" , this . selectedHint = f . selectedHint || 0 ; for ( var l = f . list , m = 0 ; m < l . length ; ++ m ) { var n = k . appendChild ( document . createElement ( "li" ) ) , o = l [ m ] , p = g + ( m != this . selectedHint ? "" : " " + h ) ; null != o . className && ( p = o . className + " " + p ) , n . className = p , o . render ? o . render ( n , f , o ) : n . appendChild ( document . createTextNode ( o . displayText || c ( o ) ) ) , n . hintId = m } var q = j . cursorCoords ( b . options . alignWithWord ? f . from : null ) , r = q . left , s = q . bottom , t = ! 0 ; k . style . left = r + "px" , k . style . top = s + "px" ; var u = window . innerWidth || Math . max ( document . body . offsetWidth , document . documentElement . offsetWidth ) , v = window . innerHeight || Math . max ( document . body . offsetHeight , document . documentElement . offsetHeight ) ; ( b . options . container || document . body ) . appendChild ( k ) ; var w = k . getBoundingClientRect ( ) , x = w . bottom - v ; if ( x > 0 ) { var y = w . bottom - w . top , z = q . top - ( q . bottom - w . top ) ; if ( z - y > 0 ) k . style . top = ( s = q . top - y ) + "px" , t = ! 1 ; else if ( y > v ) { k . style . height = v - 5 + "px" , k . style . top = ( s = q . bottom - w . top ) + "px" ; var A = j . getCursor ( ) ; f . from . ch != A . ch && ( q = j . cursorCoords ( A ) , k . style . left = ( r = q . left ) + "px" , w = k . getBoundingClientRect ( ) ) } } var B = w . right - u ; if ( B > 0 && ( w . right - w . left > u && ( k . style . width = u - 5 + "px" , B -= w . right - w . left - u ) , k . style . left = ( r = q . left - B ) + "px" ) , j . addKeyMap ( this . keyMap = d ( b , { moveFocus : function ( a , b ) { i . changeActive ( i . selectedHint + a , b ) } , setFocus : function ( a ) { i . changeActive ( a ) } , menuSize : function ( ) { return i . screenAmount ( ) } , length : l . length , close : function ( ) { b . close ( ) } , pick : function ( ) { i . pick ( ) } , data : f } ) ) , b . options . closeOnUnfocus ) { var C ; j . on ( "blur" , this . onBlur = function ( ) { C = setTimeout ( function ( ) { b . close ( ) } , 100 ) } ) , j . on ( "focus" , this . onFocus = function ( ) { clearTimeout ( C ) } ) } var D = j . getScrollInfo ( ) ; return j . on ( "scroll" , this . onScroll = function ( ) { var a = j . getScrollInfo ( ) , c = j . getWrapperElement ( ) . getBoundingClientRect ( ) , d = s + D . top - a . top , e = d - ( window . pageYOffset || ( document . documentElement || document . body ) . scrollTop ) ; return t || ( e += k . offsetHeight ) , e <= c . top || e >= c . bottom ? b . close ( ) : ( k . style . top = d + "px" , void ( k . style . left = r + D . left - a . left + "px" ) ) } ) , a . on ( k , "dblclick" , function ( a ) { var b = e ( k , a . target || a . srcElement ) ; b && null != b . hintId && ( i . changeActive ( b . hintId ) , i . pick ( ) ) } ) , a . on ( k , "click" , function ( a ) { var c = e ( k , a . target || a . srcElement ) ; c && null != c . hintId && ( i . changeActive ( c . hintId ) , b . options . completeOnSingleClick && i . pick ( ) ) } ) , a . on ( k , "mousedown" , function ( ) { setTimeout ( function ( ) { j . focus ( ) } , 20 ) } ) , a . signal ( f , "select" , l [ 0 ] , k . firstChild ) , ! 0 } var g = "CodeMirror-hint" , h = "CodeMirror-hint-active" ; a . showHint = function ( a , b , c ) { if ( ! b ) return a . showHint ( c ) ; c && c . async && ( b . async = ! 0 ) ; var d = { hint : b } ; if ( c ) for ( var e in c ) d [ e ] = c [ e ] ; return a . showHint ( d ) } , a . defineExtension ( "showHint" , function ( c ) { if ( ! ( this . listSelections ( ) . length > 1 || this . somethingSelected ( ) ) ) { this . state . completionActive && this . state . completionActive . close ( ) ; var d = this . state . completionActive = new b ( this , c ) ; d . options . hint && ( a . signal ( this , "startCompletion" , this ) , d . update ( ! 0 ) ) } } ) ; var i = window . requestAnimationFrame || function ( a ) { return setTimeout ( a , 1e3 / 60 ) } , j = window . cancelAnimationFrame || clearTimeout ; b . prototype = { close : function ( ) { this . active ( ) && ( this . cm . state . completionActive = null , this . tick = null , this . cm . off ( "cursorActivity" , this . activityFunc ) , this . widget && this . data && a
for ( var b = this . element . height ( ) , c = a . scrollTop - a . overscanHeight , d = a . scrollTop + b + a . overscanHeight , e = this . tree . greatestLowerBound ( c ) , f = this . tree . leastUpperBound ( d ) , g = [ ] , h = 0 ; h < e ; h ++ ) { var i = this . cache [ h ] . index ; if ( ! this . cache [ h ] . destroyed ) { for ( var j = i ; j < i + a . blockSize && j < a . items . length ; j ++ ) g . push ( this . container . _children [ j ] ) , this . container . _children [ j ] = null ; this . cache [ h ] . destroyed = ! 0 } } for ( var h = f + 1 ; h <= this . renderedIndex ; h ++ ) { var i = this . cache [ h ] . index ; if ( ! this . cache [ h ] . destroyed ) { for ( var j = i ; j < i + a . blockSize && j < a . items . length ; j ++ ) g . push ( this . container . _children [ j ] ) , this . container . _children [ j ] = null ; this . cache [ h ] . destroyed = ! 0 } } for ( var k = document . createDocumentFragment ( ) , l = document . createDocumentFragment ( ) , m = k , h = e < 0 ? 0 : e ; h <= f && h <= this . renderedIndex ; h ++ ) { var i = this . cache [ h ] . index ; if ( this . cache [ h ] . destroyed || ( m = l ) , this . cache [ h ] . destroyed === ! 0 ) { for ( var j = i ; j < i + a . blockSize && j < a . items . length ; j ++ ) { var n = this . container . _addElement ( j , BI . extend ( { root : ! 0 } , BI . stripEL ( a . items [ j ] ) ) ) ; m . appendChild ( n . element [ 0 ] ) } this . cache [ h ] . destroyed = ! 1 } } this . container . element . prepend ( k ) , this . container . element . append ( l ) , this . topBlank . setHeight ( this . cache [ e < 0 ? 0 : e ] . scrollTop ) ; var o = this . cache [ Math . min ( f , this . renderedIndex ) ] ; this . bottomBlank . setHeight ( this . tree . sumTo ( this . renderedIndex ) - o . scrollTop - o . height ) , BI . each ( g , function ( a , b ) { b && b . _destroy ( ) } ) } , _populate : function ( a ) { var b = this . options ; a && this . options . items !== a && ( this . options . items = a ) , this . tree = BI . PrefixIntervalTree . empty ( Math . ceil ( b . items . length / b . blockSize ) ) , this . _calculateBlocksToRender ( ) , this . element . scrollTop ( b . scrollTop ) } , _clearChildren : function ( ) { BI . each ( this . container . _children , function ( a , b ) { b && b . el . _destroy ( ) } ) , this . container . _children = { } , this . container . attr ( "items" , [ ] ) } , restore : function ( ) { this . renderedIndex = - 1 , this . _clearChildren ( ) , this . cache = { } , this . options . scrollTop = 0 } , populate : function ( a ) { a && this . options . items !== a && this . restore ( ) , this . _populate ( ) } , destroyed : function ( ) { this . restore ( ) } } ) , BI . shortcut ( "bi.virtual_list" , BI . VirtualList ) , BI . Pager = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Pager . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-pager" , behaviors : { } , layouts : [ { type : "bi.horizontal" , hgap : 10 , vgap : 0 } ] , dynamicShow : ! 0 , dynamicShowFirstLast : ! 1 , dynamicShowPrevNext : ! 1 , pages : ! 1 , curr : function ( ) { return 1 } , groups : 0 , jump : BI . emptyFn , first : ! 1 , last : ! 1 , prev : "上一页" , next : "下一页" , firstPage : 1 , lastPage : function ( ) { return 1 } , hasPrev : BI . emptyFn , hasNext : BI . emptyFn } ) } , _init : function ( ) { BI . Pager . superclass . _init . apply ( this , arguments ) ; this . currPage = BI . result ( this . options , "curr" ) , this . _populate ( ) } , _populate : function ( ) { var a = this , b = this . options , c = [ ] , d = { } ; this . empty ( ) ; var e = BI . result ( b , "pages" ) , f = BI . result ( this , "currPage" ) , g = BI . result ( b , "groups" ) , h = BI . result ( b , "first" ) , i = BI . result ( b , "last" ) , j = BI . result ( b , "prev" ) , k = BI . result ( b , "next" ) ; e === ! 1 ? ( g = 0 , h = ! 1 , i = ! 1 ) : g > e && ( g = e ) , d . index = Math . ceil ( ( f + ( g > 1 && g !== e ? 1 : 0 ) ) / ( 0 === g ? 1 : g ) ) , ( ! b . dynamicShow && ! b . dynamicShowPrevNext || f > 1 ) && j !== ! 1 && ( BI . isKey ( j ) ? c . push ( { text : j , value : "prev" , disabled : e === ! 1 ? b . hasPrev ( f ) === ! 1 : ! ( f > 1 && j !== ! 1 ) } ) : c . push ( BI . extend ( { disabled : e === ! 1 ? b . hasPrev ( f ) === ! 1 : ! ( f > 1 && j !== ! 1 ) } , j ) ) ) , ( ! b . dynamicShow && ! b . dynamicShowFirstLast || d . index > 1 && 0 !== g ) && h && ( c . push ( { text : h , value : "first" , disabled : ! ( d . index > 1 && 0 !== g ) } ) , d . index > 1 && 0 !== g && c . push ( { type : "bi.label" , cls : "page-ellipsis" , text : "…" } ) ) , d . poor = Math . floor ( ( g - 1 ) / 2 ) , d . start = d . index > 1 ? f - d . poor : 1 , d . end = d . index > 1 ? function ( ) { var a = f + ( g - d . poor - 1 ) ; return a > e ? e : a } ( ) : g , d . end - d . start < g - 1 && ( d . start = d . end - g + 1 ) ; var l = d . start , m = d . end ; for ( h && i && d . index > 1 && 0 !== g && e > g && d . end < e && 0 !== g && ( l ++ , m -- ) ; l <= m ; l ++ ) l === f ? c . push ( { text : l , value : l , selected : ! 0 } ) : c . push ( { text : l , value : l } ) ; ( ! b . dynamicShow && ! b . dynamicShowFirstLast || e > g && d . end < e && 0 !== g ) && i && ( e > g && d . end < e && 0 !== g && c . push ( { type : "bi.label" , cls : "page-ellipsis" , text : "…" } ) , c . push ( { text : i , value : "last" , disabled : ! ( e > g && d . end < e && 0 !== g ) } ) ) , d . flow = ! j && 0 === g , ( ! b . dynamicShow && ! b . dynamicShowPrevNext && k || f !== e && k || d . flow ) && c . push ( function ( ) { return BI . isKey ( k ) ? e === ! 1 ? { text : k , value : "next" , disabled : b . hasNext ( f ) === ! 1 } : d . flow && f === e ? { text : k , value : "next" , disabled : ! 0 } : { text : k , value :
doClick : function ( ) { BI . TextIconNode . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . TextIconNode . EVENT _CHANGE , this . getValue ( ) , this ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } } ) , BI . TextIconNode . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_icon_node" , BI . TextIconNode ) , BI . TextNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . TextNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-node" , textAlign : "left" , whiteSpace : "nowrap" , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . TextNode . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : a . textAlign , whiteSpace : a . whiteSpace , textHeight : "nowrap" == a . whiteSpace ? a . height : a . textHeight , height : a . height , hgap : a . textHgap , vgap : a . textVgap , lgap : a . textLgap , rgap : a . textRgap , text : a . text , value : a . value , keyword : a . keyword , py : a . py } ) } , doClick : function ( ) { BI . TextNode . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . TextNode . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } } ) , BI . TextNode . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_node" , BI . TextNode ) , BI . CodeEditor = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return $ . extend ( BI . CodeEditor . superclass . _defaultConfig . apply ( ) , { baseCls : "bi-code-editor" , value : "" , watermark : "" , lineHeight : 2 , readOnly : ! 1 , paramFormatter : function ( a ) { return a } } ) } , _init : function ( ) { BI . CodeEditor . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; this . editor = CodeMirror ( this . element [ 0 ] , { textWrapping : ! 0 , lineWrapping : ! 0 , lineNumbers : ! 1 , readOnly : a . readOnly , specialChars : /[\u0000-\u001f\u007f\u00ad\u200c-\u200f\u2028\u2029\ufeff]/ } ) , 1 === a . lineHeight ? this . element . addClass ( "codemirror-low-line-height" ) : this . element . addClass ( "codemirror-high-line-height" ) , this . editor . on ( "change" , function ( a , c ) { BI . nextTick ( function ( ) { b . fireEvent ( BI . CodeEditor . EVENT _CHANGE ) } ) } ) , this . editor . on ( "focus" , function ( ) { b . watermark . setVisible ( ! 1 ) , b . fireEvent ( BI . CodeEditor . EVENT _FOCUS ) } ) , this . editor . on ( "blur" , function ( ) { b . watermark . setVisible ( BI . isEmptyString ( b . getValue ( ) ) ) , b . fireEvent ( BI . CodeEditor . EVENT _BLUR ) } ) , this . watermark = BI . createWidget ( { type : "bi.label" , text : a . watermark , cls : "bi-water-mark" , whiteSpace : "nowrap" , textAlign : "left" } ) , this . watermark . element . bind ( "mousedown" , function ( a ) { b . insertString ( "" ) , b . editor . focus ( ) , a . stopEvent ( ) } ) , this . watermark . element . bind ( "click" , function ( a ) { b . editor . focus ( ) , a . stopEvent ( ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . watermark , top : 0 , left : 5 } ] } ) , BI . isKey ( a . value ) && BI . nextTick ( function ( ) { b . setValue ( a . value ) } ) } , _setEnable : function ( a ) { BI . CodeEditor . superclass . _setEnable . apply ( this , arguments ) , this . editor . setOption ( "readOnly" , a !== ! 0 && "nocursor" ) } , _checkWaterMark : function ( ) { var a = this . options ; BI . isEmptyString ( this . editor . getValue ( ) ) && BI . isKey ( a . watermark ) ? this . watermark && this . watermark . visible ( ) : this . watermark && this . watermark . invisible ( ) } , insertParam : function ( a ) { var b = a ; a = this . options . paramFormatter ( a ) ; var c = this . editor . getCursor ( ) ; this . editor . replaceSelection ( " " + a + " " ) ; var d = this . editor . getCursor ( ) , e = { className : "param" , atomic : ! 0 } ; BI . isNotNull ( a . match ( /^<!.*!>$/ ) ) && ( e . className = "error-param" ) , e . value = b , this . editor . markText ( c , d , e ) , this . editor . replaceSelection ( " " ) , this . editor . focus ( ) } , insertString : function ( a ) { this . editor . replaceSelection ( a )
this . fireEvent ( BI . Input . EVENT _CHANGE ) , this . _lastSubmitValue = BI . trim ( this . getValue ( ) ) ) , "" == this . getValue ( ) && ( this . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EMPTY , this . getValue ( ) , this ) , this . fireEvent ( BI . Input . EVENT _EMPTY ) ) , this . _lastValue = this . getValue ( ) } , _checkValidationOnValueChange : function ( ) { var a = this . options , b = this . getValue ( ) ; this . setValid ( a . allowBlank === ! 0 && "" == BI . trim ( b ) || BI . isNotEmptyString ( BI . trim ( b ) ) && ( b === this . _lastValidValue || a . validationChecker . apply ( this , [ BI . trim ( b ) ] ) !== ! 1 ) ) } , focus : function ( ) { if ( ! this . element . is ( ":visible" ) ) throw new Error ( "input输入框在不可见下不能focus" ) ; ! this . _isEditing == ! 0 && ( this . element . focus ( ) , this . _focus ( ) , this . selectAll ( ) ) } , blur : function ( ) { if ( ! this . element . is ( ":visible" ) ) throw new Error ( "input输入框在不可见下不能blur" ) ; this . _isEditing === ! 0 && ( this . element . blur ( ) , this . _blurDebounce ( ) ) } , selectAll : function ( ) { if ( ! this . element . is ( ":visible" ) ) throw new Error ( "input输入框在不可见下不能select" ) ; this . element . select ( ) , this . _isEditing = ! 0 } , setValue : function ( a ) { this . element . val ( a ) , BI . nextTick ( BI . bind ( function ( ) { this . _checkValidationOnValueChange ( ) , this . _defaultState ( ) , this . isValid ( ) && ( this . _lastSubmitValue = this . getValue ( ) ) } , this ) ) } , getValue : function ( ) { return this . element . val ( ) || "" } , isEditing : function ( ) { return this . _isEditing } , getLastValidValue : function ( ) { return this . _lastValidValue } , _setValid : function ( ) { BI . Input . superclass . _setValid . apply ( this , arguments ) , this . isValid ( ) ? ( this . _lastValidValue = this . getValue ( ) , this . element . removeClass ( "bi-input-error" ) , this . fireEvent ( BI . Input . EVENT _VALID , BI . trim ( this . getValue ( ) ) , this ) ) : ( this . _lastValidValue === this . getValue ( ) && ( this . _lastValidValue = null ) , this . element . addClass ( "bi-input-error" ) , this . fireEvent ( BI . Input . EVENT _ERROR , BI . trim ( this . getValue ( ) ) , this ) ) } , _setEnable : function ( a ) { BI . Input . superclass . _setEnable . apply ( this , [ a ] ) , this . element [ 0 ] . disabled = ! a } } ) , BI . Input . EVENT _CHANGE = "EVENT_CHANGE" , BI . Input . EVENT _FOCUS = "EVENT_FOCUS" , BI . Input . EVENT _CLICK = "EVENT_CLICK" , BI . Input . EVENT _BLUR = "EVENT_BLUR" , BI . Input . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . Input . EVENT _QUICK _DOWN = "EVENT_QUICK_DOWN" , BI . Input . EVENT _SPACE = "EVENT_SPACE" , BI . Input . EVENT _BACKSPACE = "EVENT_BACKSPACE" , BI . Input . EVENT _START = "EVENT_START" , BI . Input . EVENT _PAUSE = "EVENT_PAUSE" , BI . Input . EVENT _STOP = "EVENT_STOP" , BI . Input . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . Input . EVENT _REMOVE = "EVENT_REMOVE" , BI . Input . EVENT _EMPTY = "EVENT_EMPTY" , BI . Input . EVENT _VALID = "EVENT_VALID" , BI . Input . EVENT _ERROR = "EVENT_ERROR" , BI . Input . EVENT _ENTER = "EVENT_ENTER" , BI . Input . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . shortcut ( "bi.input" , BI . Input ) , BI . Radio = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { var a = BI . Radio . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-radio radio-icon" , selected : ! 1 , handler : BI . emptyFn , width : 16 , height : 16 , iconWidth : 16 , iconHeight : 16 } ) } , _init : function ( ) { BI . Radio . superclass . _init . apply ( this , arguments ) } , doClick : function ( ) { BI . Radio . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . Radio . EVENT _CHANGE ) } } ) , BI . Radio . EVENT _CHANGE = "Radio.EVENT_CHANGE" , BI . shortcut ( "bi.radio" , BI . Radio ) , BI . Label = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Label . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-label" , textAlign : "center" , whiteSpace : "nowrap" , forceCenter : ! 1 , textWidth : null , textHeight : null , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , text : "" , py : "" , keyword : "" } ) } , _createJson : function ( ) { var a = this . options ; return { type : "bi.text" , textAlign : a . textAlign , whiteSpace : a . whiteSpace , lineHeight : a . textHeight , text : a . text , value : a . value , py : a . py , keyword : a . keyword } } , _init : function ( ) { BI . Label . superclass . _init . apply ( this , arguments ) , "center" === this . options . textAlign ? this . _createCenterEl ( ) : this . _createNotCenterEl ( ) } , _createCenterEl : function ( ) { var a = this . options , b = this . _createJson ( ) ; if ( BI . isNumber ( a . width ) && a . width > 0 ) { if ( BI . isNumber ( a . textWidth ) && a . textWidth > 0 ) { if ( BI . isNumber ( a . height ) && a . height > 0 ) { var c = ( a . width - a . textWidth ) / 2 ; return BI . createWidget ( { type : "bi.adaptive" , height : a . height , scrollable : "normal" === a . whiteSpace , ele
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})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i ) , X = { NaN : 1 , Infinity : 1 , "-Infinity" : 1 } , Y = /^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/ , Z = M . round , $ = parseFloat , _ = parseInt , aa = H . prototype . toUpperCase , ba = b . _availableAttrs = { "arrow-end" : "none" , "arrow-start" : "none" , blur : 0 , "clip-rect" : "0 0 1e9 1e9" , cursor : "default" , cx : 0 , cy : 0 , fill : "#fff" , "fill-opacity" : 1 , font : '10px "Arial"' , "font-family" : '"Arial"' , "font-size" : "10" , "font-style" : "normal" , "font-weight" : 400 , gradient : 0 , height : 0 , href : "http://raphaeljs.com/" , "letter-spacing" : 0 , opacity : 1 , path : "M0,0" , r : 0 , rx : 0 , ry : 0 , src : "" , stroke : "#000" , "stroke-dasharray" : "" , "stroke-linecap" : "butt" , "stroke-linejoin" : "butt" , "stroke-miterlimit" : 0 , "stroke-opacity" : 1 , "stroke-width" : 1 , target : "_blank" , "text-anchor" : "middle" , title : "Raphael" , transform : "" , width : 0 , x : 0 , y : 0 } , ca = b . _availableAnimAttrs = { blur : S , "clip-rect" : "csv" , cx : S , cy : S , fill : "colour" , "fill-opacity" : S , "font-size" : S , height : S , opacity : S , path : "path" , r : S , rx : S , ry : S , stroke : "colour" , "stroke-opacity" : S , "stroke-width" : S , transform : "transform" , width : S , x : S , y : S } , da = /[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/ , ea = { hs : 1 , rg : 1 } , fa = /,?([achlmqrstvxz]),?/gi , ga = /([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi , ha = / ( [ r s t m ] ) [ \ x 0 9 \ x 0 a \ x 0 b \ x 0 c \ x 0 d \ x 2 0 \ x a 0 \ u 1 6 8 0 \ u 1 8 0 e \ u 2 0 0 0 \ u 2 0 0 1 \ u 2 0 0 2 \
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 , b ) && c . push ( d ) } ) , c } , Xa . isPointInside = function ( a , c ) { var d = this . realPath = oa [ this . type ] ( this ) ; return this . attr ( "transform" ) && this . attr ( "transform" ) . length && ( d = b . transformPath ( d , this . attr ( "transform" ) ) ) , b . isPointInsidePath ( d , a , c ) } , Xa . getBBox = function ( a ) { if ( this . removed ) return { } ; var b = this . _ ; return a ? ( ! b . dirty && b . bboxwt || ( this . realPath = oa [ this . type ] ( this ) , b . bboxwt = za ( this . realPath ) , b . bboxwt . toString = o , b . dirty = 0 ) , b . bboxwt ) : ( ( b . dirty || b . dirtyT || ! b . bbox ) && ( ! b . dirty && this . realPath || ( b . bboxwt = 0 , this . realPath = oa [ this . type ] ( this ) ) , b . bbox = za ( pa ( this . realPath , this . matrix ) ) , b . bbox . toString = o , b . dirty = b . dirtyT = 0 ) , b . bbox ) } , Xa . clone = function ( ) { if ( this . removed ) return null ; var a = this . paper [ this . type ] ( ) . attr ( this . attr ( ) ) ; return this . _ _set _ _ && this . _ _set _ _ . push ( a ) , a } , Xa . glow = function ( a ) { if ( "text" == this . type ) return null ; a = a || { } ; var b = { width : ( a . width || 10 ) + ( + this . attr ( "stroke-width" ) || 1 ) , fill : a . fill || ! 1 , opacity : null == a . opacity ? . 5 : a . opacity , offsetx : a . offsetx || 0 , offsety : a . offsety || 0 , color : a . color || "#000" } , c = b . width / 2 , d = this . paper , e = d . set ( ) , f = this . realPath || oa [ this . type ] ( this ) ; f = this . matrix ? pa ( f , this . matrix ) : f ; for ( var g = 1 ; g < c + 1 ; g ++ ) e . push ( d . path ( f ) . attr ( { stroke : b . color , fill : b . fill ? b . color : "none" , "stroke-linejoin" : "round" , "stroke-linecap" : "round" , "stroke-width" : + ( b . width / c * g ) . toFixed ( 3 ) , opacity : + ( b . opacity / c ) . toFixed ( 3 ) } ) ) ; return e . insertBefore ( this ) . translate ( b . offsetx , b . offsety ) } ; var _a = function ( a , c , d , e , f , g , h , k , l ) { return null == l ? i ( a , c , d , e , f , g , h , k ) : b . findDotsAtSegment ( a , c , d , e , f , g , h , k , j ( a , c , d , e , f , g , h , k , l ) ) } , ab = function ( a , c ) { return function ( d , e , f ) { d = Ia ( d ) ; for ( var g , h , i , j , k , l = "" , m = { } , n = 0 , o = 0 , p = d . length ; o < p ; o ++ ) { if ( i = d [ o ] , "M" == i [ 0 ] ) g = + i [ 1 ] , h = + i [ 2 ] ; else { if ( j = _a ( g , h , i [ 1 ] , i [ 2 ] , i [ 3 ] , i [ 4 ] , i [ 5 ] , i [ 6 ] ) , n + j > e ) { if ( c && ! m . start ) { if ( k = _a ( g , h , i [ 1 ] , i [ 2 ] , i [ 3 ] , i [ 4 ] , i [ 5 ] , i [ 6 ] , e - n ) , l += [ "C" + k . start . x , k . start . y , k . m . x , k . m . y , k . x , k . y ] , f ) return l ; m . start = l , l = [ "M" + k . x , k . y + "C" + k . n . x , k . n . y , k . end . x , k . end . y , i [ 5 ] , i [ 6 ] ] . join ( ) , n += j , g = + i [ 5 ] , h = + i [ 6 ] ; continue } if ( ! a && ! c ) return k = _a ( g , h , i [ 1 ] , i [ 2 ] , i [ 3 ] , i [ 4 ] , i [ 5 ] , i [ 6 ] , e - n ) , { x : k . x , y : k . y , alpha : k . alpha } } n += j , g = + i [ 5 ]
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 ) { var d = /[ahqstv]/gi , e = a . _pathToAbsolute ; if ( c ( b ) . match ( d ) && ( e = a . _path2curve ) , d = /[clmz]/g , e == a . _pathToAbsolute && ! c ( b ) . match ( d ) ) { var g = c ( b ) . replace ( q , function ( a , b , c ) { var d = [ ] , e = "m" == b . toLowerCase ( ) , g = p [ b ] ; return c . replace ( s , function ( a ) { e && 2 == d . length && ( g += d + p [ "m" == b ? "l" : "L" ] , d = [ ] ) , d . push ( f ( a * u ) ) } ) , g + d } ) ; return g } var h , i , j = e ( b ) ; g = [ ] ; for ( var k = 0 , l = j . length ; k < l ; k ++ ) { h = j [ k ] , i = j [ k ] [ 0 ] . toLowerCase ( ) , "z" == i && ( i = "x" ) ; for ( var m = 1 , r = h . length ; m < r ; m ++ ) i += f ( h [ m ] * u ) + ( m != r - 1 ? "," : o ) ; g . push ( i ) } return g . join ( n ) } , y = function ( b , c , d ) { var e = a . matrix ( ) ; return e . rotate ( - b , . 5 , . 5 ) , { dx : e . x ( c , d ) , dy : e . y ( c , d ) } } , z = function ( a , b , c , d , e , f ) { var g = a . _ , h = a . matrix , k = g . fillpos , l = a . node , m = l . style , o = 1 , p = "" , q = u / b , r = u / c ; if ( m . visibility = "hidden" , b && c ) { if ( l . coordsize = i ( q ) + n + i ( r ) , m . rotation = f * ( b * c < 0 ? - 1 : 1 ) , f ) { var s = y ( f , d , e ) ; d = s . dx , e = s . dy } if ( b < 0 && ( p += "x" ) , c < 0 && ( p += " y" ) && ( o = - 1 ) , m . flip = p , l . coordorigin = d * - q + n + e * - r , k || g . fillsize ) { var t = l . getElementsByTagName ( j ) ; t = t && t [ 0 ] , l . removeChild ( t ) , k && ( s = y ( f , h . x ( k [ 0 ] , k [ 1 ] ) , h . y ( k [ 0 ] , k [ 1 ] ) ) , t . position = s . dx * o + n + s . dy * o ) , g . fillsize && ( t . size = g . fillsize [ 0 ] * i ( b ) + n + g . fillsize [ 1 ] * i ( c ) ) , l . appendChild ( t ) } m . visibility = "visible" } } ; a . toString = function ( ) { return "Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël " + this . version } ; var A = function ( a , b , d ) { for ( var e = c ( b ) . toLowerCase ( ) . split ( "-" ) , f = d ? "end" : "start" , g = e . length , h = "classic" , i = "medium" , j = "medium" ; g -- ; ) switch ( e [ g ] ) { case "block" : case "classic" : case "oval" : case "diamond" : case "open" : case "none" : h = e [ g ] ; break ; case "wide" : case "narrow" : j = e [ g ] ; break ; case "long" : case "short" : i = e [ g ] } var k = a . node . getElementsByTagName ( "stroke" ) [ 0 ] ; k [ f + "arrow" ] = h , k [ f + "arrowlength" ] = i , k [ f + "arrowwidth" ] = j } , B = function ( e , i ) { e . attrs = e . attrs || { } ; var l = e . node , m = e . attrs , p = l . style , q = v [ e . type ] && ( i . x != m . x || i . y != m . y || i . width != m . width || i . height != m . height || i . cx != m . cx || i . cy != m . cy || i . rx != m . rx || i . ry != m . ry || i . r != m . r ) , r = w [ e . type ] && ( m . cx != i . cx || m . cy != i . cy || m . r != i . r || m . rx != i . rx || m . ry != i . ry ) , s = e ; for ( var t in i ) i [ b ] ( t ) && ( m [ t ] = i [ t ] ) ; if ( q && ( m . path = a . _getPath [ e . type ] ( e ) , e . _ . dirty = 1 ) , i . href && ( l . href = i . href ) , i . title && ( l . title = i . title ) , i . target && ( l . target = i
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 ] [ e ] ) , n = h . mergeRule ( j [ a ] [ e ] , j [ a ] [ e - 1 ] ) ; if ( n && i ) continue ; n && q ( a , e ) , i && p ( a , e ) , n || i || r ( a , e ) } else r ( a , e ) } ) , BI . map ( i , function ( a , b ) { return { x : b . x , y : b . y , row : b . item . _row , col : b . item . _col , width : b . item . _width , height : b . item . _height } } ) } , _populate : function ( ) { this . _width <= 0 || this . _height <= 0 || ( this . _isNeedDigest === ! 0 && this . _digest ( ) , this . _isNeedDigest = ! 1 , this . _populateTable ( ) , this . _populateScrollbar ( ) ) } , 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 ) } , setVerticalScroll : function ( a ) { this . bottomLeftCollection . setScrollTop ( a ) , this . bottomRightCollection . setScrollTop ( a ) } , setLeftHorizontalScroll : function ( a ) { this . topLeftCollection . setScrollLeft ( a ) , this . bottomLeftCollection . setScrollLeft ( a ) } , setRightHorizontalScroll : function ( a ) { this . topRightCollection . setScrollLeft ( a ) , this . bottomRightCollection . setScrollLeft ( a ) } , getVerticalScroll : function ( ) { return this . bottomRightCollection . getScrollTop ( ) } , getLeftHorizontalScroll : function ( ) { return this . bottomLeftCollection . getScrollLeft ( ) } , getRightHorizontalScroll : function ( ) { return this . bottomRightCollection . getScrollLeft ( ) } , setWidth : function ( a ) { BI . CollectionTable . superclass . setWidth . apply ( this , arguments ) , this . _width = this . options . width - BI . GridTableScrollbar . SIZE } , setHeight : function ( a ) { BI . CollectionTable . superclass . setHeight . apply ( this , arguments ) , this . _height = this . options . height - BI . GridTableScrollbar . SIZE } , setColumnSize : function ( a ) { this . _isNeedDigest = ! 0 , this . options . columnSize = a } , setRegionColumnSize : function ( a ) { this . _isNeedDigest = ! 0 , this . options . regionColumnSize = a } , getColumnSize : function ( ) { return this . options . columnSize } , getRegionColumnSize : function ( ) { return this . options . regionColumnSize } , populate : function ( a , b ) { a && a !== this . options . items && ( this . _isNeedDigest = ! 0 , this . options . items = a , this . _restore ( ) ) , b && b !== this . options . header && ( this . _isNeedDigest = ! 0 , this . options . header = b , this . _restore ( ) ) , this . _populate ( ) } , _restore : function ( ) { this . topLeftCollection . restore ( ) , this . topRightCollection . restore ( ) , th
_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 . freezeCols . length ) } return this . topRightContainer = BI . createWidget ( { type : "bi.adaptive" , width : f || void 0 , items : [ c ] } ) } , _createBottomLeft : function ( ) { var a = this . options , b = this . _isRightFreeze ( ) ; this . bottomLeftColGroupTds = { } , this . bottomLeftBodyTds = { } , this . bottomLeftBodyItems = { } ; var c = this . _table ( ) , d = this . _createColGroup ( this . columnLeft , this . bottomLeftColGroupTds ) , e = this . _createBottomLeftBody ( ) ; if ( 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 . bottomLeftContainer = BI . createWidget ( { type : "bi.adaptive" , width : this . _calculateWidth ( f ) , items : [ c ] } ) } , _createBottomLeftBody : function ( ) { var a = this . bottomLeftBody = this . _body ( ) ; return a . element . append ( this . _createCells ( this . bottomLeftItems , this . columnLeft , this . mergeLeft , this . bottomLeftBodyTds , this . bottomLeftBodyItems ) ) , a } , _createBottomRight : function ( ) { var a = this . options , b = this . _isRightFreeze ( ) ; this . bottomRightColGroupTds = { } , this . bottomRightBodyTds = { } , this . bottomRightBodyItems = { } ; var c = this . _table ( ) , d = this . _createColGroup ( this . columnRight , this . bottomRightColGroupTds ) , e = this . _createBottomRightBody ( ) ; if ( 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 . bottomRightContainer = BI . createWidget ( { type : "bi.adaptive" , width : this . _calculateWidth ( f ) , items : [ c ] } ) } , _createBottomRightBody : function ( ) { var a = this . bottomRightBody = this . _body ( ) ; return a . element
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 . _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 ) ] } , _getFreezeColLength : function ( ) { var a = this . options ; return a . isNeedFreeze === ! 0 ? BI . clamp ( a . freezeCols . length , 0 , a . columnSize . length ) : 0 } , _getFreezeColumnSize : function ( ) { for ( var a = this . options . columnSize , b = 0 , c = 0 , d = this . _getFreezeColLength ( ) ; c < d ; c ++ ) b += a [ c ] ; return b } , _getResizerLeft : function ( a ) { for ( var b = 0 , c = this . options . columnSize , d = this . _getFreezeColLength ( ) , e = a >= d ? d : 0 ; e < a ; e ++ ) b += c [ e ] || 0 ; return a >= d ? ( b += this . table . getRegionSize ( ) , b -= this . table . getRightHorizontalScroll ( ) ) : b -= this . table . getLeftHorizontalScroll ( ) , b } , _formatHeader : function ( a ) { var b = this , c = this . options , d = [ ] , e = function ( a , d ) { b . resizer . setVisible ( ! 0 ) ; var e = c . headerRowSize + b . _getRegionRowSize ( ) [ 1 ] ; b . resizer . setHeight ( e ) , b . _setResizerPosition ( b . _getResizerLeft ( a ) + d , ( c . header . length - 1 ) * c . headerRowSize ) } , f = function ( a , d ) { b . resizer . setVisible ( ! 1 ) ; var e = c . columnSize . slice ( ) ; e [ a ] = d , c . columnSize = e , b . table . setColumnSize ( e ) , b . _populate ( ) , b . fireEvent ( BI . Table . EVENT _TABLE _AFTER _COLUMN _RESIZE ) } ; return BI . each ( a , function ( g , h ) { g === a . length - 1 ? ( d [ g ] = [ ] , BI . each ( h , function ( a , i ) { if ( a === b . _getFreezeColLength ( ) - 1 || a === h . length - 1 ) d [ g ] [ a ] = i ; else if ( d [ g ] [ a ] = { type : "bi.resizable_table_cell" , cell : i , suitableSize : c . minColumnSize [ a ] , maxSize : c . maxColumnSize [ a ] , resize : BI . bind ( e , null , a ) , stop : BI . bind ( f , null , a ) } , c . isNeedMerge ) for ( var j = g ; j > 0 && b . _mergeRule ( d [ j ] [ a ] , d [ j - 1 ] [ a ] ) ; ) d [ j - 1 ] [ a ] = { type : "bi.resizable_table_cell" , cell : d [ j - 1 ] [ a ] , suitableSize : c . minColumnSize [ a ] , maxSize : c . maxColumnSize [ a ] , resize : BI . bind ( e , null , a ) , stop : BI . bind ( f , null , a ) } , j -- } ) ) : d . push ( h ) } ) , d } , _populate : function ( ) { var a = ( this . options , this . _getRegionSize ( ) ) ; a > 0 ? ( this . regionResizerHandler . setVisible ( ! 0 ) , this . _setRegionResizerHandlerPosition ( a - 3 , 0 ) ) : this . regionResizerHandler . setVisible ( ! 1 ) } , setWidth : function ( a ) { BI . ResizableTable
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 || view . cancelPreSelectedNode ( a , null , b ) , $$ ( b , consts . id . A , a ) . addClass ( consts . node . CURSELECTED ) , data . addSelectedNode ( a , b ) , a . treeObj . trigger ( consts . event . SELECTED , [ event , a . treeId , b ] ) } , setNodeFontCss : function ( a , b ) { var c = $$ ( b , consts . id . A , a ) , d = view . makeNodeFontCss ( a , b ) ; d && c . css ( d ) } , setNodeLineIcos : function ( a , b ) { if ( b ) { var c = $$ ( b , consts . id . SWITCH , a ) , d = $$ ( b , consts . id . UL , a ) , e = $$ ( b , consts . id . ICON , a ) , f = view . makeUlLineClass ( a , b ) ; 0 == f . length ? d . removeClass ( consts . line . LINE ) : d . addClass ( f ) , c . attr ( "class" , view . makeNodeLineClass ( a , b ) ) , b . isParent ? c . removeAttr ( "disabled" ) : c . attr ( "disabled" , "disabled" ) , e . removeAttr ( "style" ) , e . attr ( "style" , view . makeNodeIcoStyle ( a , b ) ) , e . attr ( "class" , view . makeNodeIcoClass ( a , b ) ) } } , setNodeName : function ( a , b ) { var c = data . getNodeTitle ( a , b ) , d = $$ ( b , consts . id . SPAN , a ) ; if ( d . empty ( ) , a . view . nameIsHTML ? d . html ( data . getNodeName ( a , b ) ) : d . text ( data . getNodeName ( a , b ) ) , tools . apply ( a . view . showTitle , [ a . treeId , b ] , a . view . showTitle ) ) { var e = $$ ( b , consts . id . A , a ) ; e . attr ( "title" , c ? c : "" ) } } , setNodeTarget : function ( a , b ) { var c = $$ ( b , consts . id . A , a ) ; c . attr ( "target" , view . makeNodeTarget ( b ) ) } , setNodeUrl : function ( a , b ) { var c = $$ ( b , consts . id . A , a ) , d = view . makeNodeUrl ( a , b ) ; null == d || 0 == d . length ? c . removeAttr ( "href" ) : c . attr ( "href" , d ) } , switchNode : function ( a , b ) { if ( b . open || ! tools . canAsync ( a , b ) ) view . expandCollapseNode ( a , b , ! b . open ) ; else if ( a . async . enable ) { if ( ! view . asyncNode ( a , b ) ) return void view . expandCollapseNode ( a , b , ! b . open ) } else b && view . expandCollapseNode ( a , b , ! b . open ) } } ; $ . fn . zTree = { consts : _consts , _z : { tools : tools , view : view , event : event , data : data } , getZTreeObj : function ( a ) { var b = data . getZTreeTools ( a ) ; return b ? b : null } , destroy : function ( a ) { if ( a && a . length > 0 ) view . destroy ( data . getSetting ( a ) ) ; else for ( var b in
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 , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . MidPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MidPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( a ) } } ) , BI . shortcut ( "bi.mid_plus_group_node" , BI . MidPlusGroupNode ) , BI . MultiLayerIconArrowNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . MultiLayerIconArrowNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-multilayer-icon-arrow-node bi-list-item" , layer : 0 , id : "" , pId : "" , open : ! 1 , height : 25 , iconHeight : 13 , iconWidth : 13 , iconCls : "" } ) } , _init : function ( ) { BI . MultiLayerIconArrowNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.icon_arrow_node" , iconCls : b . iconCls , id : b . id , pId : b . pId , open : b . open , height : b . height , iconHeight : b . iconHeight , iconWidth : b . iconWidth , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . node . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . setSelected ( a . isSelected ( ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , width : 13 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 13 ) , items : [ c ] } ) } , isOnce : function ( ) { return ! 0 } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , isSelected : function ( ) { return this . node . isSelected ( ) } , setSelected : function ( a ) { BI . MultiLayerIconArrowNode . superclass . setSelected . apply ( this , arguments ) , this . node . setSelected ( a ) } , doClick : func
} 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 . pageYOffset || document . documentElement . scrollTop ; this . fakeElem . style . top = c + "px" , this . fakeElem . setAttribute ( "readonly" , "" ) , this . fakeElem . value = this . text , document . body . appendChild ( this . fakeElem ) , this . selectedText = ( 0 , e [ "default" ] ) ( this . fakeElem ) , this . copyText ( ) } } , { key : "removeFake" , value : function ( ) { this . fakeHandler && ( document . body . removeEventListener ( "click" , this . fakeHandlerCallback ) , this . fakeHandler = null , this . fakeHandlerCallback = null ) , this . fakeElem && ( document . body . removeChild ( this . fakeElem ) , this . fakeElem = null ) } } , { key : "selectTarget" , value : function ( ) { this . selectedText = ( 0 , e [ "default" ] ) ( this . target ) , this . copyText ( ) } } , { key : "copyText" , value : function ( ) { var a = void 0 ; try { a = document . execCommand ( this . action ) } catch ( b ) { a = ! 1 } this . handleResult ( a ) } } , { key : "handleResult" , value : function ( a ) { this . emitter . emit ( a ? "success" : "error" , { action : this . action , text : this . selectedText , trigger : this . trigger , clearSelection : this . clearSelection . bind ( this ) } ) } } , { key : "clearSelection" , value : function ( ) { this . target && this . target . blur ( ) , window . getSelection ( ) . removeAllRanges ( ) } } , { key : "destroy" , value : function ( ) { this . removeFake ( ) } } , { key : "action" , set : function ( ) { var a = arguments . length > 0 && void 0 !== arguments [ 0 ] ? arguments [ 0 ] : "copy" ; if ( this . _action = a , "copy" !== this . _action && "cut" !== this . _action ) throw new Error ( 'Invalid "action" value, use either "copy" or "cut"' ) } , get : function ( ) { return this . _action } } , { key : "target" , set : function ( a ) { if ( void 0 !== a ) { if ( ! a || "object" !== ( "undefined" == typeof a ? "undefined" : f ( a ) ) || 1 !== a . nodeType ) throw new Error ( 'Invalid "target" value, use a valid Element' ) ; if ( "copy" === this . action && a . hasAttribute ( "disabled" ) ) throw new Error ( ' Invalid "target" attribute . Please use "readonly" i
} ) ) : "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 . EVENT _CHANGE , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _EXPAND , function ( ) { a . fireEvent ( BI . BubbleCombo . EVENT _EXPAND , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _COLLAPSE , function ( ) { a . fireEvent ( BI . BubbleCombo . EVENT _COLLAPSE , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _AFTER _INIT , function ( ) { a . fireEvent ( BI . BubbleCombo . EVENT _AFTER _INIT , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . fireEvent ( BI . BubbleCombo . EVENT _BEFORE _POPUPVIEW , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _AFTER _POPUPVIEW , function ( ) { a . _showTriangle ( ) , a . fireEvent ( BI . BubbleCombo . EVENT _AFTER _POPUPVIEW , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _HIDEVIEW , function ( ) { a . _hideTriangle ( ) , a . fireEvent ( BI . BubbleCombo . EVENT _BEFORE _HIDEVIEW , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { a . fireEvent ( BI . BubbleCombo . EVENT _AFTER _HIDEVIEW , arguments ) } ) } , _getAdjustLength : function ( ) { return this . _const . TRIANGLE _LENGTH + this . options . adjustLength } , _createTriangle : function ( a ) { var b = { } , c = { } , d = this . options . adjustLength , e = this . element . offset ( ) , f = e . left , g = e . left + this . element . outerWidth ( ) , h = e . top , i = e . top + this . element . outerHeight ( ) ; switch ( a ) { case "left" : b = { top : h , height : this . element . outerHeight ( ) , left : f - d - this . _const . TRIANGLE _LENGTH } , c = { width : this . _const . TRIANGLE _LENGTH } ; break ; case "right" : b = { top : h , height : this . element . outerHeight ( ) , left : g + d } , c = { width : this . _const . TRIANGLE _LENGTH } ; break ; case "top" : b = { left : f , width : this . element . outerWidth ( ) , top : h - d - this . _const . TRIANGLE _LENGTH } , c = { height : this . _const . TRIANGLE _LENGTH } ; break ; case "bottom" : b = { left : f , width : this . element . outerWidth ( ) , top : i + d } , c = { height : this . _const . TRIANGLE _LENGTH }
validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 0 , watermark : "" , errorText : "" , height : 24 , textAlign : "left" } ) } , _init : function ( ) { BI . ShelterEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( { type : "bi.editor" , height : b . height , hgap : b . hgap , vgap : b . vgap , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , value : b . value , validationChecker : b . validationChecker , quitChecker : b . quitChecker , allowBlank : b . allowBlank , watermark : b . watermark , errorText : b . errorText } ) , this . text = BI . createWidget ( { type : "bi.text_button" , cls : "shelter-editor-text" , title : b . title , warningTitle : b . warningTitle , tipType : b . tipType , textAlign : b . textAlign , height : b . height , hgap : 4 } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . text , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . text . on ( BI . Controller . EVENT _CHANGE , function ( ) { arguments [ 2 ] = a , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . text . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _CLICK _LABEL ) } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _FOCUS , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _FOCUS , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _BLUR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _CLICK , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . ShelterEditor . EVENT _KEY _DOWN , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _VALID , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { a . _showHint ( ) , a . _checkText ( ) , a . fireEvent ( BI . ShelterEditor . EVENT _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _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
} ) ) ) ) } , 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 . allSelected = ! 1 , this . toolbar . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . allSelected = this . isSelected ( ) , b === BI . Events . CLICK && ( a . setAllSelected ( a . allSelected ) , a . fireEvent ( BI . SelectList . EVENT _CHANGE , c , d ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . list = BI . createWidget ( b .
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 ( ) { return window . getSelection ? window . getSelection ( ) : document . selection } , getRng : function ( ) { var a = this . getSel ( ) ; if ( a && 0 !== a . rangeCount ) return a . rangeCount > 0 ? a . getRangeAt ( 0 ) : a . createRange ( ) } , selRng : function ( a , b ) { window . getSelection ? ( b . removeAllRanges ( ) , b . addRange ( a ) ) : a . select ( ) } , selElm : function ( ) { var a = this . getRng ( ) ; if ( a ) { if ( a . startContainer ) { var b = a . startContainer ; if ( 1 == a . cloneContents ( ) . childNodes . length ) for ( var c = 0 ; c < b . childNodes . length ; c ++ ) { var d = b . childNodes [ c ] . ownerDocument . createRange ( ) ; if ( d . selectNode ( b . childNodes [ c ] ) , 1 != a . compareBoundaryPoints ( Range . START _TO _START , d ) && a . compareBoundaryPoints ( Range . END _TO _END , d ) != - 1 ) return b . childNodes [ c ] } return b } return "Control" == this . getSel ( ) . type ? a . item ( 0 ) : a . parentElement ( ) } } , saveRng : function ( ) { this . savedRange = this . getRng ( ) , this . savedSel = this . getSel ( ) } , setFocus : function ( a ) { try { a . focus ( ) } catch ( b ) { } if ( window . getSelection ) { var c = document . createRange ( ) ; c . selectNodeContents ( a ) , c . collapse ( ! 1 ) ; var d = window . getSelection ( ) ; d . removeAllRanges ( ) , d . addRange ( c ) } else { var e ; try { a . focus ( ) } catch ( b ) { } e = document . selection . createRange ( ) , e . moveStart ( "character" , - a . innerText . length ) ; for ( var f = e . text , g = 0 ; g < a . innerText . length ; g ++ ) a . innerText . substring ( 0 , g + 1 ) == f . substring ( f . length - g - 1 , f . length ) && ( result = g + 1 ) } } , restoreRng : function ( ) { this . savedRange && this . selRng ( this . savedRange , this . savedSel ) } , keyDown : function ( a , b ) { this . ne . fireEvent ( "keydown" , a ) } , selected : function ( b ) { var c = b . target ; if ( c || ( c = this . selElm ( ) ) || ( c = this . selElm ( ) ) , ! b . ctrlKey ) { var d = this . ne . selectedInstance ; d != this && ( d && this . ne . fireEvent ( "blur" , b ) , this . ne . selectedInstance = this , this . ne . fireEvent ( "focus" , b ) ) , this . ne . fireEvent ( "selected" , b ) , this . isFocused = ! 0 , this . elm . element . addClass ( a + "selected" ) } } , blur : function ( ) { this . isFocused = ! 1 , this . elm . element . removeClass ( a + "selected" ) } , saveContent : function ( ) { this . ne . fireEvent ( "save" ) , this . e . element . value ( this . getContent ( ) ) } , getElm : function ( ) { return this . elm } , getContent : function ( ) { return this . content = this . getElm ( ) . element . html ( ) , this . ne . fireEvent ( "get" ) , this . content } , setContent : function ( a ) { this . content = a , this . ne . fireEvent ( "set" ) , this . elm . element . html ( this . content ) } , nicCommand : function ( a , b ) { document . execCommand ( a , ! 1 , b ) } } ) } ( ) , BI . RichEditorBackgroundChooserTrigger = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . RichEditorBackgroundChooserTrigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { width : 20 , height : 20 } ) } , _init : function ( ) { BI . RichEditorBackgroundChooserTrigger . superclass . _init . apply ( this , arguments ) , this . font = BI . createWidget ( { type : "bi.icon_button" , cls : "text-background-font" } ) , this . underline = BI . createWidget ( { type : "bi.icon_button" , cls : "text-color-underline-font" } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . font , top : 2 , left : 2 } , { el : this . underline , top : 7 , left : 2 } ] } ) } , setValue : function ( a ) { this . underline . element . css ( "color" , a ) } , getValue : function ( ) { return this . font . element . css ( "color" ) } } ) , BI . shortcut ( " bi . rich _editor _bac
baseCls : "bi-layer-tree-table-cell" , layer : 0 , text : "" } ) } , _init : function ( ) { BI . LayerTreeTableCell . superclass . _init . apply ( this , arguments ) ; var a = this . options ; BI . createWidget ( { type : "bi.label" , element : this . element , textAlign : "left" , whiteSpace : "nowrap" , height : a . height , text : a . text , value : a . value , lgap : 5 + 30 * a . layer , rgap : 5 } ) } } ) , BI . shortcut ( "bi.layer_tree_table_cell" , BI . LayerTreeTableCell ) , BI . LayerTreeTable = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . LayerTreeTable . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-layer-tree-table" , el : { type : "bi.resizable_table" } , isNeedResize : ! 1 , isResizeAdapt : ! 0 , isNeedFreeze : ! 1 , freezeCols : [ ] , isNeedMerge : ! 0 , mergeCols : [ ] , mergeRule : BI . emptyFn , columnSize : [ ] , minColumnSize : [ ] , maxColumnSize : [ ] , headerRowSize : 25 , rowSize : 25 , regionColumnSize : [ ] , rowHeaderCreator : null , headerCellStyleGetter : BI . emptyFn , summaryCellStyleGetter : BI . emptyFn , sequenceCellStyleGetter : BI . emptyFn , header : [ ] , items : [ ] , crossHeader : [ ] , crossItems : [ ] } ) } , _getVDeep : function ( ) { return this . options . crossHeader . length } , _getHDeep : function ( ) { var a = this . options ; return Math . max ( a . mergeCols . length , a . freezeCols . length , BI . 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 ) { function b ( a , c ) { a . type || ( a . type = "bi.layer_tree_table_cell" ) , a . layer = c ; var e = [ a ] ; e = e . concat ( a . values || [ ] ) , e . length > 0 && d . push ( e ) , BI . isNotEmptyArray ( a . children ) && BI . each ( a . children , function ( a , d ) { b ( d , c + 1 ) } ) } var c = this . options , d = [ ] ; return BI . each ( a , function ( a , e ) { if ( BI . each ( e . children , function ( a , c ) { b ( c , 0 ) } ) , BI . isArray ( e . values ) ) { var f = [ { type : "bi.table_style_cell" , text : BI . i18nText ( "BI-Summary_Values" ) , styleGetter : function ( ) { return c . summaryCellStyleGetter ( ! 0 ) } } ] . concat ( e . values ) ; d . push ( f ) } } ) , d } , _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 } , _digest : function ( ) { var a = this . options , b = this . _getHDeep ( ) , c = this . _getVDeep ( ) ; return { header : this . _createHeader ( c ) , items : this . _formatItems ( a . items ) , columnSize : this . _formatColumnSize ( a . columnSize , b ) , minColumnSize : this . _formatColumns ( a . minColumnSize , b ) , maxColumnSize : this . _formatColumns ( a . maxColumnSize , b ) , freezeCols : this . _formatFreezeCols ( ) } } , _init : function ( ) { BI . LayerTreeTable . 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 , function ( ) { a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _AFTER _REGION _RESIZE , function ( ) { b . regionColumnSize = this . getRegionColumnSize ( ) , b . columnSize = this . getColumnSize ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _AFTER _REGION _RESIZE , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _AFTER _COLUMN _RESIZE , function ( ) { b . regionColumnSize = this . getRegionColumnSize ( ) , b . columnSize = this . getColumnSize ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _AFTER _COLUMN _RESIZE , arguments ) } ) } , setWidth : function ( a ) { BI . LayerTreeTable . su
width : a . width , height : a . height } ) } } ) , BI . shortcut ( "bi.icon_trigger" , BI . IconTrigger ) , BI . IconTextTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 } , _defaultConfig : function ( ) { var a = BI . IconTextTrigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-trigger" , height : 24 } ) } , _init : function ( ) { BI . IconTextTrigger . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , height : b . height , text : b . text , hgap : c . hgap } ) , this . trigerButton = BI . createWidget ( { type : "bi.trigger_icon_button" , cls : "bi-border-left" , width : b . triggerWidth || b . height } ) , BI . createWidget ( { element : this , type : "bi.htape" , ref : function ( b ) { a . wrapper = b } , items : [ { el : { type : "bi.icon_change_button" , cls : "icon-combo-trigger-icon " + b . iconClass , ref : function ( b ) { a . icon = b } , disableSelected : ! 0 } , width : b . triggerWidth || b . height } , { el : this . text } , { el : this . trigerButton , width : b . triggerWidth || b . height } ] } ) } , setValue : function ( a ) { this . text . setValue ( a ) , this . text . setTitle ( a ) } , setIcon : function ( a ) { var b = this . options ; this . icon . setIcon ( a ) ; var c = this . wrapper . attr ( "items" ) [ 0 ] ; BI . isNull ( a ) || BI . isEmptyString ( a ) ? 0 !== c . width && ( c . width = 0 , this . wrapper . resize ( ) ) : c . width !== ( b . triggerWidth || b . height ) && ( c . width = b . triggerWidth || b . height , this . wrapper . resize ( ) ) } , setText : function ( a ) { this . text . setText ( a ) , this . text . setTitle ( a ) } } ) , BI . shortcut ( "bi.icon_text_trigger" , BI . IconTextTrigger ) , BI . SelectIconTextTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectIconTextTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-text-trigger bi-border" , height : 24 } ) } , _init : function ( ) { this . options . height -= 2 , BI . SelectIconTextTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . trigger = BI . createWidget ( { type : "bi.icon_text_trigger" , element : this , height : a . height } ) , BI . isKey ( a . value ) && this . setValue ( a . value ) } , setValue : function ( a ) { var b = this . options ; a = BI . isArray ( a ) ? a : [ a ] ; var c , d = BI . Tree . transformToArrayFormat ( this . options . items ) ; BI . any ( d , function ( b , d ) { if ( BI . deepContains ( a , d . value ) ) return c = { text : d . text || d . value , iconClass : d . iconClass } , ! 0 } ) , BI . isNotNull ( c ) ? ( this . trigger . setText ( c . text ) , this . trigger . setIcon ( c . iconClass ) ) : ( this . trigger . setText ( b . value ) , this . trigger . setIcon ( "" ) ) } , populate : function ( a ) { this . options . items = a } } ) , BI . shortcut ( "bi.select_icon_text_trigger" , BI . SelectIconTextTrigger ) , BI . TextTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 } , _defaultConfig : function ( ) { var a = BI . TextTrigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-trigger" , height : 24 } ) } , _init : function ( ) { BI . TextTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , height : a . height , text : a . text , hgap : b . hgap , readonly : a . readonly } ) , this . trigerButton = BI . createWidget ( { type : "bi.trigger_icon_button" , cls : "bi-border-left" , width : a . triggerWidth || a . height } ) , BI . createWidget ( { element : this , type : "bi.htape" , items : [ { el : this . text } , { el : this . trigerButton , width : a . triggerWidth || a . height } ] } ) } , setValue : function ( a ) { this . text . setValue ( a ) , this . text . setTitle ( a ) } , setText : function ( a ) { this . text . setText ( a ) , this . text . setTitle ( a ) } } ) , BI . shortcut ( "bi.text_trigger" , BI . TextTrigger ) , BI . SelectTextTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectTextTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-text-trigger bi-border" , height : 24 } ) } , _init : function ( ) { this . options . height -= 2 , BI . SelectTextTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . trigger = BI . createWidget ( { type : "bi.text_trigger" , element : this , height : a . height } ) , BI . isKey ( a . text ) && this . setValue ( a . text ) } , setValue : function ( a ) { var b = this . options ; a = BI . isArray ( a ) ? a : [ a ] ; var c = [ ] , d = BI . Tree . transformToArrayFormat ( this . options . items ) ; BI . each ( d , function ( b , d ) { BI . deepContains ( a , d . value ) && ! c . contains ( d . text || d . value ) && c . push ( d . text || d . value ) } ) , c . length > 0 ? this . trigger . setText ( c . join ( "," ) ) : this . trigger . setText ( b . text ) } , populate : function ( a ) { this . options . items = a } } ) , BI . shortcut ( " bi . select _text _tri
LAYOUT _TYPE : { GRID : 0 , FREE : 1 } } ) , BI . shortcut ( "bi.arrangement" , BI . Arrangement ) , BI . MonthDateCombo = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . MonthDateCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-month-combo" , height : 25 } ) } , _init : function ( ) { BI . MonthDateCombo . superclass . _init . apply ( this , arguments ) ; var a = this ; this . options ; this . trigger = BI . createWidget ( { type : "bi.date_triangle_trigger" } ) , this . popup = BI . createWidget ( { type : "bi.month_popup" } ) , this . popup . on ( BI . YearPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , offsetStyle : "center" , element : this , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 85 , stopPropagation : ! 1 , el : this . popup } } ) , this . combo . on ( BI . Combo . EVENT _CHANGE , function ( ) { a . combo . hideView ( ) , a . fireEvent ( BI . MonthDateCombo . EVENT _CHANGE ) } ) } , setValue : function ( a ) { this . trigger . setValue ( a + 1 ) , this . popup . setValue ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } } ) , BI . MonthDateCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.month_date_combo" , BI . MonthDateCombo ) , BI . YearDateCombo = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . YearDateCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-year-combo" , min : "1900-01-01" , max : "2099-12-31" , height : 25 } ) } , _init : function ( ) { BI . YearDateCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.date_triangle_trigger" } ) , this . popup = BI . createWidget ( { type : "bi.year_popup" , min : b . min , max : b . max } ) , this . popup . on ( BI . YearPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . YearDateCombo . EVENT _CHANGE ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , offsetStyle : "center" , element : this , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 85 , stopPropagation : ! 1 , el : this . popup } } ) , this . combo . on ( BI . Combo . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . YearDateCombo . EVENT _CHANGE ) } ) } , setValue : function ( a ) { this . trigger . setValue ( a ) , this . popup . setValue ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } } ) , BI . YearDateCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.year_date_combo" , BI . YearDateCombo ) , BI . DatePicker = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . DatePicker . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-date-picker bi-background" , height : 25 , min : "1900-01-01" , max : "2099-12-31" } ) } , _init : function ( ) { BI . DatePicker . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . _year = Date . getDate ( ) . getFullYear ( ) , this . _month = Date . getDate ( ) . getMonth ( ) , this . left = BI . createWidget ( { type : "bi.icon_button" , cls : "pre-page-h-font" , width : 25 , height : 25 } ) , this . left . on ( BI . IconButton . EVENT _CHANGE , function ( ) { 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 .
BI . contains ( c , b ) && f . length > 0 && ( f . push ( b ) , e . push ( f ) , f = [ ] ) , f . push ( b ) } ) , f . length > 0 && e . push ( f ) , BI . each ( e , function ( a , c ) { var e = c [ 0 ] , f = BI . findIndex ( b [ e ] , function ( a , b ) { if ( BI . isEqual ( c , b ) ) return ! 0 } ) ; f >= 0 && d . _setValue ( e , f ) } ) } , getValue : function ( ) { return this . pathChooser . getValue ( ) } , populate : function ( a ) { this . pathChooser . populate ( a ) , this . _drawArrows ( ) } } ) , BI . DirectionPathChooser . EVENT _CHANGE = "DirectionPathChooser.EVENT_CHANGE" , BI . shortcut ( "bi.direction_path_chooser" , BI . DirectionPathChooser ) , BI . DownListCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . DownListCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-down-list-combo" , invalid : ! 1 , height : 25 , items : [ ] , adjustLength : 0 , direction : "bottom" , trigger : "click" , container : null , el : { } } ) } , _init : function ( ) { BI . DownListCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . popupview = BI . createWidget ( { type : "bi.down_list_popup" , items : b . items , chooseType : b . chooseType } ) , this . popupview . on ( BI . DownListPopup . EVENT _CHANGE , function ( b ) { a . fireEvent ( BI . DownListCombo . EVENT _CHANGE , b ) , a . downlistcombo . hideView ( ) } ) , this . popupview . on ( BI . DownListPopup . EVENT _SON _VALUE _CHANGE , function ( b , c ) { a . fireEvent ( BI . DownListCombo . EVENT _SON _VALUE _CHANGE , b , c ) , a . downlistcombo . hideView ( ) } ) , this . downlistcombo = BI . createWidget ( { element : this , type : "bi.combo" , trigger : b . trigger , isNeedAdjustWidth : ! 1 , container : b . container , adjustLength : b . adjustLength , direction : b . direction , el : BI . createWidget ( b . el , { type : "bi.icon_trigger" , extraCls : b . iconCls ? b . iconCls : "pull-down-font" , width : b . width , height : b . height } ) , popup : { el : this . popupview , stopPropagation : ! 0 , maxHeight : 1e3 } } ) , this . downlistcombo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . fireEvent ( BI . DownListCombo . EVENT _BEFORE _POPUPVIEW ) } ) } , hideView : function ( ) { this . downlistcombo . hideView ( ) } , showView : function ( ) { this . downlistcombo . showView ( ) } , populate : function ( a ) { this . popupview . populate ( a ) } , setValue : function ( a ) { this . popupview . setValue ( a ) } , getValue : function ( ) { return this . popupview . getValue ( ) } } ) , BI . DownListCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . DownListCombo . EVENT _SON _VALUE _CHANGE = "EVENT_SON_VALUE_CHANGE" , BI . DownListCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.down_list_combo" , BI . DownListCombo ) , BI . DownListGroup = BI . inherit ( BI . Widget , { constants : { iconCls : "check-mark-ha-font" } , _defaultConfig : function ( ) { return BI . extend ( BI . DownListGroup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-down-list-group" , items : [ { el : { } } ] } ) } , _init : function ( ) { BI . DownListGroup . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; this . downlistgroup = BI . createWidget ( { element : this , type : "bi.button_tree" , items : a . items , chooseType : 0 , layouts : [ { type : "bi.vertical" , hgap : 0 , vgap : 0 } ] } ) , this . downlistgroup . on ( BI . Controller . EVENT _CHANGE , function ( a ) { b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a === BI . Events . CLICK && b . fireEvent ( BI . DownListGroup . EVENT _CHANGE , arguments ) } ) } , 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 )
var c , d = this , e = this . _positionAt ( a , b ) , f = [ ] ; if ( e . left . length > 0 ) c = this . _getRegionClientPosition ( e . left [ 0 ] . id ) . left ; else if ( e . right . length > 0 ) { var g = this . _getRegionClientPosition ( e . right [ 0 ] . id ) ; c = g . left + g . width } else if ( e . center . length > 0 ) { var g = this . _getRegionClientPosition ( e . center [ 0 ] . id ) ; c = g . left + g . width / 2 } var h = e . left . concat ( e . right ) . concat ( e . center ) ; return BI . each ( h , function ( b , e ) { var g = d . _getRegionClientPosition ( e . id ) ; if ( d . _isEqual ( g . left , c ) || d . _isEqual ( g . left + g . width , c ) || d . _isEqual ( g . left + g . width / 2 , c ) ) { var h = { top : g . top + g . height / 2 , left : c } ; f . push ( { id : e . id , start : h , end : { left : c , top : a . top } } ) } } ) , f } , _leftAlign : function ( a , b , c ) { return this . _vAlign ( { left : a . left , top : a . top + b . height / 2 } , c ) } , _rightAlign : function ( a , b , c ) { return this . _vAlign ( { left : a . left + b . width , top : a . top + b . height / 2 } , c ) } , _hAlign : function ( a , b ) { var c , d = this , e = this . _positionAt ( a , b ) , f = [ ] ; if ( e . top . length > 0 ) { var g = this . _getRegionClientPosition ( e . top [ 0 ] . id ) ; c = g . top } else if ( e . bottom . length > 0 ) { var g = this . _getRegionClientPosition ( e . bottom [ 0 ] . id ) ; c = g . top + g . height } else if ( e . middle . length > 0 ) { var g = this . _getRegionClientPosition ( e . middle [ 0 ] . id ) ; c = g . top + g . height / 2 } var h = e . top . concat ( e . bottom ) . concat ( e . middle ) ; return BI . each ( h , function ( b , e ) { var g = d . _getRegionClientPosition ( e . id ) ; if ( d . _isEqual ( g . top , c ) || d . _isEqual ( g . top + g . height , c ) || d . _isEqual ( g . top + g . height / 2 , c ) ) { var h = { top : c , left : g . left + g . width / 2 } ; f . push ( { id : g . id , start : h , end : { left : a . left , top : c } } ) } } ) , f } , _topAlign : function ( a , b , c ) { return this . _hAlign ( { left : a . left + b . width / 2 , top : a . top } , c ) } , _bottomAlign : function ( a , b , c ) { return this . _hAlign ( { left : a . left + b . width / 2 , top : a . top + b . height } , c ) } , _centerAlign : function ( a , b , c ) { return this . _vAlign ( { left : a . left + b . width / 2 , top : a . top + b . height / 2 } , c ) } , _middleAlign : function ( a , b , c ) { return this . _hAlign ( { left : a . left + b . width / 2 , top : a . top + b . height / 2 } , c ) } , _drawOneTag : function ( a , b ) { var c = BI . createWidget ( { type : "bi.icon_button" , width : 13 , height : 13 , cls : "drag-tag-font interactive-arrangement-dragtag-icon" } ) , d = BI . createWidget ( { type : "bi.icon_button" , width : 13 , height : 13 , cls : "drag-tag-font interactive-arrangement-dragtag-icon" } ) ; if ( this . _isEqual ( a . left , b . left ) ) var e = BI . createWidget ( { type : "bi.layout" , cls : "interactive-arrangement-dragtag-line" , width : 1 , height : Math . abs ( a . top - b . top ) } ) ; else var e = BI . createWidget ( { type : "bi.layout" , cls : "interactive-arrangement-dragtag-line" , height : 1 , width : Math . abs ( a . left - b . left ) } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : c , left : a . left - 6 , top : a . top - 7 } , { el : d , left : b . left - 6 , top : b . top - 7 } , { el : e , left : Math . min ( a . left , b . left ) , top : Math . min ( a . top , b . top ) } ] } ) , this . tags . push ( c ) , this . tags . push ( d ) , this . tags . push ( e ) } , stopDraw : function ( ) { BI . each ( this . tags , function ( a , b ) { b . destroy ( ) } ) , this . tags = [ ] } , _getRegionExcept : function ( a , b ) { var c = [ ] ; return BI . each ( b || this . getAllRegions ( ) , function ( b , d ) { a && d . id === a || c . push ( d ) } ) , c } , getClientWidth : function ( ) { return this . arrangement . getClientWidth ( ) } , getClientHeight : function ( ) { 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
right : 0 , bottom : 0 } , { el : c , top : 0 , left : 0 } ] } ) ; BI . createWidget ( { type : "bi.htape" , element : this , items : [ d , { el : this . changeIcon , width : 30 } ] , ref : function ( b ) { a . comboWrapper = b } } ) } , _checkDynamicValue : function ( a ) { var b = null ; switch ( BI . isNotNull ( a ) && ( b = a . type ) , b ) { case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _PREV : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _AFTER : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _BEGIN : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _END : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _PREV : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _AFTER : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _BEGIN : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _END : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _MONTH _PREV : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _MONTH _AFTER : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _MONTH _BEGIN : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _MONTH _END : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _WEEK _PREV : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _WEEK _AFTER : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _PREV : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _AFTER : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _TODAY : this . changeIcon . setVisible ( ! 0 ) , this . comboWrapper . attr ( "items" ) [ 1 ] . width = 30 , this . comboWrapper . resize ( ) ; break ; default : this . comboWrapper . attr ( "items" ) [ 1 ] . width = 0 , this . comboWrapper . resize ( ) , this . changeIcon . setVisible ( ! 1 ) } } , setValue : function ( a ) { this . storeValue = a , this . popup . setValue ( a ) , this . trigger . setValue ( a ) , this . _checkDynamicValue ( a ) } , getValue : function ( ) { return this . storeValue } , getKey : function ( ) { return this . trigger . getKey ( ) } , hidePopupView : function ( ) { this . combo . hideView ( ) } } ) , BI . shortcut ( "bi.multidate_combo" , BI . MultiDateCombo ) , BI . MultiDateCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . MultiDateCombo . EVENT _FOCUS = "EVENT_FOCUS" , BI . MultiDateCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiDateCombo . EVENT _VALID = "EVENT_VALID" , BI . MultiDateCombo . EVENT _ERROR = "EVENT_ERROR" , BI . MultiDateCombo . EVENT _BEFORE _POPUPVIEW = "BI.MultiDateCombo.EVENT_BEFORE_POPUPVIEW" , BI . extend ( BI . MultiDateCombo , { MULTI _DATE _YMD _CARD : 1 , MULTI _DATE _YEAR _CARD : 2 , MULTI _DATE _QUARTER _CARD : 3 , MULTI _DATE _MONTH _CARD : 4 , MULTI _DATE _WEEK _CARD : 5 , MULTI _DATE _DAY _CARD : 6 } ) , BI . extend ( BI . MultiDateCombo , { DATE _TYPE : { MULTI _DATE _YEAR _PREV : 1 , MULTI _DATE _YEAR _AFTER : 2 , MULTI _DATE _YEAR _BEGIN : 3 , MULTI _DATE _YEAR _END : 4 , MULTI _DATE _MONTH _PREV : 5 , MULTI _DATE _MONTH _AFTER : 6 , MULTI _DATE _MONTH _BEGIN : 7 , MULTI _DATE _MONTH _END : 8 , MULTI _DATE _QUARTER _PREV : 9 , MULTI _DATE _QUARTER _AFTER : 10 , MULTI _DATE _QUARTER _BEGIN : 11 , MULTI _DATE _QUARTER _END : 12 , MULTI _DATE _WEEK _PREV : 13 , MULTI _DATE _WEEK _AFTER : 14 , MULTI _DATE _DAY _PREV : 15 , MULTI _DATE _DAY _AFTER : 16 , MULTI _DATE _DAY _TODAY : 17 , MULTI _DATE _PARAM : 18 , MULTI _DATE _CALENDAR : 19 , YEAR _QUARTER : 20 , YEAR _MONTH : 21 , YEAR _WEEK : 22 , YEAR _DAY : 23 , MONTH _WEEK : 24 , MONTH _DAY : 25 , YEAR : 26 , SAME _PERIOD : 27 , LAST _SAME _PERIOD : 28 } } ) , BI . DayCard = BI . inherit ( BI . MultiDateCard , { _defaultConfig : function ( ) { return $ . extend ( BI . DayCard . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multidate-daycard" } ) } , _init : function ( ) { BI . DayCard . superclass . _init . apply ( this , arguments ) } , dateConfig : function ( ) { return [ { isEditorExist : ! 0 , selected : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Day_Prev" ) , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _PREV } , { isEditorExist : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Day_Next" ) , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _AFTER } , { isEditorExist : ! 1 , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _TODAY , text : BI . i18nText ( "BI-Multi_Date_Today" ) } ] } , defaultSelectedItem : function ( ) { return BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _PREV } } ) , BI . DayCard . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.daycard" , BI . DayCard ) , BI . MonthCard = BI . inherit ( BI . MultiDateCard , { _defaultConfig : function ( ) { return $ . extend ( BI . MonthCard . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multidate-monthcard" } ) } , _init : function ( ) { BI . MonthCard . superclass . _init . apply ( this , arguments ) } , dateConfig : function ( ) { return [ { selected : ! 0 , isEditorExist : ! 0 , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _MONTH _PREV , text : BI . i18nText ( "BI-Multi_Date_Month_Prev" ) } , { isEditorExist : ! 0 , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _M
} ) , this . tree . on ( BI . MultiLayerSingleLevelTree . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiLayerSingleTreePopup . EVENT _CHANGE ) } ) , this . check ( ) } , getValue : function ( ) { return this . tree . getValue ( ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , this . tree . setValue ( a ) } , populate : function ( a ) { BI . MultiLayerSingleTreePopup . superclass . populate . apply ( this , arguments ) , this . tree . populate ( a ) } } ) , BI . MultiLayerSingleTreePopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multilayer_single_tree_popup" , BI . MultiLayerSingleTreePopup ) , BI . MultiLayerSingleTreeFirstPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . MultiLayerSingleTreeFirstPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-multilayer-single-tree-first-plus-group-node bi-list-item" , layer : 0 , id : "" , pId : "" , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . MultiLayerSingleTreeFirstPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.first_plus_group_node" , cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : b . id , pId : b . pId , open : b . open , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . node . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b !== BI . Events . CLICK && a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , cls : "base-line-conn-background" , width : 13 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 13 ) , items : [ c ] } ) } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , doClick : function ( ) { BI . MultiLayerSingleTreeFirstPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MultiLayerSingleTreeFirstPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . node ) && this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_single_tree_first_plus_group_node" , BI . MultiLayerSingleTreeFirstPlusGroupNode ) , BI . MultiLayerSingleTreeLastPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . MultiLayerSingleTreeLastPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-multilayer-single-tree-last-plus-group-node bi-list-item" , layer : 0 , id : "" , pId : "" , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . MultiLayerSingleTreeLastPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.last_plus_group_node" , cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : b . id , pId : b . pId , open : b . open , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . node . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b !== BI . Events . CLICK && a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , cls : "base-line-conn-background" , width : 13 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 13 ) , items : [ c ] } ) } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , doClick : function ( ) { BI . MultiLayerSingleTreeLastPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MultiLayerSingleTreeLastPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . node ) && this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_single_tree_last_plus_group_node" , BI . MultiLayerSingleTreeLastPlusGroupNode ) , BI . MultiLayerSingleTreeMidPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . MultiLayerSingleTreeMidPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-multilayer-single-tree-mid-plus-group-node bi-list-item" , layer : 0 , id : "" , pId : "" , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . MultiLayerSingleTreeMidPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.mid_plus_group_node" , cls :
} ) , this . numberCounter . on ( BI . MultiSelectCheckSelectedSwitcher . EVENT _BEFORE _POPUPVIEW , function ( ) { a . fireEvent ( BI . MultiSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW ) } ) ; var c = BI . createWidget ( { type : "bi.right_vertical_adapt" , hgap : 4 , items : [ { el : this . numberCounter } ] } ) , d = BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . searcher , width : "fill" } , { el : c , width : 0 } , { el : BI . createWidget ( ) , width : 30 } ] } ) ; this . numberCounter . on ( BI . Events . VIEW , function ( b ) { BI . nextTick ( function ( ) { d . attr ( "items" ) [ 1 ] . width = b === ! 0 ? a . numberCounter . element . outerWidth ( ) + 8 : 0 , d . resize ( ) } ) } ) , this . element . click ( function ( b ) { a . element . _ _isMouseInBounds _ _ ( b ) && ! a . numberCounter . element . _ _isMouseInBounds _ _ ( b ) && a . numberCounter . hideView ( ) } ) } , getCounter : function ( ) { return this . numberCounter } , getSearcher : function ( ) { return this . searcher } , stopEditing : function ( ) { this . searcher . stopSearch ( ) , this . numberCounter . hideView ( ) } , setAdapter : function ( a ) { this . searcher . setAdapter ( a ) , this . numberCounter . setAdapter ( a ) } , setValue : function ( a ) { this . searcher . setValue ( a ) , this . numberCounter . setValue ( a ) } , getKey : function ( ) { return this . searcher . getKey ( ) } , getValue : function ( ) { return this . searcher . getValue ( ) } } ) , BI . MultiSelectTrigger . EVENT _TRIGGER _CLICK = "EVENT_TRIGGER_CLICK" , BI . MultiSelectTrigger . EVENT _COUNTER _CLICK = "EVENT_COUNTER_CLICK" , BI . MultiSelectTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiSelectTrigger . EVENT _START = "EVENT_START" , BI . MultiSelectTrigger . EVENT _STOP = "EVENT_STOP" , BI . MultiSelectTrigger . EVENT _PAUSE = "EVENT_PAUSE" , BI . MultiSelectTrigger . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . MultiSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW = "EVENT_BEFORE_COUNTER_POPUPVIEW" , BI . shortcut ( "bi.multi_select_trigger" , BI . MultiSelectTrigger ) , BI . MultiSelectSearchLoader = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectSearchLoader . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-search-loader" , itemsCreator : BI . emptyFn , keywordGetter : BI . emptyFn , valueFormatter : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectSearchLoader . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = ! 1 ; this . button _group = BI . createWidget ( { type : "bi.select_list" , element : this , logic : { dynamic : ! 1 } , el : { tipText : BI . i18nText ( "BI-No_Select" ) , el : { type : "bi.loader" , isDefaultInit : ! 1 , logic : { dynamic : ! 0 , scrolly : ! 0 } , el : { chooseType : BI . ButtonGroup . CHOOSE _TYPE _MULTI , behaviors : { redmark : function ( ) { return ! 0 } } , layouts : [ { type : "bi.vertical" } ] } } } , itemsCreator : function ( d , e ) { a . storeValue && ( d = BI . extend ( d || { } , { selectedValues : a . storeValue . value } ) ) , b . itemsCreator ( d , function ( f ) { var g = f . keyword = b . keywordGetter ( ) ; c = f . hasNext ; var h = [ ] ; if ( 1 === d . times && a . storeValue ) { var i = a . _filterValues ( a . storeValue ) ; h = a . _createItems ( i ) } e ( h . concat ( a . _createItems ( f . items ) ) , g ) , 1 === d . times && a . storeValue && a . setValue ( a . storeValue ) } ) } , hasNext : function ( ) { return c } } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . button _group . on ( BI . SelectList . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectSearchLoader . EVENT _CHANGE , arguments ) } ) } , _createItems : function ( a ) { return BI . createItems ( a , { type : "bi.multi_select_item" , logic : { dynamic : ! 1 } , height : 25 , selected : this . isAllSelected ( ) } ) } , isAllSelected : function ( ) { return this . button _group . isAllSelected ( ) } , _filterValues : function ( a ) { var b = this . options , c = b . keywordGetter ( ) , d = BI . deepClone ( a . value ) || [ ] , e = BI . map ( d , function ( a , c ) { return { text : b . valueFormatter ( c ) || c , value : c } } ) ; if ( BI . isKey ( c ) ) { var f = BI . Func . getSearchResult ( e , c ) ; d = f . matched . concat ( f . finded ) } return BI . map ( d , function ( b , c ) { return { text : c . text , title : c . text , value : c . value , selected : a . type === BI . Selection . All } } ) } , setValue : function ( a ) { this . storeValue = BI . deepClone ( a ) , this . button _group . setValue ( a ) } , getValue : function ( ) { return this . button _group . getValue ( ) } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , empty : function ( ) { this . button _group . empty ( ) } , populate : function ( a ) { this . button _group . populate . apply ( this . button _group , arguments ) } , resetHeight : function ( a ) { this . button _group . resetHeight ( a ) } , resetWidth : function ( a ) { this . button _group . resetWidth ( a ) } } ) , BI . MultiSelectSearchLoader . EVENT _CHANGE = "EVENT_CHANGE" , BI . short
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_selected_button" } , popup : { type : "bi.multi_tree_check_pane" , itemsCreator : c . itemsCreator } } } ) , this . combo = BI . createWidget ( { type : "bi.combo" , toggle : ! 1 , el : this . trigger , adjustLength : 1 , popup : { type : "bi.multi_tree_popup_view" , ref : function ( ) { b . popup = this , b . trigger . setAdapter ( this ) } , listeners : [ { eventName : BI . MultiTreePopup . EVENT _AFTERINIT , action : function ( ) { b . trigger . getCounter ( ) . adjustView ( ) , d = ! 0 , e === ! 0 && a ( ) } } , { eventName : BI . MultiTreePopup . EVENT _CHANGE , action : function ( ) { f = ! 0 ; var a = { type : BI . Selection . Multi , value : this . hasChecked ( ) ? this . getValue ( ) : { } } ; b . trigger . getSearcher ( ) . setState ( a ) , b . trigger . getCounter ( ) . setButtonChecked ( a ) } } , { eventName : BI . MultiTreePopup . EVENT _CLICK _CONFIRM , action : function ( ) { b . combo . hideView ( ) } } , { eventName : BI . MultiTreePopup . EVENT _CLICK _CLEAR , action : function ( ) { g = ! 0 , b . setValue ( ) , b . _defaultState ( ) } } ] , itemsCreator : c . itemsCreator , onLoaded : function ( ) { BI . nextTick ( function ( ) { b . trigger . getCounter ( ) . adjustView ( ) , b . trigger . getSearcher ( ) . adjustView ( ) } ) } } , hideChecker : function ( a ) { return 0 === j . element . find ( a . target ) . length } } ) , this . storeValue = { value : { } } ; var f = ! 1 , g = ! 1 , h = function ( ) { return b . trigger . getSearcher ( ) . isSearching ( ) } , i = function ( ) { return b . combo . isViewVisible ( ) } ; this . trigger . on ( BI . MultiSelectTrigger . EVENT _START , function ( ) { b . storeValue = { value : b . combo . getValue ( ) } , this . setValue ( b . storeValue ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _STOP , function ( ) { b . storeValue = { value : this . getValue ( ) } , b . combo . setValue ( b . storeValue ) , BI . nextTick ( function ( ) { i ( ) && b . combo . populate ( ) } ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW , function ( ) { e === ! 1 && ( e = ! 0 ) , d === ! 0 && ( e = null , a ( ) ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _TRIGGER _CLICK , function ( ) { b . combo . toggle ( ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _COUNTER _CLICK , function ( ) { b . combo . isViewVisible ( ) || b . combo . showView ( ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _CHANGE , function ( ) { var a = this . getSearcher ( ) . hasChecked ( ) , b = { type : BI . Selection . Multi , value : a ? { 1 : 1 } : { } } ; this . getSearcher ( ) . setState ( a ? BI . Selection . Multi : BI . Selection . None ) , this . getCounter ( ) . setButtonChecked ( b ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { h ( ) || ( f === ! 0 && ( b . storeValue = { value : b . combo . getValue ( ) } , f = ! 1 ) , b . combo . setValue ( b . storeValue ) , b . populate ( ) ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _HIDEVIEW , function ( ) { h ( ) ? ( b . trigger . stopEditing ( ) , b . fireEvent ( BI . MultiTreeCombo . EVENT _CONFIRM ) ) : i ( ) && ( b . trigger . stopEditing ( ) , b . storeValue = { value : b . combo . getValue ( ) } , g === ! 0 && ( b . storeValue = { value : { } } ) , b . fireEvent ( BI . MultiTreeCombo . EVENT _CONFIRM ) ) , g = ! 1 , f = ! 1 } ) ; var j = BI . createWidget ( { type : "bi.trigger_icon_button" , width : c . height , height : c . height , cls : "multi-select-trigger-icon-button bi-border-left" } ) ; j . on ( BI . TriggerIconButton . EVENT _CHANGE , function ( ) { b . trigger . getCounter ( ) . hideView ( ) , b . combo . isViewVisible ( ) ? b . combo . hideView ( ) : b . combo . showView ( ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . combo , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : j , right : 0 , top : 0 , bottom : 0 } ] } ) } , _defaultState : function ( ) { this . trigger . stopEditing ( ) , this . combo . hideView ( ) } , setValue : function ( a ) { this . storeValue . value = a || { } , this . combo . setValue ( { value : a || { } } ) } , getValue : function ( ) { return this . storeValue . value } , populate : function ( ) { this . combo . populate . apply ( this . combo , arguments ) } } ) , BI . MultiTreeCombo . EVENT _CONFIRM = "MultiTreeCombo.EVENT_CONFIRM" , BI . shortcut ( "bi.multi_tree_combo" , BI . MultiTreeCombo ) , BI . MultiTreePopup = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-popup" , maxWidth : "auto" , minWidth : 100 , maxHeight : 400 , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . MultiTreePopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . selectedValues = { } , this . tree = BI . createWidget ( { type : "bi.async_tree" , height : 400 , cls : "popup-view-tree" , itemsCreator : b . itemsCreator , onLoaded : b . onLoaded } ) , this . popupView = BI . createWidget ( { type : "bi.multi_popup_view" , element
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 e [ h . getChildren ( ) [ 0 ] . id ] , h = h . getChildren ( ) [ 0 ] ) : h = null ; d . traverse ( function ( a ) { BI . has ( e , a . id ) && ( g . push ( a . id ) , delete e [ a . id ] ) } ) ; for ( var i , j , k = { } , l = 0 , m = g . length ; l < m + 1 ; l ++ ) 0 === m ? ( i = [ ] , BI . each ( this . start , function ( a , b ) { i . push ( d . search ( b ) ) } ) , j = [ ] , BI . each ( this . end , function ( a , b ) { j . push ( d . search ( b ) ) } ) ) : l === m ? ( i = j , j = [ ] , BI . each ( this . end , function ( a , b ) { j . push ( d . search ( b ) ) } ) ) : 0 === l ? ( i = [ ] , BI . each ( this . start , function ( a , b ) { i . push ( d . search ( b ) ) } ) , j = [ d . search ( g [ l ] ) ] ) : ( i = [ d . search ( j [ 0 ] || d . getRoot ( ) , g [ l - 1 ] ) ] , j = [ d . search ( i [ 0 ] , g [ l ] ) ] ) , BI . each ( i , function ( b , c ) { d . _recursion ( c , [ c . id ] , function ( b , d ) { if ( BI . contains ( j , b ) && ( k [ c . id ] || ( k [ c . id ] = [ ] ) , k [ c . id ] . push ( d ) , a . _pushNodes ( d ) , j . length <= 1 ) ) return ! 0 } ) } ) ; this . routes = k , this . _drawLines ( k ) } , _unselectAllPath : function ( ) { var a = this ; BI . each ( this . radios , function ( a , b ) { BI . each ( b , function ( a , b ) { b . setSelected ( ! 1 ) } ) } ) , BI . each ( this . lines , function ( b , c ) { BI . each ( c , function ( b , c ) { c . attr ( "stroke" , a . _const . lineColor ) } ) } ) , BI . each ( this . regions , function ( a , b ) { b . reset ( ) } ) } , populate : function ( a ) { this . options . items = a || [ ] ; this . empty ( ) , this . options . items . length <= 0 || ( this . svg = BI . createWidget ( { type : "bi.svg" } ) , this . _createNodes ( ) , BI . createWidget ( { type : "bi.absolute" , element : this . container , items : [ { el : this . svg , top : 0 , left : 0 , right : 0 , bottom : 0 } ] } ) ) } , setValue : function ( a ) { this . _unselectAllPath ( ) ; var b = BI . keys ( this . routes ) , c = this , d = [ ] , e = [ ] ; BI . each ( a , function ( a , c ) { BI . contains ( b , c ) && e . length > 0 && ( e . push ( c ) , d . push ( e ) , e = [ ] ) , e . push ( c ) } ) , e . length > 0 && d . push ( e ) , BI . each ( d , function ( a , b ) { var d = b [ 0 ] , e = BI . findIndex ( c . routes [ d ] , function ( a , c ) { if ( BI . isEqual ( b , c ) ) return ! 0 } ) ; if ( e >= 0 ) { var f = c . getRegionIndexById ( d ) , g = c . regions [ f ] . getIndexByValue ( d ) ; c . _drawPath ( d , g , e ) } } ) } , getValue : function ( ) { var a = [ ] ; return BI . each ( this . regions , function ( b , c ) { var d = c . getValue ( ) ; BI . isKey ( d ) && a . push ( d ) } ) , a } } ) , BI . PathChooser . EVENT _CHANGE = "PathChooser.EVENT_CHANGE" , BI . shortcut ( "bi.path_chooser" , BI . PathChooser ) , BI . PathRegion = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . PathRegion . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-path-region bi-background" , width : 80 , title : "" } ) } , _init : function ( ) { BI . PathRegion . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . zIndex = 100 ; var b = BI . createWidget ( { type : "bi.label" , text : a . title , title : a . title , height : 30 } ) ; b . element . css ( "zIndex" , this . zIndex -- ) , this . items = [ ] , this . vertical = BI . createWidget ( { type : "bi.vertical" , element : this , bgap : 5 , hgap : 10 , items : [ b ] } ) } , hasItem : function ( a ) { return BI . any ( this . items , function ( b , c ) { return a === c . getValue ( ) } ) } , addItem : function ( a , b ) { if ( BI . isKey ( a ) ) var c = BI . createWidget ( { type : "bi.label" , cls : "path-region-label bi-card bi-border bi-list-item-select" , text : b , value : a , title : b || a , height : 24 } ) ; else var c = BI . createWidget ( { type : "bi.layout" , height : 24 } ) ; c . element . css ( "zIndex" , this . zIndex -- ) , this . items . push ( c ) , this . vertical . addItem ( c ) , 1 === this . items . length && this . setSelect ( 0 , a ) } , reset : function ( ) { BI . each ( this . items , function ( a , b ) { b . element . removeClass ( "active" ) } ) } , setSelect : function ( a , b ) { if ( this . reset ( ) , ! ( this . items . length <= 0 ) ) return 1 === this . items . length ? void this . items [ 0 ] . element . addClass ( "active" ) : void ( this . items [ a ] . attr ( "value" ) === b && this . items [ a ] . element . addClass ( "active" ) ) } , setValue : function ( a ) { this . setSelect ( this . getIndexByValue ( a ) , a ) } , getValueByIndex : function ( a ) { return this . items [ a ] . attr ( "value" ) } , getIndexByValue : function ( a ) { return BI . findIndex ( this . items , function ( b , c ) { return c . attr ( "value" ) === a } ) } , getValue : function ( ) { var a ; return BI . any ( this . items , function ( b , c ) { if ( c . element . hasClass ( "active" ) ) return a = c . getValue ( ) , ! 0 } ) , a } } ) , BI . PathRegion . EVENT _CHANGE = "PathRegion.EVENT_CHANGE" , BI . shortcut ( "bi.path_region" , BI . PathRegion ) , BI . PreviewTableCell = BI . inh
} , 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 . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-select-tree-last-plus-group-node bi-list-item-active" , logic : { dynamic : ! 1 } , id : "" , pId : "" , readonly : ! 0 , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . SelectTreeLastPlusGroupNode . 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 } ) ) ) ) } , 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 . SelectTreeLastPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( a ) } } ) , BI . shortcut ( "bi.select_tree_last_plus_group_node" , BI . SelectTreeLastPlusGroupNode ) , BI . SelectTreeMidPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . SelectTreeMidPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-select-tree-mid-plus-group-node bi-list-item-active" , logic : { dynamic : ! 1 } , id : "" , pId : "" , readonly : ! 0 , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . SelectTreeMidPlusGroupNode . 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 } ) ) ) ) } , 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 . SelectTreeMidPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . checkbox ) && this . checkbox . setSelected ( a ) } } ) , BI . shortcut ( "bi.select_tree_mid_plus_group_node" , BI . SelectTreeMidPlusGroupNode ) , BI . SelectTreeCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-tree-combo" , height : 30 , text : "" , items : [ ] } ) } , _init : function ( ) { BI . SelectTreeCombo . 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.select_level_tree" , items : b . items } ) , this . combo = BI . createWidget ( { type : "bi.combo" , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup } } ) ,
BI . SingleSelectPopupView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectPopupView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-popup-view" , maxWidth : "auto" , minWidth : 135 , maxHeight : 400 , valueFormatter : BI . emptyFn , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . SingleSelectPopupView . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . loader = BI . createWidget ( { type : "bi.single_select_loader" , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , onLoaded : b . onLoaded } ) , this . popupView = BI . createWidget ( { type : "bi.multi_popup_view" , stopPropagation : ! 1 , maxWidth : b . maxWidth , minWidth : b . minWidth , maxHeight : b . maxHeight , element : this , buttons : [ BI . i18nText ( "BI-Basic_Clears" ) , BI . i18nText ( "BI-Basic_Sure" ) ] , el : this . loader } ) , this . popupView . on ( BI . MultiPopupView . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SingleSelectPopupView . EVENT _CHANGE ) } ) , this . popupView . on ( BI . MultiPopupView . EVENT _CLICK _TOOLBAR _BUTTON , function ( b ) { switch ( b ) { case 0 : a . fireEvent ( BI . SingleSelectPopupView . EVENT _CLICK _CLEAR ) ; break ; case 1 : a . fireEvent ( BI . SingleSelectPopupView . EVENT _CLICK _CONFIRM ) } } ) } , setStartValue : function ( a ) { this . loader . setStartValue ( a ) } , setValue : function ( a ) { this . popupView . setValue ( a ) } , getValue : function ( ) { return this . popupView . getValue ( ) } , populate : function ( a ) { this . popupView . populate . apply ( this . popupView , arguments ) } , resetHeight : function ( a ) { this . popupView . resetHeight ( a ) } , resetWidth : function ( a ) { this . popupView . resetWidth ( a ) } } ) , BI . SingleSelectPopupView . EVENT _CHANGE = "EVENT_CHANGE" , BI . SingleSelectPopupView . EVENT _CLICK _CONFIRM = "EVENT_CLICK_CONFIRM" , BI . SingleSelectPopupView . EVENT _CLICK _CLEAR = "EVENT_CLICK_CLEAR" , BI . shortcut ( "bi.single_select_popup_view" , BI . SingleSelectPopupView ) , BI . SingleSelectTrigger = BI . inherit ( BI . Trigger , { constants : { height : 14 , rgap : 4 , lgap : 4 } , _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-trigger bi-border" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , searcher : { } , switcher : { } , adapter : null , masker : { } } ) } , _init : function ( ) { BI . SingleSelectTrigger . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; b . height && this . setHeight ( b . height - 2 ) , this . searcher = BI . createWidget ( b . searcher , { type : "bi.single_select_searcher" , height : b . height , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , popup : { } , adapter : b . adapter , masker : b . masker } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _START , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _START ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _PAUSE ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _SEARCHING , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _SEARCHING , arguments ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _STOP , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _STOP ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _CHANGE , arguments ) } ) ; BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . searcher , width : "fill" } , { el : BI . createWidget ( ) , width : 30 } ] } ) } , getSearcher : function ( ) { return this . searcher } , stopEditing : function ( ) { this . searcher . stopSearch ( ) } , setAdapter : function ( a ) { this . searcher . setAdapter ( a ) } , setValue : function ( a ) { this . searcher . setValue ( a ) } , getKey : function ( ) { return this . searcher . getKey ( ) } , getValue : function ( ) { return this . searcher . getValue ( ) } } ) , BI . SingleSelectTrigger . EVENT _TRIGGER _CLICK = "EVENT_TRIGGER_CLICK" , BI . SingleSelectTrigger . EVENT _COUNTER _CLICK = "EVENT_COUNTER_CLICK" , BI . SingleSelectTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . SingleSelectTrigger . EVENT _START = "EVENT_START" , BI . SingleSelectTrigger . EVENT _STOP = "EVENT_STOP" , BI . SingleSelectTrigger . EVENT _PAUSE = "EVENT_PAUSE" , BI . SingleSelectTrigger . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . SingleSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW = "EVENT_BEFORE_COUNTER_POPUPVIEW" , BI . shortcut ( "bi.single_select_trigger" , BI . SingleSelectTrigger ) , BI . SingleSelectEditor = BI . inherit ( BI . Widget , { _const : { checkSelected : BI . i18nText ( "BI-Check_Selected" ) } , _defaultConfig : functio
this . enable = ! 0 , this . label . setErrorText ( BI . i18nText ( "BI-Please_Enter" ) + this . min + "-" + this . max + BI . i18nText ( "BI-Basic_De" ) + BI . i18nText ( "BI-Basic_Number" ) ) , BI . isNumeric ( this . value ) || BI . isNotEmptyString ( this . value ) ? ( this . label . setValue ( this . value ) , this . _setAllPosition ( this . _getPercentByValue ( this . value ) ) ) : ( this . label . setValue ( this . max ) , this . _setAllPosition ( 100 ) ) ) } } ) , BI . SingleSlider . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_slider" , BI . SingleSlider ) , BI . SingleSliderLabel = BI . inherit ( BI . Widget , { _constant : { EDITOR _WIDTH : 90 , EDITOR _HEIGHT : 20 , HEIGHT : 20 , SLIDER _WIDTH _HALF : 15 , SLIDER _WIDTH : 30 , SLIDER _HEIGHT : 30 , TRACK _HEIGHT : 24 } , _defaultConfig : function ( ) { return BI . extend ( BI . SingleSliderLabel . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-slider-label bi-slider-track" , digit : ! 1 , unit : "" } ) } , _init : function ( ) { BI . SingleSliderLabel . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = this . _constant ; this . enable = ! 1 , this . value = "" , this . grayTrack = BI . createWidget ( { type : "bi.layout" , cls : "gray-track" , height : 6 } ) , this . blueTrack = BI . createWidget ( { type : "bi.layout" , cls : "blue-track bi-high-light-background" , height : 6 } ) , this . track = this . _createTrackWrapper ( ) , this . slider = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . _draggable ( this . slider ) ; var d = BI . createWidget ( { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ this . slider ] } ] , hgap : c . SLIDER _WIDTH _HALF , height : c . SLIDER _HEIGHT } ) ; d . element . click ( function ( d ) { if ( a . enable ) { var e = d . clientX - a . element . offset ( ) . left - c . SLIDER _WIDTH _HALF , f = a . track . element [ 0 ] . scrollWidth , g = 0 ; e < 0 && ( g = 0 ) , e > 0 && e < f - c . SLIDER _WIDTH && ( g = 100 * e / a . _getGrayTrackLength ( ) ) , e > f - c . SLIDER _WIDTH && ( g = 100 ) ; var h = BI . parseFloat ( g . toFixed ( 1 ) ) ; a . _setAllPosition ( h ) ; var i = a . _getValueByPercent ( h ) ; i = b . digit === ! 1 ? i : i . toFixed ( b . digit ) , a . label . setText ( i + b . unit ) , a . value = i , a . fireEvent ( BI . SingleSliderLabel . EVENT _CHANGE ) } } ) , this . label = BI . createWidget ( { type : "bi.label" , height : c . HEIGHT , width : c . EDITOR _WIDTH - 2 } ) , this . _setVisible ( ! 1 ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . track , width : "100%" , height : c . TRACK _HEIGHT } ] } ] , hgap : 7 , height : c . TRACK _HEIGHT } , top : 13 , left : 0 , width : "100%" } , { el : d , top : 10 , left : 0 , width : "100%" } , { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ this . label ] } ] , rgap : c . EDITOR _WIDTH , height : c . EDITOR _HEIGHT } , top : 0 , left : 0 , width : "100%" } ] } ) } , _draggable : function ( a ) { function b ( a ) { return BI . clamp ( a , 0 , c . _getGrayTrackLength ( ) ) } var c = this , d = this . options , e = ! 1 , f = 0 , g = 0 , h = 0 , i = new BI . MouseMoveTracker ( function ( j ) { if ( i . isDragging ( ) ) { e = ! 0 , g += j , f = b ( h + g ) , a . element . addClass ( "dragging" ) ; var k = 100 * f / c . _getGrayTrackLength ( ) , l = BI . parseFloat ( k . toFixed ( 1 ) ) ; c . _setBlueTrack ( l ) , c . _setLabelPosition ( l ) , c . _setSliderPosition ( l ) ; var m = c . _getValueByPercent ( l ) ; m = d . digit === ! 1 ? m : m . toFixed ( d . digit ) , c . label . setValue ( m ) , c . value = m , c . fireEvent ( BI . SingleSliderLabel . EVENT _CHANGE ) } } , function ( ) { if ( e === ! 0 ) { f = b ( f ) ; var d = 100 * f / c . _getGrayTrackLength ( ) , j = BI . parseFloat ( d . toFixed ( 1 ) ) ; c . _setSliderPosition ( j ) , f = 0 , g = 0 , h = f , e = ! 1 } a . element . removeClass ( "dragging" ) , i . releaseMouseMoves ( ) , c . fireEvent ( BI . SingleSliderLabel . EVENT _CHANGE ) } , document ) ; a . element . on ( "mousedown" , function ( c ) { a . isEnabled ( ) && ( h = this . offsetLeft , b ( h ) , i . captureMouseMoves ( c ) ) } ) } , _createTrackWrapper : function ( ) { return BI . createWidget ( { type : "bi.absolute" , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . grayTrack , top : 0 , left : 0 , width : "100%" } , { el : this . blueTrack , top : 0 , left : 0 , width : "0%" } ] } ] , hgap : 8 , height : 8 } , top : 8 , left : 0 , width : "100%" } ] } ) } , _checkValidation : function ( a ) { return BI . isNumeric ( a ) && ! ( BI . isNull ( a ) || a < this . min || a > this . max ) } , _setBlueTrack : function ( a ) { this . blueTrack . element . css ( { width : a + "%" } ) } , _setLabelPosition : function ( a ) { this . label . element . css ( { left : a + "%" } ) } , _setSliderPosition : function ( a ) { this . slider . element . css ( { left : a + "%" } ) } , _setAllPosition : function ( a ) { this . _setSliderPosition ( a ) , this . _setLabelPosition ( a ) , this . _setBlueTrack ( a ) } , _setVisible : function ( a ) { this . slider . setVisible ( a ) , this . label . setVisible ( a ) } , _getGrayTrackLength : function ( ) { return this . grayTrack . element [ 0 ] . scrollWidth } , _getValueByPercent : function ( a ) { var b
var e = i . _getNode ( a , c ) ; e ? i . _deleteNode ( a , c ) : d ( a , c , BI . last ( c ) ) } ) } if ( h ( a , b ) ) { var l = [ ] , j = ! 1 ; f ( b ) ? j = ! 0 : ( j = e ( m , k , l ) , b = m ) , j === ! 0 && ( d ( a , b , k ) , l . length > 0 && BI . each ( l , function ( b , c ) { i . _buildTree ( a , c ) } ) ) } } function d ( a , b , c ) { var d = a , e = [ ] , f = [ ] ; BI . some ( b , function ( g , h ) { var j = d [ h ] ; if ( null == j ) { if ( 0 === g ) return ! 0 ; if ( ! BI . isEmpty ( d ) ) return ! 0 ; var k = b . slice ( 0 , g ) , l = i . _getChildren ( k ) ; if ( f . push ( k ) , e . push ( l . length ) , g === b . length - 1 && 1 === l . length && l [ 0 ] === c ) for ( var m = e . length - 1 ; m >= 0 && 1 === e [ m ] ; m -- ) i . _deleteNode ( a , f [ m ] ) ; else BI . each ( l , function ( a , e ) { return g === b . length - 1 && e . value === c || void ( d [ e . value ] = { } ) } ) ; d = d [ h ] } else d = j } ) } function e ( a , b , c , d ) { var f = BI . clone ( a ) ; if ( f . push ( b ) , i . _isMatch ( a , b , l ) ) return d && d . push ( f ) , ! 0 ; var g = i . _getChildren ( f ) , h = [ ] , j = ! 1 ; return BI . each ( g , function ( a , b ) { e ( f , b . value , c , d ) ? j = ! 0 : h . push ( b . value ) } ) , j === ! 0 && BI . each ( h , function ( a , b ) { var d = BI . clone ( f ) ; d . push ( b ) , c . push ( d ) } ) , j } function f ( a ) { for ( var b = 0 , c = a . length ; b < c ; b ++ ) if ( i . _isMatch ( a . slice ( 0 , a . length - 1 ) , a [ b ] , l ) ) return ! 0 ; return ! 1 } function g ( a , b ) { for ( var c = a , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] ; if ( c = c [ e ] , null == c ) return ! 1 } return ! 0 } function h ( a , b ) { for ( var c = a , d = 0 ; d < b . length ; d ++ ) { var e = b [ d ] ; if ( ! BI . has ( c , e ) ) return ! 1 ; if ( c = c [ e ] , BI . isEmpty ( c ) ) return ! 0 } return ! 1 } var i = this , j = BI . deepClone ( a . selectedValues ) , k = a . notSelectedValue || { } , l = a . keyword || "" , m = a . parentValues || [ ] ; return null == j || BI . isEmpty ( j ) ? void b ( { } ) : ( c ( j ) , void b ( j ) ) } , _reqAdjustTreeNode : function ( a , b ) { function c ( a , b ) { if ( null == a || BI . isEmpty ( a ) ) return ! 0 ; var e = ! 0 ; return BI . each ( a , function ( d , g ) { var h = BI . clone ( b ) ; h . push ( d ) , c ( a [ d ] , h ) || ( BI . each ( a [ d ] , function ( a , b ) { var c = BI . clone ( h ) ; c . push ( a ) , f . push ( c ) } ) , e = ! 1 ) } ) , e && d ( a , b ) } function d ( a , b ) { return BI . isEmpty ( a ) || e . _getChildCount ( b ) === BI . size ( a ) } var e = this , f = [ ] , g = a . selectedValues ; if ( null == g || BI . isEmpty ( g ) ) return void b ( { } ) ; BI . each ( g , function ( a , b ) { f . push ( [ a ] ) } ) , c ( g , [ ] ) ; var h = { } ; BI . each ( f , function ( a , b ) { e . _buildTree ( h , b ) } ) , b ( h ) } , _reqInitTreeNode : function ( a , b ) { function c ( ) { var a = j . _getChildren ( [ ] ) , b = a . length ; if ( "" !== n ) { for ( var c = 0 , e = b ; c < e ; c ++ ) if ( a [ c ] . value === n ) { b = c + 1 ; break } } else b = 0 ; for ( var f = [ ] , g = b , e = a . length ; g < e ; g ++ ) { if ( f . length < j . _const . perPage ) var h = d ( 1 , [ ] , a [ g ] . value , ! 1 , k ) ; else if ( f . length === j . _const . perPage ) var h = d ( 1 , [ ] , a [ g ] . value , ! 1 , [ ] ) ; if ( h [ 0 ] === ! 0 && f . push ( a [ g ] . value ) , f . length > j . _const . perPage ) break } return f } function d ( a , b , c , i , k ) { if ( j . _isMatch ( b , c , l ) ) { var m = i || h ( b , c ) ; return e ( b , c , ! 1 , m , ! i && f ( b , c ) , ! 0 , k ) , [ ! 0 , m ] } var n = BI . clone ( b ) ; n . push ( c ) ; var o = j . _getChildren ( n ) , p = ! 1 , m = ! 1 , q = i || g ( b , c ) ; return BI . each ( o , function ( b , c ) { var e = d ( a + 1 , n , c . value , q , k ) ; e [ 1 ] === ! 0 && ( m = ! 0 ) , e [ 0 ] === ! 0 && ( p = ! 0 ) } ) , p === ! 0 && ( m = q || h ( b , c ) && m , e ( b , c , ! 0 , m , ! 1 , ! 1 , k ) ) , [ p , m ] } function e ( a , b , c , d , e , f , g ) { var h = j . _getTreeNode ( a , b ) ; g . push ( { id : h . id , pId : h . pId , text : h . text , value : h . value , title : h . title , isParent : h . getChildrenLength ( ) > 0 , open : c , checked : d , halfCheck : e , flag : f } ) } function f ( a , b ) { var c = i ( a ) ; return null == c ? null : BI . any ( c , function ( a , c ) { if ( a === b && null != c && ! BI . isEmpty ( c ) ) return ! 0 } ) } function g ( a , b ) { var c = i ( a ) ; return null == c ? null : BI . any ( c , function ( a , c ) { if ( a === b && null != c && BI . isEmpty ( c ) ) return ! 0 } ) } function h ( a , b ) { var c = i ( a ) ; return null != c && BI . any ( c , function ( a ) { if ( a === b ) return ! 0 } ) } function i ( a ) { var b = m ; return null == b ? null : ( BI . every ( a , function ( a , c ) { return b = b [ c ] , null != b } ) , b ) } var j = this , k = [ ] , l = a . keyword || "" , m = a . selectedValues , n = a . lastSearchValue || "" , o = c ( ) ; BI . nextTick ( function ( ) { b ( { hasNext : o . length > j . _const . perPage , items : k , lastSearchValue : BI . last ( o ) } ) } ) } , _reqTreeNode : function ( a , b ) { function c ( a , b ) { var c = { } ; return BI . each ( a , function ( a , c ) { b = b [ c ] || { } } ) , BI . each ( b , function ( a , b ) { if ( BI . isNull ( b ) ) return void ( c [ a ] = [ 0 , 0 ] ) ; if ( BI . isEmpty ( b ) ) return void ( c [ a ] = [ 2 , 0 ] ) ; var d = { } ; BI . each ( b , function ( a , b ) { ( BI . isNull ( b ) || BI . isEmpty ( b ) ) && ( d [ a ] = ! 0 ) } ) , c [ a ] = [ 1 , BI . size ( d ) ] } ) , c } function d ( a , b , c , d ) { var f = d . checked , g = d . half , h = ! 1 , i = ! 1 ; if ( BI . has ( c , a ) ) if ( 1 === c [ a ] [ 0 ] ) { var j = BI . clone ( b ) ; j . push ( a ) ; var k = e . _getChildCount ( j ) ; k > 0 && k !== c [ a ] [ 1 ] && ( i = ! 0 ) } else 2 === c [ a ] [ 0 ] && ( h = ! 0 ) ; var l ; return l = f || i || h ? ( h || f ) && ! g || BI . has ( c , a ) : BI . has ( c , a ) , [ l , i ] } var e = this , f = [ ] , g = a . times , h = a . checkState || { } , i = a . parentValues || [ ] , j = a . selectedValues || { } , k = { } ; k = c ( i , j ) ; for ( var l = this . _getChildren ( i ) , m = ( g - 1 ) * this . _const . perPage ; l [ m ] && m < g * this . _const