/*! 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 ] ,
this . element . _isWidget = ! 0 , ( a . baseCls || a . extraCls || a . cls ) && this . element . addClass ( ( a . baseCls || "" ) + " " + ( a . extraCls || "" ) + " " + ( a . cls || "" ) ) , 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 ( )
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
if ( BI . each ( this . showingTips , function ( a , b ) { g . hide ( a ) } ) , this . showingTips = { } , this . has ( b ) || this . create ( b , c , d , f . container || e ) , ! f . belowMouse ) { var h = e . element . offset ( ) , i = e . element . bounds ( ) ; if ( 0 === i . height || 0 === i . width ) return ; var j = h . top + i . height + 5 } var k = this . get ( b ) ; k . setText ( c ) , k . element . css ( { left : "0px" , top : "0px" } ) , k . visible ( ) , k . element . height ( k . element [ 0 ] . scrollHeight ) , this . showingTips [ b ] = ! 0 ; var l = ( a . pageX || a . clientX ) + 15 , m = ( a . pageY || a . clientY ) + 15 ; return l + k . element . outerWidth ( ) > $ ( "body" ) . outerWidth ( ) && ( l -= k . element . outerWidth ( ) + 15 ) , m + k . element . outerHeight ( ) > $ ( "body" ) . outerHeight ( ) ? ( m -= k . element . outerHeight ( ) + 15 , ! f . belowMouse && ( m = Math . min ( m , h . top - k . element . outerHeight ( ) - 5 ) ) ) : ! f . belowMouse && ( m = Math . max ( m , j ) ) , k . element . css ( { left : l < 0 ? 0 : l + "px" , top : m < 0 ? 0 : m + "px" } ) , k . element . hover ( function ( ) { g . remove ( b ) , e . element . trigger ( "mouseleave.title" + e . getName ( ) ) } ) , this } , add : function ( a , b ) { return this . has ( a ) ? this : ( this . set ( a , b ) , this ) } , get : function ( a ) { return this . tooltipsManager [ a ] } , set : function ( a , b ) { this . tooltipsManager [ a ] = b } , has : function ( a ) { return null != this . tooltipsManager [ a ] } , remove : function ( a ) { return this . has ( a ) ? ( this . tooltipsManager [ a ] . destroy ( ) , delete this . tooltipsManager [ a ] , this ) : this } } ) , _ . extend ( BI , { Events : { KEYDOWN : "_KEYDOWN" , BACKSPACE : "_BACKSPACE" , SPACE : "_SPACE" , ENTER : "_ENTER" , CONFIRM : "_CONFIRM" , ERROR : "_ERROR" , PAUSE : "_PAUSE" , DESTROY : "_DESTROY" , UNMOUNT : "_UNMOUNT" , CLEAR : "_CLEAR" , ADD : "_ADD" , EDITING : "_EDITING" , EMPTY : "_EMPTY" , VIEW : "_VIEW" , RESIZE : "_RESIZE" , BEFOREEDIT : "_BEFOREEDIT" , AFTEREDIT : "_AFTEREDIT" , STARTEDIT : "_STARTEDIT" , STOPEDIT : "_STOPEDIT" , CHANGE : "_CHANGE" , EXPAND : "_EXPAND" , COLLAPSE : "_COLLAPSE" , CALLBACK : "_CALLBACK" , CLICK : "_CLICK" , STATECHANGE : "_STATECHANGE" , BEFORESTATECHANGE : "_BEFORESTATECHANGE" , INIT : "_INIT" , AFTERINIT : "_AFTERINIT" , SCROLL : "_SCROLL" , STARTLOAD : "_STARTLOAD" , AFTERLOAD : "_AFTERLOAD" , 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 . defaultVie
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 c && ( b += c + "=" + a + "&" ) } ) , b = b . substr ( 0 , b . length - 1 ) } , replaceAll : function ( a , b ) { return this . replace ( new RegExp ( a , "gm" ) , b ) } , perfectStart : function ( a ) { return this . startWith ( a ) ? this : a + this } , allIndexOf : function ( a ) { if ( "string" != typeof a ) return [ ] ; for ( var b = this , c = [ ] , d = 0 ; b . length > 0 ; ) { var e = b . indexOf ( a ) ; if ( e === - 1 ) break ; c . push ( d + e ) , b = b . substring ( e + a . length , b . length ) , d += e + a . length } return c } } ) , _ . 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 =
return m } , _getParentValues : function ( a ) { if ( ! a . getParentNode ( ) ) return [ ] ; var b = a . getParentNode ( ) , c = this . _getParentValues ( b ) ; return c = c . concat ( [ this . _getNodeValue ( b ) ] ) } , _getNodeValue : function ( a ) { return null == a . value ? a . text . replace ( /<[^>]+>/g , "" ) . replaceAll ( " " , " " ) : a . value } , _getHalfSelectedValues : function ( a , b ) { var c = this , d = b . getCheckStatus ( ) ; if ( d . checked !== ! 1 || d . half !== ! 1 ) { if ( BI . isNotEmptyArray ( b . children ) && d . half === ! 0 ) { var e = b . children ; return void BI . each ( e , function ( b , d ) { c . _getHalfSelectedValues ( a , d ) } ) } var f = b . parentValues || c . _getParentValues ( b ) , g = f . concat ( this . _getNodeValue ( b ) ) ; if ( BI . isNotEmptyArray ( b . children ) || d . half === ! 1 ) return void this . _buildTree ( a , g ) ; var h = BI . deepClone ( this . options . paras . selectedValues ) , i = this . _getTree ( h , g ) ; this . _addTreeNode ( a , f , this . _getNodeValue ( b ) , i ) } } , _getTree : function ( a , b ) { var c = a ; return BI . any ( b , function ( a , b ) { return null == c [ b ] || void ( c = c [ b ] ) } ) , c } , _addTreeNode : function ( a , b , c , d ) { var e = a ; BI . each ( b , function ( a , b ) { null == e [ b ] && ( e [ b ] = { } ) , e = e [ b ] } ) , e [ c ] = d } , _buildTree : function ( a , b ) { var c = a ; BI . each ( b , function ( a , b ) { null == c [ b ] && ( c [ b ] = { } ) , c = c [ b ] } ) } , _getSelectedValues : function ( ) { function a ( a ) { BI . each ( a , function ( a , d ) { var e = d . getCheckStatus ( ) ; if ( e . checked === ! 0 || e . half === ! 0 ) if ( e . half === ! 0 ) b . _getHalfSelectedValues ( c , d ) ; else { var f = d . parentValues || b . _getParentValues ( d ) , g = f . concat ( [ b . _getNodeValue ( d ) ] ) ; b . _buildTree ( c , g ) } } ) } var b = this , c = { } , d = this . nodes . getNodes ( ) ; return a ( d ) , c } , _dealWidthNodes : function ( a ) { var b = this . options , c = BI . Tree . arrayFormat ( a ) ; return BI . each ( c , function ( a , c ) { c . title = c . title || c . text || c . value , BI . isKey ( b . paras . keyword ) ? c . text = $ ( "<div>" ) . _ _textKeywordMarked _ _ ( c . text , b . paras . keyword , c . py ) . html ( ) : c . text = ( c . text + "" ) . replaceAll ( " " , " " ) } ) , a } , _loadMore : function ( ) { var a = this , b = this . options ; this . tip . setLoading ( ) ; var c = BI . extend ( { } , b . paras , { times : ++ this . times } ) ; b . itemsCreator ( c , function ( b ) { if ( a . _stop !== ! 0 ) { var c = ! ! b . hasNext , d = b . items || [ ] ; c ? a . tip . setLoaded ( ) : a . tip . setEnd ( ) , d . length > 0 && a . nodes . addNodes ( null , a . _dealWidthNodes ( d ) ) } } ) } , _initTree : function ( a ) { var b = this , c = this . options ; b . fireEvent ( BI . Events . INIT ) , this . times = 1 ; var d = this . tree ; d . empty ( ) , this . loading ( ) , this . tip . setVisible ( ! 1 ) ; var e = function ( c ) { b . _stop !== ! 0 && ( b . nodes = $ . fn . zTree . init ( d . element , a , c ) ) } , f = BI . extend ( { } , c . paras , { times : 1 } ) ; c . itemsCreator ( f , function ( a ) { if ( b . _stop !== ! 0 ) { var c = ! ! a . hasNext , d = a . items || [ ] ; d . length > 0 && e ( b . _dealWidthNodes ( d ) ) , b . setTipVisible ( d . length <= 0 ) , b . loaded ( ) , c ? b . tip . setLoaded ( ) : b . tip . invisible ( ) , 1 === f . times && b . fireEvent ( BI . Events . AFTERINIT ) } } ) } , initTree : function ( a , b ) { var b = b || { async : { enable : ! 1 } , check : { enable : ! 1 } , data : { key : { title : "title" , name : "text" } , simpleData : { enable : ! 0 } } , view : { showIcon : ! 1 , expandSpeed : "" , nameIsHTML : ! 0 } , callback : { } } ; this . nodes = $ . fn . zTree . init ( this . tree . element , b , a ) } , start : function ( ) { this . _stop = ! 1 } , stop : function ( ) { this . _stop = ! 0 } , stroke : function ( a ) { delete this . options . keyword , BI . extend ( this . options . paras , a ) ; var b = this . _configSetting ( ) ; this . _createTree ( ) , this . start ( ) , this . _initTree ( b ) } , populate : function ( ) { this . stroke . apply ( this , arguments ) } , hasChecked : function ( ) { var a = this . nodes ; return a . getCheckedNodes ( ! 0 ) . length > 0 } , checkAll : function ( a ) { function b ( a ) { BI . each ( a , function ( a , c ) { c . halfCheck = ! 1 , b ( c . children ) } ) } BI . each ( this . nodes . getNodes ( ) , function ( a , c ) { c . halfCheck = ! 1 , b ( c . children ) } ) , this . nodes && this . nodes . checkAllNodes ( a ) } , expandAll : function ( a ) { this . nodes && this . nodes . expandAll ( a ) } , setValue : function ( a , b ) { this . checkAll ( ! 1 ) , this . updateValue ( a , b ) , this . refresh ( ) } , setSelectedValue : function ( a ) { this . options . paras . selectedValues = BI . deepClone ( a || { } ) } , updateValue : function ( a , b ) { if ( this . nodes ) { b || ( b = "value" ) ; var c = this . nodes ; BI . each ( a , function ( a , d ) { var e = c . getNodesByParam ( b , a , null ) ; BI . each ( e , function ( a , b ) { BI . extend ( b , { checked : ! 0 } , d ) , c . updateNode ( b ) } ) } ) } } , refresh : function ( ) { this . nodes && this . nodes . refresh ( ) } , getValue : function ( ) { return this . nodes ? this . _getSelectedValues ( ) : null } , destroyed : function ( ) { this . stop ( ) , this . nodes && this . nodes . destroy ( ) } } ) , BI . extend ( BI . TreeView , { REQ _TYPE _INIT _DATA : 1 , REQ _TYPE _ADJUST _DATA : 2 , REQ _TYPE _SELECT _DATA : 3 , REQ _TYPE _GET _SELECTED _DATA : 4 } ) , BI . TreeView . EVENT _CHANGE = "EVENT_CHANGE" , BI . TreeView . EVENT _INIT
a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b === BI . Events . CLICK && a . fireEvent ( BI . Expander . EVENT _CHANGE , c , d ) } ) , this . popupView . setVisible ( this . isExpanded ( ) ) , BI . nextTick ( function ( ) { a . fireEvent ( BI . Expander . EVENT _AFTER _INIT ) } ) ) } , _assertPopupViewRender : function ( ) { this . _assertPopupView ( ) , this . _rendered || ( BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ { el : this . popupView } ] } ) , this . _rendered = ! 0 ) } , _hideView : function ( ) { this . fireEvent ( BI . Expander . EVENT _BEFORE _HIDEVIEW ) , this . _expanded = ! 1 , this . expander . setOpened ( ! 1 ) , this . popupView && this . popupView . invisible ( ) , this . element . removeClass ( this . options . expanderClass ) , this . fireEvent ( BI . Expander . EVENT _AFTER _HIDEVIEW ) } , _popupView : function ( ) { this . _assertPopupViewRender ( ) , this . fireEvent ( BI . Expander . EVENT _BEFORE _POPUPVIEW ) , this . _expanded = ! 0 , this . expander . setOpened ( ! 0 ) , this . popupView . visible ( ) , this . element . addClass ( this . options . expanderClass ) , this . fireEvent ( BI . Expander . EVENT _AFTER _POPUPVIEW ) } , populate : function ( a ) { this . popupView && this . popupView . populate . apply ( this . popupView , arguments ) , this . expander . populate . apply ( this . expander , arguments ) } , _setEnable : function ( a ) { BI . Expander . superclass . _setEnable . apply ( this , arguments ) , ! a && this . element . removeClass ( this . options . hoverClass ) , ! a && this . isViewVisible ( ) && this . _hideView ( ) } , setValue : function ( a ) { this . expander . setValue ( a ) , this . popupView && this . popupView . setValue ( a ) } , getValue : function ( ) { return this . popupView ? this . popupView . getValue ( ) : [ ] } , isViewVisible : function ( ) { return this . isEnabled ( ) && this . expander . isEnabled ( ) && ! ! this . popupView && this . popupView . isVisible ( ) } , isExpanded : function ( ) { return this . _expanded } , showView : function ( ) { this . isEnabled ( ) && this . expander . isEnabled ( ) && this . _popupView ( ) } , hideView : function ( ) { this . _hideView ( ) } , getView : function ( ) { return this . popupView } , getAllLeaves : function ( ) { return this . popupView && this . popupView . getAllLeaves ( ) } , getNodeById : function ( a ) { return this . expander . options . id === a ? this . expander : this . popupView && this . popupView . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . expander . getValue ( ) === a ? this . expander : this . popupView && this . popupView . getNodeByValue ( a ) } , destroy : function ( ) { BI . Expander . superclass . destroy . apply ( this , arguments ) } } ) , BI . Expander . EVENT _EXPAND = "EVENT_EXPAND" , BI . Expander . EVENT _COLLAPSE = "EVENT_COLLAPSE" , BI . Expander . EVENT _TRIGGER _CHANGE = "EVENT_TRIGGER_CHANGE" , BI . Expander . EVENT _CHANGE = "EVENT_CHANGE" , BI . Expander . EVENT _AFTER _INIT = "EVENT_AFTER_INIT" , BI . Expander . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . Expander . EVENT _AFTER _POPUPVIEW = "EVENT_AFTER_POPUPVIEW" , BI . Expander . EVENT _BEFORE _HIDEVIEW = "EVENT_BEFORE_HIDEVIEW" , BI . Expander . EVENT _AFTER _HIDEVIEW = "EVENT_AFTER_HIDEVIEW" , BI . shortcut ( "bi.expander" , BI . Expander ) , BI . ComboGroup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . ComboGroup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-combo-group bi-list-item" , trigger : "click,hover" , direction : "right" , adjustLength : 0 , isDefaultInit : ! 1 , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : { type : "bi.text_button" , text : "" , value : "" } , children : [ ] , popup : { el : { type : "bi.button_tree" , chooseType : 0 , layouts : [ { type : "bi.vertical" } ] } } } ) } , _init : function ( ) { BI . ComboGroup . superclass . _init . apply ( this , arguments ) , this . _populate ( this . options . el ) } , _populate : function ( a ) { var b = this , c = this . options , d = c . children ; if ( BI . isEmpty ( d ) ) throw new Error ( "ComboGroup构造错误" ) ; BI . each ( d , function ( a , b ) { var d = BI . formatEL ( b ) . el . children ; b = BI . formatEL ( b ) . el , BI . isEmpty ( d ) || ( b . el = BI . clone ( b ) , b . children = d , b . type = "bi.combo_group" , b . action = c . action , b . height = c . height , b . direction = c . direction , b . isDefaultInit = c . isDefaultInit , b . isNeedAdjustHeight = c . isNeedAdjustHeight , b . isNeedAdjustWidth = c . isNeedAdjustWidth , b . adjustLength = c . adjustLength , b . popup = c . popup ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , element : this , height : c . height , trigger : c . trigger , direction : c . direction , isDefaultInit : c . isDefaultInit , isNeedAdjustWidth : c . isNeedAdjustWidth , isNeedAdjustHeight : c . isNeedAdjustHeight , adjustLength : c . adjustLength , el : a , popup : BI . extend ( { } , c . popup , { el : BI . extend ( { items : d } , c . popup . el ) } ) } ) , this . combo . on ( BI . Controller . EVENT _CHANGE , function ( a , c , d ) { b . fireEvent ( BI . Cont
} return c } function m ( a ) { var b = a . display , c = a . doc ; b . maxLine = Vd ( c , c . first ) , b . maxLineLength = l ( b . maxLine ) , b . maxLineChanged = ! 0 , c . iter ( function ( a ) { var c = l ( a ) ; c > b . maxLineLength && ( b . maxLineLength = c , b . maxLine = a ) } ) } function n ( a ) { var b = De ( a . gutters , "CodeMirror-linenumbers" ) ; b == - 1 && a . lineNumbers ? a . gutters = a . gutters . concat ( [ "CodeMirror-linenumbers" ] ) : b > - 1 && ! a . lineNumbers && ( a . gutters = a . gutters . slice ( 0 ) , a . gutters . splice ( b , 1 ) ) } function o ( a ) { var b = a . display , c = b . gutters . offsetWidth , d = Math . round ( a . doc . height + Ra ( a . display ) ) ; return { clientHeight : b . scroller . clientHeight , viewHeight : b . wrapper . clientHeight , scrollWidth : b . scroller . scrollWidth , clientWidth : b . scroller . clientWidth , viewWidth : b . wrapper . clientWidth , barLeft : a . options . fixedGutter ? c : 0 , docHeight : d , scrollHeight : d + Ta ( a ) + b . barHeight , nativeBarWidth : b . nativeBarWidth , gutterWidth : c } } function p ( a , b , c ) { this . cm = c ; var d = this . vert = Me ( "div" , [ Me ( "div" , null , null , "min-width: 1px" ) ] , "CodeMirror-vscrollbar" ) , e = this . horiz = Me ( "div" , [ Me ( "div" , null , null , "height: 100%; min-height: 1px" ) ] , "CodeMirror-hscrollbar" ) ; a ( d ) , a ( e ) , xg ( d , "scroll" , function ( ) { d . clientHeight && b ( d . scrollTop , "vertical" ) } ) , xg ( e , "scroll" , function ( ) { e . clientWidth && b ( e . scrollLeft , "horizontal" ) } ) , this . checkedOverlay = ! 1 , nf && of < 8 && ( this . horiz . style . minHeight = this . vert . style . minWidth = "18px" ) } function q ( ) { } function r ( b ) { b . display . scrollbars && ( b . display . scrollbars . clear ( ) , b . display . scrollbars . addClass && Qg ( b . display . wrapper , b . display . scrollbars . addClass ) ) , b . display . scrollbars = new a . scrollbarModel [ b . options . scrollbarStyle ] ( function ( a ) { b . display . wrapper . insertBefore ( a , b . display . scrollbarFiller ) , xg ( a , "mousedown" , function ( ) { b . state . focused && setTimeout ( function ( ) { b . display . input . focus ( ) } , 0 ) } ) , a . setAttribute ( "cm-not-content" , "true" ) } , function ( a , c ) { "horizontal" == c ? bc ( b , a ) : ac ( b , a ) } , b ) , b . display . scrollbars . addClass && Rg ( b . display . wrapper , b . display . scrollbars . addClass ) } function s ( a , b ) { b || ( b = o ( a ) ) ; var c = a . display . barWidth , d = a . display . barHeight ; t ( a , b ) ; for ( var e = 0 ; e < 4 && c != a . display . barWidth || d != a . display . barHeight ; e ++ ) c != a . display . barWidth && a . options . lineWrapping && F ( a ) , t ( a , o ( a ) ) , c = a . display . barWidth , d = a . display . barHeight } function t ( a , b ) { var c = a . display , d = c . scrollbars . update ( b ) ; c . sizer . style . paddingRight = ( c . barWidth = d . right ) + "px" , c . sizer . style . paddingBottom = ( c . barHeight = d . bottom ) + "px" , d . right && d . bottom ? ( c . scrollbarFiller . style . display = "block" , c . scrollbarFiller . style . height = d . bottom + "px" , c . scrollbarFiller . style . width = d . right + "px" ) : c . scrollbarFiller . style . display = "" , d . bottom && a . options . coverGutterNextToScrollbar && a . options . fixedGutter ? ( c . gutterFiller . style . display = "block" , c . gutterFiller . style . height = d . bottom + "px" , c . gutterFiller . style . width = b . gutterWidth + "px" ) : c . gutterFiller . style . display = "" } function u ( a , b , c ) { var d = c && null != c . top ? Math . max ( 0 , c . top ) : a . scroller . scrollTop ; d = Math . floor ( d - Qa ( a ) ) ; var e = c && null != c . bottom ? c . bottom : d + a . wrapper . clientHeight , f = $d ( b , d ) , g = $d ( b , e ) ; if ( c && c . ensure ) { var h = c . ensure . from . line , i = c . ensure . to . line ; h < f ? ( f = h , g = $d ( b , _d ( Vd ( b , h ) ) + a . wrapper . clientHeight ) ) : Math . min ( i , b . lastLine ( ) ) >= g && ( f = $d ( b , _d ( Vd ( b , i ) ) - a . wrapper . clientHeight ) , g = i ) } return { from : f , to : Math . max ( g , f + 1 ) } } function v ( a ) { var b = a . display , c = b . view ; if ( b . alignWidgets || b . gutters . firstChild && a . options . fixedGutter ) { for ( var d = y ( b ) - b . scroller . scrollLeft + a . doc . scrollLeft , e = b . gutters . offsetWidth , f = d + "px" , g = 0 ; g < c . length ; g ++ ) if ( ! c [ g ] . hidden ) { a . options . fixedGutter && c [ g ] . gutter && ( c [ g ] . gutter . style . left = f ) ; var h = c [ g ] . alignable ; if ( h ) for ( var i = 0 ; i < h . length ; i ++ ) h [ i ] . style . left = f } a . options . fixedGutter && ( b . gutters . style . left = d + e + "px" ) } } function w ( a ) { if ( ! a . options . lineNumbers ) return ! 1 ; var b = a . doc , c = x ( a . options , b . first + b . size - 1 ) , d = a . display ; if ( c . length != d . lineNumChars ) { var e = d . measure . appendChild ( Me ( "div" , [ Me ( "div" , c ) ] , "CodeMirror-linenumber CodeMirror-gutter-elt" ) ) , f = e . firstChild . offsetWidth , g = e . offsetWidth - f ; return d . lineGutter . style . width = "" , d . lineNumInnerWidth = Math . max ( f , d . lineGutter . offsetWidth - g ) + 1 , d . lineNumWidth = d . lineNumInnerWidth + g , d . lineNumChars = d . lineNumInnerWidth ? c . length : - 1 , d . lineGutter . style . width = d . lineNumWidth + "px" , k ( a ) , ! 0 } return ! 1 } function x ( a , b ) { return String ( a . lineNumberFormatter ( b + a . firstLineNumber )
} } while ( c < b . length ) } function vb ( a ) { var b = a . curOp , c = b . ownsGroup ; if ( c ) try { ub ( c ) } finally { Mf = null ; for ( var d = 0 ; d < c . ops . length ; d ++ ) c . ops [ d ] . cm . curOp = null ; wb ( c ) } } function wb ( a ) { for ( var b = a . ops , c = 0 ; c < b . length ; c ++ ) xb ( b [ c ] ) ; for ( var c = 0 ; c < b . length ; c ++ ) yb ( b [ c ] ) ; for ( var c = 0 ; c < b . length ; c ++ ) zb ( b [ c ] ) ; for ( var c = 0 ; c < b . length ; c ++ ) Ab ( b [ c ] ) ; for ( var c = 0 ; c < b . length ; c ++ ) Bb ( b [ c ] ) } function xb ( a ) { var b = a . cm , c = b . display ; A ( b ) , a . updateMaxLine && m ( b ) , a . mustUpdate = a . viewChanged || a . forceUpdate || null != a . scrollTop || a . scrollToPos && ( a . scrollToPos . from . line < c . viewFrom || a . scrollToPos . to . line >= c . viewTo ) || c . maxLineChanged && b . options . lineWrapping , a . update = a . mustUpdate && new z ( b , a . mustUpdate && { top : a . scrollTop , ensure : a . scrollToPos } , a . forceUpdate ) } function yb ( a ) { a . updatedDisplay = a . mustUpdate && B ( a . cm , a . update ) } function zb ( a ) { var b = a . cm , c = b . display ; a . updatedDisplay && F ( b ) , a . barMeasure = o ( b ) , c . maxLineChanged && ! b . options . lineWrapping && ( a . adjustWidthTo = Za ( b , c . maxLine , c . maxLine . text . length ) . left + 3 , b . display . sizerWidth = a . adjustWidthTo , a . barMeasure . scrollWidth = Math . max ( c . scroller . clientWidth , c . sizer . offsetLeft + a . adjustWidthTo + Ta ( b ) + b . display . barWidth ) , a . maxScrollLeft = Math . max ( 0 , c . sizer . offsetLeft + a . adjustWidthTo - Ua ( b ) ) ) , ( a . updatedDisplay || a . selectionChanged ) && ( a . preparedSelection = c . input . prepareSelection ( ) ) } function Ab ( a ) { var b = a . cm ; null != a . adjustWidthTo && ( b . display . sizer . style . minWidth = a . adjustWidthTo + "px" , a . maxScrollLeft < b . doc . scrollLeft && bc ( b , Math . min ( b . display . scroller . scrollLeft , a . maxScrollLeft ) , ! 0 ) , b . display . maxLineChanged = ! 1 ) , a . preparedSelection && b . display . input . showSelection ( a . preparedSelection ) , a . updatedDisplay && E ( b , a . barMeasure ) , ( a . updatedDisplay || a . startHeight != b . doc . height ) && s ( b , a . barMeasure ) , a . selectionChanged && La ( b ) , b . state . focused && a . updateInput && b . display . input . reset ( a . typing ) , a . focus && a . focus == Pe ( ) && Y ( a . cm ) } function Bb ( a ) { var b = a . cm , c = b . display , d = b . doc ; if ( a . updatedDisplay && C ( b , a . update ) , null == c . wheelStartX || null == a . scrollTop && null == a . scrollLeft && ! a . scrollToPos || ( c . wheelStartX = c . wheelStartY = null ) , null == a . scrollTop || c . scroller . scrollTop == a . scrollTop && ! a . forceScroll || ( d . scrollTop = Math . max ( 0 , Math . min ( c . scroller . scrollHeight - c . scroller . clientHeight , a . scrollTop ) ) , c . scrollbars . setScrollTop ( d . scrollTop ) , c . scroller . scrollTop = d . scrollTop ) , null == a . scrollLeft || c . scroller . scrollLeft == a . scrollLeft && ! a . forceScroll || ( d . scrollLeft = Math . max ( 0 , Math . min ( c . scroller . scrollWidth - Ua ( b ) , a . scrollLeft ) ) , c . scrollbars . setScrollLeft ( d . scrollLeft ) , c . scroller . scrollLeft = d . scrollLeft , v ( b ) ) , a . scrollToPos ) { var e = Ec ( b , qa ( d , a . scrollToPos . from ) , qa ( d , a . scrollToPos . to ) , a . scrollToPos . margin ) ; a . scrollToPos . isCursor && b . state . focused && Dc ( b , e ) } var f = a . maybeHiddenMarkers , g = a . maybeUnhiddenMarkers ; if ( f ) for ( var h = 0 ; h < f . length ; ++ h ) f [ h ] . lines . length || zg ( f [ h ] , "hide" ) ; if ( g ) for ( var h = 0 ; h < g . length ; ++ h ) g [ h ] . lines . length && zg ( g [ h ] , "unhide" ) ; c . wrapper . offsetHeight && ( d . scrollTop = b . display . scroller . scrollTop ) , a . changeObjs && zg ( b , "changes" , b , a . changeObjs ) , a . update && a . update . finish ( ) } function Cb ( a , b ) { if ( a . curOp ) return b ( ) ; tb ( a ) ; try { return b ( ) } finally { vb ( a ) } } function Db ( a , b ) { return function ( ) { if ( a . curOp ) return b . apply ( a , arguments ) ; tb ( a ) ; try { return b . apply ( a , arguments ) } finally { vb ( a ) } } } function Eb ( a ) { return function ( ) { if ( this . curOp ) return a . apply ( this , arguments ) ; tb ( this ) ; try { return a . apply ( this , arguments ) } finally { vb ( this ) } } } function Fb ( a ) { return function ( ) { var b = this . cm ; if ( ! b || b . curOp ) return a . apply ( this , arguments ) ; tb ( b ) ; try { return a . apply ( this , arguments ) } finally { vb ( b ) } } } function Gb ( a , b , c ) { this . line = b , this . rest = pd ( b ) , this . size = this . rest ? Zd ( Ce ( this . rest ) ) - c + 1 : 1 , this . node = this . text = null , this . hidden = sd ( a , b ) } function Hb ( a , b , c ) { for ( var d , e = [ ] , f = b ; f < c ; f = d ) { var g = new Gb ( a . doc , Vd ( a . doc , f ) , f ) ; d = f + g . size , e . push ( g ) } return e } function Ib ( a , b , c , d ) { null == b && ( b = a . doc . first ) , null == c && ( c = a . doc . first + a . doc . size ) , d || ( d = 0 ) ; var e = a . display ; if ( d && c < e . viewTo && ( null == e . updateLineNumbers || e . updateLineNumbers > b ) && ( e . updateLineNumbers = b ) , a . curOp . viewChanged = ! 0 , b >= e . viewTo ) Ef && qd ( a . doc , b ) < e . viewTo && Kb ( a ) ; else if ( c <= e . viewFrom ) Ef && rd ( a . doc , c + d ) > e . viewFrom ? Kb ( a ) : ( e . viewFrom += d , e . viewTo += d ) ; else if ( b <= e . viewFrom && c >= e . viewTo ) Kb ( a ) ; else if ( b <= e . viewFrom ) { va
var c = a [ b ] ; null != c . from && c . from == c . to && c . marker . clearWhenEmpty !== ! 1 && a . splice ( b -- , 1 ) } return a . length ? a : null } function dd ( a , b ) { var c = le ( a , b ) , d = bd ( a , b ) ; if ( ! c ) return d ; if ( ! d ) return c ; for ( var e = 0 ; e < c . length ; ++ e ) { var f = c [ e ] , g = d [ e ] ; if ( f && g ) a : for ( var h = 0 ; h < g . length ; ++ h ) { for ( var i = g [ h ] , j = 0 ; j < f . length ; ++ j ) if ( f [ j ] . marker == i . marker ) continue a ; f . push ( i ) } else g && ( c [ e ] = g ) } return c } function ed ( a , b , c ) { var d = null ; if ( a . iter ( b . line , c . line + 1 , function ( a ) { if ( a . markedSpans ) for ( var b = 0 ; b < a . markedSpans . length ; ++ b ) { var c = a . markedSpans [ b ] . marker ; ! c . readOnly || d && De ( d , c ) != - 1 || ( d || ( d = [ ] ) ) . push ( c ) } } ) , ! d ) return null ; for ( var e = [ { from : b , to : c } ] , f = 0 ; f < d . length ; ++ f ) for ( var g = d [ f ] , h = g . find ( 0 ) , i = 0 ; i < e . length ; ++ i ) { var j = e [ i ] ; if ( ! ( Gf ( j . to , h . from ) < 0 || Gf ( j . from , h . to ) > 0 ) ) { var k = [ i , 1 ] , l = Gf ( j . from , h . from ) , m = Gf ( j . to , h . to ) ; ( l < 0 || ! g . inclusiveLeft && ! l ) && k . push ( { from : j . from , to : h . from } ) , ( m > 0 || ! g . inclusiveRight && ! m ) && k . push ( { from : h . to , to : j . to } ) , e . splice . apply ( e , k ) , i += k . length - 1 } } return e } function fd ( a ) { var b = a . markedSpans ; if ( b ) { for ( var c = 0 ; c < b . length ; ++ c ) b [ c ] . marker . detachLine ( a ) ; a . markedSpans = null } } function gd ( a , b ) { if ( b ) { for ( var c = 0 ; c < b . length ; ++ c ) b [ c ] . marker . attachLine ( a ) ; a . markedSpans = b } } function hd ( a ) { return a . inclusiveLeft ? - 1 : 0 } function id ( a ) { return a . inclusiveRight ? 1 : 0 } function jd ( a , b ) { var c = a . lines . length - b . lines . length ; if ( 0 != c ) return c ; var d = a . find ( ) , e = b . find ( ) , f = Gf ( d . from , e . from ) || hd ( a ) - hd ( b ) ; if ( f ) return - f ; var g = Gf ( d . to , e . to ) || id ( a ) - id ( b ) ; return g ? g : b . id - a . id } function kd ( a , b ) { var c , d = Ef && a . markedSpans ; if ( d ) for ( var e , f = 0 ; f < d . length ; ++ f ) e = d [ f ] , e . marker . collapsed && null == ( b ? e . from : e . to ) && ( ! c || jd ( c , e . marker ) < 0 ) && ( c = e . marker ) ; return c } function ld ( a ) { return kd ( a , ! 0 ) } function md ( a ) { return kd ( a , ! 1 ) } function nd ( a , b , c , d , e ) { var f = Vd ( a , b ) , g = Ef && f . markedSpans ; if ( g ) for ( var h = 0 ; h < g . length ; ++ h ) { var i = g [ h ] ; if ( i . marker . collapsed ) { var j = i . marker . find ( 0 ) , k = Gf ( j . from , c ) || hd ( i . marker ) - hd ( e ) , l = Gf ( j . to , d ) || id ( i . marker ) - id ( e ) ; if ( ! ( k >= 0 && l <= 0 || k <= 0 && l >= 0 ) && ( k <= 0 && ( Gf ( j . to , c ) > 0 || i . marker . inclusiveRight && e . inclusiveLeft ) || k >= 0 && ( Gf ( j . from , d ) < 0 || i . marker . inclusiveLeft && e . inclusiveRight ) ) ) return ! 0 } } } function od ( a ) { for ( var b ; b = ld ( a ) ; ) a = b . find ( - 1 , ! 0 ) . line ; return a } function pd ( a ) { for ( var b , c ; b = md ( a ) ; ) a = b . find ( 1 , ! 0 ) . line , ( c || ( c = [ ] ) ) . push ( a ) ; return c } function qd ( a , b ) { var c = Vd ( a , b ) , d = od ( c ) ; return c == d ? b : Zd ( d ) } function rd ( a , b ) { if ( b > a . lastLine ( ) ) return b ; var c , d = Vd ( a , b ) ; if ( ! sd ( a , d ) ) return b ; for ( ; c = md ( d ) ; ) d = c . find ( 1 , ! 0 ) . line ; return Zd ( d ) + 1 } function sd ( a , b ) { var c = Ef && b . markedSpans ; if ( c ) for ( var d , e = 0 ; e < c . length ; ++ e ) if ( d = c [ e ] , d . marker . collapsed ) { if ( null == d . from ) return ! 0 ; if ( ! d . marker . widgetNode && 0 == d . from && d . marker . inclusiveLeft && td ( a , b , d ) ) return ! 0 } } function td ( a , b , c ) { if ( null == c . to ) { var d = c . marker . find ( 1 , ! 0 ) ; return td ( a , d . line , Yc ( d . line . markedSpans , c . marker ) ) } if ( c . marker . inclusiveRight && c . to == b . text . length ) return ! 0 ; for ( var e , f = 0 ; f < b . markedSpans . length ; ++ f ) if ( e = b . markedSpans [ f ] , e . marker . collapsed && ! e . marker . widgetNode && e . from == c . to && ( null == e . to || e . to != c . from ) && ( e . marker . inclusiveLeft || c . marker . inclusiveRight ) && td ( a , b , e ) ) return ! 0 } function ud ( a , b , c ) { _d ( b ) < ( a . curOp && a . curOp . scrollTop || a . doc . scrollTop ) && Hc ( a , null , c ) } function vd ( a ) { if ( null != a . height ) return a . height ; var b = a . doc . cm ; if ( ! b ) return 0 ; if ( ! Ng ( document . body , a . node ) ) { var c = "position: relative;" ; a . coverGutter && ( c += "margin-left: -" + b . display . gutters . offsetWidth + "px;" ) , a . noHScroll && ( c += "width: " + b . display . wrapper . clientWidth + "px;" ) , Oe ( b . display . measure , Me ( "div" , [ a . node ] , null , c ) ) } return a . height = a . node . offsetHeight } function wd ( a , b , c , d ) { var e = new mg ( a , c , d ) , f = a . cm ; return f && e . noHScroll && ( f . display . alignWidgets = ! 0 ) , Lc ( a , b , "widget" , function ( b ) { var c = b . widgets || ( b . widgets = [ ] ) ; if ( null == e . insertAt ? c . push ( e ) : c . splice ( Math . min ( c . length - 1 , Math . max ( 0 , e . insertAt ) ) , 0 , e ) , e . line = b , f && ! sd ( a , b ) ) { var d = _d ( b ) < a . scrollTop ; Yd ( b , b . height + vd ( e ) ) , d && Hc ( f , null , e . height ) , f . curOp . forceUpdate = ! 0 } return ! 0 } ) , e } function xd ( a , b , c , d ) { a . text = b , a . stateAfter && ( a . stateAfter = null ) , a . styles && ( a . styles = null ) , null != a . order && ( a . order = null ) , fd ( a ) , gd ( a , c ) ; var e = d ? d ( a ) : 1 ; e != a . height && Yd ( a , e ) } function yd ( a ) { a . parent = null , fd ( a ) } function zd ( a , b ) { if ( a ) for ( ; ; ) { var c = a . match ( /(?:^|\s+)line-(background-)?(\S+)/
this . showMultipleSelections ( a ) ) } , showPrimarySelection : function ( ) { var a = window . getSelection ( ) , b = this . cm . doc . sel . primary ( ) , c = ia ( this . cm , a . anchorNode , a . anchorOffset ) , d = ia ( this . cm , a . focusNode , a . focusOffset ) ; if ( ! c || c . bad || ! d || d . bad || 0 != Gf ( X ( c , d ) , b . from ( ) ) || 0 != Gf ( W ( c , d ) , b . to ( ) ) ) { var e = ga ( this . cm , b . from ( ) ) , f = ga ( this . cm , b . to ( ) ) ; if ( e || f ) { var g = this . cm . display . view , h = a . rangeCount && a . getRangeAt ( 0 ) ; if ( e ) { if ( ! f ) { var i = g [ g . length - 1 ] . measure , j = i . maps ? i . maps [ i . maps . length - 1 ] : i . map ; f = { node : j [ j . length - 1 ] , offset : j [ j . length - 2 ] - j [ j . length - 3 ] } } } else e = { node : g [ 0 ] . measure . map [ 2 ] , offset : 0 } ; try { var k = Jg ( e . node , e . offset , f . offset , f . node ) } catch ( l ) { } k && ( a . removeAllRanges ( ) , a . addRange ( k ) , h && null == a . anchorNode ? a . addRange ( h ) : kf && this . startGracePeriod ( ) ) , this . rememberSelection ( ) } } } , startGracePeriod : function ( ) { var a = this ; clearTimeout ( this . gracePeriod ) , this . gracePeriod = setTimeout ( function ( ) { a . gracePeriod = ! 1 , a . selectionChanged ( ) && a . cm . operation ( function ( ) { a . cm . curOp . selectionChanged = ! 0 } ) } , 20 ) } , showMultipleSelections : function ( a ) { Oe ( this . cm . display . cursorDiv , a . cursors ) , Oe ( this . cm . display . selectionDiv , a . selection ) } , rememberSelection : function ( ) { var a = window . getSelection ( ) ; this . lastAnchorNode = a . anchorNode , this . lastAnchorOffset = a . anchorOffset , this . lastFocusNode = a . focusNode , this . lastFocusOffset = a . focusOffset } , selectionInEditor : function ( ) { var a = window . getSelection ( ) ; if ( ! a . rangeCount ) return ! 1 ; var b = a . getRangeAt ( 0 ) . commonAncestorContainer ; return Ng ( this . div , b ) } , focus : function ( ) { "nocursor" != this . cm . options . readOnly && this . div . focus ( ) } , blur : function ( ) { this . div . blur ( ) } , getField : function ( ) { return this . div } , supportsTouch : function ( ) { return ! 0 } , receivedFocus : function ( ) { function a ( ) { b . cm . state . focused && ( b . pollSelection ( ) , b . polling . set ( b . cm . options . pollInterval , a ) ) } var b = this ; this . selectionInEditor ( ) ? this . pollSelection ( ) : Cb ( this . cm , function ( ) { b . cm . curOp . selectionChanged = ! 0 } ) , this . polling . set ( this . cm . options . pollInterval , a ) } , selectionChanged : function ( ) { var a = window . getSelection ( ) ; return a . anchorNode != this . lastAnchorNode || a . anchorOffset != this . lastAnchorOffset || a . focusNode != this . lastFocusNode || a . focusOffset != this . lastFocusOffset } , pollSelection : function ( ) { if ( ! this . composing && ! this . gracePeriod && this . selectionChanged ( ) ) { var a = window . getSelection ( ) , b = this . cm ; this . rememberSelection ( ) ; var c = ia ( b , a . anchorNode , a . anchorOffset ) , d = ia ( b , a . focusNode , a . focusOffset ) ; c && d && Cb ( b , function ( ) { Ba ( b . doc , oa ( c , d ) , Dg ) , ( c . bad || d . bad ) && ( b . curOp . selectionChanged = ! 0 ) } ) } } , pollContent : function ( ) { var a = this . cm , b = a . display , c = a . doc . sel . primary ( ) , d = c . from ( ) , e = c . to ( ) ; if ( d . line < b . viewFrom || e . line > b . viewTo - 1 ) return ! 1 ; var f ; if ( d . line == b . viewFrom || 0 == ( f = Lb ( a , d . line ) ) ) var g = Zd ( b . view [ 0 ] . line ) , h = b . view [ 0 ] . node ; else var g = Zd ( b . view [ f ] . line ) , h = b . view [ f - 1 ] . node . nextSibling ; var i = Lb ( a , e . line ) ; if ( i == b . view . length - 1 ) var j = b . viewTo - 1 , k = b . lineDiv . lastChild ; else var j = Zd ( b . view [ i + 1 ] . line ) - 1 , k = b . view [ i + 1 ] . node . previousSibling ; for ( var l = Ug ( ka ( a , h , k , g , j ) ) , m = Wd ( a . doc , Ff ( g , 0 ) , Ff ( j , Vd ( a . doc , j ) . text . length ) ) ; l . length > 1 && m . length > 1 ; ) if ( Ce ( l ) == Ce ( m ) ) l . pop ( ) , m . pop ( ) , j -- ; else { if ( l [ 0 ] != m [ 0 ] ) break ; l . shift ( ) , m . shift ( ) , g ++ } for ( var n = 0 , o = 0 , p = l [ 0 ] , q = m [ 0 ] , r = Math . min ( p . length , q . length ) ; n < r && p . charCodeAt ( n ) == q . charCodeAt ( n ) ; ) ++ n ; for ( var s = Ce ( l ) , t = Ce ( m ) , u = Math . min ( s . length - ( 1 == l . length ? n : 0 ) , t . length - ( 1 == m . length ? n : 0 ) ) ; o < u && s . charCodeAt ( s . length - o - 1 ) == t . charCodeAt ( t . length - o - 1 ) ; ) ++ o ; l [ l . length - 1 ] = s . slice ( 0 , s . length - o ) , l [ 0 ] = l [ 0 ] . slice ( n ) ; var v = Ff ( g , n ) , w = Ff ( j , m . length ? Ce ( m ) . length - o : 0 ) ; return l . length > 1 || l [ 0 ] || Gf ( v , w ) ? ( Cc ( a . doc , l , v , w , "+input" ) , ! 0 ) : void 0 } , ensurePolled : function ( ) { this . forceCompositionEnd ( ) } , reset : function ( ) { this . forceCompositionEnd ( ) } , forceCompositionEnd : function ( ) { this . composing && ! this . composing . handled && ( this . applyComposition ( this . composing ) , this . composing . handled = ! 0 , this . div . blur ( ) , this . div . focus ( ) ) } , applyComposition : function ( a ) { a . data && a . data != a . startData && Db ( this . cm , $ ) ( this . cm , a . data , 0 , a . sel ) } , setUneditable : function ( a ) { a . setAttribute ( "contenteditable" , "false" ) } , onKeyPress : function ( a ) { a . preventDefault ( ) , Db ( this . cm , $ ) ( this . cm , String . fromCharCode ( null == a . charCode ? a . keyCode : a . charCode ) , 0 ) } , onContextMenu : Fe , resetPosition : Fe , needsContentA
if ( null != d && b ) { for ( var e = 0 ; e < b . length ; ++ e ) b [ e ] == this && b . splice ( e -- , 1 ) ; b . length || ( c . widgets = null ) ; var f = vd ( this ) ; Yd ( c , Math . max ( 0 , c . height - f ) ) , a && Cb ( a , function ( ) { ud ( a , c , - f ) , Jb ( a , d , "widget" ) } ) } } , mg . prototype . changed = function ( ) { var a = this . height , b = this . doc . cm , c = this . line ; this . height = null ; var d = vd ( this ) - a ; d && ( Yd ( c , c . height + d ) , b && Cb ( b , function ( ) { b . curOp . forceUpdate = ! 0 , ud ( b , c , d ) } ) ) } ; var ng = a . Line = function ( a , b , c ) { this . text = a , gd ( this , b ) , this . height = c ? c ( this ) : 1 } ; ye ( ng ) , ng . prototype . lineNo = function ( ) { return Zd ( this ) } ; var og = { } , pg = { } ; Rd . prototype = { chunkSize : function ( ) { return this . lines . length } , removeInner : function ( a , b ) { for ( var c = a , d = a + b ; c < d ; ++ c ) { var e = this . lines [ c ] ; this . height -= e . height , yd ( e ) , te ( e , "delete" ) } this . lines . splice ( a , b ) } , collapse : function ( a ) { a . push . apply ( a , this . lines ) } , insertInner : function ( a , b , c ) { this . height += c , this . lines = this . lines . slice ( 0 , a ) . concat ( b ) . concat ( this . lines . slice ( a ) ) ; for ( var d = 0 ; d < b . length ; ++ d ) b [ d ] . parent = this } , iterN : function ( a , b , c ) { for ( var d = a + b ; a < d ; ++ a ) if ( c ( this . lines [ a ] ) ) return ! 0 } } , Sd . prototype = { chunkSize : function ( ) { return this . size } , removeInner : function ( a , b ) { this . size -= b ; for ( var c = 0 ; c < this . children . length ; ++ c ) { var d = this . children [ c ] , e = d . chunkSize ( ) ; if ( a < e ) { var f = Math . min ( b , e - a ) , g = d . height ; if ( d . removeInner ( a , f ) , this . height -= g - d . height , e == f && ( this . children . splice ( c -- , 1 ) , d . parent = null ) , 0 == ( b -= f ) ) break ; a = 0 } else a -= e } if ( this . size - b < 25 && ( this . children . length > 1 || ! ( this . children [ 0 ] instanceof Rd ) ) ) { var h = [ ] ; this . collapse ( h ) , this . children = [ new Rd ( h ) ] , this . children [ 0 ] . parent = this } } , collapse : function ( a ) { for ( var b = 0 ; b < this . children . length ; ++ b ) this . children [ b ] . collapse ( a ) } , insertInner : function ( a , b , c ) { this . size += b . length , this . height += c ; for ( var d = 0 ; d < this . children . length ; ++ d ) { var e = this . children [ d ] , f = e . chunkSize ( ) ; if ( a <= f ) { if ( e . insertInner ( a , b , c ) , e . lines && e . lines . length > 50 ) { for ( ; e . lines . length > 50 ; ) { var g = e . lines . splice ( e . lines . length - 25 , 25 ) , h = new Rd ( g ) ; e . height -= h . height , this . children . splice ( d + 1 , 0 , h ) , h . parent = this } this . maybeSpill ( ) } break } a -= f } } , maybeSpill : function ( ) { if ( ! ( this . children . length <= 10 ) ) { var a = this ; do { var b = a . children . splice ( a . children . length - 5 , 5 ) , c = new Sd ( b ) ; if ( a . parent ) { a . size -= c . size , a . height -= c . height ; var d = De ( a . parent . children , a ) ; a . parent . children . splice ( d + 1 , 0 , c ) } else { var e = new Sd ( a . children ) ; e . parent = a , a . children = [ e , c ] , a = e } c . parent = a . parent } while ( a . children . length > 10 ) ; a . parent . maybeSpill ( ) } } , iterN : function ( a , b , c ) { for ( var d = 0 ; d < this . children . length ; ++ d ) { var e = this . children [ d ] , f = e . chunkSize ( ) ; if ( a < f ) { var g = Math . min ( b , f - a ) ; if ( e . iterN ( a , g , c ) ) return ! 0 ; if ( 0 == ( b -= g ) ) break ; a = 0 } else a -= f } } } ; var qg = 0 , rg = a . Doc = function ( a , b , c ) { if ( ! ( this instanceof rg ) ) return new rg ( a , b , c ) ; null == c && ( c = 0 ) , Sd . call ( this , [ new Rd ( [ new ng ( "" , null ) ] ) ] ) , this . first = c , this . scrollTop = this . scrollLeft = 0 , this . cantEdit = ! 1 , this . cleanGeneration = 1 , this . frontier = c ; var d = Ff ( c , 0 ) ; this . sel = oa ( d ) , this . history = new be ( null ) , this . id = ++ qg , this . modeOption = b , "string" == typeof a && ( a = Ug ( a ) ) , Qd ( this , { from : d , to : d , text : a } ) , Ba ( this , oa ( d ) , Dg ) } ; rg . prototype = Ge ( Sd . prototype , { constructor : rg , iter : function ( a , b , c ) { c ? this . iterN ( a - this . first , b - a , c ) : this . iterN ( this . first , this . first + this . size , a ) } , insert : function ( a , b ) { for ( var c = 0 , d = 0 ; d < b . length ; ++ d ) c += b [ d ] . height ; this . insertInner ( a - this . first , b , c ) } , remove : function ( a , b ) { this . removeInner ( a - this . first , b ) } , getValue : function ( a , b ) { var c = Xd ( this , this . first , this . first + this . size , b ) ; return a === ! 1 ? c : c . join ( a || "\n" ) } , setValue : Fb ( function ( a ) { var b = Ff ( this . first , 0 ) , c = this . first + this . size - 1 ; wc ( this , { from : b , to : Ff ( c , Vd ( this , c ) . text . length ) , text : Ug ( a ) , origin : "setValue" , full : ! 0 } , ! 0 ) , Ba ( this , oa ( b ) ) } ) , replaceRange : function ( a , b , c , d ) { b = qa ( this , b ) , c = c ? qa ( this , c ) : b , Cc ( this , a , b , c , d ) } , getRange : function ( a , b , c ) { var d = Wd ( this , qa ( this , a ) , qa ( this , b ) ) ; return c === ! 1 ? d : d . join ( c || "\n" ) } , getLine : function ( a ) { var b = this . getLineHandle ( a ) ; return b && b . text } , getLineHandle : function ( a ) { if ( sa ( this , a ) ) return Vd ( this , a ) } , getLineNumber : function ( a ) { return Zd ( a ) } , getLineHandleVisualStart : function ( a ) { return "number" == typeof a && ( a = Vd ( this , a ) ) , od ( a ) } , lineCount : function ( ) { return this . size } , firstLine : function ( ) { return this . first } , lastLine : function ( ) { return this . first + this . size - 1 } , clipPo
var c = b . text , d = b . text , e = 0 ; return d . text = c , _ . forEach ( b . markedSpans , function ( b , c ) { switch ( b . marker . className ) { case "fieldName" : var f = b . to - b . from , g = b . from + e + 1 , h = f - 2 , i = a [ d . substr ( g , h ) ] ; d = d . substr ( 0 , b . from + e ) + "${" + i + "}" + d . substr ( b . to + e , d . length ) , e += i . length - f + 3 } } ) , d } ) } , setValue : function ( a ) { this . editor . setValue ( a ) } , setFieldTextValueMap : function ( a ) { this . options . fieldTextValueMap = a } , refresh : function ( ) { var a = this ; BI . nextTick ( function ( ) { a . editor . refresh ( ) } ) } } ) , BI . FormulaEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . FormulaEditor . EVENT _BLUR = "EVENT_BLUR" , BI . FormulaEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . shortcut ( "bi.formula_editor" , BI . FormulaEditor ) , $ . extend ( BI , { Msg : function ( ) { var a , b , c ; return { alert : function ( a , b , c ) { this . _show ( ! 1 , a , b , c ) } , confirm : function ( a , b , c ) { this . _show ( ! 0 , a , b , c ) } , prompt : function ( a , b , c , d , e ) { } , toast : function ( a , b , c ) { c = c || $ ( "body" ) ; var d = BI . createWidget ( { type : "bi.toast" , level : b , text : a } ) ; BI . createWidget ( { type : "bi.absolute" , element : c , items : [ { el : d , left : "50%" , top : 0 } ] } ) , d . element . outerWidth ( ) > c . outerWidth ( ) && d . setWidth ( c . width ( ) ) , d . element . css ( { "margin-left" : - 1 * d . element . outerWidth ( ) / 2 } ) , d . invisible ( ) , d . element . slideDown ( 500 , function ( ) { BI . delay ( function ( ) { d . element . slideUp ( 500 , function ( ) { d . destroy ( ) } ) } , 5e3 ) } ) } , _show : function ( d , e , f , g ) { b = $ ( '<div class="bi-z-index-mask">' ) . css ( { position : "absolute" , zIndex : BI . zIndex _tip - 2 , top : 0 , left : 0 , right : 0 , bottom : 0 , opacity : . 5 } ) . appendTo ( "body" ) , c = $ ( '<div class="bi-message-depend">' ) . css ( { position : "absolute" , zIndex : BI . zIndex _tip - 1 , top : 0 , left : 0 , right : 0 , bottom : 0 } ) . appendTo ( "body" ) ; var h = function ( ) { a . destroy ( ) , b . remove ( ) } , i = [ ] ; d === ! 0 && i . push ( { el : { type : "bi.button" , text : BI . i18nText ( "BI-Basic_Cancel" ) , height : 30 , level : "ignore" , handler : function ( ) { h ( ) , BI . isFunction ( g ) && g . apply ( null , [ ! 1 ] ) } } } ) , i . push ( { el : { type : "bi.button" , text : BI . i18nText ( "BI-Basic_OK" ) , height : 30 , handler : function ( ) { h ( ) , BI . isFunction ( g ) && g . apply ( null , [ ! 0 ] ) } } } ) ; var j = { element : c , type : "bi.center_adapt" , items : [ { type : "bi.border" , cls : "bi-message-content bi-card" , items : { north : { el : { type : "bi.border" , cls : "bi-message-title bi-background" , items : { center : { el : { type : "bi.label" , text : e || BI . i18nText ( "BI-Basic_Prompt" ) , textAlign : "left" , hgap : 20 , height : 50 } } , east : { el : { type : "bi.icon_button" , cls : "bi-message-close close-font" , handler : function ( ) { h ( ) } } , width : 60 } } } , height : 50 } , center : { el : { type : "bi.text" , cls : "bi-message-text" , tgap : 60 , hgap : 20 , lineHeight : 30 , whiteSpace : "normal" , text : f } } , south : { el : { type : "bi.absolute" , items : [ { el : { type : "bi.right_vertical_adapt" , hgap : 5 , items : i } , top : 0 , left : 20 , right : 20 , bottom : 0 } ] } , height : 60 } } , width : 400 , height : 300 } ] } ; a = BI . createWidget ( j ) } } } ( ) } ) , BI . GridView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . GridView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-grid-view" , overflowX : ! 0 , overflowY : ! 0 , overscanColumnCount : 0 , overscanRowCount : 0 , rowHeightGetter : BI . emptyFn , columnWidthGetter : BI . emptyFn , scrollLeft : 0 , scrollTop : 0 , items : [ ] } ) } , _init : function ( ) { BI . GridView . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . renderedCells = [ ] , this . renderedKeys = [ ] , this . renderRange = { } , this . _scrollLock = ! 1 , this . _debounceRelease = BI . debounce ( function ( ) { a . _scrollLock = ! 1 } , 1e3 / 60 ) , this . container = BI . createWidget ( { type : "bi.absolute" } ) , this . element . scroll ( function ( ) { a . _scrollLock !== ! 0 && ( b . scrollLeft = a . element . scrollLeft ( ) , b . scrollTop = a . element . scrollTop ( ) , a . _calculateChildrenToRender ( ) , a . fireEvent ( BI . GridView . EVENT _SCROLL , { scrollLeft : b . scrollLeft , scrollTop : b . scrollTop } ) ) } ) , BI . createWidget ( { type : "bi.vertical" , element : this , scrollable : b . overflowX === ! 0 && b . overflowY === ! 0 , scrolly : b . overflowX === ! 1 && b . overflowY === ! 0 , scrollx : b . overflowX === ! 0 && b . overflowY === ! 1 , items : [ this . container ] } ) , b . items . length > 0 && this . _populate ( ) , 0 === b . scrollLeft && 0 === b . scrollTop || BI . nextTick ( function ( ) { a . element . scrollTop ( b . scrollTop ) , a . element . scrollLeft ( b . scrollLeft ) } ) } , _getOverscanIndices : function ( a , b , c , d ) { return { overscanStartIndex : Math . max ( 0 , c - b ) , overscanStopIndex : Math . min ( a - 1 , d + b ) } } , _calculateChildrenToRender : function ( ) { var a = this , b = this . options , c = b . width , d = b . height , e = BI . clamp ( b . scrollLeft , 0 , this . _getMaxScrollLeft ( ) ) , f = BI . clamp ( b . scrollTop , 0 , this . _getMaxScrollTop ( ) ) , g = b
this . isValid ( ) && this . fireEvent ( BI . Button . EVENT _CHANGE , this ) } , setText : function ( a ) { BI . Button . superclass . setText . apply ( this , arguments ) , this . text . setText ( a ) } , setValue : function ( a ) { BI . Button . superclass . setValue . apply ( this , arguments ) , this . isReadOnly ( ) || this . text . setValue ( a ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , destroy : function ( ) { BI . Button . superclass . destroy . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.button" , BI . Button ) , BI . Button . EVENT _CHANGE = "EVENT_CHANGE" } ( jQuery ) , BI . TextButton = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . TextButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-button" , textAlign : "center" , whiteSpace : "nowrap" , forceCenter : ! 1 , textWidth : null , textHeight : null , hgap : 0 , lgap : 0 , rgap : 0 , text : "" , py : "" } ) } , _init : function ( ) { BI . TextButton . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : a . textAlign , whiteSpace : a . whiteSpace , textWidth : a . textWidth , textHeight : a . textHeight , forceCenter : a . forceCenter , width : a . width , height : a . height , hgap : a . hgap , lgap : a . lgap , rgap : a . rgap , text : a . text , value : a . value , py : a . py } ) } , doClick : function ( ) { BI . TextButton . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . TextButton . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , setText : function ( a ) { BI . TextButton . superclass . setText . apply ( this , arguments ) , a = BI . isArray ( a ) ? a . join ( "," ) : a , this . text . setText ( a ) } , setStyle : function ( a ) { this . text . setStyle ( a ) } , setValue : function ( a ) { BI . TextButton . superclass . setValue . apply ( this , arguments ) , this . isReadOnly ( ) || ( a = BI . isArray ( a ) ? a . join ( "," ) : a , this . text . setValue ( a ) ) } } ) , BI . TextButton . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_button" , BI . TextButton ) , BI . BlankIconIconTextItem = BI . inherit ( BI . BasicButton , { _const : { commonWidth : 25 } , _defaultConfig : function ( ) { var a = BI . BlankIconIconTextItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-blank-icon-text-item" , logic : { dynamic : ! 1 } , iconCls1 : "close-ha-font" , iconCls2 : "close-ha-font" , blankWidth : 0 , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . BlankIconIconTextItem . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this . _const , c = BI . createWidget ( { type : "bi.layout" , width : a . blankWidth , height : a . height } ) ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , hgap : a . textHgap , vgap : a . textVgap , lgap : a . textLgap , rgap : a . textRgap , text : a . text , value : a . value , keyword : a . keyword , height : a . height } ) , this . icon1 = BI . createWidget ( { type : "bi.icon_button" , cls : a . iconCls1 , forceNotSelected : ! 0 , width : b . commonWidth , height : a . height } ) , this . icon2 = BI . createWidget ( { type : "bi.icon_button" , cls : a . iconCls2 , forceNotSelected : ! 0 , width : b . commonWidth , height : a . height } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , c , this . icon1 , this . icon2 , this . text ) } ) ) ) ) } , doClick : function ( ) { BI . BlankIconIconTextItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . BlankIconIconTextItem . EVENT _CHANGE , this . getValue ( ) , this ) } , setSelected : function ( a ) { BI . BlankIconIconTextItem . superclass . setSelected . apply ( this , arguments ) , this . icon1 . setSelected ( a ) , this . icon2 . setSelected ( a ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } , doRedMark : function ( ) { this . text
BI . Editor . EVENT _ENTER = "EVENT_ENTER" , BI . Editor . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . Editor . EVENT _REMOVE = "EVENT_REMOVE" , BI . Editor . EVENT _EMPTY = "EVENT_EMPTY" , BI . shortcut ( "bi.editor" , BI . Editor ) , BI . MultifileEditor = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . MultifileEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-multifile-editor" , multiple : ! 1 , maxSize : - 1 , accept : "" , url : "" } ) } , _init : function ( ) { var a = this , b = this . options ; BI . MultifileEditor . superclass . _init . apply ( this , arguments ) , this . file = BI . createWidget ( { type : "bi.file" , cls : "multifile-editor" , width : "100%" , height : "100%" , name : b . name , url : b . url , multiple : b . multiple , accept : b . accept , maxSize : b . maxSize } ) , this . file . on ( BI . File . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultifileEditor . EVENT _CHANGE , arguments ) } ) , this . file . on ( BI . File . EVENT _UPLOADSTART , function ( ) { a . fireEvent ( BI . MultifileEditor . EVENT _UPLOADSTART , arguments ) } ) , this . file . on ( BI . File . EVENT _ERROR , function ( ) { a . fireEvent ( BI . MultifileEditor . EVENT _ERROR , arguments ) } ) , this . file . on ( BI . File . EVENT _PROGRESS , function ( ) { a . fireEvent ( BI . MultifileEditor . EVENT _PROGRESS , arguments ) } ) , this . file . on ( BI . File . EVENT _UPLOADED , function ( ) { a . fireEvent ( BI . MultifileEditor . EVENT _UPLOADED , arguments ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.adaptive" , scrollable : ! 1 , items : [ this . file ] } , top : 0 , right : 0 , left : 0 , bottom : 0 } ] } ) } , select : function ( ) { this . file . select ( ) } , getValue : function ( ) { return this . file . getValue ( ) } , upload : function ( ) { this . file . upload ( ) } , reset : function ( ) { this . file . reset ( ) } } ) , BI . MultifileEditor . EVENT _CHANGE = "MultifileEditor.EVENT_CHANGE" , BI . MultifileEditor . EVENT _UPLOADSTART = "MultifileEditor.EVENT_UPLOADSTART" , BI . MultifileEditor . EVENT _ERROR = "MultifileEditor.EVENT_ERROR" , BI . MultifileEditor . EVENT _PROGRESS = "MultifileEditor.EVENT_PROGRESS" , BI . MultifileEditor . EVENT _UPLOADED = "MultifileEditor.EVENT_UPLOADED" , BI . shortcut ( "bi.multifile_editor" , BI . MultifileEditor ) , BI . TextAreaEditor = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return $ . extend ( BI . TextAreaEditor . superclass . _defaultConfig . apply ( ) , { baseCls : "bi-textarea-editor bi-card" , value : "" } ) } , _init : function ( ) { BI . TextAreaEditor . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; this . content = BI . createWidget ( { type : "bi.layout" , tagName : "textarea" , width : "100%" , height : "100%" , cls : "bi-textarea textarea-editor-content display-block" } ) , this . content . element . css ( { resize : "none" } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.adaptive" , items : [ this . content ] } , left : 0 , right : 3 , top : 0 , bottom : 5 } ] } ) , this . content . element . on ( "input propertychange" , function ( a ) { b . _checkWaterMark ( ) , b . fireEvent ( BI . TextAreaEditor . EVENT _CHANGE ) } ) , this . content . element . focus ( function ( ) { b . isValid ( ) && ( b . _focus ( ) , b . fireEvent ( BI . TextAreaEditor . EVENT _FOCUS ) ) , $ ( document ) . bind ( "mousedown." + b . getName ( ) , function ( a ) { BI . DOM . isExist ( b ) && ! b . element . _ _isMouseInBounds _ _ ( a ) && ( $ ( document ) . unbind ( "mousedown." + b . getName ( ) ) , b . content . element . blur ( ) ) } ) } ) , this . content . element . blur ( function ( ) { b . isValid ( ) && ( b . _blur ( ) , b . fireEvent ( BI . TextAreaEditor . EVENT _BLUR ) ) , $ ( document ) . unbind ( "mousedown." + b . getName ( ) ) } ) , BI . isKey ( a . value ) && b . setValue ( a . value ) , BI . isNotNull ( a . style ) && b . setValue ( a . style ) , this . _checkWaterMark ( ) } , _checkWaterMark : function ( ) { var a = this , b = this . options , c = this . getValue ( ) ; BI . isNotEmptyString ( c ) ? ( this . watermark && this . watermark . destroy ( ) , this . watermark = null ) : BI . isNotEmptyString ( b . watermark ) && ( this . watermark ? ( this . watermark . setText ( b . watermark ) , this . watermark . setValid ( ! b . invalid ) , this . watermark . setEnable ( ! b . disabled ) ) : ( this . watermark = BI . createWidget ( { type : "bi.text_button" , cls : "bi-water-mark" , textAlign : "left" , height : 30 , text : b . watermark , invalid : b . invalid , disabled : b . disabled } ) , this . watermark . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . focus ( ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . watermark , left : 0 , top : 0 , right : 0 } ] } ) ) ) } , _focus : function ( ) { this . content . element . addClass ( "textarea-editor-focus" ) , this . _checkWaterMark ( ) } , _blur : function ( ) { this . content . element . removeClass ( "textarea-editor-focus" ) , this . _checkWaterMark ( ) } , focus : function ( ) { this . _focus ( ) , thi
return BI . createWidget ( { type : "bi.right" , items : [ { el : { type : "bi.layout" , width : 3 , height : 30 } } , { el : this . _createBubbleText ( ) } ] } ) } , _right : function ( ) { return BI . createWidget ( { type : "bi.left" , items : [ { el : { type : "bi.layout" , width : 3 , height : 30 } } , { el : this . _createBubbleText ( ) } ] } ) } , setText : function ( a ) { this . text . setText ( a ) } } ) , BI . shortcut ( "bi.bubble" , BI . Bubble ) , BI . Toast = BI . inherit ( BI . Tip , { _const : { minWidth : 200 , hgap : 20 } , _defaultConfig : function ( ) { return BI . extend ( BI . Toast . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-toast" , text : "" , level : "success" , height : 30 } ) } , _init : function ( ) { BI . Toast . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . element . css ( { minWidth : this . _const . minWidth + "px" } ) , this . element . addClass ( "toast-" + a . level ) ; var b = function ( a ) { return a . stopPropagation ( ) , a . stopEvent ( ) , ! 1 } ; this . element . bind ( { click : b , mousedown : b , mouseup : b , mouseover : b , mouseenter : b , mouseleave : b , mousemove : b } ) , this . text = BI . createWidget ( { type : "bi.label" , element : this , text : a . text , height : 30 , hgap : this . _const . hgap } ) } , setWidth : function ( a ) { this . element . width ( a ) } , setText : function ( a ) { this . text . setText ( a ) } } ) , BI . shortcut ( "bi.toast" , BI . Toast ) , BI . Tooltip = BI . inherit ( BI . Tip , { _const : { hgap : 10 } , _defaultConfig : function ( ) { return BI . extend ( BI . Tooltip . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-tooltip" , text : "" , level : "success" , stopEvent : ! 1 , stopPropagation : ! 1 , height : 20 } ) } , _init : function ( ) { BI . Tooltip . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . element . addClass ( "tooltip-" + a . level ) ; var b = function ( b ) { a . stopPropagation && b . stopPropagation ( ) , a . stopEvent && b . stopEvent ( ) } ; this . element . bind ( { click : b , mousedown : b , mouseup : b , mouseover : b , mouseenter : b , mouseleave : b , mousemove : b } ) ; var c = ( a . text + "" ) . split ( "\n" ) ; c . length > 1 ? BI . createWidget ( { type : "bi.vertical" , element : this , hgap : this . _const . hgap , items : BI . map ( c , function ( a , b ) { return { type : "bi.label" , textAlign : "left" , whiteSpace : "normal" , text : b , textHeight : 16 } } ) } ) : this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : "left" , whiteSpace : "normal" , text : a . text , textHeight : 20 , hgap : this . _const . hgap } ) } , setWidth : function ( a ) { this . element . width ( a - 2 * this . _const . hgap ) } , setText : function ( a ) { this . text && this . text . setText ( a ) } , setLevel : function ( a ) { this . element . removeClass ( "tooltip-success" ) . removeClass ( "tooltip-warning" ) , this . element . addClass ( "tooltip-" + a ) } } ) , BI . shortcut ( "bi.tooltip" , BI . Tooltip ) , BI . Trigger = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Trigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-trigger cursor-pointer" , height : 24 } ) } , _init : function ( ) { BI . Trigger . superclass . _init . apply ( this , arguments ) } , setKey : function ( ) { } , getKey : function ( ) { } } ) , function ( a ) { a ( CodeMirror ) } ( function ( a ) { function b ( a ) { return "[object Array]" == Object . prototype . toString . call ( a ) } function c ( b ) { var c = b . doc . modeOption ; return "sql" === c && ( c = "text/x-sql" ) , a . resolveMode ( c ) . keywords } function d ( b ) { var c = b . doc . modeOption ; return "sql" === c && ( c = "text/x-sql" ) , a . resolveMode ( c ) . identifierQuote || "`" } function e ( a ) { return "string" == typeof a ? a : a . text } function f ( a , c ) { return b ( c ) && ( c = { columns : c } ) , c . text || ( c . text = a ) , c } function g ( a ) { var c = { } ; if ( b ( a ) ) for ( var d = a . length - 1 ; d >= 0 ; d -- ) { var g = a [ d ] ; c [ e ( g ) . toUpperCase ( ) ] = f ( e ( g ) , g ) } else if ( a ) for ( var h in a ) c [ h . toUpperCase ( ) ] = f ( h , a [ h ] ) ; return c } function h ( a ) { return q [ a . toUpperCase ( ) ] } function i ( a ) { var b = { } ; for ( var c in a ) a . hasOwnProperty ( c ) && ( b [ c ] = a [ c ] ) ; return b } function j ( a , b ) { if ( BI . isNotEmptyString ( a ) && b . length !== a . length ) { var c = a . length , d = e ( b ) . substr ( 0 , c ) ; return a . toUpperCase ( ) === d . toUpperCase ( ) } } function k ( a , c , d , e ) { if ( b ( d ) ) for ( var f = 0 ; f < d . length ; f ++ ) j ( c , d [ f ] ) && a . push ( e ( d [ f ] , f ) ) ; else for ( var g in d ) if ( d . hasOwnProperty ( g ) ) { var h = d [ g ] ; h = h && h !== ! 0 ? h . displayText ? { text : h . text , displayText : h . displayText } : h . text : g , j ( c , h ) && a . push ( e ( h ) ) } } function l ( a ) { "." == a . charAt ( 0 ) && ( a = a . substr ( 1 ) ) ; for ( var b = a . split ( t + t ) , c = 0 ; c < b . length ; c ++ ) b [ c ] = b [ c ] . replace ( new RegExp ( t , "g" ) , "" ) ; return b . join ( t ) } function m ( a ) { for ( var b = e ( a ) . split ( "." ) , c = 0 ; c < b . length ; c ++ ) b [ c ] = t + b [ c ] . replace ( new RegExp ( t , "g" ) , t + t ) + t ; var d = b . join ( "." ) ; return "string" == typeof a ? d : ( a = i ( a ) , a . text = d , a ) } function n ( a , b , c , d ) { for ( v
toString : f } ; if ( "none" == a ) return { r : - 1 , g : - 1 , b : - 1 , hex : "none" , toString : f } ; ! ( ea [ y ] ( a . toLowerCase ( ) . substring ( 0 , 2 ) ) || "#" == a . charAt ( ) ) && ( a = sa ( a ) ) ; var c , d , e , g , h , i , j = a . match ( W ) ; return j ? ( j [ 2 ] && ( e = _ ( j [ 2 ] . substring ( 5 ) , 16 ) , d = _ ( j [ 2 ] . substring ( 3 , 5 ) , 16 ) , c = _ ( j [ 2 ] . substring ( 1 , 3 ) , 16 ) ) , j [ 3 ] && ( e = _ ( ( h = j [ 3 ] . charAt ( 3 ) ) + h , 16 ) , d = _ ( ( h = j [ 3 ] . charAt ( 2 ) ) + h , 16 ) , c = _ ( ( h = j [ 3 ] . charAt ( 1 ) ) + h , 16 ) ) , j [ 4 ] && ( i = j [ 4 ] [ I ] ( da ) , c = $ ( i [ 0 ] ) , "%" == i [ 0 ] . slice ( - 1 ) && ( c *= 2.55 ) , d = $ ( i [ 1 ] ) , "%" == i [ 1 ] . slice ( - 1 ) && ( d *= 2.55 ) , e = $ ( i [ 2 ] ) , "%" == i [ 2 ] . slice ( - 1 ) && ( e *= 2.55 ) , "rgba" == j [ 1 ] . toLowerCase ( ) . slice ( 0 , 4 ) && ( g = $ ( i [ 3 ] ) ) , i [ 3 ] && "%" == i [ 3 ] . slice ( - 1 ) && ( g /= 100 ) ) , j [ 5 ] ? ( i = j [ 5 ] [ I ] ( da ) , c = $ ( i [ 0 ] ) , "%" == i [ 0 ] . slice ( - 1 ) && ( c *= 2.55 ) , d = $ ( i [ 1 ] ) , "%" == i [ 1 ] . slice ( - 1 ) && ( d *= 2.55 ) , e = $ ( i [ 2 ] ) , "%" == i [ 2 ] . slice ( - 1 ) && ( e *= 2.55 ) , ( "deg" == i [ 0 ] . slice ( - 3 ) || "°" == i [ 0 ] . slice ( - 1 ) ) && ( c /= 360 ) , "hsba" == j [ 1 ] . toLowerCase ( ) . slice ( 0 , 4 ) && ( g = $ ( i [ 3 ] ) ) , i [ 3 ] && "%" == i [ 3 ] . slice ( - 1 ) && ( g /= 100 ) , b . hsb2rgb ( c , d , e , g ) ) : j [ 6 ] ? ( i = j [ 6 ] [ I ] ( da ) , c = $ ( i [ 0 ] ) , "%" == i [ 0 ] . slice ( - 1 ) && ( c *= 2.55 ) , d = $ ( i [ 1 ] ) , "%" == i [ 1 ] . slice ( - 1 ) && ( d *= 2.55 ) , e = $ ( i [ 2 ] ) , "%" == i [ 2 ] . slice ( - 1 ) && ( e *= 2.55 ) , ( "deg" == i [ 0 ] . slice ( - 3 ) || "°" == i [ 0 ] . slice ( - 1 ) ) && ( c /= 360 ) , "hsla" == j [ 1 ] . toLowerCase ( ) . slice ( 0 , 4 ) && ( g = $ ( i [ 3 ] ) ) , i [ 3 ] && "%" == i [ 3 ] . slice ( - 1 ) && ( g /= 100 ) , b . hsl2rgb ( c , d , e , g ) ) : ( j = { r : c , g : d , b : e , toString : f } , j . hex = "#" + ( 16777216 | e | d << 8 | c << 16 ) . toString ( 16 ) . slice ( 1 ) , b . is ( g , "finite" ) && ( j . opacity = g ) , j ) ) : { r : - 1 , g : - 1 , b : - 1 , hex : "none" , error : 1 , toString : f } } , b ) , b . hsb = e ( function ( a , c , d ) { return b . hsb2rgb ( a , c , d ) . hex } ) , b . hsl = e ( function ( a , c , d ) { return b . hsl2rgb ( a , c , d ) . hex } ) , b . rgb = e ( function ( a , b , c ) { function d ( a ) { return a + . 5 | 0 } return "#" + ( 16777216 | d ( c ) | d ( b ) << 8 | d ( a ) << 16 ) . toString ( 16 ) . slice ( 1 ) } ) , b . getColor = function ( a ) { var b = this . getColor . start = this . getColor . start || { h : 0 , s : 1 , b : a || . 75 } , c = this . hsb2rgb ( b . h , b . s , b . b ) ; return b . h += . 075 , b . h > 1 && ( b . h = 0 , b . s -= . 2 , b . s <= 0 && ( this . getColor . start = { h : 0 , s : 1 , b : b . b } ) ) , c . hex } , b . getColor . reset = function ( ) { delete this . start } , b . parsePathString = function ( a ) { if ( ! a ) return null ; var c = ya ( a ) ; if ( c . arr ) return Aa ( c . arr ) ; var d = { a : 7 , c : 6 , h : 1 , l : 2 , m : 2 , r : 4 , q : 4 , s : 4 , t : 2 , v : 1 , z : 0 } , e = [ ] ; return b . is ( a , U ) && b . is ( a [ 0 ] , U ) && ( e = Aa ( a ) ) , e . length || H ( a ) . replace ( ga , function ( a , b , c ) { var f = [ ] , g = b . toLowerCase ( ) ; if ( c . replace ( ia , function ( a , b ) { b && f . push ( + b ) } ) , "m" == g && f . length > 2 && ( e . push ( [ b ] [ D ] ( f . splice ( 0 , 2 ) ) ) , g = "l" , b = "m" == b ? "l" : "L" ) , "r" == g ) e . push ( [ b ] [ D ] ( f ) ) ; else for ( ; f . length >= d [ g ] && ( e . push ( [ b ] [ D ] ( f . splice ( 0 , d [ g ] ) ) ) , d [ g ] ) ; ) ; } ) , e . toString = b . _path2string , c . arr = Aa ( e ) , e } , b . parseTransformString = e ( function ( a ) { if ( ! a ) return null ; var c = [ ] ; return b . is ( a , U ) && b . is ( a [ 0 ] , U ) && ( c = Aa ( a ) ) , c . length || H ( a ) . replace ( ha , function ( a , b , d ) { var e = [ ] ; L . call ( b ) ; d . replace ( ia , function ( a , b ) { b && e . push ( + b ) } ) , c . push ( [ b ] [ D ] ( e ) ) } ) , c . toString = b . _path2string , c } ) ; var ya = function ( a ) { var b = ya . ps = ya . ps || { } ; return b [ a ] ? b [ a ] . sleep = 100 : b [ a ] = { sleep : 100 } , setTimeout ( function ( ) { for ( var c in b ) b [ y ] ( c ) && c != a && ( b [ c ] . sleep -- , ! b [ c ] . sleep && delete b [ c ] ) } ) , b [ a ] } ; b . findDotsAtSegment = function ( a , b , c , d , e , f , g , h , i ) { var j = 1 - i , k = Q ( j , 3 ) , l = Q ( j , 2 ) , m = i * i , n = m * i , o = k * a + 3 * l * i * c + 3 * j * i * i * e + n * g , p = k * b + 3 * l * i * d + 3 * j * i * i * f + n * h , q = a + 2 * i * ( c - a ) + m * ( e - 2 * c + a ) , r = b + 2 * i * ( d - b ) + m * ( f - 2 * d + b ) , s = c + 2 * i * ( e - c ) + m * ( g - 2 * e + c ) , t = d + 2 * i * ( f - d ) + m * ( h - 2 * f + d ) , u = j * a + i * c , v = j * b + i * d , w = j * e + i * g , x = j * f + i * h , y = 90 - 180 * M . atan2 ( q - s , r - t ) / R ; return ( q > s || r < t ) && ( y += 180 ) , { x : o , y : p , m : { x : q , y : r } , n : { x : s , y : t } , start : { x : u , y : v } , end : { x : w , y : x } , alpha : y } } , b . bezierBBox = function ( a , c , d , e , f , g , h , i ) { b . is ( a , "array" ) || ( a = [ a , c , d , e , f , g , h , i ] ) ; var j = Ha . apply ( null , a ) ; return { x : j . min . x , y : j . min . y , x2 : j . max . x , y2 : j . max . y , width : j . max . x - j . min . x , height : j . max . y - j . min . y } } , b . isPointInsideBBox = function ( a , b , c ) { return b >= a . x && b <= a . x2 && c >= a . y && c <= a . y2 } , b . isBBoxIntersect = function ( a , c ) { var d = b . isPointInsideBBox ; return d ( c , a . x , a . y ) || d ( c , a . x2 , a . y ) || d ( c , a . x , a . y2 ) || d ( c , a . x2 , a . y2 ) || d ( a , c . x , c . y ) || d ( a , c . x2 , c . y ) || d ( a , c . x , c . y2 ) || d ( a , c . x2 , c . y2 ) || ( a . x < c . x2 && a . x > c . x || c . x < a . x2 && c . x > a . x ) && ( a . y < c . y2 && a . y > c . y || c . y < a . y2 && c . y > a . y ) } , b . pathIntersection = function ( a , b ) { return m ( a , b ) } , b . pathIntersectionNumber = function ( a , b ) { return m ( a , b , 1 ) } , b . isPointInsidePath = function ( a , c , d ) { var e = b . pathBBox ( a ) ; return b . isPointInsideBBox ( e , c , d ) && m ( a , [ [ "M" , c , d ] , [ "H" , e . x2 + 10 ] ] , 1 ) % 2 == 1 } , b . _removedFactory = function ( b ) { return function ( ) { a ( "raphael.log" , null , " Raphaël : you are
return this } , kb . clear = function ( ) { for ( ; this . length ; ) this . pop ( ) } , kb . splice = function ( a , b , c ) { a = a < 0 ? N ( this . length + a , 0 ) : a , b = N ( 0 , O ( this . length - a , b ) ) ; var d , e = [ ] , f = [ ] , g = [ ] ; for ( d = 2 ; d < arguments . length ; d ++ ) g . push ( arguments [ d ] ) ; for ( d = 0 ; d < b ; d ++ ) f . push ( this [ a + d ] ) ; for ( ; d < this . length - a ; d ++ ) e . push ( this [ a + d ] ) ; var h = g . length ; for ( d = 0 ; d < h + e . length ; d ++ ) this . items [ a + d ] = this [ a + d ] = d < h ? g [ d ] : e [ d - h ] ; for ( d = this . items . length = this . length -= b - h ; this [ d ] ; ) delete this [ d ++ ] ; return new jb ( f ) } , kb . exclude = function ( a ) { for ( var b = 0 , c = this . length ; b < c ; b ++ ) if ( this [ b ] == a ) return this . splice ( b , 1 ) , ! 0 } , kb . animate = function ( a , c , d , e ) { ( b . is ( d , "function" ) || ! d ) && ( e = d || null ) ; var f , g , h = this . items . length , i = h , j = this ; if ( ! h ) return this ; e && ( g = function ( ) { ! -- h && e . call ( j ) } ) , d = b . is ( d , T ) ? d : g ; var k = b . animation ( a , c , d , g ) ; for ( f = this . items [ -- i ] . animate ( k ) ; i -- ; ) this . items [ i ] && ! this . items [ i ] . removed && this . items [ i ] . animateWith ( f , k , k ) , this . items [ i ] && ! this . items [ i ] . removed || h -- ; return this } , kb . insertAfter = function ( a ) { for ( var b = this . items . length ; b -- ; ) this . items [ b ] . insertAfter ( a ) ; return this } , kb . getBBox = function ( ) { for ( var a = [ ] , b = [ ] , c = [ ] , d = [ ] , e = this . items . length ; e -- ; ) if ( ! this . items [ e ] . removed ) { var f = this . items [ e ] . getBBox ( ) ; a . push ( f . x ) , b . push ( f . y ) , c . push ( f . x + f . width ) , d . push ( f . y + f . height ) } return a = O [ C ] ( 0 , a ) , b = O [ C ] ( 0 , b ) , c = N [ C ] ( 0 , c ) , d = N [ C ] ( 0 , d ) , { x : a , y : b , x2 : c , y2 : d , width : c - a , height : d - b } } , kb . clone = function ( a ) { a = this . paper . set ( ) ; for ( var b = 0 , c = this . items . length ; b < c ; b ++ ) a . push ( this . items [ b ] . clone ( ) ) ; return a } , kb . toString = function ( ) { return "Raphaël‘s set" } , kb . glow = function ( a ) { var b = this . paper . set ( ) ; return this . forEach ( function ( c , d ) { var e = c . glow ( a ) ; null != e && e . forEach ( function ( a , c ) { b . push ( a ) } ) } ) , b } , kb . isPointInside = function ( a , b ) { var c = ! 1 ; return this . forEach ( function ( d ) { if ( d . isPointInside ( a , b ) ) return c = ! 0 , ! 1 } ) , c } , b . registerFont = function ( a ) { if ( ! a . face ) return a ; this . fonts = this . fonts || { } ; var b = { w : a . w , face : { } , glyphs : { } } , c = a . face [ "font-family" ] ; for ( var d in a . face ) a . face [ y ] ( d ) && ( b . face [ d ] = a . face [ d ] ) ; if ( this . fonts [ c ] ? this . fonts [ c ] . push ( b ) : this . fonts [ c ] = [ b ] , ! a . svg ) { b . face [ "units-per-em" ] = _ ( a . face [ "units-per-em" ] , 10 ) ; for ( var e in a . glyphs ) if ( a . glyphs [ y ] ( e ) ) { var f = a . glyphs [ e ] ; if ( b . glyphs [ e ] = { w : f . w , k : { } , d : f . d && "M" + f . d . replace ( /[mlcxtrv]/g , function ( a ) { return { l : "L" , c : "C" , x : "z" , t : "m" , r : "l" , v : "c" } [ a ] || "M" } ) + "z" } , f . k ) for ( var g in f . k ) f [ y ] ( g ) && ( b . glyphs [ e ] . k [ g ] = f . k [ g ] ) } } return a } , u . getFont = function ( a , c , d , e ) { if ( e = e || "normal" , d = d || "normal" , c = + c || { normal : 400 , bold : 700 , lighter : 300 , bolder : 800 } [ c ] || 400 , b . fonts ) { var f = b . fonts [ a ] ; if ( ! f ) { var g = new RegExp ( "(^|\\s)" + a . replace ( /[^\w\d\s+!~.:_-]/g , F ) + "(\\s|$)" , "i" ) ; for ( var h in b . fonts ) if ( b . fonts [ y ] ( h ) && g . test ( h ) ) { f = b . fonts [ h ] ; break } } var i ; if ( f ) for ( var j = 0 , k = f . length ; j < k && ( i = f [ j ] , i . face [ "font-weight" ] != c || i . face [ "font-style" ] != d && i . face [ "font-style" ] || i . face [ "font-stretch" ] != e ) ; j ++ ) ; return i } } , u . print = function ( a , c , d , e , f , g , h , i ) { g = g || "middle" , h = N ( O ( h || 0 , 1 ) , - 1 ) , i = N ( O ( i || 1 , 3 ) , 1 ) ; var j , k = H ( d ) [ I ] ( F ) , l = 0 , m = 0 , n = F ; if ( b . is ( e , "string" ) && ( e = this . getFont ( e ) ) , e ) { j = ( f || 16 ) / e . face [ "units-per-em" ] ; for ( var o = e . face . bbox [ I ] ( v ) , p = + o [ 0 ] , q = o [ 3 ] - o [ 1 ] , r = 0 , s = + o [ 1 ] + ( "baseline" == g ? q + + e . face . descent : q / 2 ) , t = 0 , u = k . length ; t < u ; t ++ ) { if ( "\n" == k [ t ] ) l = 0 , x = 0 , m = 0 , r += q * i ; else { var w = m && e . glyphs [ k [ t - 1 ] ] || { } , x = e . glyphs [ k [ t ] ] ; l += m ? ( w . w || e . w ) + ( w . k && w . k [ k [ t ] ] || 0 ) + e . w * h : 0 , m = 1 } x && x . d && ( n += b . transformPath ( x . d , [ "t" , l * j , r * j , "s" , j , j , p , s , "t" , ( a - p ) / j , ( c - s ) / j ] ) ) } } return this . path ( n ) . attr ( { fill : "#000" , stroke : "none" } ) } , u . add = function ( a ) { if ( b . is ( a , "array" ) ) for ( var c , d = this . set ( ) , e = 0 , f = a . length ; e < f ; e ++ ) c = a [ e ] || { } , w [ y ] ( c . type ) && d . push ( this [ c . type ] ( ) . attr ( c ) ) ; return d } , b . format = function ( a , c ) { var d = b . is ( c , U ) ? [ 0 ] [ D ] ( c ) : arguments ; return a && b . is ( a , T ) && d . length - 1 && ( a = a . replace ( x , function ( a , b ) { return null == d [ ++ b ] ? F : d [ b ] } ) ) , a || F } , b . fullfill = function ( ) { var a = /\{([^\}]+)\}/g , b = /(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g , c = function ( a , c , d ) { var e = d ; return c . replace ( b , function ( a , b , c , d , f ) { b = b || d , e && ( b in e && ( e = e [ b ] ) , "function" == typeof e && f && ( e = e ( ) ) ) } ) , e = ( null == e || e == d ? a : e ) + "" } ; return function ( b , d ) { return String ( b ) . replace ( a , function ( a , b ) { return c ( a , b , d ) } ) } } ( ) , b . ninja = function ( ) { return A . was ? z . win . Raphael = A . is : delete Raphael , b } , b . st = kb , a . on ( " raphael .
i . offset = h . offset ( ) ; return null !== d && ( this . _ . transform = d , a . _extractTransform ( this , d ) ) , this } , E . rotate = function ( a , b , e ) { if ( this . removed ) return this ; if ( null != a ) { if ( a = c ( a ) . split ( k ) , a . length - 1 && ( b = d ( a [ 1 ] ) , e = d ( a [ 2 ] ) ) , a = d ( a [ 0 ] ) , null == e && ( b = e ) , null == b || null == e ) { var f = this . getBBox ( 1 ) ; b = f . x + f . width / 2 , e = f . y + f . height / 2 } return this . _ . dirtyT = 1 , this . transform ( this . _ . transform . concat ( [ [ "r" , a , b , e ] ] ) ) , this } } , E . translate = function ( a , b ) { return this . removed ? this : ( a = c ( a ) . split ( k ) , a . length - 1 && ( b = d ( a [ 1 ] ) ) , a = d ( a [ 0 ] ) || 0 , b = + b || 0 , this . _ . bbox && ( this . _ . bbox . x += a , this . _ . bbox . y += b ) , this . transform ( this . _ . transform . concat ( [ [ "t" , a , b ] ] ) ) , this ) } , E . scale = function ( a , b , e , f ) { if ( this . removed ) return this ; if ( a = c ( a ) . split ( k ) , a . length - 1 && ( b = d ( a [ 1 ] ) , e = d ( a [ 2 ] ) , f = d ( a [ 3 ] ) , isNaN ( e ) && ( e = null ) , isNaN ( f ) && ( f = null ) ) , a = d ( a [ 0 ] ) , null == b && ( b = a ) , null == f && ( e = f ) , null == e || null == f ) var g = this . getBBox ( 1 ) ; return e = null == e ? g . x + g . width / 2 : e , f = null == f ? g . y + g . height / 2 : f , this . transform ( this . _ . transform . concat ( [ [ "s" , a , b , e , f ] ] ) ) , this . _ . dirtyT = 1 , this } , E . hide = function ( ) { return ! this . removed && ( this . node . style . display = "none" ) , this } , E . show = function ( ) { return ! this . removed && ( this . node . style . display = o ) , this } , E . auxGetBBox = a . el . getBBox , E . getBBox = function ( ) { var a = this . auxGetBBox ( ) ; if ( this . paper && this . paper . _viewBoxShift ) { var b = { } , c = 1 / this . paper . _viewBoxShift . scale ; return b . x = a . x - this . paper . _viewBoxShift . dx , b . x *= c , b . y = a . y - this . paper . _viewBoxShift . dy , b . y *= c , b . width = a . width * c , b . height = a . height * c , b . x2 = b . x + b . width , b . y2 = b . y + b . height , b } return a } , E . _getBBox = function ( ) { return this . removed ? { } : { x : this . X + ( this . bbx || 0 ) - this . W / 2 , y : this . Y - this . H , width : this . W , height : this . H } } , E . remove = function ( ) { if ( ! this . removed && this . node . parentNode ) { this . paper . _ _set _ _ && this . paper . _ _set _ _ . exclude ( this ) , a . eve . unbind ( "raphael.*.*." + this . id ) , a . _tear ( this , this . paper ) , this . node . parentNode . removeChild ( this . node ) , this . shape && this . shape . parentNode . removeChild ( this . shape ) ; for ( var b in this ) this [ b ] = "function" == typeof this [ b ] ? a . _removedFactory ( b ) : null ; this . removed = ! 0 } } , E . attr = function ( c , d ) { if ( this . removed ) return this ; if ( null == c ) { var e = { } ; for ( var f in this . attrs ) this . attrs [ b ] ( f ) && ( e [ f ] = this . attrs [ f ] ) ; return e . gradient && "none" == e . fill && ( e . fill = e . gradient ) && delete e . gradient , e . transform = this . _ . transform , e } if ( null == d && a . is ( c , "string" ) ) { if ( c == j && "none" == this . attrs . fill && this . attrs . gradient ) return this . attrs . gradient ; for ( var g = c . split ( k ) , h = { } , i = 0 , m = g . length ; i < m ; i ++ ) c = g [ i ] , c in this . attrs ? h [ c ] = this . attrs [ c ] : a . is ( this . paper . customAttributes [ c ] , "function" ) ? h [ c ] = this . paper . customAttributes [ c ] . def : h [ c ] = a . _availableAttrs [ c ] ; return m - 1 ? h : h [ g [ 0 ] ] } if ( this . attrs && null == d && a . is ( c , "array" ) ) { for ( h = { } , i = 0 , m = c . length ; i < m ; i ++ ) h [ c [ i ] ] = this . attr ( c [ i ] ) ; return h } var n ; null != d && ( n = { } , n [ c ] = d ) , null == d && a . is ( c , "object" ) && ( n = c ) ; for ( var o in n ) l ( "raphael.attr." + o + "." + this . id , this , n [ o ] ) ; if ( n ) { for ( o in this . paper . customAttributes ) if ( this . paper . customAttributes [ b ] ( o ) && n [ b ] ( o ) && a . is ( this . paper . customAttributes [ o ] , "function" ) ) { var p = this . paper . customAttributes [ o ] . apply ( this , [ ] . concat ( n [ o ] ) ) ; this . attrs [ o ] = n [ o ] ; for ( var q in p ) p [ b ] ( q ) && ( n [ q ] = p [ q ] ) } n . text && "text" == this . type && ( this . textpath . string = n . text ) , B ( this , n ) } return this } , E . toFront = function ( ) { return ! this . removed && this . node . parentNode . appendChild ( this . node ) , this . paper && this . paper . top != this && a . _tofront ( this , this . paper ) , this } , E . toBack = function ( ) { return this . removed ? this : ( this . node . parentNode . firstChild != this . node && ( this . node . parentNode . insertBefore ( this . node , this . node . parentNode . firstChild ) , a . _toback ( this , this . paper ) ) , this ) } , E . insertAfter = function ( b ) { return this . removed ? this : ( b . constructor == a . st . constructor && ( b = b [ b . length - 1 ] ) , b . node . nextSibling ? b . node . parentNode . insertBefore ( this . node , b . node . nextSibling ) : b . node . parentNode . appendChild ( this . node ) , a . _insertafter ( this , b , this . paper ) , this ) } , E . insertBefore = function ( b ) { return this . removed ? this : ( b . constructor == a . st . constructor && ( b = b [ 0 ] ) , b . node . parentNode . insertBefore ( this . node , b . node ) , a . _insertbefore ( this , b , this . paper ) , this ) } , E . blur = function ( b ) { var c = this . node . runtimeStyle , d = c . filter ; return d = d . replace ( r , o ) , 0 !== + b ? ( this . attrs . blur = b , c . filter = d + n + m + ".Blur(pixelradius=" + ( + b || 1.5 ) + ")" , c . margin = a . format (
a . bottomLeftGrid . setScrollLeft ( b . scrollLeft ) , a . _populateScrollbar ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , this . topRightGrid = BI . createWidget ( { type : "bi.grid_view" , rowHeightGetter : c , columnWidthGetter : e } ) , this . topRightGrid . on ( BI . GridView . EVENT _SCROLL , function ( b ) { a . bottomRightGrid . setScrollLeft ( b . scrollLeft ) , a . _populateScrollbar ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , this . bottomLeftGrid = BI . createWidget ( { type : "bi.grid_view" , rowHeightGetter : c , columnWidthGetter : d } ) , this . bottomLeftGrid . on ( BI . GridView . EVENT _SCROLL , function ( b ) { a . bottomRightGrid . setScrollTop ( b . scrollTop ) , a . topLeftGrid . setScrollLeft ( b . scrollLeft ) , a . _populateScrollbar ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , this . bottomRightGrid = BI . createWidget ( { type : "bi.grid_view" , rowHeightGetter : c , columnWidthGetter : e } ) , this . bottomRightGrid . on ( BI . GridView . EVENT _SCROLL , function ( b ) { a . bottomLeftGrid . setScrollTop ( b . scrollTop ) , a . topRightGrid . setScrollLeft ( b . scrollLeft ) , a . _populateScrollbar ( ) , a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , this . topLeft = BI . createWidget ( { type : "bi.vertical" , scrollable : ! 1 , scrolly : ! 1 , items : [ this . topLeftGrid ] } ) , this . topRight = BI . createWidget ( { type : "bi.vertical" , scrollable : ! 1 , scrolly : ! 1 , items : [ this . topRightGrid ] } ) , this . bottomLeft = BI . createWidget ( { type : "bi.vertical" , scrollable : ! 1 , scrolly : ! 1 , items : [ this . bottomLeftGrid ] } ) , this . bottomRight = BI . createWidget ( { type : "bi.vertical" , scrollable : ! 1 , scrolly : ! 1 , items : [ this . bottomRightGrid ] } ) , this . contextLayout = BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . topLeft , top : 0 , left : 0 } , { el : this . topRight , top : 0 } , { el : this . bottomLeft , left : 0 } , { el : this . bottomRight } ] } ) , this . topScrollbar = BI . createWidget ( { type : "bi.grid_table_scrollbar" , width : BI . GridTableScrollbar . SIZE } ) , this . topScrollbar . on ( BI . GridTableScrollbar . EVENT _SCROLL , function ( b ) { a . bottomLeftGrid . setScrollTop ( b ) , a . bottomRightGrid . setScrollTop ( b ) , a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , this . leftScrollbar = BI . createWidget ( { type : "bi.grid_table_horizontal_scrollbar" , height : BI . GridTableScrollbar . SIZE } ) , this . leftScrollbar . on ( BI . GridTableHorizontalScrollbar . EVENT _SCROLL , function ( b ) { a . topLeftGrid . setScrollLeft ( b ) , a . bottomLeftGrid . setScrollLeft ( b ) , a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , this . rightScrollbar = BI . createWidget ( { type : "bi.grid_table_horizontal_scrollbar" , height : BI . GridTableScrollbar . SIZE } ) , this . rightScrollbar . on ( BI . GridTableHorizontalScrollbar . EVENT _SCROLL , function ( b ) { a . topRightGrid . setScrollLeft ( b ) , a . bottomRightGrid . setScrollLeft ( b ) , a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , this . scrollBarLayout = BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . topScrollbar , right : 0 , top : 0 } , { el : this . leftScrollbar , left : 0 } , { el : this . rightScrollbar } ] } ) , this . _width = b . width - BI . GridTableScrollbar . SIZE , this . _height = b . height - BI . GridTableScrollbar . SIZE , this . header = this . _getHeader ( ) , this . items = this . _getItems ( ) } , mounted : function ( ) { var a = this . options ; ( a . items . length > 0 || a . header . length > 0 ) && this . _populate ( ) } , _getFreezeColLength : function ( ) { var a = this . options ; return a . isNeedFreeze === ! 0 ? BI . clamp ( a . freezeCols . length , 0 , a . columnSize . length ) : 0 } , _getFreezeHeaderHeight : function ( ) { var a = this . options ; return a . header . length * a . headerRowSize >= this . _height ? 0 : a . header . length * a . headerRowSize } , _getActualItems : function ( ) { var a = this . options ; return a . header . length * a . headerRowSize >= this . _height ? a . header . concat ( a . items ) : a . items } , _populateScrollbar : function ( ) { var a = this . options , b = this . getRegionSize ( ) , c = 0 , d = 0 , e = 0 , f = [ ] ; BI . each ( a . columnSize , function ( b , g ) { a . isNeedFreeze === ! 0 && a . freezeCols . contains ( b ) ? c += g : d += g , e += g , 0 === b ? f [ b ] = g : f [ b ] = f [ b - 1 ] + g } ) , this . topScrollbar . setContentSize ( this . _getActualItems ( ) . length * a . rowSize ) , this . topScrollbar . setSize ( this . _height - this . _getFreezeHeaderHeight ( ) ) , this . topScrollbar . setPosition ( Math . min ( this . bottomLeftGrid . getScrollTop ( ) , this . bottomRightGrid . getScrollTop ( ) ) ) , this . topScrollbar . populate ( ) , this . leftScrollbar . setContentSize ( c ) , this . leftScrollbar . setSize ( b ) , this . leftScrollbar . setPosition ( this . bottomLeftGrid . getScrollLeft ( ) ) , this . leftScrollbar . populate ( ) , this . rightScrollbar . setContentSize ( d ) , this . righ
return e } , _createColGroup : function ( a , b , c ) { this . options ; return this . colgroup = this . _colgroup ( ) , this . colgroup . element . append ( this . _createColGroupCells ( a , b , c ) ) , this . colgroup } , _createHeader : function ( ) { var a = this . options ; if ( a . header !== ! 1 ) return this . header = this . _header ( ) , this . header . element . append ( this . _createHeaderCells ( a . header , null , null , this . headerTds , this . headerItems ) ) , this . header } , _createFooter : function ( a , b , c ) { var d = this . options ; if ( d . footer !== ! 1 ) return this . footer = this . _footer ( ) , this . footer . element . append ( this . _createFooterCells ( d . footer , null , this . footerTds , this . footerItems ) ) , this . footer } , _createBody : function ( ) { var a = this . options ; return this . body = this . _body ( ) , this . body . element . append ( this . _createCells ( a . items , null , null , this . bodyTds , this . bodyItems ) ) , this . body } , _createNormalTable : function ( ) { var a = this , b = this . options , c = this . _table ( ) ; this . colgroupTds = { } , this . headerTds = { } , this . footerTds = { } , this . bodyTds = { } , this . headerItems = { } , this . footerItems = { } , this . bodyItems = { } ; var d = this . _createColGroup ( null , this . colgroupTds ) , e = this . _createHeader ( ) , f = this . _createFooter ( ) , g = this . _createBody ( ) ; BI . createWidget ( { type : "bi.adaptive" , element : c , items : [ d , e , f , g ] } ) ; var h = BI . sum ( this . options . columnSize ) || void 0 ; h = this . _calculateWidth ( h ) , BI . isNumeric ( h ) && h > 1 && ( h += b . columnSize . length ) , this . tableContainer = BI . createWidget ( { type : "bi.adaptive" , width : this . _calculateWidth ( h ) , items : [ c ] } ) , this . scrollBottomRight = BI . createWidget ( { type : "bi.adaptive" , width : "100%" , height : "100%" , cls : "scroll-bottom-right" , scrollable : ! 0 , items : [ this . tableContainer ] } ) , BI . createWidget ( { type : "bi.adaptive" , cls : "bottom-right" , element : this , scrollable : ! 1 , items : [ this . scrollBottomRight ] } ) , this . _initNormalScroll ( ) , BI . nextTick ( function ( ) { a . element . is ( ":visible" ) && a . fireEvent ( BI . Table . EVENT _TABLE _AFTER _INIT ) } ) } , _initNormalScroll : function ( ) { var a = this ; this . scrollBottomRight . element . scroll ( function ( b ) { a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL ) } ) } , _split : function ( a ) { var b = this . options , c = [ ] , d = [ ] , e = this . _isRightFreeze ( ) ; return BI . each ( a , function ( a , f ) { c . push ( [ ] ) , d . push ( [ ] ) , BI . each ( f , function ( f , g ) { b . freezeCols . contains ( f ) ? ( e ? d : c ) [ a ] . push ( g ) : ( e ? c : d ) [ a ] . push ( g ) } ) } ) , { left : c , right : d } } , _table : function ( ) { return BI . createWidget ( { type : "bi.layout" , tagName : "table" , cls : "table" , attribute : { cellspacing : 0 , cellpadding : 0 } } ) } , _header : function ( ) { return BI . createWidget ( { type : "bi.layout" , cls : "header" , tagName : "thead" } ) } , _footer : function ( ) { return BI . createWidget ( { type : "bi.layout" , cls : "footer" , tagName : "tfoot" } ) } , _body : function ( ) { return BI . createWidget ( { type : "bi.layout" , tagName : "tbody" , cls : "body" } ) } , _colgroup : function ( ) { return BI . createWidget ( { type : "bi.layout" , tagName : "colgroup" } ) } , render : function ( ) { this . populate ( this . options . items ) } , setColumnSize : function ( a ) { var b = this , c = this . options , d = this . _isRightFreeze ( ) ; if ( c . columnSize = a || [ ] , c . isNeedFreeze ) { var e = [ ] , f = [ ] ; BI . each ( c . columnSize , function ( a , b ) { c . freezeCols . contains ( a ) ? d ? f . push ( b ) : e . push ( b ) : d ? e . push ( b ) : f . push ( b ) } ) ; var g = 0 , h = 1 , i = 2 , j = 3 , k = function ( a ) { var c , d , k , l ; switch ( a ) { case g : c = b . topLeftColGroupTds , d = b . topLeftBodyTds , k = b . topLeftBodyItems , l = e ; break ; case h : c = b . topRightColGroupTds , d = b . topRightBodyTds , k = b . topRightBodyItems , l = f ; break ; case i : c = b . bottomLeftColGroupTds , d = b . bottomLeftBodyTds , k = b . bottomLeftBodyItems , l = e ; break ; case j : c = b . bottomRightColGroupTds , d = b . bottomRightBodyTds , k = b . bottomRightBodyItems , l = f } BI . each ( c , function ( a , c ) { var e = 0 | c . attr ( "width" ) ; if ( "" !== l [ a ] && e !== l [ a ] ) { var f = b . _calculateWidth ( l [ a ] ) ; c . attr ( "width" , f ) . css ( "width" , f ) , BI . each ( d , function ( c , d ) { if ( d [ a ] ) if ( d [ a ] . _ _mergeCols . length > 1 ) { var e = 0 ; BI . each ( l , function ( b , c ) { d [ a ] . _ _mergeCols . contains ( b ) && ( e += c ) } ) , e = b . _calculateWidth ( e ) , e > 1 && ( e += d [ a ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( e ) ? a == BI . size ( d ) - 1 ? d [ a ] . attr ( "width" , e - 1 ) . css ( "width" , e - 1 ) : d [ a ] . attr ( "width" , e ) . css ( "width" , e ) : d [ a ] . attr ( "width" , "" ) . css ( "width" , "" ) } else a == BI . size ( d ) - 1 ? d [ a ] . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : d [ a ] . attr ( "width" , f ) . css ( "width" , f ) } ) , BI . each ( k , function ( c , e ) { if ( e [ a ] ) if ( d [ c ] [ a ] . _ _mergeCols . length > 1 ) { var g = 0 ; BI . each ( l , function ( b , e ) { d [ c ] [ a ] . _ _mergeCols . contains ( b ) && ( g += e ) } ) , g = b . _calculateWidth ( g ) , g > 1 && ( g += d [ c ] [ a ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( g ) ? a == BI . siz
var b = a . target , c = data . getSetting ( a . data . treeId ) , d = "" , e = null , f = "" , g = "" , h = null , i = null , j = null ; if ( tools . eqs ( a . type , "mousedown" ) ? g = "mousedown" : tools . eqs ( a . type , "mouseup" ) ? g = "mouseup" : tools . eqs ( a . type , "contextmenu" ) ? g = "contextmenu" : tools . eqs ( a . type , "click" ) ? tools . eqs ( b . tagName , "span" ) && null !== b . getAttribute ( "treeNode" + consts . id . SWITCH ) ? ( d = tools . getNodeMainDom ( b ) . id , f = "switchNode" ) : ( j = tools . getMDom ( c , b , [ { tagName : "a" , attrName : "treeNode" + consts . id . A } ] ) , j && ( d = tools . getNodeMainDom ( j ) . id , f = "clickNode" ) ) : tools . eqs ( a . type , "dblclick" ) && ( g = "dblclick" , j = tools . getMDom ( c , b , [ { tagName : "a" , attrName : "treeNode" + consts . id . A } ] ) , j && ( d = tools . getNodeMainDom ( j ) . id , f = "switchNode" ) ) , g . length > 0 && 0 == d . length && ( j = tools . getMDom ( c , b , [ { tagName : "a" , attrName : "treeNode" + consts . id . A } ] ) , j && ( d = tools . getNodeMainDom ( j ) . id ) ) , d . length > 0 ) switch ( e = data . getNodeCache ( c , d ) , f ) { case "switchNode" : e . isParent && ( tools . eqs ( a . type , "click" ) || tools . eqs ( a . type , "dblclick" ) && tools . apply ( c . view . dblClickExpand , [ c . treeId , e ] , c . view . dblClickExpand ) ) ? h = handler . onSwitchNode : f = "" ; break ; case "clickNode" : h = handler . onClickNode } switch ( g ) { case "mousedown" : i = handler . onZTreeMousedown ; break ; case "mouseup" : i = handler . onZTreeMouseup ; break ; case "dblclick" : i = handler . onZTreeDblclick ; break ; case "contextmenu" : i = handler . onZTreeContextmenu } var k = { stop : ! 1 , node : e , nodeEventType : f , nodeEventCallback : h , treeEventType : g , treeEventCallback : i } ; return k } , _initNode = function ( a , b , c , d , e , f , g ) { if ( c ) { var h = data . getRoot ( a ) , i = a . data . key . children ; c . level = b , c . tId = a . treeId + "_" + ++ h . zId , c . parentTId = d ? d . tId : null , c . open = "string" == typeof c . open ? tools . eqs ( c . open , "true" ) : ! ! c . open , c [ i ] && c [ i ] . length > 0 ? ( c . isParent = ! 0 , c . zAsync = ! 0 ) : ( c . isParent = "string" == typeof c . isParent ? tools . eqs ( c . isParent , "true" ) : ! ! c . isParent , c . open = ! ( ! c . isParent || a . async . enable ) && c . open , c . zAsync = ! c . isParent ) , c . isFirstNode = e , c . isLastNode = f , c . getParentNode = function ( ) { return data . getNodeCache ( a , c . parentTId ) } , c . getPreNode = function ( ) { return data . getPreNode ( a , c ) } , c . getNextNode = function ( ) { return data . getNextNode ( a , c ) } , c . isAjaxing = ! 1 , data . fixPIdKeyValue ( a , c ) } } , _init = { bind : [ _bindEvent ] , unbind : [ _unbindEvent ] , caches : [ _initCache ] , nodes : [ _initNode ] , proxys : [ _eventProxy ] , roots : [ _initRoot ] , beforeA : [ ] , afterA : [ ] , innerBeforeA : [ ] , innerAfterA : [ ] , zTreeTools : [ ] } , data = { addNodeCache : function ( a , b ) { data . getCache ( a ) . nodes [ data . getNodeCacheId ( b . tId ) ] = b } , getNodeCacheId : function ( a ) { return a . substring ( a . lastIndexOf ( "_" ) + 1 ) } , addAfterA : function ( a ) { _init . afterA . push ( a ) } , addBeforeA : function ( a ) { _init . beforeA . push ( a ) } , addInnerAfterA : function ( a ) { _init . innerAfterA . push ( a ) } , addInnerBeforeA : function ( a ) { _init . innerBeforeA . push ( a ) } , addInitBind : function ( a ) { _init . bind . push ( a ) } , addInitUnBind : function ( a ) { _init . unbind . push ( a ) } , addInitCache : function ( a ) { _init . caches . push ( a ) } , addInitNode : function ( a ) { _init . nodes . push ( a ) } , addInitProxy : function ( a , b ) { b ? _init . proxys . splice ( 0 , 0 , a ) : _init . proxys . push ( a ) } , addInitRoot : function ( a ) { _init . roots . push ( a ) } , addNodesData : function ( a , b , c ) { var d = a . data . key . children ; b [ d ] || ( b [ d ] = [ ] ) , b [ d ] . length > 0 && ( b [ d ] [ b [ d ] . length - 1 ] . isLastNode = ! 1 , view . setNodeLineIcos ( a , b [ d ] [ b [ d ] . length - 1 ] ) ) , b . isParent = ! 0 , b [ d ] = b [ d ] . concat ( c ) } , addSelectedNode : function ( a , b ) { var c = data . getRoot ( a ) ; data . isSelectedNode ( a , b ) || c . curSelectedList . push ( b ) } , addCreatedNode : function ( a , b ) { if ( a . callback . onNodeCreated || a . view . addDiyDom ) { var c = data . getRoot ( a ) ; c . createdNodes . push ( b ) } } , addZTreeTools : function ( a ) { _init . zTreeTools . push ( a ) } , exSetting : function ( a ) { $ . extend ( ! 0 , _setting , a ) } , fixPIdKeyValue : function ( a , b ) { a . data . simpleData . enable && ( b [ a . data . simpleData . pIdKey ] = b . parentTId ? b . getParentNode ( ) [ a . data . simpleData . idKey ] : a . data . simpleData . rootPId ) } , getAfterA : function ( a , b , c ) { for ( var d = 0 , e = _init . afterA . length ; d < e ; d ++ ) _init . afterA [ d ] . apply ( this , arguments ) } , getBeforeA : function ( a , b , c ) { for ( var d = 0 , e = _init . beforeA . length ; d < e ; d ++ ) _init . beforeA [ d ] . apply ( this , arguments ) } , getInnerAfterA : function ( a , b , c ) { for ( var d = 0 , e = _init . innerAfterA . length ; d < e ; d ++ ) _init . innerAfterA [ d ] . apply ( this , arguments ) } , getInnerBeforeA : function ( a , b , c ) { for ( var d = 0 , e = _init . innerBeforeA . length ; d < e ; d ++ ) _init . innerBeforeA [ d ] . apply ( this , arguments ) } , getCache : function ( a ) { return caches [ a . treeId ] } , getNextN
} } } , j = function ( a , b , c ) { a . data . key . checked ; a . check . enable && ( v . makeChkFlag ( a , b ) , c . push ( "<span ID='" , b . tId , t . id . CHECK , "' class='" , u . makeChkClass ( a , b ) , "' treeNode" , t . id . CHECK , b . nocheck === ! 0 ? " style='display:none;'" : "" , "></span>" ) ) } , k = function ( a , b ) { b . checkNode = function ( a , b , c , d ) { var e = this . setting . data . key . checked ; if ( a . chkDisabled !== ! 0 && ( b !== ! 0 && b !== ! 1 && ( b = ! a [ e ] ) , d = ! ! d , ( a [ e ] !== b || c ) && ( ! d || 0 != s . apply ( this . setting . callback . beforeCheck , [ this . setting . treeId , a ] , ! 0 ) ) && s . uCanDo ( this . setting ) && this . setting . check . enable && a . nocheck !== ! 0 ) ) { a [ e ] = b ; var f = w ( a , t . id . CHECK , this . setting ) ; ( c || this . setting . check . chkStyle === t . radio . STYLE ) && u . checkNodeRelation ( this . setting , a ) , u . setChkClass ( this . setting , f , a ) , u . repairParentChkClassWithSelf ( this . setting , a ) , d && this . setting . treeObj . trigger ( t . event . CHECK , [ null , this . setting . treeId , a ] ) } } , b . checkAllNodes = function ( a ) { u . repairAllChk ( this . setting , ! ! a ) } , b . getCheckedNodes = function ( a ) { var b = this . setting . data . key . children ; return a = a !== ! 1 , v . getTreeCheckedNodes ( this . setting , v . getRoot ( this . setting ) [ b ] , a ) } , b . getChangeCheckedNodes = function ( ) { var a = this . setting . data . key . children ; return v . getTreeChangeCheckedNodes ( this . setting , v . getRoot ( this . setting ) [ a ] ) } , b . setChkDisabled = function ( a , b , c , d ) { b = ! ! b , c = ! ! c , d = ! ! d , u . repairSonChkDisabled ( this . setting , a , b , d ) , u . repairParentChkDisabled ( this . setting , a . getParentNode ( ) , b , c ) } ; var c = b . updateNode ; b . updateNode = function ( a , d ) { if ( c && c . apply ( b , arguments ) , a && this . setting . check . enable ) { var e = w ( a , this . setting ) ; if ( e . get ( 0 ) && s . uCanDo ( this . setting ) ) { var f = w ( a , t . id . CHECK , this . setting ) ; 1 != d && this . setting . check . chkStyle !== t . radio . STYLE || u . checkNodeRelation ( this . setting , a ) , u . setChkClass ( this . setting , f , a ) , u . repairParentChkClassWithSelf ( this . setting , a ) } } } } , l = { getRadioCheckedList : function ( a ) { for ( var b = v . getRoot ( a ) . radioCheckedList , c = 0 , d = b . length ; c < d ; c ++ ) v . getNodeCache ( a , b [ c ] . tId ) || ( b . splice ( c , 1 ) , c -- , d -- ) ; return b } , getCheckStatus : function ( a , b ) { if ( ! a . check . enable || b . nocheck || b . chkDisabled ) return null ; var c = a . data . key . checked , d = { checked : b [ c ] , half : b . halfCheck ? b . halfCheck : a . check . chkStyle == t . radio . STYLE ? 2 === b . check _Child _State : b [ c ] ? b . check _Child _State > - 1 && b . check _Child _State < 2 : b . check _Child _State > 0 } ; return d } , getTreeCheckedNodes : function ( a , b , c , d ) { if ( ! b ) return [ ] ; var e = a . data . key . children , f = a . data . key . checked , g = c && a . check . chkStyle == t . radio . STYLE && a . check . radioType == t . radio . TYPE _ALL ; d = d ? d : [ ] ; for ( var h = 0 , i = b . length ; h < i && ( b [ h ] . nocheck === ! 0 || b [ h ] . chkDisabled === ! 0 || b [ h ] [ f ] != c || ( d . push ( b [ h ] ) , ! g ) ) && ( v . getTreeCheckedNodes ( a , b [ h ] [ e ] , c , d ) , ! ( g && d . length > 0 ) ) ; h ++ ) ; return d } , getTreeChangeCheckedNodes : function ( a , b , c ) { if ( ! b ) return [ ] ; var d = a . data . key . children , e = a . data . key . checked ; c = c ? c : [ ] ; for ( var f = 0 , g = b . length ; f < g ; f ++ ) b [ f ] . nocheck !== ! 0 && b [ f ] . chkDisabled !== ! 0 && b [ f ] [ e ] != b [ f ] . checkedOld && c . push ( b [ f ] ) , v . getTreeChangeCheckedNodes ( a , b [ f ] [ d ] , c ) ; return c } , makeChkFlag : function ( a , b ) { if ( b ) { var c = a . data . key . children , d = a . data . key . checked , e = - 1 ; if ( b [ c ] ) for ( var f = 0 , g = b [ c ] . length ; f < g ; f ++ ) { var h = b [ c ] [ f ] , i = - 1 ; if ( a . check . chkStyle == t . radio . STYLE ) { if ( i = h . nocheck === ! 0 || h . chkDisabled === ! 0 ? h . check _Child _State : h . halfCheck === ! 0 ? 2 : h [ d ] ? 2 : h . check _Child _State > 0 ? 2 : 0 , 2 == i ) { e = 2 ; break } 0 == i && ( e = 0 ) } else if ( a . check . chkStyle == t . checkbox . STYLE ) { if ( i = h . nocheck === ! 0 || h . chkDisabled === ! 0 ? h . check _Child _State : h . halfCheck === ! 0 ? 1 : h [ d ] ? h . check _Child _State === - 1 || 2 === h . check _Child _State ? 2 : 1 : h . check _Child _State > 0 ? 1 : 0 , 1 === i ) { e = 1 ; break } if ( 2 === i && e > - 1 && f > 0 && i !== e ) { e = 1 ; break } if ( 2 === e && i > - 1 && i < 2 ) { e = 1 ; break } i > - 1 && ( e = i ) } } b . check _Child _State = e } } } , m = { } , n = { onCheckNode : function ( a , b ) { if ( b . chkDisabled === ! 0 ) return ! 1 ; var c = v . getSetting ( a . data . treeId ) , d = c . data . key . checked ; if ( 0 == s . apply ( c . callback . beforeCheck , [ c . treeId , b ] , ! 0 ) ) return ! 0 ; b [ d ] = ! b [ d ] , u . checkNodeRelation ( c , b ) ; var e = w ( b , t . id . CHECK , c ) ; return u . setChkClass ( c , e , b ) , u . repairParentChkClassWithSelf ( c , b ) , c . treeObj . trigger ( t . event . CHECK , [ a , c . treeId , b ] ) , ! 0 } , onMouseoverCheck : function ( a , b ) { if ( b . chkDisabled === ! 0 ) return ! 1 ; var c = v . getSetting ( a . data . treeId ) , d = w ( b , t . id . CHECK , c ) ; return b . check _Focus = ! 0 , u . setChkClass ( c , d , b ) , ! 0 } , onMouseoutCheck : function ( a , b ) { if ( b . chkDisabled === ! 0 ) return ! 1 ; var c = v . getSetting ( a . data . treeId ) , d = w ( b , t . id . CHECK , c ) ; return b . che
} , doClick : function ( ) { BI . IconTreeLeafItem . superclass . doClick . apply ( this , arguments ) } , setSelected : function ( a ) { BI . IconTreeLeafItem . superclass . setSelected . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.icon_tree_leaf_item" , BI . IconTreeLeafItem ) , BI . LastTreeLeafItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . LastTreeLeafItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-last-tree-leaf-item bi-list-item-active" , logic : { dynamic : ! 1 } , id : "" , pId : "" , layer : 0 , height : 25 } ) } , _init : function ( ) { BI . LastTreeLeafItem . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.checkbox" } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : b . height , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && a . setSelected ( a . isSelected ( ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , d = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , 0 === b . layer ? "" : { width : 13 , el : { type : "bi.layout" , cls : "base-line-conn-background" , width : 13 , height : b . height } } , { width : 25 , el : { type : "bi.layout" , cls : "mid-line-conn-background" , width : 25 , height : b . height } } , { el : this . text } ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( c , BI . extend ( b . logic , { items : d } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , getId : function ( ) { return this . options . id } , getPId : function ( ) { return this . options . pId } , doClick : function ( ) { BI . LastTreeLeafItem . superclass . doClick . apply ( this , arguments ) } , setSelected : function ( a ) { BI . LastTreeLeafItem . superclass . setSelected . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.last_tree_leaf_item" , BI . LastTreeLeafItem ) , BI . MidTreeLeafItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . MidTreeLeafItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-mid-tree-leaf-item bi-list-item-active" , logic : { dynamic : ! 1 } , id : "" , pId : "" , layer : 0 , height : 25 } ) } , _init : function ( ) { BI . MidTreeLeafItem . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.checkbox" } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : b . height , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b === BI . Events . CLICK && a . setSelected ( a . isSelected ( ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , d = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , 0 === b . layer ? "" : { width : 13 , el : { type : "bi.layout" , cls : "base-line-conn-background" , width : 13 , height : b . height } } , { width : 25 , el : { type : "bi.layout" , cls : "mid-line-conn-background" , width : 25 , height : b . height } } , { el : this . text } ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( c , BI . extend ( b . logic , { items : d } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , getId : function ( ) { return this . options . id } , getPId : function ( ) { return this . options . pId } , doClick : function ( ) { BI . MidTreeLeafItem . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isSelected ( ) ) } , setSelected : function ( a ) { BI . MidTreeLeafItem . superclass . setSelected . apply ( this , arguments ) , this . checkbox . setSelected ( a ) } } ) , BI . shortcut ( "bi.mid_tree_leaf_item" , BI . MidTreeLeafItem ) , BI . MultiLayerIconTreeLeafItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerIconTreeLeafItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : " bi - multilayer - icon - tree - leaf - it
f . width = "" + e . width + "px" , f . height = "" + e . height + "px" , f . zIndex = d , "object" == typeof c ) for ( addedStyle in c ) f [ addedStyle ] = c [ addedStyle ] ; b . appendChild ( this . div ) , this . div . innerHTML = this . getHTML ( e . width , e . height ) } , getHTML : function ( a , b ) { var c = "" , d = "id=" + this . id + "&width=" + a + "&height=" + b ; if ( navigator . userAgent . match ( /MSIE/ ) ) { var e = location . href . match ( /^https/i ) ? "https://" : "http://" ; c += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="' + e + 'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="' + a + '" height="' + b + '" id="' + this . movieId + '" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="' + ZeroClipboard . moviePath + '" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="' + d + '"/><param name="wmode" value="transparent"/></object>' } else c += '<embed id="' + this . movieId + '" src="' + ZeroClipboard . moviePath + '" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="' + a + '" height="' + b + '" name="' + this . movieId + '" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="' + d + '" wmode="transparent" />' ; return c } , hide : function ( ) { this . div && ( this . div . style . left = "-2000px" ) } , show : function ( ) { this . reposition ( ) } , destroy : function ( ) { if ( this . domElement && this . div ) { this . hide ( ) , this . div . innerHTML = "" ; var a = document . getElementsByTagName ( "body" ) [ 0 ] ; try { a . removeChild ( this . div ) } catch ( b ) { } this . domElement = null , this . div = null } } , reposition : function ( a ) { if ( a && ( this . domElement = ZeroClipboard . $ ( a ) , this . domElement || this . hide ( ) ) , this . domElement && this . div ) { var b = ZeroClipboard . getDOMObjectPosition ( this . domElement ) , c = this . div . style ; c . left = "" + b . left + "px" , c . top = "" + b . top + "px" } } , setText : function ( a ) { this . clipText = a , this . ready && this . movie . setText ( a ) } , addEventListener : function ( a , b ) { a = a . toString ( ) . toLowerCase ( ) . replace ( /^on/ , "" ) , this . handlers [ a ] || ( this . handlers [ a ] = [ ] ) , this . handlers [ a ] . push ( b ) } , setHandCursor : function ( a ) { this . handCursorEnabled = a , this . ready && this . movie . setHandCursor ( a ) } , setCSSEffects : function ( a ) { this . cssEffects = ! ! a } , receiveEvent : function ( a , b ) { switch ( a = a . toString ( ) . toLowerCase ( ) . replace ( /^on/ , "" ) ) { case "load" : if ( this . movie = document . getElementById ( this . movieId ) , ! this . movie ) { var c = this ; return void setTimeout ( function ( ) { c . receiveEvent ( "load" , null ) } , 1 ) } if ( ! this . ready && navigator . userAgent . match ( /Firefox/ ) && navigator . userAgent . match ( /Windows/ ) ) { var c = this ; return setTimeout ( function ( ) { c . receiveEvent ( "load" , null ) } , 100 ) , void ( this . ready = ! 0 ) } this . ready = ! 0 ; try { this . movie . setText ( this . clipText ) } catch ( d ) { } try { this . movie . setHandCursor ( this . handCursorEnabled ) } catch ( d ) { } break ; case "mouseover" : this . domElement && this . cssEffects && ( this . domElement . addClass ( "hover" ) , this . recoverActive && this . domElement . addClass ( "active" ) ) ; break ; case "mouseout" : this . domElement && this . cssEffects && ( this . recoverActive = ! 1 , this . domElement . hasClass ( "active" ) && ( this . domElement . removeClass ( "active" ) , this . recoverActive = ! 0 ) , this . domElement . removeClass ( "hover" ) ) ; break ; case "mousedown" : this . domElement && this . cssEffects && this . domElement . addClass ( "active" ) ; break ; case "mouseup" : this . domElement && this . cssEffects && ( this . domElement . removeClass ( "active" ) , this . recoverActive = ! 1 ) } if ( this . handlers [ a ] ) for ( var e = 0 , f = this . handlers [ a ] . length ; e < f ; e ++ ) { var g = this . handlers [ a ] [ e ] ; "function" == typeof g ? g ( this , b ) : "object" == typeof g && 2 == g . length ? g [ 0 ] [ g [ 1 ] ] ( this , b ) : "string" == typeof g && window [ g ] ( this , b ) } } } } BI . ClipBoard = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . ClipBoard . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-clipboard" , copy : BI . emptyFn , afterCopy : BI . emptyFn } ) } , _init : function ( ) { BI . ClipBoard . superclass . _init . apply ( this , arguments ) } , mounted : function ( ) { var a = this . options ; window . Clipboard ? ( this . clipboard = new Clipboard ( this . element [ 0 ] , { text : function ( ) { return BI . isFunction ( a . copy ) ? a . copy ( ) : a . copy } } ) , this . clipboard . on ( "success" , a . afterCopy ) ) : t
maxHeight : b . maxHeight , minWidth : b . minWidth } } ) } , showView : function ( ) { this . iconCombo . showView ( ) } , hideView : function ( ) { this . iconCombo . hideView ( ) } , setValue : function ( a ) { this . iconCombo . setValue ( a ) } , getValue : function ( ) { return this . iconCombo . getValue ( ) } , populate : function ( a ) { this . options . items = a , this . iconCombo . populate ( a ) } } ) , BI . IconCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_combo" , BI . IconCombo ) , BI . IconComboPopup = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . IconComboPopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi.icon-combo-popup" , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE } ) } , _init : function ( ) { BI . IconComboPopup . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; this . popup = BI . createWidget ( { type : "bi.button_group" , items : BI . createItems ( a . items , { type : "bi.single_select_icon_text_item" , height : 30 } ) , chooseType : a . chooseType , layouts : [ { type : "bi.vertical" } ] } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( a , c , d ) { b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a === BI . Events . CLICK && b . fireEvent ( BI . IconComboPopup . EVENT _CHANGE , c , d ) } ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . popup ] } ) } , populate : function ( a ) { BI . IconComboPopup . superclass . populate . apply ( this , arguments ) , a = BI . createItems ( a , { type : "bi.single_select_icon_text_item" , height : 30 } ) , this . popup . populate ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) } , setValue : function ( a ) { this . popup . setValue ( a ) } } ) , BI . IconComboPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_combo_popup" , BI . IconComboPopup ) , BI . IconComboTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . IconComboTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-icon-combo-trigger" , el : { } , items : [ ] , iconClass : "" , width : 25 , height : 25 , isShowDown : ! 0 } ) } , _init : function ( ) { BI . IconComboTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . button = BI . createWidget ( a . el , { type : "bi.icon_change_button" , cls : "icon-combo-trigger-icon " + a . iconClass , disableSelected : ! 0 , width : a . width , height : a . height , iconWidth : a . iconWidth , iconHeight : a . iconHeight } ) , this . down = BI . createWidget ( { type : "bi.icon_button" , disableSelected : ! 0 , cls : "icon-combo-down-icon trigger-triangle-font" , width : 12 , height : 8 } ) , this . down . setVisible ( a . isShowDown ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . button , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : this . down , right : 0 , bottom : 0 } ] } ) , BI . isKey ( a . value ) && this . setValue ( a . value ) } , populate : function ( a ) { var b = this . options ; this . options . items = a || [ ] , this . button . setIcon ( b . iconClass ) , this . button . setSelected ( ! 1 ) , this . down . setSelected ( ! 1 ) } , setValue : function ( a ) { BI . IconComboTrigger . superclass . setValue . apply ( this , arguments ) ; var b = this . options , c = "" ; a = BI . isArray ( a ) ? a [ 0 ] : a , BI . any ( this . options . items , function ( b , d ) { if ( a === d . value ) return c = d . iconClass , ! 0 } ) ? ( this . button . setIcon ( c ) , this . button . setSelected ( ! 0 ) , this . down . setSelected ( ! 0 ) ) : ( this . button . setIcon ( b . iconClass ) , this . button . setSelected ( ! 1 ) , this . down . setSelected ( ! 1 ) ) } } ) , BI . IconComboTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_combo_trigger" , BI . IconComboTrigger ) , BI . IconTextValueCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . IconTextValueCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseClass : "bi-icon-text-value-combo" , height : 30 , value : "" , el : { } } ) } , _init : function ( ) { BI . IconTextValueCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( b . el , { type : "bi.select_icon_text_trigger" , items : b . items , height : b . height , value : b . value } ) , this . popup = BI . createWidget ( { type : "bi.icon_text_value_combo_popup" , items : b . items } ) , this . popup . on ( BI . IconTextValueComboPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . textIconCombo . hideView ( ) , a . fireEvent ( BI . IconTextValueCombo . EVENT _CHANGE , arguments ) } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . textIconCombo = BI . createWidget ( { type : "bi.combo" , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup , maxHeight : 300 } } ) , BI . isKey ( b . value ) && this . setValue ( b . value ) } , setValue : function ( a ) { this . tex
BI . SignInitialEditor . EVENT _SPACE = "EVENT_SPACE" , BI . SignInitialEditor . EVENT _EMPTY = "EVENT_EMPTY" , BI . shortcut ( "bi.sign_initial_editor" , BI . SignInitialEditor ) , BI . SignEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . SignEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-sign-editor" , hgap : 4 , vgap : 2 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 0 , watermark : "" , errorText : "" , height : 24 } ) } , _init : function ( ) { BI . SignEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( { type : "bi.editor" , height : b . height , hgap : b . hgap , vgap : b . vgap , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , value : b . value , validationChecker : b . validationChecker , quitChecker : b . quitChecker , allowBlank : b . allowBlank , watermark : b . watermark , errorText : b . errorText } ) , this . text = BI . createWidget ( { type : "bi.text_button" , cls : "sign-editor-text" , title : b . title , warningTitle : b . warningTitle , tipType : b . tipType , textAlign : "left" , height : b . height , hgap : 4 , handler : function ( ) { a . _showInput ( ) , a . editor . focus ( ) , a . editor . selectAll ( ) } } ) , this . text . on ( BI . TextButton . EVENT _CHANGE , function ( ) { BI . nextTick ( function ( ) { a . fireEvent ( BI . SignEditor . EVENT _CLICK _LABEL ) } ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . text , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _FOCUS , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _FOCUS , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _BLUR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _CLICK , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . SignEditor . EVENT _KEY _DOWN , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _VALID , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { a . _showHint ( ) , a . _checkText ( ) , a . fireEvent ( BI . SignEditor . EVENT _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _START , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _START , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _PAUSE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _STOP , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _STOP , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _SPACE , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _SPACE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ERROR , function ( ) { a . _checkText ( ) , a . fireEvent ( BI . SignEditor . EVENT _ERROR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ENTER , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _ENTER , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _RESTRICT , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _RESTRICT , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _EMPTY , function ( ) { a . fireEvent ( BI . SignEditor . EVENT _EMPTY , arguments ) } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ this . editor ] } ) , this . _showHint ( ) , a . _checkText ( ) } , _checkText : function ( ) { var a = this . options ; BI . nextTick ( BI . bind ( function ( ) { "" === 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" ) ) } , this ) ) } , _showInput : function ( ) { this . editor . visible ( ) , this . text . invisible ( ) } , _showHint : function ( ) { this . editor . invisible ( ) , this . text . visible ( ) } , setTitle : function ( a ) { this . text . setTitle ( a ) } , setWarningTitle : function ( a ) { this . text . setWarningTitle ( a ) } , focus : function ( ) { this . _showInput ( ) , this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) , this . _showHint ( ) , this . _checkText ( ) } , doRedMark : function ( ) { "" === this . editor . getValue ( ) && BI . isKey ( this . options . watermark ) || this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { "" === this . editor . getValue ( ) && BI . isKey ( this . options . watermark ) || this . text . doHighLight . apply ( this . text , arguments ) } , unHig
this . next . setLoaded ( ) ) : this . next . setEnd ( ) ) , this . button _group . addItems . apply ( this . button _group , arguments ) , this . next . element . appendTo ( this . element ) } , populate : function ( a ) { var b = this , c = this . options ; return 0 === arguments . length && BI . isFunction ( c . itemsCreator ) ? void c . itemsCreator . apply ( this , [ { times : 1 } , function ( ) { if ( 0 === arguments . length ) throw new Error ( "参数不能为空" ) ; b . populate . apply ( b , arguments ) , c . onLoaded ( ) } ] ) : ( this . options . items = a , this . times = 1 , this . count = 0 , this . count += a . length , BI . isObject ( this . next ) && ( this . hasNext ( ) ? this . next . setLoaded ( ) : this . next . invisible ( ) ) , BI . DOM . hang ( [ this . next ] ) , this . button _group . populate . apply ( this . button _group , arguments ) , void this . next . element . appendTo ( this . element ) ) } , empty : function ( ) { BI . DOM . hang ( [ this . next ] ) , this . button _group . empty ( ) , this . next . element . appendTo ( this . element ) , BI . each ( [ this . next ] , function ( a , b ) { b && b . setVisible ( ! 1 ) } ) } , setNotSelectedValue : function ( ) { this . button _group . setNotSelectedValue . apply ( this . button _group , arguments ) } , getNotSelectedValue : function ( ) { return this . button _group . getNotSelectedValue ( ) } , setValue : function ( ) { this . button _group . setValue . apply ( this . button _group , arguments ) } , getValue : function ( ) { return this . button _group . getValue . apply ( this . button _group , arguments ) } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , getAllLeaves : function ( ) { return this . button _group . getAllLeaves ( ) } , getSelectedButtons : function ( ) { return this . button _group . getSelectedButtons ( ) } , getNotSelectedButtons : function ( ) { return this . button _group . getNotSelectedButtons ( ) } , getIndexByValue : function ( a ) { return this . button _group . getIndexByValue ( a ) } , getNodeById : function ( a ) { return this . button _group . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . button _group . getNodeByValue ( a ) } } ) , BI . ListLoader . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.list_loader" , BI . ListLoader ) , BI . SortList = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SortList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-sort-list" , isDefaultInit : ! 0 , el : { type : "bi.button_group" } , items : [ ] , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn , count : ! 1 , next : { } , hasNext : BI . emptyFn } ) } , _init : function ( ) { BI . SortList . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . loader = BI . createWidget ( { type : "bi.list_loader" , element : this , isDefaultInit : b . isDefaultInit , el : b . el , items : this . _formatItems ( b . items ) , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { d ( a . _formatItems ( b ) ) } ) } , onLoaded : b . onLoaded , count : b . count , next : b . next , hasNext : b . hasNext } ) , this . loader . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b === BI . Events . CLICK && a . fireEvent ( BI . SortList . EVENT _CHANGE , c , d ) } ) , this . loader . element . sortable ( { containment : b . containment || this . element , connectWith : b . connectWith || ".bi-sort-list" , items : ".sort-item" , cursor : b . cursor || "drag" , tolerance : b . tolerance || "intersect" , placeholder : { element : function ( a ) { var b = BI . createWidget ( { type : "bi.layout" , cls : "bi-sortable-holder" , height : a . outerHeight ( ) } ) ; return b . element . css ( { "margin-left" : a . css ( "margin-left" ) , "margin-right" : a . css ( "margin-right" ) , "margin-top" : a . css ( "margin-top" ) , "margin-bottom" : a . css ( "margin-bottom" ) , margin : a . css ( "margin" ) } ) , b . element } , update : function ( ) { } } , start : function ( a , b ) { } , stop : function ( b , c ) { a . fireEvent ( BI . SortList . EVENT _CHANGE ) } , over : function ( a , b ) { } } ) } , _formatItems : function ( a ) { return BI . each ( a , function ( a , b ) { b = BI . stripEL ( b ) , b . cls = b . cls ? b . cls + " sort-item" : "sort-item" , b . attributes = { sorted : b . value } } ) , a } , hasNext : function ( ) { return this . loader . hasNext ( ) } , addItems : function ( a ) { this . loader . addItems ( a ) } , populate : function ( a ) { a && ( arguments [ 0 ] = this . _formatItems ( a ) ) , this . loader . populate . apply ( this . loader , arguments ) } , empty : function ( ) { this . loader . empty ( ) } , setNotSelectedValue : function ( ) { this . loader . setNotSelectedValue . apply ( this . loader , arguments ) } , getNotSelectedValue : function ( ) { return this . loader . getNotSelectedValue ( ) } , setValue : function ( ) { this . loader . setValue . apply ( this . loader , arguments ) } , getValue : function ( ) { return this . loader . getValue ( ) } , getAllButtons : function ( ) { return this . loader . getAllButtons ( ) } , getAllLeaves : function ( ) { return this . loader . getAllL
width : 20 , height : 20 , command : "foreColor" } ) } , _init : function ( ) { BI . RichEditorColorChooser . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . colorchooser = BI . createWidget ( { type : "bi.color_chooser" , element : this , width : b . width , height : b . height , el : { type : "bi.rich_editor_color_chooser_trigger" , title : BI . i18nText ( "BI-Font_Colour" ) , cls : "text-toolbar-button" } } ) , this . colorchooser . on ( BI . ColorChooser . EVENT _CHANGE , function ( ) { a . doCommand ( this . getValue ( ) ) } ) } , hideIf : function ( a ) { ! this . colorchooser . element . find ( a . target ) . length > 0 && this . colorchooser . hideView ( ) } , deactivate : function ( ) { this . colorchooser . setValue ( "" ) } } ) , BI . shortcut ( "bi.rich_editor_color_chooser" , BI . RichEditorColorChooser ) , BI . RichEditorSizeChooser = BI . inherit ( BI . RichEditorAction , { _defaultConfig : function ( ) { return BI . extend ( BI . RichEditorSizeChooser . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-rich-editor-size-chooser bi-border bi-card" , command : "FontSize" , width : 50 , height : 20 } ) } , _items : [ { value : 1 , text : "1(8pt)" } , { value : 2 , text : "2(10pt)" } , { value : 3 , text : "3(12pt)" } , { value : 4 , text : "4(14pt)" } , { value : 5 , text : "5(18pt)" } , { value : 6 , text : "6(24pt)" } ] , _init : function ( ) { BI . RichEditorSizeChooser . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.text_trigger" , readonly : ! 0 , height : b . height , triggerWidth : 16 , text : BI . i18nText ( "BI-Font_Size" ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , element : this , el : this . trigger , adjustLength : 1 , popup : { maxWidth : 70 , minWidth : 70 , el : { type : "bi.button_group" , items : BI . createItems ( this . _items , { type : "bi.single_select_item" } ) , layouts : [ { type : "bi.vertical" } ] } } } ) , this . combo . on ( BI . Combo . EVENT _CHANGE , function ( ) { var b = this . getValue ( ) [ 0 ] ; a . doCommand ( b ) , this . hideView ( ) , this . setValue ( [ ] ) } ) } , hideIf : function ( a ) { ! this . combo . element . find ( a . target ) . length > 0 && this . combo . hideView ( ) } } ) , BI . shortcut ( "bi.rich_editor_size_chooser" , BI . RichEditorSizeChooser ) , BI . RichEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . RichEditor . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-rich-editor bi-card" , toolbar : { } } ) } , _init : function ( ) { BI . RichEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( { type : "bi.nic_editor" , width : b . width , height : b . height } ) , this . editor . on ( BI . NicEditor . EVENT _BLUR , function ( ) { a . fireEvent ( BI . RichEditor . EVENT _CONFIRM ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , element : this , toggle : ! 1 , direction : "top,left" , isNeedAdjustWidth : ! 1 , isNeedAdjustHeight : ! 1 , adjustLength : 1 , el : this . editor , popup : { el : BI . extend ( { type : "bi.rich_editor_text_toolbar" , editor : this . editor } , b . toolbar ) , height : 30 , stopPropagation : ! 0 , stopEvent : ! 0 } } ) , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { } ) } , setValue : function ( a ) { this . editor . setValue ( a ) } , getValue : function ( ) { return this . editor . getValue ( ) } } ) , BI . RichEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.rich_editor" , BI . RichEditor ) , BI . SegmentButton = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . SegmentButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-segment-button bi-list-item-active" , shadow : ! 0 , readonly : ! 0 , hgap : 5 } ) } , _init : function ( ) { BI . SegmentButton . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . text = BI . createWidget ( { type : "bi.label" , element : this , height : a . height - 2 , whiteSpace : a . whiteSpace , text : a . text , value : a . value , hgap : a . hgap } ) } , setSelected : function ( ) { BI . SegmentButton . superclass . setSelected . apply ( this , arguments ) } , setText : function ( a ) { BI . SegmentButton . superclass . setText . apply ( this , arguments ) , this . text . setText ( a ) } , destroy : function ( ) { BI . SegmentButton . superclass . destroy . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.segment_button" , BI . SegmentButton ) , BI . Segment = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Segment . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-segment" , items : [ ] , height : 24 } ) } , _init : function ( ) { BI . Segment . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . buttonGroup = BI . createWidget ( { element : this , type : "bi.button_group" , items : BI . createItems ( b . items , { type : "bi.segment_button" , height : b . heigh
d = Math . max ( d , b ( a + 1 , e ) ) } ) , d } var c = 1 ; return BI . isObject ( a ) && BI . each ( a , function ( a , d ) { c = Math . max ( c , b ( 1 , d ) ) } ) , c } } ) , BI . shortcut ( "bi.tree_table" , BI . TableTree ) , BI . MultiSelectBar = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectBar . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-multi-select-bar" , height : 25 , text : BI . i18nText ( "BI-Select_All" ) , isAllCheckedBySelectedValue : BI . emptyFn , disableSelected : ! 0 , isHalfCheckedBySelectedValue : function ( a ) { return a . length > 0 } } ) } , _init : function ( ) { BI . MultiSelectBar . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.checkbox" , stopPropagation : ! 0 , handler : function ( ) { a . setSelected ( a . isSelected ( ) ) } } ) , this . half = BI . createWidget ( { type : "bi.half_icon_button" , stopPropagation : ! 0 , handler : function ( ) { a . setSelected ( ! 0 ) } } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . CLICK , a . isSelected ( ) , a ) } ) , this . half . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . CLICK , a . isSelected ( ) , a ) } ) , this . half . on ( BI . HalfIconButton . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectBar . EVENT _CHANGE , a . isSelected ( ) , a ) } ) , this . checkbox . on ( BI . Checkbox . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectBar . EVENT _CHANGE , a . isSelected ( ) , a ) } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : b . height , height : b . height , hgap : b . hgap , text : b . text , keyword : b . keyword , value : b . value , py : b . py } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { width : 36 , el : { type : "bi.center_adapt" , items : [ this . checkbox , this . half ] } } , { el : this . text } ] } ) , this . half . invisible ( ) } , beforeClick : function ( ) { var a = this . isHalfSelected ( ) , b = this . isSelected ( ) ; a === ! 0 ? this . setSelected ( ! 0 ) : this . setSelected ( ! b ) } , setSelected : function ( a ) { this . checkbox . setSelected ( a ) , this . setHalfSelected ( ! 1 ) } , setHalfSelected : function ( a ) { this . _half = ! ! a , a === ! 0 ? ( this . half . visible ( ) , this . checkbox . invisible ( ) ) : ( this . half . invisible ( ) , this . checkbox . visible ( ) ) } , isHalfSelected : function ( ) { return ! ! this . _half } , isSelected : function ( ) { return this . checkbox . isSelected ( ) } , setValue : function ( a ) { BI . MultiSelectBar . superclass . setValue . apply ( this , arguments ) ; var b = this . options . isAllCheckedBySelectedValue . apply ( this , arguments ) ; this . setSelected ( b ) , ! b && this . setHalfSelected ( this . options . isHalfCheckedBySelectedValue . apply ( this , arguments ) ) } } ) , BI . MultiSelectBar . EVENT _CHANGE = "MultiSelectBar.EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_bar" , BI . MultiSelectBar ) , BI . BranchRelation = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . BranchRelation . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-branch-relation-tree" , items : [ ] , centerOffset : 0 , direction : BI . Direction . Bottom , align : BI . VerticalAlign . Top } ) } , _init : function ( ) { BI . BranchRelation . superclass . _init . apply ( this , arguments ) , this . populate ( this . options . items ) } , _stratification : function ( ) { var a = [ ] ; return this . tree . recursion ( function ( b , c ) { b . leaf = b . isLeaf ( ) , a [ c . length - 1 ] || ( a [ c . length - 1 ] = [ ] ) , a [ c . length - 1 ] . push ( b ) } ) , a } , _calculateLeaves : function ( ) { function a ( b ) { var c = 0 ; return b . isLeaf ( ) ? 1 : ( BI . each ( b . getChildren ( ) , function ( b , d ) { c += a ( d ) } ) , b . set ( "leaves" , c ) , c ) } var b = 0 ; return b = a ( this . tree . getRoot ( ) ) } , _translate : function ( a ) { var b = [ ] , c = a . length ; return BI . each ( a , function ( d , e ) { b [ d ] || ( b [ d ] = [ ] ) , BI . each ( e , function ( f , g ) { if ( g . isLeaf ( ) && d < c - 1 ) { var h = new BI . Node ( BI . UUID ( ) ) ; h . isNew = ! 0 ; var i = 0 ; if ( f > 0 ) { var j = e [ f - 1 ] . getLastChild ( ) ; i = a [ d + 1 ] . indexOf ( j ) + 1 } a [ d + 1 ] . splice ( i , 0 , g ) ; var k = g . parent . getChildIndex ( g . id ) ; g . parent . removeChildByIndex ( k ) , g . parent . addChild ( h , k ) , h . addChild ( g ) , b [ d ] . push ( h ) , e [ f ] = h } else b [ d ] . push ( g ) } ) } ) , b } , _fill : function ( a ) { var b = [ ] , c = a . length ; return BI . each ( a , function ( d , e ) { b [ d ] || ( b [ d ] = [ ] ) , BI . each ( e , function ( f , g ) { if ( g . isLeaf ( ) && d < c - 1 ) { var h = new BI . Node ( BI . UUID ( ) ) ; h . leaf = ! 0 , h . width = g . width , h . height = g . height , h . isNew = ! 0 ; var i = 0 ; if ( f > 0 ) { var j = e [ f - 1 ] . getLastChild ( ) ; i = a [ d + 1 ] . indexOf ( j ) + 1 } a [ d + 1 ] . splice ( i , 0 , h ) , g . addChild ( h ) } b [ d ] . push ( g ) } ) } ) , b } , _adjust : function ( a ) { for ( ; ; ) { var b = ! 1 ; if ( BI . backEach ( a , function ( a , c ) { BI . each ( c , function ( a , c ) { if ( ! c . isNew ) { var d = ! 0 ; if ( BI . any ( c . getChil
this . options . scrollTop = a ; try { this . scrollContainer . element . scrollTop ( a ) } catch ( b ) { } } } , getVerticalScroll : function ( ) { return this . options . scrollTop } , setVPage : function ( a ) { a <= 1 ? ( this . cache = { } , this . start = this . options . startSequence , this . _restore ( ) , this . tasks . push ( this . _nextState ) ) : a === this . vCurr + 1 ? this . tasks . push ( this . _nextState ) : a === this . vCurr - 1 && this . tasks . push ( this . _prevState ) , this . vCurr = a } , setHPage : function ( a ) { a !== this . hCurr && this . tasks . push ( this . _prevState ) , this . hCurr = a } , restore : function ( ) { this . _restore ( ) } , populate : function ( a , b , c , d ) { var e = this . options ; a && a !== this . options . items && ( e . items = a , this . _restore ( ) , this . tasks . push ( this . _prevState ) ) , b && b !== this . options . header && ( e . header = b ) , c && c !== this . options . crossItems && ( e . crossItems = c ) , d && d !== this . options . crossHeader && ( e . crossHeader = d ) , this . _populate ( ) } } ) , BI . shortcut ( "bi.sequence_table_tree_number" , BI . SequenceTableTreeNumber ) , BI . AdaptiveArrangement = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . AdaptiveArrangement . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-adaptive-arrangement" , resizable : ! 0 , layoutType : BI . Arrangement . LAYOUT _TYPE . FREE , items : [ ] } ) } , _init : function ( ) { BI . AdaptiveArrangement . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . arrangement = BI . createWidget ( { type : "bi.arrangement" , element : this , layoutType : b . layoutType , items : b . items } ) , this . arrangement . on ( BI . Arrangement . EVENT _SCROLL , function ( ) { a . fireEvent ( BI . AdaptiveArrangement . EVENT _SCROLL , arguments ) } ) , this . zIndex = 0 , BI . each ( b . items , function ( b , c ) { a . _initResizable ( c . el ) } ) , $ ( document ) . mousedown ( function ( b ) { BI . each ( a . getAllRegions ( ) , function ( a , c ) { 0 === c . el . element . find ( b . target ) . length && c . el . element . removeClass ( "selected" ) } ) } ) , BI . ResizeDetector . addResizeListener ( this , function ( ) { a . arrangement . resize ( ) , a . fireEvent ( BI . AdaptiveArrangement . EVENT _RESIZE ) } ) } , _isEqual : function ( ) { return this . arrangement . _isEqual . apply ( this . arrangement , arguments ) } , _setSelect : function ( a ) { a . element . hasClass ( "selected" ) || ( a . element . css ( "zIndex" , ++ this . zIndex ) , BI . each ( this . getAllRegions ( ) , function ( a , b ) { b . el . element . removeClass ( "selected" ) } ) , a . element . addClass ( "selected" ) ) } , _initResizable : function ( a ) { var b = this ; this . options ; a . element . css ( "zIndex" , ++ this . zIndex ) , a . element . mousedown ( function ( ) { b . _setSelect ( a ) } ) } , _getScrollOffset : function ( ) { return this . arrangement . _getScrollOffset ( ) } , getClientWidth : function ( ) { return this . arrangement . getClientWidth ( ) } , getClientHeight : function ( ) { return this . arrangement . getClientHeight ( ) } , addRegion : function ( a , b ) { this . _initResizable ( a . el ) , this . _setSelect ( a . el ) ; var c , d = this . arrangement . getAllRegions ( ) ; return ( c = this . arrangement . addRegion ( a , b ) ) && ( this . _old = d ) , c } , deleteRegion : function ( a ) { var b , c = this . getAllRegions ( ) ; return ( b = this . arrangement . deleteRegion ( a ) ) ? this . _old = c : ( this . _old = this . getAllRegions ( ) , this . relayout ( ) ) , b } , setRegionSize : function ( a , b ) { var c , d = this . getAllRegions ( ) ; return ( c = this . arrangement . setRegionSize ( a , b ) ) && ( this . _old = d ) , c } , setPosition : function ( a , b ) { return this . arrangement . setPosition ( a , b ) } , setRegionPosition : function ( a , b ) { this . getRegionByName ( a ) ; return this . arrangement . setRegionPosition ( a , b ) } , setDropPosition : function ( a , b ) { return this . arrangement . setDropPosition ( a , b ) } , scrollInterval : function ( a , b , c , d ) { d ( { offsetX : 0 , offsetY : 0 } ) } , scrollEnd : function ( ) { this . lastActiveRegion = "" , this . _scrollInterval && ( clearInterval ( this . _scrollInterval ) , this . _scrollInterval = null ) } , scrollTo : function ( a ) { this . arrangement . scrollTo ( a ) } , zoom : function ( a ) { this . arrangement . zoom ( a ) } , resize : function ( ) { this . arrangement . resize ( ) } , relayout : function ( ) { return this . arrangement . relayout ( ) } , setLayoutType : function ( a ) { this . arrangement . setLayoutType ( a ) } , getLayoutType : function ( ) { return this . arrangement . getLayoutType ( ) } , getLayoutRatio : function ( ) { return this . arrangement . getLayoutRatio ( ) } , getHelper : function ( ) { return this . arrangement . getHelper ( ) } , getRegionByName : function ( a ) { return this . arrangement . getRegionByName ( a ) } , getAllRegions : function ( ) { return this . arrangement . getAllRegions ( ) } , revoke : function ( ) { this . _old && this . populate ( BI . toArray ( this . _old ) ) } , populate : function ( a ) { var b = this ; BI . each ( a , function ( a , c ) { b . _initResizable ( c . el ) }
c = a . value , BI . isNull ( c ) && ( c = a ) ) ; var f = function ( a , b ) { var c = a . print ( "%Y-%x-%e" ) ; d . editor . setState ( c ) , d . editor . setValue ( c ) , d . setTitle ( b + ":" + c ) } ; switch ( b ) { case BI . DateTrigger . MULTI _DATE _YEAR _PREV : var g = c + BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _YEAR _PREV ] ; e = Date . getDate ( e . getFullYear ( ) - 1 * c , e . getMonth ( ) , e . getDate ( ) ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _YEAR _AFTER : var g = c + BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _YEAR _AFTER ] ; e = Date . getDate ( e . getFullYear ( ) + 1 * c , e . getMonth ( ) , e . getDate ( ) ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _YEAR _BEGIN : var g = BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _YEAR _BEGIN ] ; e = Date . getDate ( e . getFullYear ( ) , 0 , 1 ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _YEAR _END : var g = BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _YEAR _END ] ; e = Date . getDate ( e . getFullYear ( ) , 11 , 31 ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _QUARTER _PREV : var g = c + BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _QUARTER _PREV ] ; e = Date . getDate ( ) . getBeforeMulQuarter ( c ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _QUARTER _AFTER : var g = c + BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _QUARTER _AFTER ] ; e = Date . getDate ( ) . getAfterMulQuarter ( c ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _QUARTER _BEGIN : var g = BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _QUARTER _BEGIN ] ; e = Date . getDate ( ) . getQuarterStartDate ( ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _QUARTER _END : var g = BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _QUARTER _END ] ; e = Date . getDate ( ) . getQuarterEndDate ( ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _MONTH _PREV : var g = c + BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _MONTH _PREV ] ; e = Date . getDate ( ) . getBeforeMultiMonth ( c ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _MONTH _AFTER : var g = c + BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _MONTH _AFTER ] ; e = Date . getDate ( ) . getAfterMultiMonth ( c ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _MONTH _BEGIN : var g = BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _MONTH _BEGIN ] ; e = Date . getDate ( e . getFullYear ( ) , e . getMonth ( ) , 1 ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _MONTH _END : var g = BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _MONTH _END ] ; e = Date . getDate ( e . getFullYear ( ) , e . getMonth ( ) , e . getLastDateOfMonth ( ) . getDate ( ) ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _WEEK _PREV : var g = c + BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _WEEK _PREV ] ; e = e . getOffsetDate ( - 7 * c ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _WEEK _AFTER : var g = c + BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _WEEK _AFTER ] ; e = e . getOffsetDate ( 7 * c ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _DAY _PREV : var g = c + BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _DAY _PREV ] ; e = e . getOffsetDate ( - 1 * c ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _DAY _AFTER : var g = c + BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _DAY _AFTER ] ; e = e . getOffsetDate ( 1 * c ) , f ( e , g ) ; break ; case BI . DateTrigger . MULTI _DATE _DAY _TODAY : var g = BI . DateTrigger . MULTI _DATE _SEGMENT _NUM [ BI . DateTrigger . MULTI _DATE _DAY _TODAY ] ; e = Date . getDate ( ) , f ( e , g ) ; break ; default : if ( BI . isNull ( c ) || BI . isNull ( c . day ) ) this . editor . setState ( "" ) , this . editor . setValue ( "" ) , this . setTitle ( "" ) ; else { var h = c . year + "-" + ( c . month + 1 ) + "-" + c . day ; this . editor . setState ( h ) , this . editor . setValue ( h ) , this . setTitle ( h ) } } } , getKey : function ( ) { return this . editor . getValue ( ) } , getValue : function ( ) { return this . store _value } } ) , BI . DateTrigger . MULTI _DATE _YEAR _PREV = 1 , BI . DateTrigger . MULTI _DATE _YEAR _AFTER = 2 , BI . DateTrigger . MULTI _DATE _YEAR _BEGIN = 3 , BI . DateTrigger . MULTI _DATE _YEAR _END = 4 , BI . DateTrigger . MULTI _DATE _MONTH _PREV = 5 , BI . DateTrigger . MULTI _DATE _MONTH _AFTER = 6 , BI . DateTrigger . MULTI _DATE _MONTH _BEGIN = 7 , BI . DateTrigger . MULTI _DATE _MONTH _END = 8 , BI . DateTrigger . MULTI _DATE _QUARTER _PREV = 9 , BI . DateTrigger . MULTI _DATE _QUARTER _AFTER = 10 , BI . DateTrigger . MULTI _DATE _QUARTER _BEGIN = 11 , BI . DateTrigger . MULTI _DATE _QUARTER _END = 12 , BI . DateTrigger . MULTI _DATE _WEEK _PREV = 13 , BI . DateTrigger . MULTI _DATE _WEEK _AFTER = 14 , BI . DateTrigger . MULTI _DATE _DAY _PREV = 15 , BI . DateTrigge
} ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _BLUR ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _CLICK ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { a . _checkClear ( ) , a . fireEvent ( BI . SearchEditor . EVENT _CHANGE ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . SearchEditor . EVENT _KEY _DOWN , b ) } ) , this . editor . on ( BI . Editor . EVENT _SPACE , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _SPACE ) } ) , this . editor . on ( BI . Editor . EVENT _BACKSPACE , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _BACKSPACE ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _VALID ) } ) , this . editor . on ( BI . Editor . EVENT _ERROR , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _ERROR ) } ) , this . editor . on ( BI . Editor . EVENT _ENTER , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _ENTER ) } ) , this . editor . on ( BI . Editor . EVENT _RESTRICT , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _RESTRICT ) } ) , this . editor . on ( BI . Editor . EVENT _EMPTY , function ( ) { a . _checkClear ( ) , a . fireEvent ( BI . SearchEditor . EVENT _EMPTY ) } ) , this . editor . on ( BI . Editor . EVENT _REMOVE , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _REMOVE ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _CONFIRM ) } ) , this . editor . on ( BI . Editor . EVENT _START , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _START ) } ) , this . editor . on ( BI . Editor . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _PAUSE ) } ) , this . editor . on ( BI . Editor . EVENT _STOP , function ( ) { a . fireEvent ( BI . SearchEditor . EVENT _STOP ) } ) , this . clear . invisible ( ) } , _checkClear : function ( ) { this . getValue ( ) ? this . clear . visible ( ) : this . clear . invisible ( ) } , focus : function ( ) { this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) } , getValue : function ( ) { if ( this . isValid ( ) ) { var a = this . editor . getValue ( ) . match ( /[\S]+/g ) ; return BI . isNull ( a ) ? "" : a [ a . length - 1 ] } } , getLastValidValue : function ( ) { return this . editor . getLastValidValue ( ) } , setValue : function ( a ) { this . editor . setValue ( a ) , BI . isKey ( a ) && this . clear . visible ( ) } , isEditing : function ( ) { return this . editor . isEditing ( ) } , isValid : function ( ) { return this . editor . isValid ( ) } } ) , BI . SearchEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . SearchEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . SearchEditor . EVENT _BLUR = "EVENT_BLUR" , BI . SearchEditor . EVENT _CLICK = "EVENT_CLICK" , BI . SearchEditor . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . SearchEditor . EVENT _SPACE = "EVENT_SPACE" , BI . SearchEditor . EVENT _BACKSPACE = "EVENT_BACKSPACE" , BI . SearchEditor . EVENT _CLEAR = "EVENT_CLEAR" , BI . SearchEditor . EVENT _START = "EVENT_START" , BI . SearchEditor . EVENT _PAUSE = "EVENT_PAUSE" , BI . SearchEditor . EVENT _STOP = "EVENT_STOP" , BI . SearchEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . SearchEditor . EVENT _VALID = "EVENT_VALID" , BI . SearchEditor . EVENT _ERROR = "EVENT_ERROR" , BI . SearchEditor . EVENT _ENTER = "EVENT_ENTER" , BI . SearchEditor . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . SearchEditor . EVENT _REMOVE = "EVENT_REMOVE" , BI . SearchEditor . EVENT _EMPTY = "EVENT_EMPTY" , BI . shortcut ( "bi.search_editor" , BI . SearchEditor ) , BI . SmallSearchEditor = BI . inherit ( BI . SearchEditor , { _defaultConfig : function ( ) { var a = BI . SmallSearchEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-small-search-editor" , height : 24 } ) } , _init : function ( ) { BI . SmallSearchEditor . superclass . _init . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.small_search_editor" , BI . SmallSearchEditor ) , BI . TextEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . TextEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-text-editor bi-border" , hgap : 4 , vgap : 2 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 1 , watermark : "" , errorText : "" , height : 24 } ) } , _init : function ( ) { BI . TextEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; BI . isNumber ( b . height ) && this . element . css ( { height : b . height - 2 } ) , BI . isNumber ( b . width ) && this . element . css ( { width : b . width - 2 } ) , this . editor = BI . createWidget ( { type : "bi.editor" , height : b . height - 2 , hgap : b . hgap , vgap : b . vgap , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , value : b . value , title : b . title , tipType : b . tipType , validationChecker : b . validationChecker , quitChecker : b . quitChecker , allowBlank : b . allowBlank , w
left : 0 , width : "100%" } } , _createTrackWrapper : function ( ) { return BI . createWidget ( { type : "bi.absolute" , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . grayTrack , top : 0 , left : 0 , width : "100%" } , { el : this . blueTrack , top : 0 , left : 0 , width : "0%" } ] } ] , hgap : 8 , height : 8 } , top : 8 , left : 0 , width : "100%" } ] } ) } , _checkValidation : function ( a ) { var b = this . options , c = ! 1 , d = ( a + "" ) . split ( "." ) [ 1 ] ; return BI . isEmptyString ( d ) || BI . isNumeric ( a ) && ! ( BI . isNull ( a ) || a < this . min || a > this . max ) && ( b . digit === ! 1 ? c = ! 0 : ( d = d || "" , c = d . length === b . digit ) ) , c } , _checkOverlap : function ( ) { var a = this . labelOne . element [ 0 ] . offsetLeft , b = this . labelTwo . element [ 0 ] . offsetLeft ; a <= b ? b - a < 90 ? this . labelTwo . element . css ( { top : 40 } ) : this . labelTwo . element . css ( { top : 0 } ) : a - b < 90 ? this . labelTwo . element . css ( { top : 40 } ) : this . labelTwo . element . css ( { top : 0 } ) } , _setLabelOnePosition : function ( a ) { this . labelOne . element . css ( { left : a + "%" } ) , this . _checkOverlap ( ) } , _setLabelTwoPosition : function ( a ) { this . labelTwo . element . css ( { left : a + "%" } ) , this . _checkOverlap ( ) } , _setSliderOnePosition : function ( a ) { this . sliderOne . element . css ( { left : a + "%" } ) } , _setSliderTwoPosition : function ( a ) { this . sliderTwo . element . css ( { left : a + "%" } ) } , _setBlueTrackLeft : function ( a ) { this . blueTrack . element . css ( { left : a + "%" } ) } , _setBlueTrackWidth : function ( a ) { this . blueTrack . element . css ( { width : a + "%" } ) } , _setBlueTrack : function ( ) { var a = this . _getPercentByValue ( this . labelOne . getValue ( ) ) , b = this . _getPercentByValue ( this . labelTwo . getValue ( ) ) ; a <= b ? ( this . _setBlueTrackLeft ( a ) , this . _setBlueTrackWidth ( b - a ) ) : ( this . _setBlueTrackLeft ( b ) , this . _setBlueTrackWidth ( a - b ) ) } , _setAllPosition : function ( a , b ) { this . _setSliderOnePosition ( a ) , this . _setLabelOnePosition ( a ) , this . _setSliderTwoPosition ( b ) , this . _setLabelTwoPosition ( b ) , this . _setBlueTrack ( ) } , _setVisible : function ( a ) { this . sliderOne . setVisible ( a ) , this . sliderTwo . setVisible ( a ) , this . labelOne . setVisible ( a ) , this . labelTwo . setVisible ( a ) } , _setErrorText : function ( ) { var a = BI . i18nText ( "BI-Please_Enter" ) + this . min + "-" + this . max + BI . i18nText ( "BI-Basic_De" ) + BI . i18nText ( "BI-Basic_Number" ) ; this . labelOne . setErrorText ( a ) , this . labelTwo . setErrorText ( a ) } , _getGrayTrackLength : function ( ) { return this . grayTrack . element [ 0 ] . scrollWidth } , _getValueByPercent : function ( a ) { var b = this . calculation . accurateSubtraction ( this . max , this . min ) , c = this . calculation . accurateMultiplication ( b , a ) , d = this . calculation . accurateDivisionTenExponent ( c , 2 ) ; if ( this . precision < 0 ) { var e = BI . parseFloat ( this . calculation . accurateAddition ( d , this . min ) ) , f = Math . round ( this . calculation . accurateDivisionTenExponent ( e , - this . precision ) ) ; return this . calculation . accurateMultiplication ( f , Math . pow ( 10 , - this . precision ) ) } return BI . parseFloat ( this . calculation . accurateAddition ( d , this . min ) . toFixed ( this . precision ) ) } , _getPercentByValue : function ( a ) { return 100 * ( a - this . min ) / ( this . max - this . min ) } , _setDraggableEnable : function ( a ) { this . sliderOne . setEnable ( a ) , this . sliderTwo . setEnable ( a ) } , _getPrecision : function ( ) { var a = this . calculation . accurateSubtraction ( this . max , this . min ) , b = a . toPrecision ( 4 ) , c = b . indexOf ( "e" ) , d = [ ] ; if ( c > - 1 ) { d = b . split ( "e" ) ; var e = BI . size ( d [ 0 ] . split ( "." ) [ 1 ] ) , f = BI . parseInt ( d [ 1 ] . substring ( 1 ) ) ; return e - f } return d = b . split ( "." ) , d . length > 1 ? d [ 1 ] . length : 0 } , _assertValue : function ( a ) { return a <= this . min ? this . min : a >= this . max ? this . max : a } , getValue : function ( ) { return this . valueOne <= this . valueTwo ? { min : this . valueOne , max : this . valueTwo } : { min : this . valueTwo , max : this . valueOne } } , setMinAndMax : function ( a ) { var b = BI . parseFloat ( a . min ) , c = BI . parseFloat ( a . max ) ; ! isNaN ( b ) && ! isNaN ( c ) && c >= b && ( this . min = b , this . max = c , this . valueOne = b , this . valueTwo = c , this . precision = this . _getPrecision ( ) , this . _setDraggableEnable ( ! 0 ) ) , c === b && this . _setDraggableEnable ( ! 1 ) } , setValue : function ( a ) { var b = this . options , c = BI . parseFloat ( a . min ) , d = BI . parseFloat ( a . max ) ; c = b . digit === ! 1 ? c : c . toFixed ( b . digit ) , d = b . digit === ! 1 ? d : d . toFixed ( b . digit ) , isNaN ( c ) || isNaN ( d ) || ( this . _checkValidation ( c ) && ( this . valueOne = c ) , this . _checkValidation ( d ) && ( this . valueTwo = d ) , c < this . min && ( this . valueOne = this . min ) , d > this . max && ( this . valueTwo = this . max ) ) } , reset : function ( ) { this . _setVisible ( ! 1 ) , this . enable = ! 1 , this . valueOne = "" , this . valueTwo = "" , this . min = NaN , this . max = NaN , this . _setBlueTrackWidth ( 0 ) } , populate : function ( ) { isNaN ( this . min ) || isNaN ( this . max )
case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _AFTER : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _TODAY : this . dateTab . setSelect ( BI . MultiDateCombo . MULTI _DATE _DAY _CARD ) , this . cur = BI . MultiDateCombo . MULTI _DATE _DAY _CARD , this . day . setValue ( { type : c , value : d } ) , e . _setInnerValue ( this . day ) ; break ; default : if ( this . _checkValueValid ( d ) ) { var b = Date . getDate ( ) ; this . dateTab . setSelect ( BI . MultiDateCombo . MULTI _DATE _YMD _CARD ) , this . ymd . setValue ( { year : b . getFullYear ( ) , month : b . getMonth ( ) , day : b . getDate ( ) } ) , this . textButton . setValue ( BI . i18nText ( "BI-Multi_Date_Today" ) ) } else this . dateTab . setSelect ( BI . MultiDateCombo . MULTI _DATE _YMD _CARD ) , this . ymd . setValue ( d ) , this . textButton . setValue ( BI . i18nText ( "BI-Multi_Date_Today" ) ) ; this . textButton . setEnable ( ! 0 ) } } , getValue : function ( ) { var a = this . dateTab . getSelect ( ) ; switch ( a ) { case BI . MultiDateCombo . MULTI _DATE _YMD _CARD : return this . ymd . getValue ( ) ; case BI . MultiDateCombo . MULTI _DATE _YEAR _CARD : return this . year . getValue ( ) ; case BI . MultiDateCombo . MULTI _DATE _QUARTER _CARD : return this . quarter . getValue ( ) ; case BI . MultiDateCombo . MULTI _DATE _MONTH _CARD : return this . month . getValue ( ) ; case BI . MultiDateCombo . MULTI _DATE _WEEK _CARD : return this . week . getValue ( ) ; case BI . MultiDateCombo . MULTI _DATE _DAY _CARD : return this . day . getValue ( ) } } } ) , BI . MultiDatePopup . BUTTON _OK _EVENT _CHANGE = "BUTTON_OK_EVENT_CHANGE" , BI . MultiDatePopup . BUTTON _lABEL _EVENT _CHANGE = "BUTTON_lABEL_EVENT_CHANGE" , BI . MultiDatePopup . BUTTON _CLEAR _EVENT _CHANGE = "BUTTON_CLEAR_EVENT_CHANGE" , BI . MultiDatePopup . CALENDAR _EVENT _CHANGE = "CALENDAR_EVENT_CHANGE" , BI . shortcut ( "bi.multidate_popup" , BI . MultiDatePopup ) , BI . QuarterCard = BI . inherit ( BI . MultiDateCard , { _defaultConfig : function ( ) { return $ . extend ( BI . QuarterCard . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multidate-quartercard" } ) } , _init : function ( ) { BI . QuarterCard . superclass . _init . apply ( this , arguments ) } , dateConfig : function ( ) { return [ { selected : ! 0 , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _PREV , isEditorExist : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Quarter_Prev" ) } , { value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _AFTER , isEditorExist : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Quarter_Next" ) } , { value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _BEGIN , isEditorExist : ! 1 , text : BI . i18nText ( "BI-Multi_Date_Quarter_Begin" ) } , { value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _END , isEditorExist : ! 1 , text : BI . i18nText ( "BI-Multi_Date_Quarter_End" ) } ] } , defaultSelectedItem : function ( ) { return BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _PREV } } ) , BI . QuarterCard . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.quartercard" , BI . QuarterCard ) , BI . MultiDateSegment = BI . inherit ( BI . Single , { constants : { itemHeight : 24 , maxGap : 15 , minGap : 10 , textWidth : 60 , defaultEditorValue : "1" } , _defaultConfig : function ( ) { return $ . extend ( BI . MultiDateSegment . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multidate-segment" , text : "" , height : 30 , isEditorExist : ! 0 , selected : ! 1 , defaultEditorValue : "1" } ) } , _init : function ( ) { BI . MultiDateSegment . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . radio = BI . createWidget ( { type : "bi.radio" , selected : b . selected } ) , this . radio . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . textEditor = BI . createWidget ( { type : "bi.text_editor" , value : this . constants . defaultEditorValue , title : function ( ) { return a . textEditor . getValue ( ) } , tipType : "success" , cls : "bi-multidate-editor" , width : this . constants . textWidth , height : this . constants . itemHeight } ) , this . textEditor . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , cls : "bi-multidate-normal-label" , text : b . text , height : this . constants . itemHeight } ) , this . _createSegment ( ) } , _createSegment : function ( ) { return this . options . isEditorExist === ! 0 ? BI . createWidget ( { element : this , type : "bi.left" , items : [ { el : { type : "bi.center_adapt" , items : [ this . radio ] , height : this . constants . itemHeight } , lgap : 0 } , { el : { type : "bi.center_adapt" , items : [ this . textEditor ] , widgetName : "textEditor" } , lgap : this . constants . maxGap } , { el : this . text , lgap : this . constants . minGap } ] } ) : BI . createWidget ( { element : this , type : "bi.left" , items : [ { el : { type : " bi . ce
b . onClickContinueSelect ( ) } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { height : this . constants . height , el : { type : "bi.left" , cls : "multi-select-continue-select" , items : [ { el : { type : "bi.label" , text : BI . i18nText ( "BI-Selected_Data" ) } , lgap : this . constants . lgap , tgap : this . constants . tgap } , { el : this . continueSelect , lgap : this . constants . lgap , tgap : this . constants . tgap } ] } } , { height : "fill" , el : this . display } ] } ) } , setValue : function ( a ) { this . storeValue = a || { } } , empty : function ( ) { this . display . empty ( ) } , populate : function ( ) { this . display . populate . apply ( this . display , arguments ) } } ) , BI . shortcut ( "bi.multi_select_check_pane" , BI . MultiSelectCheckPane ) , BI . DisplaySelectedList = BI . inherit ( BI . Pane , { constants : { height : 25 , lgap : 10 } , _defaultConfig : function ( ) { return BI . extend ( BI . DisplaySelectedList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-display-list" , itemsCreator : BI . emptyFn , items : [ ] } ) } , _init : function ( ) { BI . DisplaySelectedList . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . hasNext = ! 1 , this . button _group = BI . createWidget ( { type : "bi.list_pane" , element : this , el : { type : "bi.loader" , isDefaultInit : ! 1 , logic : { dynamic : ! 0 , scrolly : ! 0 } , items : this . _createItems ( b . items ) , chooseType : BI . ButtonGroup . CHOOSE _TYPE _MULTI , layouts : [ { type : "bi.vertical" , lgap : 10 } ] } , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { a . hasNext = ! ! b . hasNext , d ( a . _createItems ( b . items ) ) } ) } , hasNext : function ( ) { return a . hasNext } } ) } , _createItems : function ( a ) { return BI . createItems ( a , { type : "bi.icon_text_item" , cls : "cursor-default check-font display-list-item bi-tips" , once : ! 0 , invalid : ! 0 , selected : ! 0 , height : this . constants . height , logic : { dynamic : ! 0 } } ) } , empty : function ( ) { this . button _group . empty ( ) } , populate : function ( a ) { 0 === arguments . length ? this . button _group . populate ( ) : this . button _group . populate ( this . _createItems ( a ) ) } } ) , BI . shortcut ( "bi.display_selected_list" , BI . DisplaySelectedList ) , BI . MultiSelectInsertCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectInsertCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-insert-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 28 } ) } , _init : function ( ) { BI . MultiSelectInsertCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = function ( ) { BI . isKey ( a . _startValue ) && a . storeValue . value [ a . storeValue . type === BI . Selection . All ? "remove" : "pushDistinct" ] ( a . _startValue ) , a . trigger . getSearcher ( ) . setState ( a . storeValue ) , a . trigger . getCounter ( ) . setButtonChecked ( a . storeValue ) } ; this . storeValue = { } , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.multi_select_trigger" , height : b . height , masker : { offset : { left : 1 , top : 1 , right : 2 , bottom : 33 } } , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { 1 === c . times && BI . isNotNull ( c . keywords ) && a . trigger . setValue ( BI . deepClone ( a . getValue ( ) ) ) , d . apply ( a , arguments ) } ) } } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _START , function ( ) { a . _setStartValue ( "" ) , this . getSearcher ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _STOP , function ( ) { a . _setStartValue ( "" ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _PAUSE , function ( ) { var b = this . getSearcher ( ) . getKeyword ( ) ; a . _join ( { type : BI . Selection . Multi , value : [ b ] } , function ( ) { a . storeValue . type === BI . Selection . Multi && a . storeValue . value . pushDistinct ( b ) , a . combo . setValue ( a . storeValue ) , a . _setStartValue ( b ) , c ( ) , a . populate ( ) , a . _setStartValue ( "" ) } ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _SEARCHING , function ( b ) { var d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . combo . setValue ( a . storeValue ) , c ( ) , a . combo . populate ( ) , a . _setStartValue ( "" ) ) : ( a . combo . setValue ( a . storeValue ) , c ( ) ) } ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _CHANGE , function ( b , d ) { d instanceof BI . MultiSelectBar ? a . _joinAll ( this . getValue ( ) , function ( ) { c ( ) } ) : a . _join ( this . getValue ( ) , function ( ) { c ( ) } ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW , function ( ) { this . getCounter ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _COUNTER _CLICK , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , tog
} ) , this . editor . setState ( c ) } else this . editor . setState ( BI . Selection . Multi ) } , setValue : function ( a ) { this . setState ( a ) , this . searcher . setValue ( a ) } , getKey : function ( ) { return this . editor . getValue ( ) } , getValue : function ( ) { return this . searcher . getValue ( ) } , populate : function ( a ) { this . searcher . populate . apply ( this . searcher , arguments ) } } ) , BI . MultiSelectSearcher . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . MultiSelectSearcher . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiSelectSearcher . EVENT _START = "EVENT_START" , BI . MultiSelectSearcher . EVENT _STOP = "EVENT_STOP" , BI . MultiSelectSearcher . EVENT _PAUSE = "EVENT_PAUSE" , BI . MultiSelectSearcher . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . shortcut ( "bi.multi_select_searcher" , BI . MultiSelectSearcher ) , BI . MultiSelectCheckSelectedSwitcher = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectCheckSelectedSwitcher . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-check-selected-switcher" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , el : { } , popup : { } , adapter : null , masker : { } } ) } , _init : function ( ) { BI . MultiSelectCheckSelectedSwitcher . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . button = BI . createWidget ( b . el , { type : "bi.multi_select_check_selected_button" , itemsCreator : b . itemsCreator } ) , this . button . on ( BI . Events . VIEW , function ( ) { a . fireEvent ( BI . Events . VIEW , arguments ) } ) , this . switcher = BI . createWidget ( { type : "bi.switcher" , toggle : ! 1 , element : this , el : this . button , popup : BI . extend ( { type : "bi.multi_select_check_pane" , valueFormatter : b . valueFormatter , itemsCreator : b . itemsCreator , onClickContinueSelect : function ( ) { a . switcher . hideView ( ) } } , b . popup ) , adapter : b . adapter , masker : b . masker } ) , this . switcher . on ( BI . Switcher . EVENT _TRIGGER _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectCheckSelectedSwitcher . EVENT _TRIGGER _CHANGE ) } ) , this . switcher . on ( BI . Switcher . EVENT _BEFORE _POPUPVIEW , function ( ) { a . fireEvent ( BI . MultiSelectCheckSelectedSwitcher . EVENT _BEFORE _POPUPVIEW ) } ) , this . switcher . on ( BI . Switcher . EVENT _AFTER _POPUPVIEW , function ( ) { var a = this ; BI . nextTick ( function ( ) { a . populate ( ) } ) } ) , this . switcher . element . click ( function ( a ) { a . stopPropagation ( ) } ) } , adjustView : function ( ) { this . switcher . adjustView ( ) } , hideView : function ( ) { this . switcher . empty ( ) , this . switcher . hideView ( ) } , setAdapter : function ( a ) { this . switcher . setAdapter ( a ) } , setValue : function ( a ) { this . switcher . setValue ( a ) } , setButtonChecked : function ( a ) { this . button . setValue ( a ) } , getValue : function ( ) { } , populate : function ( a ) { this . switcher . populate . apply ( this . switcher , arguments ) } } ) , BI . MultiSelectCheckSelectedSwitcher . EVENT _TRIGGER _CHANGE = "MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE" , BI . MultiSelectCheckSelectedSwitcher . EVENT _BEFORE _POPUPVIEW = "MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.multi_select_check_selected_switcher" , BI . MultiSelectCheckSelectedSwitcher ) , BI . MultiSelectInsertList = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectInsertList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-insert-list" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectInsertList . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . storeValue = { } ; var c = function ( ) { BI . isKey ( a . _startValue ) && a . storeValue . value [ a . storeValue . type === BI . Selection . All ? "remove" : "pushDistinct" ] ( a . _startValue ) } ; this . adapter = BI . createWidget ( { type : "bi.multi_select_loader" , cls : "popup-multi-select-list bi-border-left bi-border-right bi-border-bottom" , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , logic : { dynamic : ! 1 } , el : { } } ) , this . adapter . on ( BI . MultiSelectLoader . EVENT _CHANGE , function ( ) { a . storeValue = this . getValue ( ) , c ( ) , a . fireEvent ( BI . MultiSelectInsertList . EVENT _CHANGE ) } ) , this . searcherPane = BI . createWidget ( { type : "bi.multi_select_search_pane" , cls : "bi-border-left bi-border-right bi-border-bottom" , valueFormatter : b . valueFormatter , keywordGetter : function ( ) { return a . trigger . getKeyword ( ) } , itemsCreator : function ( c , d ) { c . keyword = a . trigger . getKeyword ( ) , this . setKeyword ( c . keyword ) , b . itemsCreator ( c , d ) } } ) , this . searcherPane . setVisible ( ! 1 ) , this . trigger = BI . createWidget ( { type : "bi.searcher" , isAutoSearch : ! 1 , is
a . fireEvent ( BI . NumberEditor . EVENT _CHANGE ) } ) , this . editor . on ( BI . TextEditor . EVENT _CONFIRM , function ( ) { a . fireEvent ( BI . NumberEditor . EVENT _CONFIRM ) } ) , this . topBtn = BI . createWidget ( { type : "bi.icon_button" , trigger : "lclick," , cls : "column-pre-page-h-font top-button bi-border-left bi-border-bottom" } ) , this . topBtn . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . _finetuning ( b . step ) , a . fireEvent ( BI . NumberEditor . EVENT _CHANGE ) , a . fireEvent ( BI . NumberEditor . EVENT _CONFIRM ) } ) , this . bottomBtn = BI . createWidget ( { type : "bi.icon_button" , trigger : "lclick," , cls : "column-next-page-h-font bottom-button bi-border-left bi-border-top" } ) , this . bottomBtn . on ( BI . IconButton . EVENT _CHANGE , function ( ) { a . _finetuning ( - b . step ) , a . fireEvent ( BI . NumberEditor . EVENT _CHANGE ) , a . fireEvent ( BI . NumberEditor . EVENT _CONFIRM ) } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ this . editor , { el : { type : "bi.grid" , columns : 1 , rows : 2 , items : [ { column : 0 , row : 0 , el : this . topBtn } , { column : 0 , row : 1 , el : this . bottomBtn } ] } , width : 23 } ] } ) } , _finetuning : function ( a ) { var b = BI . parseFloat ( this . getValue ( ) ) ; this . setValue ( b . add ( a ) ) } , setUpEnable : function ( a ) { this . topBtn . setEnable ( ! ! a ) } , setDownEnable : function ( a ) { this . bottomBtn . setEnable ( ! ! a ) } , getValue : function ( ) { return this . options . value } , setValue : function ( a ) { var b = this . options ; b . value = a , this . editor . setValue ( b . valueFormatter ( a ) ) } } ) , BI . NumberEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . NumberEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.number_editor" , BI . NumberEditor ) , BI . NumberInterval = BI . inherit ( BI . Single , { constants : { typeError : "typeBubble" , numberError : "numberBubble" , signalError : "signalBubble" , editorWidth : 114 , columns : 5 , width : 30 , rows : 1 , numberErrorCls : "number-error" , border : 1 , less : 0 , less _equal : 1 , numTip : "" } , _defaultConfig : function ( ) { var a = BI . NumberInterval . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-number-interval" , height : 25 , validation : "valid" } ) } , _init : function ( ) { var a = this , b = this . constants , c = this . options ; BI . NumberInterval . superclass . _init . apply ( this , arguments ) , this . smallEditor = BI . createWidget ( { type : "bi.editor" , height : c . height - 2 , watermark : BI . i18nText ( "BI-Basic_Unrestricted" ) , allowBlank : ! 0 , value : c . min , level : "warning" , tipType : "warning" , quitChecker : function ( ) { return ! 1 } , validationChecker : function ( c ) { return ! ! BI . isNumeric ( c ) || ( a . smallEditorBubbleType = b . typeError , ! 1 ) } , cls : "number-interval-small-editor bi-border-top bi-border-bottom bi-border-left" } ) , this . smallTip = BI . createWidget ( { type : "bi.label" , text : c . numTip , height : c . height - 2 , invisible : ! 0 } ) , BI . createWidget ( { type : "bi.absolute" , element : this . smallEditor . element , items : [ { el : this . smallTip , top : 0 , right : 5 } ] } ) , this . bigEditor = BI . createWidget ( { type : "bi.editor" , height : c . height - 2 , watermark : BI . i18nText ( "BI-Basic_Unrestricted" ) , allowBlank : ! 0 , value : c . max , level : "warning" , tipType : "warning" , quitChecker : function ( ) { return ! 1 } , validationChecker : function ( c ) { return ! ! BI . isNumeric ( c ) || ( a . bigEditorBubbleType = b . typeError , ! 1 ) } , cls : "number-interval-big-editor bi-border-top bi-border-bottom bi-border-right" } ) , this . bigTip = BI . createWidget ( { type : "bi.label" , text : c . numTip , height : c . height - 2 , invisible : ! 0 } ) , BI . createWidget ( { type : "bi.absolute" , element : this . bigEditor . element , items : [ { el : this . bigTip , top : 0 , right : 5 } ] } ) , this . smallCombo = BI . createWidget ( { type : "bi.icon_combo" , cls : "number-interval-small-combo bi-border" , height : c . height - 2 , items : [ { text : "(" + BI . i18nText ( "BI-Less_Than" ) + ")" , iconClass : "less-font" , value : 0 } , { text : "(" + BI . i18nText ( "BI-Less_And_Equal" ) + ")" , value : 1 , iconClass : "less-equal-font" } ] } ) , c . closemin === ! 0 ? this . smallCombo . setValue ( 1 ) : this . smallCombo . setValue ( 0 ) , this . bigCombo = BI . createWidget ( { type : "bi.icon_combo" , cls : "number-interval-big-combo bi-border" , height : c . height - 2 , items : [ { text : "(" + BI . i18nText ( "BI-Less_Than" ) + ")" , iconClass : "less-font" , value : 0 } , { text : "(" + BI . i18nText ( "BI-Less_And_Equal" ) + ")" , value : 1 , iconClass : "less-equal-font" } ] } ) , c . closemax === ! 0 ? this . bigCombo . setValue ( 1 ) : this . bigCombo . setValue ( 0 ) , this . label = BI . createWidget ( { type : "bi.label" , text : BI . i18nText ( "BI-Basic_Value" ) , textHeight : c . height - 2 * b . border , width : b . width - 2 * b . border , height : c . height - 2 * b . border , level : "warning" , tipType : "warning" } ) , this . left = BI . createWidget ( { type : "bi.htape" , items : [ {
vgap : 2 , textWidth : 40 , errorText : BI . i18nText ( "BI-Quarter_Trigger_Error_Text" ) } , _defaultConfig : function ( ) { return BI . extend ( BI . QuarterTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-quarter-trigger bi-border" , height : 24 } ) } , _init : function ( ) { BI . QuarterTrigger . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = this . _const ; this . editor = BI . createWidget ( { type : "bi.sign_editor" , height : b . height , validationChecker : function ( a ) { return "" === a || BI . isPositiveInteger ( a ) && a >= 1 && a <= 4 } , quitChecker : function ( a ) { return ! 1 } , hgap : c . hgap , vgap : c . vgap , allowBlank : ! 0 , errorText : c . errorText } ) , this . editor . on ( BI . SignEditor . EVENT _FOCUS , function ( ) { a . fireEvent ( BI . QuarterTrigger . EVENT _FOCUS ) } ) , this . editor . on ( BI . SignEditor . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . QuarterTrigger . EVENT _CHANGE ) } ) , this . editor . on ( BI . SignEditor . EVENT _CONFIRM , function ( ) { var b = a . editor . getValue ( ) ; BI . isNotNull ( b ) && ( a . editor . setValue ( b ) , a . editor . setTitle ( b ) ) , a . fireEvent ( BI . QuarterTrigger . EVENT _CONFIRM ) } ) , this . editor . on ( BI . SignEditor . EVENT _SPACE , function ( ) { a . editor . isValid ( ) && a . editor . blur ( ) } ) , this . editor . on ( BI . SignEditor . EVENT _START , function ( ) { a . fireEvent ( BI . QuarterTrigger . EVENT _START ) } ) , this . editor . on ( BI . SignEditor . EVENT _STOP , function ( ) { a . fireEvent ( BI . QuarterTrigger . EVENT _STOP ) } ) , BI . createWidget ( { element : this , type : "bi.htape" , items : [ { el : this . editor } , { el : { type : "bi.text_button" , baseCls : "bi-trigger-quarter-text" , text : BI . i18nText ( "BI-Multi_Date_Quarter" ) , width : c . textWidth } , width : c . textWidth } , { el : { type : "bi.trigger_icon_button" , width : b . height } , width : b . height } ] } ) } , setValue : function ( a ) { a = a || "" , this . editor . setState ( a ) , this . editor . setValue ( a ) , this . editor . setTitle ( a ) } , getKey : function ( ) { return this . editor . getValue ( ) } } ) , BI . QuarterTrigger . EVENT _FOCUS = "EVENT_FOCUS" , BI . QuarterTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . QuarterTrigger . EVENT _START = "EVENT_START" , BI . QuarterTrigger . EVENT _STOP = "EVENT_STOP" , BI . QuarterTrigger . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.quarter_trigger" , BI . QuarterTrigger ) , BI . RelationViewItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . RelationViewItem . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-relation-view-item bi-list-item-active" , hoverIn : BI . emptyFn , hoverOut : BI . emptyFn } ) } , _init : function ( ) { BI . RelationViewItem . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . element . hover ( a . hoverIn , a . hoverOut ) , a . text = BI . isArray ( a . text ) ? a . text : [ a . text ] ; var b = [ ] , c = { type : "bi.vertical_adapt" , cls : "primary-key-font" , items : [ ] } ; a . isPrimary && c . items . push ( { type : "bi.icon" , width : 16 , height : 16 , title : BI . i18nText ( "BI-Primary_Key" ) } ) , c . items . push ( { type : "bi.label" , text : a . text . length > 1 ? BI . i18nText ( "BI-Basic_Union_Relation" ) : a . text [ 0 ] , value : a . value , height : 25 , textAlign : "left" , width : a . isPrimary ? 70 : 90 , lgap : a . isPrimary ? 0 : 10 } ) , a . text . length > 1 && ( b = BI . map ( a . text , function ( b , c ) { return { type : "bi.label" , text : c , value : a . value , height : 25 , textAlign : "left" , width : 70 , lgap : 15 } } ) ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : BI . concat ( [ c ] , b ) } ) } , enableHover : function ( a ) { BI . RelationViewRegion . superclass . enableHover . apply ( this , [ { container : "body" } ] ) } , setSelected : function ( a ) { this . element [ a ? "addClass" : "removeClass" ] ( "active" ) } } ) , BI . shortcut ( "bi.relation_view_item" , BI . RelationViewItem ) , BI . RelationView = BI . inherit ( BI . Widget , { _const : { lineColor : "#c4c6c6" , selectLineColor : "#009de3" } , _defaultConfig : function ( ) { return BI . extend ( BI . RelationView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-relation-view" , items : [ ] } ) } , _init : function ( ) { BI . RelationView . superclass . _init . apply ( this , arguments ) , this . populate ( this . options . items ) } , _calculateWidths : function ( ) { var a = [ ] ; return BI . each ( this . views , function ( b , c ) { BI . each ( c , function ( b , c ) { a [ b ] || ( a [ b ] = BI . MIN ) , a [ b ] = Math . max ( a [ b ] , c . getWidth ( ) ) } ) } ) , a } , _calculateHeights : function ( ) { var a = BI . makeArray ( BI . size ( this . views ) , BI . MIN ) ; return BI . each ( this . views , function ( b , c ) { BI . each ( c , function ( c , d ) { a [ b ] = Math . max ( a [ b ] , d . getHeight ( ) ) } ) } ) , a } , _hoverIn : function ( a ) { var b = this , c = this . _const ; BI . each ( this . relations , function ( d , e ) { BI . each ( e , function ( e , f ) { f [ 0 ] . primary . value !== a && f [ 0 ] . foreign . value !== a || ( b . lines [ d ] [ e ] . attr ( "stroke" , c . sele
this . renderedCells [ j ] . el . element . css ( "top" , k + "px" ) ) , f . push ( this . renderedCells [ j ] ) ; else { var l = BI . createWidget ( BI . extend ( { type : "bi.table_style_cell" , cls : "sequence-table-number-cell bi-border-left bi-border-right bi-border-bottom" , width : 60 , height : b . rowSize , text : this . start + h , styleGetter : function ( c ) { return function ( ) { return b . sequenceCellStyleGetter ( a . start + h - 1 ) } } ( i ) } ) ) ; f . push ( { el : l , left : 0 , top : k , _height : b . rowSize } ) } g . push ( this . start + h ) } var m = { } , n = { } , o = [ ] ; BI . each ( g , function ( b , c ) { BI . deepContains ( a . renderedKeys , c ) ? m [ b ] = c : n [ b ] = c } ) , BI . each ( this . renderedKeys , function ( a , b ) { BI . deepContains ( m , b ) || BI . deepContains ( n , b ) || o . push ( a ) } ) , BI . each ( o , function ( b , c ) { a . renderedCells [ c ] . el . destroy ( ) } ) ; var p = [ ] ; BI . each ( n , function ( a ) { p . push ( f [ a ] ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this . container , items : p } ) , this . renderedCells = f , this . renderedKeys = g } , _populate : function ( ) { this . headerContainer . empty ( ) , this . _createHeader ( ) , this . _layout ( ) , this . _calculateChildrenToRender ( ) } , setVerticalScroll : function ( a ) { if ( this . options . scrollTop !== a ) { this . options . scrollTop = a ; try { this . scrollContainer . element . scrollTop ( a ) } catch ( b ) { } } } , getVerticalScroll : function ( ) { return this . options . scrollTop } , setVPage : function ( a ) { a = a < 1 ? 1 : a ; var b = this . options ; this . start = ( a - 1 ) * b . pageSize + 1 } , _restore : function ( ) { this . options ; BI . each ( this . renderedCells , function ( a , b ) { b . el . destroy ( ) } ) , this . renderedCells = [ ] , this . renderedKeys = [ ] } , restore : function ( ) { this . _restore ( ) } , populate : function ( a , b ) { var c = this . options ; a && a !== this . options . items && ( c . items = a , this . _restore ( ) ) , b && b !== this . options . header && ( c . header = b ) , this . _populate ( ) } } ) , BI . shortcut ( "bi.sequence_table_list_number" , BI . SequenceTableListNumber ) , BI . SequenceTable = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SequenceTable . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-sequence-table" , el : { type : "bi.adaptive_table" } , sequence : { } , isNeedResize : ! 0 , isResizeAdapt : ! 1 , isNeedFreeze : ! 1 , freezeCols : [ ] , isNeedMerge : ! 1 , mergeCols : [ ] , mergeRule : BI . emptyFn , columnSize : [ ] , minColumnSize : [ ] , maxColumnSize : [ ] , headerRowSize : 25 , rowSize : 25 , regionColumnSize : [ ] , headerCellStyleGetter : BI . emptyFn , summaryCellStyleGetter : BI . emptyFn , sequenceCellStyleGetter : BI . emptyFn , header : [ ] , items : [ ] , crossHeader : [ ] , crossItems : [ ] , showSequence : ! 1 , startSequence : 1 } ) } , _init : function ( ) { BI . SequenceTable . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . sequence = BI . createWidget ( b . sequence , { type : "bi.sequence_table_list_number" , invisible : b . showSequence === ! 1 , startSequence : b . startSequence , isNeedFreeze : b . isNeedFreeze , header : b . header , items : b . items , crossHeader : b . crossHeader , crossItems : b . crossItems , headerRowSize : b . headerRowSize , rowSize : b . rowSize , width : 60 , height : b . height && b . height - BI . GridTableScrollbar . SIZE , headerCellStyleGetter : b . headerCellStyleGetter , summaryCellStyleGetter : b . summaryCellStyleGetter , sequenceCellStyleGetter : b . sequenceCellStyleGetter } ) , this . table = BI . createWidget ( b . el , { type : "bi.adaptive_table" , width : b . showSequence === ! 0 ? b . width - 60 : b . width , height : b . height , isNeedResize : b . isNeedResize , isResizeAdapt : b . isResizeAdapt , isNeedFreeze : b . isNeedFreeze , freezeCols : b . freezeCols , isNeedMerge : b . isNeedMerge , mergeCols : b . mergeCols , mergeRule : b . mergeRule , columnSize : b . columnSize , minColumnSize : b . minColumnSize , maxColumnSize : b . maxColumnSize , headerRowSize : b . headerRowSize , rowSize : b . rowSize , regionColumnSize : b . regionColumnSize , headerCellStyleGetter : b . headerCellStyleGetter , summaryCellStyleGetter : b . summaryCellStyleGetter , sequenceCellStyleGetter : b . sequenceCellStyleGetter , header : b . header , items : b . items , crossHeader : b . crossHeader , crossItems : b . crossItems } ) , this . table . on ( BI . Table . EVENT _TABLE _SCROLL , function ( b ) { a . sequence . getVerticalScroll ( ) !== this . getVerticalScroll ( ) && ( a . sequence . setVerticalScroll ( this . getVerticalScroll ( ) ) , a . sequence . populate ( ) ) , 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 =
baseCls : "bi-single-select-search-pane bi-card" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , keywordGetter : BI . emptyFn } ) } , _init : function ( ) { BI . SingleSelectSearchPane . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . tooltipClick = BI . createWidget ( { type : "bi.label" , invisible : ! 0 , text : BI . i18nText ( "BI-Click_Blank_To_Select" ) , cls : "single-select-toolbar" , height : this . constants . height } ) , this . loader = BI . createWidget ( { type : "bi.single_select_search_add_loader" , keywordGetter : b . keywordGetter , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator . apply ( a , [ c , function ( c ) { d ( c ) , a . setKeyword ( b . keywordGetter ( ) ) } ] ) } } ) , this . loader . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . resizer = BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . tooltipClick , height : 0 } , { el : this . loader } ] } ) , this . tooltipClick . setVisible ( ! 1 ) } , setKeyword : function ( a ) { var b , c = this . loader . getAllButtons ( ) . length > 0 && ( b = this . loader . getAllButtons ( ) [ 0 ] ) && a === b . getValue ( ) ; c !== this . tooltipClick . isVisible ( ) && ( this . tooltipClick . setVisible ( c ) , this . resizer . attr ( "items" ) [ 0 ] . height = c ? this . constants . height : 0 , this . resizer . resize ( ) ) } , hasMatched : function ( ) { return this . tooltipClick . isVisible ( ) } , setValue : function ( a ) { this . loader . setValue ( a ) } , getValue : function ( ) { return this . loader . getValue ( ) } , empty : function ( ) { this . loader . empty ( ) } , populate : function ( a ) { this . loader . populate . apply ( this . loader , arguments ) } } ) , BI . SingleSelectSearchPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_search_add_pane" , BI . SingleSelectSearchPane ) , BI . SingleSelectCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 28 } ) } , _init : function ( ) { BI . SingleSelectCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = function ( ) { BI . isKey ( a . _startValue ) && ( a . storeValue = a . _startValue ) , a . trigger . getSearcher ( ) . setState ( a . storeValue ) } ; this . storeValue = "" , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.single_select_add_trigger" , height : b . height , masker : { offset : { left : 1 , top : 1 , right : 2 , bottom : 33 } } , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { 1 === c . times && BI . isNotNull ( c . keywords ) && a . trigger . setValue ( a . getValue ( ) ) , d . apply ( a , arguments ) } ) } } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _START , function ( ) { a . _setStartValue ( "" ) , this . getSearcher ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _STOP , function ( ) { a . _setStartValue ( "" ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _PAUSE , function ( ) { if ( this . getSearcher ( ) . hasMatched ( ) ) { var b = this . getSearcher ( ) . getKeyword ( ) ; a . _join ( { type : BI . Selection . Multi , value : [ b ] } , function ( ) { a . combo . setValue ( a . storeValue ) , a . _setStartValue ( b ) , c ( ) , a . populate ( ) , a . _setStartValue ( "" ) } ) } } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _SEARCHING , function ( b ) { var d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . combo . setValue ( a . storeValue ) , c ( ) , a . combo . populate ( ) , a . _setStartValue ( "" ) ) : ( a . combo . setValue ( a . storeValue ) , c ( ) ) } ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _CHANGE , function ( b , d ) { a . storeValue = this . getValue ( ) , c ( ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _COUNTER _CLICK , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , toggle : ! 1 , el : this . trigger , adjustLength : 1 , popup : { type : "bi.single_select_popup_view" , ref : function ( ) { a . popup = this , a . trigger . setAdapter ( this ) } , listeners : [ { eventName : BI . SingleSelectPopupView . EVENT _CHANGE , action : function ( ) { a . storeValue = this . getValue ( ) , a . _adjust ( function ( ) { c ( ) } ) } } , { eventName : BI . SingleSelectPopupView . EVENT _CLICK _CONFIRM , action : function ( ) { a . _defaultState ( ) } } , { eventName : BI . SingleSelectPopupView . EVENT _CLICK _CLEAR , action : function ( ) { a . setValue ( ) , a . _defaultState ( ) } } ] , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , onLoaded : function ( ) { BI . nextTick ( function ( ) { a . combo . adjustWidth ( ) , a . combo . adjustHeight ( ) , a . trigger . getSearcher ( ) . adjustVie
type : "bi.level_tree" , expander : { isDefaultInit : ! 0 } , items : b . items , chooseType : BI . Selection . Single } ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . tree ] } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . tree . on ( BI . LevelTree . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SingleTreePopup . EVENT _CHANGE ) } ) , this . check ( ) } , getValue : function ( ) { return this . tree . getValue ( ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , this . tree . setValue ( a ) } , populate : function ( a ) { BI . SingleTreePopup . superclass . populate . apply ( this , arguments ) , this . tree . populate ( a ) } } ) , BI . SingleTreePopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_level_tree" , BI . SingleTreePopup ) , BI . SingleTreeTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleTreeTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-tree-trigger" , height : 24 , text : "" , items : [ ] } ) } , _init : function ( ) { BI . SingleTreeTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . trigger = BI . createWidget ( { type : "bi.select_text_trigger" , element : this , text : a . text , items : a . items , height : a . height } ) } , _checkTitle : function ( ) { var a = this , b = this . getValue ( ) ; BI . any ( this . options . items , function ( c , d ) { if ( b . contains ( d . value ) ) return a . trigger . setTitle ( d . text || d . value ) , ! 0 } ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , this . options . value = a , this . trigger . setValue ( a ) , this . _checkTitle ( ) } , getValue : function ( ) { return this . options . value || [ ] } , populate : function ( a ) { BI . SingleTreeTrigger . superclass . populate . apply ( this , arguments ) , this . trigger . populate ( a ) } } ) , BI . shortcut ( "bi.single_tree_trigger" , BI . SingleTreeTrigger ) , BI . SwitchTree = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SwitchTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-switch-tree" , items : [ ] } ) } , _init : function ( ) { BI . SwitchTree . superclass . _init . apply ( this , arguments ) ; this . options ; this . tab = BI . createWidget ( { type : "bi.tab" , element : this , tab : null , defaultShowIndex : BI . SwitchTree . SelectType . SingleSelect , cardCreator : BI . bind ( this . _createTree , this ) } ) } , _createTree : function ( a ) { var b = this , c = this . options ; switch ( a ) { case BI . SwitchTree . SelectType . SingleSelect : return this . levelTree = BI . createWidget ( { type : "bi.multilayer_single_level_tree" , isDefaultInit : ! 0 , items : BI . deepClone ( c . items ) } ) , this . levelTree . on ( BI . LevelTree . EVENT _CHANGE , function ( ) { b . fireEvent ( BI . SwitchTree . EVENT _CHANGE , arguments ) } ) , this . levelTree ; case BI . SwitchTree . SelectType . MultiSelect : return this . tree = BI . createWidget ( { type : "bi.simple_tree" , items : this . _removeIsParent ( BI . deepClone ( c . items ) ) } ) , this . tree . on ( BI . SimpleTreeView . EVENT _CHANGE , function ( ) { b . fireEvent ( BI . SwitchTree . EVENT _CHANGE , arguments ) } ) , this . tree } } , _removeIsParent : function ( a ) { return BI . each ( a , function ( a , b ) { BI . isNotNull ( b . isParent ) && delete b . isParent } ) , a } , switchSelect : function ( ) { switch ( this . getSelect ( ) ) { case BI . SwitchTree . SelectType . SingleSelect : this . setSelect ( BI . SwitchTree . SelectType . MultiSelect ) ; break ; case BI . SwitchTree . SelectType . MultiSelect : this . setSelect ( BI . SwitchTree . SelectType . SingleSelect ) } } , setSelect : function ( a ) { this . tab . setSelect ( a ) } , getSelect : function ( ) { return this . tab . getSelect ( ) } , setValue : function ( a ) { switch ( this . storeValue = a , this . getSelect ( ) ) { case BI . SwitchTree . SelectType . SingleSelect : this . levelTree . setValue ( a ) ; break ; case BI . SwitchTree . SelectType . MultiSelect : this . tree . setValue ( a ) } } , getValue : function ( ) { return this . tab . getValue ( ) } , populate : function ( a ) { this . options . items = a , BI . isNotNull ( this . levelTree ) && this . levelTree . populate ( BI . deepClone ( a ) ) , BI . isNotNull ( this . tree ) && this . tree . populate ( this . _removeIsParent ( BI . deepClone ( a ) ) ) } } ) , BI . SwitchTree . EVENT _CHANGE = "SwitchTree.EVENT_CHANGE" , BI . SwitchTree . SelectType = { SingleSelect : BI . Selection . Single , MultiSelect : BI . Selection . Multi } , BI . shortcut ( "bi.switch_tree" , BI . SwitchTree ) , BI . TimeInterval = BI . inherit ( BI . Single , { constants : { height : 25 , width : 25 , lgap : 15 , offset : - 15 , timeErrorCls : "time-error" , DATE _MIN _VALUE : "1900-01-01" , DATE _MAX _VALUE : "2099-12-31" } , _defaultConfig : function ( ) { var a = BI . TimeInterval . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-time-interval" } ) } , _init : fun
if ( ! c ( this , "once" , a , [ b , d ] ) || ! b ) return this ; var e = this , f = _ . once ( function ( ) { e . off ( a , f ) , b . apply ( this , arguments ) } ) ; return f . _callback = b , this . on ( a , f , d ) } , off : function ( a , b , d ) { if ( ! this . _events || ! c ( this , "off" , a , [ b , d ] ) ) return this ; if ( ! a && ! b && ! d ) return this . _events = void 0 , this ; for ( var e = a ? [ a ] : _ . keys ( this . _events ) , f = 0 , g = e . length ; f < g ; f ++ ) { a = e [ f ] ; var h = this . _events [ a ] ; if ( h ) if ( b || d ) { for ( var i = [ ] , j = 0 , k = h . length ; j < k ; j ++ ) { var l = h [ j ] ; ( b && b !== l . callback && b !== l . callback . _callback || d && d !== l . context ) && i . push ( l ) } i . length ? this . _events [ a ] = i : delete this . _events [ a ] } else delete this . _events [ a ] } return this } , un : function ( ) { this . off . apply ( this , arguments ) } , trigger : function ( a ) { if ( ! this . _events ) return this ; var b = slice . call ( arguments , 1 ) ; if ( ! c ( this , "trigger" , a , b ) ) return this ; var e = this . _events [ a ] , f = this . _events . all ; return e && d ( e , b ) , f && d ( f , arguments ) , this } , fireEvent : function ( ) { this . trigger . apply ( this , arguments ) } , listenTo : function ( a , b , c ) { var d = this . _listeningTo || ( this . _listeningTo = { } ) , e = a . _listenId || ( a . _listenId = _ . uniqueId ( "l" ) ) ; return d [ e ] = a , c || "object" != typeof b || ( c = this ) , a . on ( b , c , this ) , this } , listenToOnce : function ( a , c , d ) { if ( "object" == typeof c ) { for ( var e in c ) this . listenToOnce ( a , e , c [ e ] ) ; return this } if ( b . test ( c ) ) { for ( var f = c . split ( b ) , g = 0 , h = f . length ; g < h ; g ++ ) this . listenToOnce ( a , f [ g ] , d ) ; return this } if ( ! d ) return this ; var i = _ . once ( function ( ) { this . stopListening ( a , c , i ) , d . apply ( this , arguments ) } ) ; return i . _callback = d , this . listenTo ( a , c , i ) } , stopListening : function ( a , b , c ) { var d = this . _listeningTo ; if ( ! d ) return this ; var e = ! b && ! c ; c || "object" != typeof b || ( c = this ) , a && ( ( d = { } ) [ a . _listenId ] = a ) ; for ( var f in d ) a = d [ f ] , a . off ( b , c , this ) , ( e || _ . isEmpty ( a . _events ) ) && delete this . _listeningTo [ f ] ; return this } } , b = /\s+/ , c = function ( a , c , d , e ) { if ( ! d ) return ! 0 ; if ( "object" == typeof d ) { for ( var f in d ) a [ c ] . apply ( a , [ f , d [ f ] ] . concat ( e ) ) ; return ! 1 } if ( b . test ( d ) ) { for ( var g = d . split ( b ) , h = 0 , i = g . length ; h < i ; h ++ ) a [ c ] . apply ( a , [ g [ h ] ] . concat ( e ) ) ; return ! 1 } return ! 0 } , d = function ( a , b ) { var c , d = - 1 , e = a . length , f = b [ 0 ] , g = b [ 1 ] , h = b [ 2 ] ; switch ( b . length ) { case 0 : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . call ( c . ctx ) ; return ; case 1 : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . call ( c . ctx , f ) ; return ; case 2 : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . call ( c . ctx , f , g ) ; return ; case 3 : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . call ( c . ctx , f , g , h ) ; return ; default : for ( ; ++ d < e ; ) ( c = a [ d ] ) . callback . apply ( c . ctx , b ) ; return } } , e = BI . Router = function ( a ) { a || ( a = { } ) , a . routes && ( this . routes = a . routes ) , this . _bindRoutes ( ) , this . _init . apply ( this , arguments ) } , f = /\((.*?)\)/g , g = /(\(\?)?:\w+/g , h = /\*\w+/g , i = /[\-{}\[\]+?.,\\\^$|#\s]/g ; _ . extend ( e . prototype , a , { _init : function ( ) { } , route : function ( a , b , c ) { _ . isRegExp ( a ) || ( a = this . _routeToRegExp ( a ) ) , _ . isFunction ( b ) && ( c = b , b = "" ) , c || ( c = this [ b ] ) ; var d = this ; return BI . history . route ( a , function ( e ) { var f = d . _extractParameters ( a , e ) ; d . execute ( c , f , b ) !== ! 1 && ( d . trigger . apply ( d , [ "route:" + b ] . concat ( f ) ) , d . trigger ( "route" , b , f ) , BI . history . trigger ( "route" , d , b , f ) ) } ) , this } , execute : function ( a , b , c ) { a && a . apply ( this , b ) } , navigate : function ( a , b ) { return BI . history . navigate ( a , b ) , this } , _bindRoutes : function ( ) { if ( this . routes ) { this . routes = _ . result ( this , "routes" ) ; for ( var a , b = _ . keys ( this . routes ) ; null != ( a = b . pop ( ) ) ; ) this . route ( a , this . routes [ a ] ) } } , _routeToRegExp : function ( a ) { return a = a . replace ( i , "\\$&" ) . replace ( f , "(?:$1)?" ) . replace ( g , function ( a , b ) { return b ? a : "([^/?]+)" } ) . replace ( h , "([^?]*?)" ) , new RegExp ( "^" + a + "(?:\\?([\\s\\S]*))?$" ) } , _extractParameters : function ( a , b ) { var c = a . exec ( b ) . slice ( 1 ) ; return _ . map ( c , function ( a , b ) { return b === c . length - 1 ? a || null : a ? decodeURIComponent ( a ) : null } ) } } ) ; var j = function ( ) { this . handlers = [ ] , _ . bindAll ( this , "checkUrl" ) , "undefined" != typeof window && ( this . location = window . location , this . history = window . history ) } , k = /^[#\/]|\s+$/g , l = /^\/+|\/+$/g , m = /#.*$/ ; j . started = ! 1 , _ . extend ( j . prototype , a , { interval : 50 , atRoot : function ( ) { var a = this . location . pathname . replace ( /[^\/]$/ , "$&/" ) ; return a === this . root && ! this . getSearch ( ) } , getSearch : function ( ) { var a = this . location . href . replace ( /#.*/ , "" ) . match ( /\?.+/ ) ; return a ? a [ 0 ] : "" } , getHash : function ( a ) { var b = ( a || this ) . location . href . match ( /#(.*)$/ ) ; return b ? b [ 1 ] : "" } , getPath : function ( ) { var a = decodeURI ( this . location . pathname + this . getSearch ( ) ) , b = this . root . slice ( 0 , - 1 ) ; return a . indexOf ( b ) || ( a = a . slice ( b . le