/*! 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 ] ,
BI . isWidget ( a . element ) ? ( a . element instanceof BI . Widget ? ( this . _parent = a . element , this . _parent . addWidget ( this . widgetName , this ) ) : this . _isRoot = ! 0 , this . element = this . options . element . element ) : a . element ? ( this . element = $ ( a . element ) , this . _isRoot = ! 0 ) : this . element = $ ( document . createElement ( a . tagName ) ) , 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 [
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
return this . layouts [ a ] } , get : function ( a ) { return this . layerManager [ a ] } , has : function ( a ) { return null != this . layerManager [ a ] } , remove : function ( a ) { return this . has ( a ) ? ( this . layerManager [ a ] . destroy ( ) , this . layouts [ a ] . destroy ( ) , delete this . layerManager [ a ] , delete this . layouts [ a ] , this ) : this } } ) , BI . MaskersController = BI . inherit ( BI . LayerController , { _defaultConfig : function ( ) { return BI . extend ( BI . MaskersController . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _init : function ( ) { BI . MaskersController . superclass . _init . apply ( this , arguments ) , this . zindex = BI . zIndex _masker } } ) , BI . ResizeController = BI . inherit ( BI . Controller , { _defaultConfig : function ( ) { return BI . extend ( BI . ResizeController . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _init : function ( ) { BI . ResizeController . superclass . _init . apply ( this , arguments ) ; var a = this ; this . resizerManger = { } ; var b = BI . debounce ( function ( b ) { a . _resize ( b ) } , 30 ) ; $ ( window ) . resize ( b ) } , _resize : function ( a ) { BI . each ( this . resizerManger , function ( b , c ) { return c instanceof $ ? void ( c . is ( ":visible" ) && c . trigger ( "__resize__" ) ) : c instanceof BI . Layout ? void c . resize ( ) : BI . isFunction ( c ) ? void c ( a ) : void 0 } ) } , add : function ( a , b ) { var c = this ; return this . has ( a ) ? this : ( this . resizerManger [ a ] = b , function ( ) { c . remove ( a ) } ) } , get : function ( a ) { return this . resizerManger [ a ] } , has : function ( a ) { return null != this . resizerManger [ a ] } , remove : function ( a ) { return this . has ( a ) ? ( delete this . resizerManger [ a ] , this ) : this } } ) , BI . TooltipsController = BI . inherit ( BI . Controller , { _defaultConfig : function ( ) { return BI . extend ( BI . TooltipsController . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _const : { height : 20 } , _init : function ( ) { BI . TooltipsController . superclass . _init . apply ( this , arguments ) , this . tooltipsManager = { } , this . showingTips = { } } , _createTooltip : function ( a , b ) { return BI . createWidget ( { type : "bi.tooltip" , text : a , level : b , stopEvent : ! 0 , height : this . _const . height } ) } , hide : function ( a , b ) { return this . has ( a ) ? ( delete this . showingTips [ a ] , this . get ( a ) . element . hide ( 0 , b ) , this . get ( a ) . invisible ( ) , this ) : this } , create : function ( a , b , c , d ) { if ( ! this . has ( a ) ) { var e = this . _createTooltip ( b , c ) ; this . add ( a , e ) , BI . createWidget ( { type : "bi.absolute" , element : d || "body" , items : [ { el : e } ] } ) , e . invisible ( ) } return this . get ( a ) } , show : function ( a , b , c , d , e , f ) { f || ( f = { } ) ; var g = this ; if ( BI . each ( this . showingTips , function ( a , b ) { g . hide ( a ) } ) , this . showingTips = { } , this . has ( b ) || this . create ( b , c , d , f . container || e ) , ! f . belowMouse ) { var h = e . element . offset ( ) , i = e . element . bounds ( ) ; if ( 0 === i . height || 0 === i . width ) return ; var j = h . top + i . height + 5 } var k = this . get ( b ) ; k . setText ( c ) , k . element . css ( { left : "0px" , top : "0px" } ) , k . visible ( ) , k . element . height ( k . element [ 0 ] . scrollHeight ) , this . showingTips [ b ] = ! 0 ; var l = ( a . pageX || a . clientX ) + 15 , m = ( a . pageY || a . clientY ) + 15 ; return l + k . element . outerWidth ( ) > $ ( "body" ) . outerWidth ( ) && ( l -= k . element . outerWidth ( ) + 15 ) , m + k . element . outerHeight ( ) > $ ( "body" ) . outerHeight ( ) ? ( m -= k . element . outerHeight ( ) + 15 , ! f . belowMouse && ( m = Math . min ( m , h . top - k . element . outerHeight ( ) - 5 ) ) ) : ! f . belowMouse && ( m = Math . max ( m , j ) ) , k . element . css ( { left : l < 0 ? 0 : l + "px" , top : m < 0 ? 0 : m + "px" } ) , k . element . hover ( function ( ) { g . remove ( b ) , e . element . trigger ( "mouseleave.title" + e . getName ( ) ) } ) , this } , add : function ( a , b ) { return this . has ( a ) ? this : ( this . set ( a , b ) , this ) } , get : function ( a ) { return this . tooltipsManager [ a ] } , set : function ( a , b ) { this . tooltipsManager [ a ] = b } , has : function ( a ) { return null != this . tooltipsManager [ a ] } , remove : function ( a ) { return this . has ( a ) ? ( this . tooltipsManager [ a ] . destroy ( ) , delete this . tooltipsManager [ a ] , this ) : this } } ) , _ . extend ( BI , { Events : { KEYDOWN : "_KEYDOWN" , BACKSPACE : "_BACKSPACE" , SPACE : "_SPACE" , ENTER : "_ENTER" , CONFIRM : "_CONFIRM" , ERROR : "_ERROR" , PAUSE : "_PAUSE" , DESTROY : "_DESTROY" , UNMOUNT : "_UNMOUNT" , CLEAR : "_CLEAR" , ADD : "_ADD" , EDITING : "_EDITING" , EMPTY : "_EMPTY" , VIEW : "_VIEW" , RESIZE : "_RESIZE" , BEFOREEDIT : "_BEFOREEDIT" , AFTEREDIT : "_AFTEREDIT" , STARTEDIT : "_STARTEDIT" , STOPEDIT : "_STOPEDIT" , CHANGE : "_CHANGE" , EXPAND : "_EXPAND" , COLLAPSE : "_COLLAPSE" , CALLBACK : "_CALLBACK" , CLICK : "_CLICK" , STATECHANGE : "_STATECHANGE" , BEFORESTATECHANGE : "_BEFORESTATECHANGE" , INIT : "_INIT" , AFTERINIT : "_AFTERINIT" , SCROLL : "_SCROLL" , STARTLOAD : "_STARTLOAD" , AFTERLOAD : "_AFTERLOAD" , BS : "beforesubmit" , AS : "aftersubmit" , SC : "submitcomplete" , SF : "submitfailure" , SS : " submitsuccess
0 != d ) return Date . getDate ( d , e , f , m , n , o ) ; for ( d = 0 , e = - 1 , f = 0 , k = 0 ; k < g . length ; ++ k ) if ( g [ k ] . search ( /[a-zA-Z]+/ ) != - 1 ) { var p = - 1 ; for ( l = 0 ; l < 12 ; ++ l ) if ( Date . _MN [ l ] . substr ( 0 , g [ k ] . length ) . toLowerCase ( ) == g [ k ] . toLowerCase ( ) ) { p = l ; break } p != - 1 && ( e != - 1 && ( f = e + 1 ) , e = p ) } else parseInt ( g [ k ] , 10 ) <= 12 && e == - 1 ? e = g [ k ] - 1 : parseInt ( g [ k ] , 10 ) > 31 && 0 == d ? ( d = parseInt ( g [ k ] , 10 ) , d < 100 && ( d += d > 29 ? 1900 : 2e3 ) ) : 0 == f && ( f = g [ k ] ) ; return 0 == d && ( d = c . getFullYear ( ) ) , e != - 1 && 0 != f ? Date . getDate ( d , e , f , m , n , o ) : c } , Date . getDate = function ( ) { var a , b = arguments . length , c = arguments ; switch ( b ) { case 0 : a = new Date ; break ; case 1 : a = new Date ( c [ 0 ] ) ; break ; case 2 : a = new Date ( c [ 0 ] , c [ 1 ] ) ; break ; case 3 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] ) ; break ; case 4 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] ) ; break ; case 5 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] ) ; break ; case 6 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] , c [ 5 ] ) ; break ; case 7 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] , c [ 5 ] , c [ 6 ] ) ; break ; default : a = new Date } if ( BI . isNotNull ( Date . timeZone ) && ( 0 === arguments . length || 1 === arguments . length && BI . isNumber ( arguments [ 0 ] ) ) ) { var d = a . getTime ( ) , e = 6e4 * a . getTimezoneOffset ( ) , f = d + e ; return new Date ( f + Date . timeZone ) } return a } , Date . getTime = function ( ) { var a , b = arguments . length , c = arguments ; switch ( b ) { case 0 : a = new Date ; break ; case 1 : a = new Date ( c [ 0 ] ) ; break ; case 2 : a = new Date ( c [ 0 ] , c [ 1 ] ) ; break ; case 3 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] ) ; break ; case 4 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] ) ; break ; case 5 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] ) ; break ; case 6 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] , c [ 5 ] ) ; break ; case 7 : a = new Date ( c [ 0 ] , c [ 1 ] , c [ 2 ] , c [ 3 ] , c [ 4 ] , c [ 5 ] , c [ 6 ] ) ; break ; default : a = new Date } return BI . isNotNull ( Date . timeZone ) ? a . getTime ( ) - Date . timeZone - 6e4 * a . getTimezoneOffset ( ) : a . getTime ( ) } , $ . extend ( $ . Event . prototype , { stopEvent : function ( ) { this . stopPropagation ( ) , this . preventDefault ( ) } } ) , Function . prototype . before = function ( a ) { var b = this ; return function ( ) { return a . apply ( this , arguments ) !== ! 1 && b . apply ( this , arguments ) } } , Function . prototype . after = function ( a ) { var b = this ; return function ( ) { var c = b . apply ( this , arguments ) ; return c !== ! 1 && ( a . apply ( this , arguments ) , c ) } } , jQuery && ! function ( a ) { a . fn . insets || ( a . fn . insets = function ( ) { var a = this . padding ( ) , b = this . border ( ) ; return { top : a . top , bottom : a . bottom + b . bottom + b . top , left : a . left , right : a . right + b . right + b . left } } ) , a . fn . bounds || ( a . fn . bounds = function ( a ) { var b = { hasIgnoredBounds : ! 0 } ; return a ? ( isNaN ( a . x ) || ( b . left = a . x ) , isNaN ( a . y ) || ( b . top = a . y ) , null != a . width && ( b . width = a . width - ( this . outerWidth ( ! 0 ) - this . width ( ) ) , b . width = b . width >= 0 ? b . width : a . width ) , null != a . height && ( b . height = a . height - ( this . outerHeight ( ! 0 ) - this . height ( ) ) , b . height = b . height >= 0 ? b . height : a . height ) , this . css ( b ) , this ) : ( b = this . position ( ) , { x : b . left , y : b . top , width : this . outerWidth ( ) , height : this . outerHeight ( ) } ) } ) } ( jQuery ) , Number . prototype . toFixed && "0.000" === 8e-5 . toFixed ( 3 ) && "0" !== . 9. toFixed ( 0 ) && "1.25" === 1.255 . toFixed ( 2 ) && "1000000000000000128" === ( 0xde0b6b3a7640080 ) . toFixed ( 0 ) || ! function ( ) { function a ( a , b ) { for ( var c = - 1 ; ++ c < g ; ) b += a * h [ c ] , h [ c ] = b % f , b = Math . floor ( b / f ) } function b ( a ) { for ( var b = g , c = 0 ; -- b >= 0 ; ) c += h [ b ] , h [ b ] = Math . floor ( c / a ) , c = c % a * f } function c ( ) { for ( var a = g , b = "" ; -- a >= 0 ; ) if ( "" !== b || 0 === a || 0 !== h [ a ] ) { var c = String ( h [ a ] ) ; "" === b ? b = c : b += "0000000" . slice ( 0 , 7 - c . length ) + c } return b } function d ( a , b , c ) { return 0 === b ? c : b % 2 === 1 ? d ( a , b - 1 , c * a ) : d ( a * a , b / 2 , c ) } function e ( a ) { for ( var b = 0 ; a >= 4096 ; ) b += 12 , a /= 4096 ; for ( ; a >= 2 ; ) b += 1 , a /= 2 ; return b } var f , g , h ; f = 1e7 , g = 6 , h = [ 0 , 0 , 0 , 0 , 0 , 0 ] , Number . prototype . toFixed = function ( f ) { var g , h , i , j , k , l , m , n ; if ( g = Number ( f ) , g = g !== g ? 0 : Math . floor ( g ) , g < 0 || g > 20 ) throw new RangeError ( "Number.toFixed called with invalid number of decimals" ) ; if ( h = Number ( this ) , h !== h ) return "NaN" ; if ( h <= - 1e21 || h > 1e21 ) return String ( h ) ; if ( i = "" , h < 0 && ( i = "-" , h = - h ) , j = "0" , h > 1e-21 ) if ( k = e ( h * d ( 2 , 69 , 1 ) ) - 69 , l = k < 0 ? h * d ( 2 , - k , 1 ) : h / d ( 2 , k , 1 ) , l *= 4503599627370496 , k = 52 - k , k > 0 ) { for ( a ( 0 , l ) , m = g ; m >= 7 ; ) a ( 1e7 , 0 ) , m -= 7 ; for ( a ( d ( 10 , m , 1 ) , 0 ) , m = k - 1 ; m >= 23 ; ) b ( 1 << 23 ) , m -= 23 ; b ( 1 << m ) , a ( 1 , 1 ) , b ( 2 ) , j = c ( ) } else a ( 0 , l ) , a ( 1 << - k , 0 ) , j = c ( ) + "0.00000000000000000000" . slice ( 2 , 2 + g ) ; return g > 0 ? ( n = j . length , j = n <= g ? i + "0.0000000000000000000" . slice ( 0 , g - n + 2 ) + j : i + j . slice ( 0 , n - g ) + "." + j . slice ( n - g ) ) : j = i + j , j } } ( ) , Number . prototype . add = function ( a ) { return accAdd ( a , this ) } , Number . prototype . sub = function ( a ) { return accSub ( this , a ) } , Number . prototype . mul = function ( a ) { return accMul (
} ) , d } , _mountChildren : function ( ) { var a = this , b = document . createDocumentFragment ( ) , c = ! 1 ; BI . each ( this . _children , function ( d , e ) { e . element !== a . element && ( b . appendChild ( e . element [ 0 ] ) , c = ! 0 ) } ) , c === ! 0 && ( this . $wrapper . append ( b ) , this . element . append ( this . $wrapper ) ) } , _getWrapper : function ( ) { return this . $wrapper } , resize : function ( ) { } , populate : function ( a ) { BI . FlexHorizontalLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_wrapper_horizontal" , BI . FlexHorizontalLayout ) , BI . FlexVerticalCenter = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexVerticalCenter . superclass . props . apply ( this , arguments ) , { baseCls : "bi-flex-wrapper-vertical-center clearfix" , horizontalAlign : BI . HorizontalAlign . Middle , columnSize : [ ] , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FlexVerticalCenter . superclass . render . apply ( this , arguments ) ; var a = this . options ; this . $wrapper = $ ( "<div>" ) . addClass ( "flex-wrapper-vertical-center-wrapper " + a . horizontalAlign ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . FlexVerticalCenter . superclass . _addElement . apply ( this , arguments ) ; return d . element . css ( { position : "relative" } ) , c . vgap + c . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) !== 0 && d . element . css ( { "margin-top" : c . vgap + c . tgap + ( b . tgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , c . hgap + c . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) !== 0 && d . element . css ( { "margin-left" : ( 0 === a ? c . hgap : 0 ) + c . lgap + ( b . lgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , c . hgap + c . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) !== 0 && d . element . css ( { "margin-right" : c . hgap + c . rgap + ( b . rgap || 0 ) + ( b . hgap || 0 ) + "px" } ) , c . vgap + c . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) !== 0 && d . element . css ( { "margin-bottom" : c . vgap + c . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , d } , _mountChildren : function ( ) { var a = this , b = document . createDocumentFragment ( ) , c = ! 1 ; BI . each ( this . _children , function ( d , e ) { e . element !== a . element && ( b . appendChild ( e . element [ 0 ] ) , c = ! 0 ) } ) , c === ! 0 && ( this . $wrapper . append ( b ) , this . element . append ( this . $wrapper ) ) } , _getWrapper : function ( ) { return this . $wrapper } , resize : function ( ) { } , populate : function ( a ) { BI . FlexVerticalCenter . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_wrapper_vertical_center" , BI . FlexVerticalCenter ) , BI . AbsoluteLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . AbsoluteLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-absolute-layout" , hgap : null , vgap : null , lgap : null , rgap : null , tgap : null , bgap : null } ) } , render : function ( ) { BI . AbsoluteLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . AbsoluteLayout . superclass . _addElement . apply ( this , arguments ) , e = 0 , f = 0 , g = 0 , h = 0 ; return BI . isNotNull ( b . left ) && ( d . element . css ( { left : b . left } ) , e += b . left ) , BI . isNotNull ( b . right ) && ( d . element . css ( { right : b . right } ) , f += b . right ) , BI . isNotNull ( b . top ) && ( d . element . css ( { top : b . top } ) , g += b . top ) , BI . isNotNull ( b . bottom ) && ( d . element . css ( { bottom : b . bottom } ) , h += b . bottom ) , BI . isNotNull ( c . hgap ) && ( e += c . hgap , d . element . css ( { left : e } ) , f += c . hgap , d . element . css ( { right : f } ) ) , BI . isNotNull ( c . vgap ) && ( g += c . vgap , d . element . css ( { top : g } ) , h += c . vgap , d . element . css ( { bottom : h } ) ) , BI . isNotNull ( c . lgap ) && ( e += c . lgap , d . element . css ( { left : e } ) ) , BI . isNotNull ( c . rgap ) && ( f += c . rgap , d . element . css ( { right : f } ) ) , BI . isNotNull ( c . tgap ) && ( g += c . tgap , d . element . css ( { top : g } ) ) , BI . isNotNull ( c . bgap ) && ( h += c . bgap , d . element . css ( { bottom : h } ) ) , BI . isNotNull ( b . width ) && d . element . css ( { width : b . width } ) , BI . isNotNull ( b . height ) && d . element . css ( { height : b . height } ) , d . element . css ( { position : "absolute" } ) , d } , resize : function ( ) { this . stroke ( this . options . items ) } , stroke : function ( a ) { this . options . items = a || [ ] ; var b = this ; BI . each ( a , function ( a , c ) { if ( c ) { if ( ! BI . isWidget ( c ) && ! c . el ) throw new Error ( "el must be exist" ) ; b . _addElement ( a , c ) } } ) } , populate : function ( a ) { BI . AbsoluteLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.absolute" , BI . AbsoluteLayout ) , BI . AdaptiveLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . AdaptiveLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-adaptive-layout" , hgap : null , vgap : null , lgap : null , rgap : null , tgap : null , bgap : null } ) } , render : function ( ) { BI . AdaptiveLayout . superclass . render . apply ( this , arguments ) , this .
"margin-bottom" : c . vgap + c . bgap + ( b . bgap || 0 ) + ( b . vgap || 0 ) + "px" } ) , d } , resize : function ( ) { this . stroke ( this . options . items ) } , populate : function ( a ) { BI . VerticalLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.vertical" , BI . VerticalLayout ) , BI . WindowLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . WindowLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-window-layout" , columns : 3 , rows : 2 , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , columnSize : [ 100 , "fill" , 200 ] , rowSize : [ 100 , "fill" ] , items : [ [ { el : { type : "bi.button" , text : "button1" } } , { el : { type : "bi.button" , text : "button2" } } , { el : { type : "bi.button" , text : "button3" } } ] ] } ) } , render : function ( ) { BI . WindowLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , resize : function ( ) { this . stroke ( this . options . items ) } , addItem : function ( a ) { throw new Error ( "cannot be added" ) } , stroke : function ( a ) { function b ( a , b , c ) { 0 === b && a . addClass ( "first-row" ) , 0 === c && a . addClass ( "first-col" ) , a . addClass ( BI . isOdd ( b + 1 ) ? "odd-row" : "even-row" ) , a . addClass ( BI . isOdd ( c + 1 ) ? "odd-col" : "even-col" ) , a . addClass ( "center-element" ) } function c ( a , b , c ) { var d = "" ; 0 === b && ( d += " first-row" ) , 0 === c && ( d += " first-col" ) , d += BI . isOdd ( b + 1 ) ? " odd-row" : " even-row" , d += BI . isOdd ( c + 1 ) ? " odd-col" : " even-col" , a . cls = ( a . cls || "" ) + d + " center-element" } function d ( a , d , e ) { a instanceof BI . Widget ? b ( a . element , d , e ) : a . el instanceof BI . Widget ? b ( a . el . element , d , e ) : a . el ? c ( a . el , d , e ) : c ( a , d , e ) } var e = this . options ; BI . isNumber ( e . rowSize ) && ( e . rowSize = BI . makeArray ( e . items . length , 1 / e . items . length ) ) , BI . isNumber ( e . columnSize ) && ( e . columnSize = BI . makeArray ( e . items [ 0 ] . length , 1 / e . items [ 0 ] . length ) ) ; for ( var f = 0 ; f < e . rows ; f ++ ) for ( var g = 0 ; g < e . columns ; g ++ ) { if ( ! e . items [ f ] [ g ] ) throw new Error ( "item be required" ) ; if ( ! this . hasWidget ( this . getName ( ) + f + "_" + g ) ) { var h = BI . createWidget ( e . items [ f ] [ g ] ) ; h . element . css ( { position : "absolute" } ) , this . addWidget ( this . getName ( ) + f + "_" + g , h ) } } var i = { } , j = { } , k = { } , l = { } ; i [ 0 ] = 0 , k [ 0 ] = 0 , j [ e . columns - 1 ] = 0 , l [ e . rows - 1 ] = 0 ; for ( var f = 0 ; f < e . rows ; f ++ ) { for ( var g = 0 ; g < e . columns ; g ++ ) { var m = this . getWidgetByName ( this . getName ( ) + f + "_" + g ) ; BI . isNull ( k [ f ] ) && ( k [ f ] = k [ f - 1 ] + ( e . rowSize [ f - 1 ] < 1 ? e . rowSize [ f - 1 ] : e . rowSize [ f - 1 ] + e . vgap + e . bgap ) ) ; var n = k [ f ] <= 1 ? 100 * k [ f ] + "%" : k [ f ] + e . vgap + e . tgap + "px" , o = "" ; BI . isNumber ( e . rowSize [ f ] ) && ( o = e . rowSize [ f ] <= 1 ? 100 * e . rowSize [ f ] + "%" : e . rowSize [ f ] + "px" ) , m . element . css ( { top : n , height : o } ) , d ( m , f , g ) } if ( ! BI . isNumber ( e . rowSize [ f ] ) ) break } for ( var f = e . rows - 1 ; f >= 0 ; f -- ) { for ( var g = 0 ; g < e . columns ; g ++ ) { var m = this . getWidgetByName ( this . getName ( ) + f + "_" + g ) ; BI . isNull ( l [ f ] ) && ( l [ f ] = l [ f + 1 ] + ( e . rowSize [ f + 1 ] < 1 ? e . rowSize [ f + 1 ] : e . rowSize [ f + 1 ] + e . vgap + e . tgap ) ) ; var p = l [ f ] <= 1 ? 100 * l [ f ] + "%" : l [ f ] + e . vgap + e . bgap + "px" , o = "" ; BI . isNumber ( e . rowSize [ f ] ) && ( o = e . rowSize [ f ] <= 1 ? 100 * e . rowSize [ f ] + "%" : e . rowSize [ f ] + "px" ) , m . element . css ( { bottom : p , height : o } ) , d ( m , f , g ) } if ( ! BI . isNumber ( e . rowSize [ f ] ) ) break } for ( var g = 0 ; g < e . columns ; g ++ ) { for ( var f = 0 ; f < e . rows ; f ++ ) { var m = this . getWidgetByName ( this . getName ( ) + f + "_" + g ) ; BI . isNull ( i [ g ] ) && ( i [ g ] = i [ g - 1 ] + ( e . columnSize [ g - 1 ] < 1 ? e . columnSize [ g - 1 ] : e . columnSize [ g - 1 ] + e . hgap + e . rgap ) ) ; var q = i [ g ] <= 1 ? 100 * i [ g ] + "%" : i [ g ] + e . hgap + e . lgap + "px" , h = "" ; BI . isNumber ( e . columnSize [ g ] ) && ( h = e . columnSize [ g ] <= 1 ? 100 * e . columnSize [ g ] + "%" : e . columnSize [ g ] + "px" ) , m . element . css ( { left : q , width : h } ) , d ( m , f , g ) } if ( ! BI . isNumber ( e . columnSize [ g ] ) ) break } for ( var g = e . columns - 1 ; g >= 0 ; g -- ) { for ( var f = 0 ; f < e . rows ; f ++ ) { var m = this . getWidgetByName ( this . getName ( ) + f + "_" + g ) ; BI . isNull ( j [ g ] ) && ( j [ g ] = j [ g + 1 ] + ( e . columnSize [ g + 1 ] < 1 ? e . columnSize [ g + 1 ] : e . columnSize [ g + 1 ] + e . hgap + e . lgap ) ) ; var r = j [ g ] <= 1 ? 100 * j [ g ] + "%" : j [ g ] + e . hgap + e . rgap + "px" , h = "" ; BI . isNumber ( e . columnSize [ g ] ) && ( h = e . columnSize [ g ] <= 1 ? 100 * e . columnSize [ g ] + "%" : e . columnSize [ g ] + "px" ) , m . element . css ( { right : r , width : h } ) , d ( m , f , g ) } if ( ! BI . isNumber ( e . columnSize [ g ] ) ) break } } , populate : function ( a ) { BI . WindowLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.window" , BI . WindowLayout ) , BI . CenterLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . CenterLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-center-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . CenterLayout . superclass . render . apply ( this , arguments ) , th
BI . ButtonGroup . superclass . empty . apply ( this , arguments ) , this . options . items = [ ] } , destroy : function ( ) { BI . ButtonGroup . superclass . destroy . apply ( this , arguments ) , this . options . items = [ ] } } ) , BI . extend ( BI . ButtonGroup , { CHOOSE _TYPE _SINGLE : BI . Selection . Single , CHOOSE _TYPE _MULTI : BI . Selection . Multi , CHOOSE _TYPE _ALL : BI . Selection . All , CHOOSE _TYPE _NONE : BI . Selection . None , CHOOSE _TYPE _DEFAULT : BI . Selection . Default } ) , BI . ButtonGroup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.button_group" , BI . ButtonGroup ) , BI . ButtonTree = BI . inherit ( BI . ButtonGroup , { _defaultConfig : function ( ) { return BI . extend ( BI . ButtonTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-button-tree" } ) } , _init : function ( ) { BI . ButtonTree . superclass . _init . apply ( this , arguments ) } , setNotSelectedValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , BI . each ( this . buttons , function ( b , c ) { return BI . isFunction ( c . setSelected ) ? void ( BI . deepContains ( a , c . getValue ( ) ) ? c . setSelected ( ! 1 ) : c . setSelected ( ! 0 ) ) : void c . setNotSelectedValue ( a ) } ) } , setEnabledValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , BI . each ( this . buttons , function ( b , c ) { return BI . isFunction ( c . setEnabledValue ) ? void c . setEnabledValue ( a ) : void ( BI . deepContains ( a , c . getValue ( ) ) ? c . setEnable ( ! 0 ) : c . setEnable ( ! 1 ) ) } ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , BI . each ( this . buttons , function ( b , c ) { return BI . isFunction ( c . setSelected ) ? void ( BI . deepContains ( a , c . getValue ( ) ) ? c . setSelected ( ! 0 ) : c . setSelected ( ! 1 ) ) : void c . setValue ( a ) } ) } , getNotSelectedValue : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { return c . isEnabled ( ) && ! BI . isFunction ( c . setSelected ) ? void ( a = BI . concat ( a , c . getNotSelectedValue ( ) ) ) : void ( c . isEnabled ( ) && c . isSelected && ! c . isSelected ( ) && a . push ( c . getValue ( ) ) ) } ) , a } , getValue : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { return c . isEnabled ( ) && ! BI . isFunction ( c . setSelected ) ? void ( a = BI . concat ( a , c . getValue ( ) ) ) : void ( c . isEnabled ( ) && c . isSelected && c . isSelected ( ) && a . push ( c . getValue ( ) ) ) } ) , a } , getSelectedButtons : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { return c . isEnabled ( ) && ! BI . isFunction ( c . setSelected ) ? void ( a = a . concat ( c . getSelectedButtons ( ) ) ) : void ( c . isSelected && c . isSelected ( ) && a . push ( c ) ) } ) , a } , getNotSelectedButtons : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { return c . isEnabled ( ) && ! BI . isFunction ( c . setSelected ) ? void ( a = a . concat ( c . getNotSelectedButtons ( ) ) ) : void ( c . isSelected && ! c . isSelected ( ) && a . push ( c ) ) } ) , a } , getAllLeaves : function ( ) { var a = [ ] ; return BI . each ( this . buttons , function ( b , c ) { return c . isEnabled ( ) && ! BI . isFunction ( c . setSelected ) ? void ( a = a . concat ( c . getAllLeaves ( ) ) ) : void ( c . isEnabled ( ) && a . push ( c ) ) } ) , a } , getIndexByValue : function ( a ) { var b = - 1 ; return BI . any ( this . buttons , function ( c , d ) { var e = d . getValue ( ) ; if ( d . isEnabled ( ) && ( e === a || BI . contains ( e , a ) ) ) return b = c , ! 0 } ) , b } , getNodeById : function ( a ) { var b ; return BI . any ( this . buttons , function ( c , d ) { if ( d . isEnabled ( ) ) { if ( d . attr ( "id" ) === a ) return b = d , ! 0 ; if ( BI . isFunction ( d . getNodeById ) && ( b = d . getNodeById ( a ) ) ) return ! 0 } } ) , b } , getNodeByValue : function ( a ) { var b ; return BI . any ( this . buttons , function ( c , d ) { if ( d . isEnabled ( ) ) if ( BI . isFunction ( d . getNodeByValue ) ) { if ( b = d . getNodeByValue ( a ) ) return ! 0 } else if ( d . attr ( "value" ) === a ) return b = d , ! 0 } ) , b } } ) , BI . ButtonTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.button_tree" , BI . ButtonTree ) , BI . TreeView = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . TreeView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-tree" , paras : { } , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . TreeView . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . _stop = ! 1 , this . _createTree ( ) , this . tip = BI . createWidget ( { type : "bi.loading_bar" , invisible : ! 0 , handler : BI . bind ( this . _loadMore , this ) } ) , BI . createWidget ( { type : "bi.vertical" , scrollable : ! 0 , scrolly : ! 1 , element : this , items : [ this . tip ] } ) , BI . isNotNull ( a . value ) && this . setSelectedValue ( a . value ) } , _createTree : function ( ) { this . id = "bi-tree" + BI . UUID ( ) , this . nodes && this . nodes . destroy ( ) , this . tree && this . tree . destroy ( ) , this . tree = BI . createWidget ( { type : "bi.layout" , element : "<ul id='" + this . id + "' class='ztree'></ul>" } ) , BI . createWidget ( { type : "bi.default" , element : this . element , items : [ this . tree ] } ) } , _selectTreeNode : function ( a , b ) { this . fireEvent ( BI . Controller . EVEN
break ; case "right,top" : b = $ . getComboPosition ( this . combo , this . popupView , a . adjustXOffset || a . adjustLength , a . adjustYOffset , a . isNeedAdjustHeight , [ "right" , "left" , "top" , "bottom" ] , a . offsetStyle ) ; break ; case "top,custom" : case "custom,top" : b = $ . getTopAdaptPosition ( this . combo , this . popupView , a . adjustYOffset || a . adjustLength , a . isNeedAdjustHeight ) ; break ; case "custom,bottom" : case "bottom,custom" : b = $ . getBottomAdaptPosition ( this . combo , this . popupView , a . adjustYOffset || a . adjustLength , a . isNeedAdjustHeight ) ; break ; case "left,custom" : case "custom,left" : b = $ . getLeftAdaptPosition ( this . combo , this . popupView , a . adjustXOffset || a . adjustLength ) , delete b . top , delete b . adaptHeight ; break ; case "custom,right" : case "right,custom" : b = $ . getRightAdaptPosition ( this . combo , this . popupView , a . adjustXOffset || a . adjustLength ) , delete b . top , delete b . adaptHeight } "adaptHeight" in b && this . resetListHeight ( b . adaptHeight ) , "left" in b && this . popupView . element . css ( { left : b . left } ) , "top" in b && this . popupView . element . css ( { top : b . top } ) , this . position = b , this . popupView . setVisible ( c ) } } , resetListHeight : function ( a ) { this . _assertPopupView ( ) , this . popupView . resetHeight && this . popupView . resetHeight ( a ) } , resetListWidth : function ( a ) { this . _assertPopupView ( ) , this . popupView . resetWidth && this . popupView . resetWidth ( a ) } , populate : function ( a ) { this . _assertPopupView ( ) , this . popupView . populate . apply ( this . popupView , arguments ) , this . combo . populate . apply ( this . combo , arguments ) } , _setEnable : function ( a ) { BI . Combo . superclass . _setEnable . apply ( this , arguments ) , ! a && this . element . removeClass ( this . options . hoverClass ) , ! a && this . isViewVisible ( ) && this . _hideView ( ) } , setValue : function ( a ) { this . combo . setValue ( a ) , BI . isNull ( this . popupView ) ? this . options . popup . value = a : this . popupView . setValue ( a ) } , getValue : function ( ) { return BI . isNull ( this . popupView ) ? this . options . popup . value : this . popupView . getValue ( ) } , isViewVisible : function ( ) { return this . isEnabled ( ) && this . combo . isEnabled ( ) && ! ! this . popupView && this . popupView . isVisible ( ) } , showView : function ( ) { this . isEnabled ( ) && this . combo . isEnabled ( ) && this . _popupView ( ) } , hideView : function ( ) { this . _hideView ( ) } , getView : function ( ) { return this . popupView } , getPopupPosition : function ( ) { return this . position } , toggle : function ( ) { this . _toggle ( ) } , destroy : function ( ) { $ ( document ) . unbind ( "mousedown." + this . getName ( ) ) . unbind ( "mousewheel." + this . getName ( ) ) . unbind ( "mouseenter." + this . getName ( ) ) . unbind ( "mousemove." + this . getName ( ) ) . unbind ( "mouseleave." + this . getName ( ) ) , BI . Resizers . remove ( this . getName ( ) ) , BI . Combo . superclass . destroy . apply ( this , arguments ) } } ) , BI . Combo . EVENT _TRIGGER _CHANGE = "EVENT_TRIGGER_CHANGE" , BI . Combo . EVENT _CHANGE = "EVENT_CHANGE" , BI . Combo . EVENT _EXPAND = "EVENT_EXPAND" , BI . Combo . EVENT _COLLAPSE = "EVENT_COLLAPSE" , BI . Combo . EVENT _AFTER _INIT = "EVENT_AFTER_INIT" , BI . Combo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . Combo . EVENT _AFTER _POPUPVIEW = "EVENT_AFTER_POPUPVIEW" , BI . Combo . EVENT _BEFORE _HIDEVIEW = "EVENT_BEFORE_HIDEVIEW" , BI . Combo . EVENT _AFTER _HIDEVIEW = "EVENT_AFTER_HIDEVIEW" , BI . shortcut ( "bi.combo" , BI . Combo ) , BI . Expander = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Expander . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-expander" , trigger : "click" , toggle : ! 0 , isDefaultInit : ! 1 , el : { } , popup : { } , expanderClass : "bi-expander-popup" , hoverClass : "bi-expander-hover" } ) } , _init : function ( ) { BI . Expander . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . _expanded = ! ! b . el . open , this . _initExpander ( ) , this . _initPullDownAction ( ) , this . expander . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . isEnabled ( ) && a . isValid ( ) && ( b === BI . Events . EXPAND && a . _popupView ( ) , b === BI . Events . COLLAPSE && a . _hideView ( ) , b === BI . Events . EXPAND && ( a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a . fireEvent ( BI . Expander . EVENT _EXPAND ) ) , b === BI . Events . COLLAPSE && ( a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a . isViewVisible ( ) && a . fireEvent ( BI . Expander . EVENT _COLLAPSE ) ) , b === BI . Events . CLICK && a . fireEvent ( BI . Expander . EVENT _TRIGGER _CHANGE , c , d ) ) } ) , this . element . hover ( function ( ) { a . isEnabled ( ) && a . isValid ( ) && a . expander . isEnabled ( ) && a . expander . isValid ( ) && a . element . addClass ( b . hoverClass ) } , function ( ) { a . isEnabled ( ) && a . isValid ( ) && a . expander . isEnabled ( ) && a . expander . isValid ( ) && a . element . remo
} ) } , _assertCard : function ( a ) { if ( ! this . layout . isCardExisted ( a ) ) { var b = this . options . cardCreator ( a ) ; this . cardMap [ a ] = b , this . layout . addCardByName ( a , b ) } } , mounted : function ( ) { var a = this . options ; a . showIndex !== ! 1 && this . setSelect ( a . showIndex ) } , setSelect : function ( a ) { this . tab && this . tab . setValue ( a ) , this . _assertCard ( a ) , this . layout . showCardByName ( a ) , this . _deleteOtherCards ( a ) , this . curr !== a && ( this . curr = a ) } , removeTab : function ( a ) { var b = this ; this . options ; BI . any ( this . cardMap , function ( c , d ) { if ( BI . isEqual ( c , a + "" ) ) return b . layout . deleteCardByName ( c ) , delete b . cardMap [ c ] , ! 0 } ) } , getSelect : function ( ) { return this . curr } , getSelectedTab : function ( ) { return this . layout . getShowingCard ( ) } , getTab : function ( a ) { return this . _assertCard ( a ) , this . layout . getCardByName ( a ) } , setValue : function ( a ) { var b = this . layout . getShowingCard ( ) ; b && b . setValue ( a ) } , getValue : function ( ) { var a = this . layout . getShowingCard ( ) ; if ( a ) return a . getValue ( ) } , populate : function ( ) { var a = this . layout . getShowingCard ( ) ; if ( a ) return a . populate && a . populate . apply ( a , arguments ) } , empty : function ( ) { this . layout . deleteAllCard ( ) , this . cardMap = { } } , destroy : function ( ) { this . cardMap = { } , BI . Tab . superclass . destroy . apply ( this , arguments ) } } ) , BI . Tab . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.tab" , BI . Tab ) , BI . EL = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . EL . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-el" , el : { } , layout : { } } ) } , _init : function ( ) { BI . EL . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . ele = BI . createWidget ( b . el ) , BI . createWidget ( b . layout , { type : "bi.adaptive" , element : this , items : [ this . ele ] } ) , this . ele . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , setValue : function ( a ) { this . ele . setValue ( a ) } , getValue : function ( ) { return this . ele . getValue ( ) } , populate : function ( ) { this . ele . populate . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.el" , BI . EL ) , function ( a ) { this . CodeMirror = a ( ) } ( function ( ) { "use strict" ; function a ( c , d ) { if ( ! ( this instanceof a ) ) return new a ( c , d ) ; this . options = d = d ? He ( d ) : { } , He ( Vf , d , ! 1 ) , n ( d ) ; var e = d . value ; "string" == typeof e && ( e = new rg ( e , d . mode ) ) , this . doc = e ; var f = new a . inputStyles [ d . inputStyle ] ( this ) , g = this . display = new b ( c , e , f ) ; g . wrapper . CodeMirror = this , j ( this ) , h ( this ) , d . lineWrapping && ( this . display . wrapper . className += " CodeMirror-wrap" ) , d . autofocus && ! xf && g . input . focus ( ) , r ( this ) , this . state = { keyMaps : [ ] , overlays : [ ] , modeGen : 0 , overwrite : ! 1 , delayingBlurEvent : ! 1 , focused : ! 1 , suppressEdits : ! 1 , pasteIncoming : ! 1 , cutIncoming : ! 1 , draggingText : ! 1 , highlight : new ze , keySeq : null , specialChars : null } ; var i = this ; nf && of < 11 && setTimeout ( function ( ) { i . display . input . reset ( ! 0 ) } , 20 ) , Pb ( this ) , Te ( ) , tb ( this ) , this . curOp . forceUpdate = ! 0 , Ud ( this , e ) , d . autofocus && ! xf || i . hasFocus ( ) ? setTimeout ( Ie ( nc , this ) , 20 ) : oc ( this ) ; for ( var k in Wf ) Wf . hasOwnProperty ( k ) && Wf [ k ] ( this , d [ k ] , Xf ) ; w ( this ) , d . finishInit && d . finishInit ( this ) ; for ( var l = 0 ; l < _f . length ; ++ l ) _f [ l ] ( this ) ; vb ( this ) , pf && d . lineWrapping && "optimizelegibility" == getComputedStyle ( g . lineDiv ) . textRendering && ( g . lineDiv . style . textRendering = "auto" ) } function b ( a , b , c ) { var d = this ; this . input = c , d . scrollbarFiller = Me ( "div" , null , "CodeMirror-scrollbar-filler" ) , d . scrollbarFiller . setAttribute ( "cm-not-content" , "true" ) , d . gutterFiller = Me ( "div" , null , "CodeMirror-gutter-filler" ) , d . gutterFiller . setAttribute ( "cm-not-content" , "true" ) , d . lineDiv = Me ( "div" , null , "CodeMirror-code" ) , d . selectionDiv = Me ( "div" , null , null , "position: relative; z-index: 1" ) , d . cursorDiv = Me ( "div" , null , "CodeMirror-cursors" ) , d . measure = Me ( "div" , null , "CodeMirror-measure" ) , d . lineMeasure = Me ( "div" , null , "CodeMirror-measure" ) , d . lineSpace = Me ( "div" , [ d . measure , d . lineMeasure , d . selectionDiv , d . cursorDiv , d . lineDiv ] , null , "position: relative; outline: none" ) , d . mover = Me ( "div" , [ Me ( "div" , [ d . lineSpace ] , "CodeMirror-lines" ) ] , null , "position: relative" ) , d . sizer = Me ( "div" , [ d . mover ] , "CodeMirror-sizer" ) , d . sizerWidth = null , d . heightForcer = Me ( "div" , null , null , "position: absolute; height: " + Bg + "px; width: 1px;" ) , d . gutters = Me ( "div" , null , "CodeMirror-gutters" ) , d . lineGutter = null , d . scroller = Me ( "div" , [ d . sizer , d . heightForcer , d . gutters ] , "CodeMirror-scroll" ) , d . scroller . setAttribute ( "tabIndex" , "-1" ) , d . wrapper = Me ( "div" , [ d . scrollbarFiller , d . gutt
hasHeights : ! 1 } } function ab ( a , b , c , d , e ) { b . before && ( c = - 1 ) ; var f , g = c + ( d || "" ) ; return b . cache . hasOwnProperty ( g ) ? f = b . cache [ g ] : ( b . rect || ( b . rect = b . view . text . getBoundingClientRect ( ) ) , b . hasHeights || ( Wa ( a , b . view , b . rect ) , b . hasHeights = ! 0 ) , f = cb ( a , b , c , d ) , f . bogus || ( b . cache [ g ] = f ) ) , { left : f . left , right : f . right , top : e ? f . rtop : f . top , bottom : e ? f . rbottom : f . bottom } } function bb ( a , b , c ) { for ( var d , e , f , g , h = 0 ; h < a . length ; h += 3 ) { var i = a [ h ] , j = a [ h + 1 ] ; if ( b < i ? ( e = 0 , f = 1 , g = "left" ) : b < j ? ( e = b - i , f = e + 1 ) : ( h == a . length - 3 || b == j && a [ h + 3 ] > b ) && ( f = j - i , e = f - 1 , b >= j && ( g = "right" ) ) , null != e ) { if ( d = a [ h + 2 ] , i == j && c == ( d . insertLeft ? "left" : "right" ) && ( g = c ) , "left" == c && 0 == e ) for ( ; h && a [ h - 2 ] == a [ h - 3 ] && a [ h - 1 ] . insertLeft ; ) d = a [ ( h -= 3 ) + 2 ] , g = "left" ; if ( "right" == c && e == j - i ) for ( ; h < a . length - 3 && a [ h + 3 ] == a [ h + 4 ] && ! a [ h + 5 ] . insertLeft ; ) d = a [ ( h += 3 ) + 2 ] , g = "right" ; break } } return { node : d , start : e , end : f , collapse : g , coverStart : i , coverEnd : j } } function cb ( a , b , c , d ) { var e , f = bb ( b . map , c , d ) , g = f . node , h = f . start , i = f . end , j = f . collapse ; if ( 3 == g . nodeType ) { for ( var k = 0 ; k < 4 ; k ++ ) { for ( ; h && Le ( b . line . text . charAt ( f . coverStart + h ) ) ; ) -- h ; for ( ; f . coverStart + i < f . coverEnd && Le ( b . line . text . charAt ( f . coverStart + i ) ) ; ) ++ i ; if ( nf && of < 9 && 0 == h && i == f . coverEnd - f . coverStart ) e = g . parentNode . getBoundingClientRect ( ) ; else if ( nf && a . options . lineWrapping ) { var l = Jg ( g , h , i ) . getClientRects ( ) ; e = l . length ? l [ "right" == d ? l . length - 1 : 0 ] : Lf } else e = Jg ( g , h , i ) . getBoundingClientRect ( ) || Lf ; if ( e . left || e . right || 0 == h ) break ; i = h , h -= 1 , j = "right" } nf && of < 11 && ( e = db ( a . display . measure , e ) ) } else { h > 0 && ( j = d = "right" ) ; var l ; e = a . options . lineWrapping && ( l = g . getClientRects ( ) ) . length > 1 ? l [ "right" == d ? l . length - 1 : 0 ] : g . getBoundingClientRect ( ) } if ( nf && of < 9 && ! h && ( ! e || ! e . left && ! e . right ) ) { var m = g . parentNode . getClientRects ( ) [ 0 ] ; e = m ? { left : m . left , right : m . left + sb ( a . display ) , top : m . top , bottom : m . bottom } : Lf } for ( var n = e . top - b . rect . top , o = e . bottom - b . rect . top , p = ( n + o ) / 2 , q = b . view . measure . heights , k = 0 ; k < q . length - 1 && ! ( p < q [ k ] ) ; k ++ ) ; var r = k ? q [ k - 1 ] : 0 , s = q [ k ] , t = { left : ( "right" == j ? e . right : e . left ) - b . rect . left , right : ( "left" == j ? e . left : e . right ) - b . rect . left , top : r , bottom : s } ; return e . left || e . right || ( t . bogus = ! 0 ) , a . options . singleCursorHeightPerLine || ( t . rtop = n , t . rbottom = o ) , t } function db ( a , b ) { if ( ! window . screen || null == screen . logicalXDPI || screen . logicalXDPI == screen . deviceXDPI || ! Xe ( a ) ) return b ; var c = screen . logicalXDPI / screen . deviceXDPI , d = screen . logicalYDPI / screen . deviceYDPI ; return { left : b . left * c , right : b . right * c , top : b . top * d , bottom : b . bottom * d } } function eb ( a ) { if ( a . measure && ( a . measure . cache = { } , a . measure . heights = null , a . rest ) ) for ( var b = 0 ; b < a . rest . length ; b ++ ) a . measure . caches [ b ] = { } } function fb ( a ) { a . display . externalMeasure = null , Ne ( a . display . lineMeasure ) ; for ( var b = 0 ; b < a . display . view . length ; b ++ ) eb ( a . display . view [ b ] ) } function gb ( a ) { fb ( a ) , a . display . cachedCharWidth = a . display . cachedTextHeight = a . display . cachedPaddingH = null , a . options . lineWrapping || ( a . display . maxLineChanged = ! 0 ) , a . display . lineNumChars = null } function hb ( ) { return window . pageXOffset || ( document . documentElement || document . body ) . scrollLeft } function ib ( ) { return window . pageYOffset || ( document . documentElement || document . body ) . scrollTop } function jb ( a , b , c , d ) { if ( b . widgets ) for ( var e = 0 ; e < b . widgets . length ; ++ e ) if ( b . widgets [ e ] . above ) { var f = vd ( b . widgets [ e ] ) ; c . top += f , c . bottom += f } if ( "line" == d ) return c ; d || ( d = "local" ) ; var g = _d ( b ) ; if ( "local" == d ? g += Qa ( a . display ) : g -= a . display . viewOffset , "page" == d || "window" == d ) { var h = a . display . lineSpace . getBoundingClientRect ( ) ; g += h . top + ( "window" == d ? 0 : ib ( ) ) ; var i = h . left + ( "window" == d ? 0 : hb ( ) ) ; c . left += i , c . right += i } return c . top += g , c . bottom += g , c } function kb ( a , b , c ) { if ( "div" == c ) return b ; var d = b . left , e = b . top ; if ( "page" == c ) d -= hb ( ) , e -= ib ( ) ; else if ( "local" == c || ! c ) { var f = a . display . sizer . getBoundingClientRect ( ) ; d += f . left , e += f . top } var g = a . display . lineSpace . getBoundingClientRect ( ) ; return { left : d - g . left , top : e - g . top } } function lb ( a , b , c , d , e ) { return d || ( d = Vd ( a . doc , b . line ) ) , jb ( a , d , Za ( a , d , b . ch , e ) , c ) } function mb ( a , b , c , d , e , f ) { function g ( b , g ) { var h = ab ( a , e , b , g ? "right" : "left" , f ) ; return g ? h . left = h . right : h . right = h . left , jb ( a , d , h , c ) } function h ( a , b ) { var c = i [ b ] , d = c . level % 2 ; return a == Ze ( c ) && b && c . level < i [ b - 1 ] . level ? ( c = i [ -- b ] , a = $e ( c ) - ( c . level % 2 ? 0 : 1 ) , d = ! 0 ) : a == $e ( c ) && b < i . length - 1 && c . level < i [ b + 1 ] . level && ( c = i [ ++ b ] , a = Ze ( c ) - c . level % 2 , d = ! 1 ) , d && a == c . to && a > c . fro
h . stateAfter && ( h . stateAfter = null ) ; var j , k = h . text . match ( /^\s*/ ) [ 0 ] ; if ( d || /\S/ . test ( h . text ) ) { if ( "smart" == c && ( j = f . mode . indent ( e , h . text . slice ( k . length ) , h . text ) , j == Cg || j > 150 ) ) { if ( ! d ) return ; c = "prev" } } else j = 0 , c = "not" ; "prev" == c ? j = b > f . first ? Gg ( Vd ( f , b - 1 ) . text , null , g ) : 0 : "add" == c ? j = i + a . options . indentUnit : "subtract" == c ? j = i - a . options . indentUnit : "number" == typeof c && ( j = i + c ) , j = Math . max ( 0 , j ) ; var l = "" , m = 0 ; if ( a . options . indentWithTabs ) for ( var n = Math . floor ( j / g ) ; n ; -- n ) m += g , l += "\t" ; if ( m < j && ( l += Be ( j - m ) ) , l != k ) return Cc ( f , l , Ff ( b , 0 ) , Ff ( b , k . length ) , "+input" ) , h . stateAfter = null , ! 0 ; for ( var n = 0 ; n < f . sel . ranges . length ; n ++ ) { var o = f . sel . ranges [ n ] ; if ( o . head . line == b && o . head . ch < k . length ) { var m = Ff ( b , k . length ) ; xa ( f , n , new ma ( m , m ) ) ; break } } } function Lc ( a , b , c , d ) { var e = b , f = b ; return "number" == typeof b ? f = Vd ( a , pa ( a , b ) ) : e = Zd ( b ) , null == e ? null : ( d ( f , e ) && a . cm && Jb ( a . cm , e , c ) , f ) } function Mc ( a , b ) { for ( var c = a . doc . sel . ranges , d = [ ] , e = 0 ; e < c . length ; e ++ ) { for ( var f = b ( c [ e ] ) ; d . length && Gf ( f . from , Ce ( d ) . to ) <= 0 ; ) { var g = d . pop ( ) ; if ( Gf ( g . from , f . from ) < 0 ) { f . from = g . from ; break } } d . push ( f ) } Cb ( a , function ( ) { for ( var b = d . length - 1 ; b >= 0 ; b -- ) Cc ( a . doc , "" , d [ b ] . from , d [ b ] . to , "+delete" ) ; Ic ( a ) } ) } function Nc ( a , b , c , d , e ) { function f ( ) { var b = h + c ; return b < a . first || b >= a . first + a . size ? l = ! 1 : ( h = b , k = Vd ( a , b ) ) } function g ( a ) { var b = ( e ? hf : jf ) ( k , i , c , ! 0 ) ; if ( null == b ) { if ( a || ! f ( ) ) return l = ! 1 ; i = e ? ( c < 0 ? af : _e ) ( k ) : c < 0 ? k . text . length : 0 } else i = b ; return ! 0 } var h = b . line , i = b . ch , j = c , k = Vd ( a , h ) , l = ! 0 ; if ( "char" == d ) g ( ) ; else if ( "column" == d ) g ( ! 0 ) ; else if ( "word" == d || "group" == d ) for ( var m = null , n = "group" == d , o = a . cm && a . cm . getHelper ( b , "wordChars" ) , p = ! 0 ; ! ( c < 0 ) || g ( ! p ) ; p = ! 1 ) { var q = k . text . charAt ( i ) || "\n" , r = Je ( q , o ) ? "w" : n && "\n" == q ? "n" : ! n || /\s/ . test ( q ) ? null : "p" ; if ( ! n || p || r || ( r = "s" ) , m && m != r ) { c < 0 && ( c = 1 , g ( ) ) ; break } if ( r && ( m = r ) , c > 0 && ! g ( ! p ) ) break } var s = Ga ( a , Ff ( h , i ) , j , ! 0 ) ; return l || ( s . hitSide = ! 0 ) , s } function Oc ( a , b , c , d ) { var e , f = a . doc , g = b . left ; if ( "page" == d ) { var h = Math . min ( a . display . wrapper . clientHeight , window . innerHeight || document . documentElement . clientHeight ) ; e = b . top + c * ( h - ( c < 0 ? 1.5 : . 5 ) * rb ( a . display ) ) } else "line" == d && ( e = c > 0 ? b . bottom + 3 : b . top - 3 ) ; for ( ; ; ) { var i = pb ( a , g , e ) ; if ( ! i . outside ) break ; if ( c < 0 ? e <= 0 : e >= f . height ) { i . hitSide = ! 0 ; break } e += 5 * c } return i } function Pc ( b , c , d , e ) { a . defaults [ b ] = c , d && ( Wf [ b ] = e ? function ( a , b , c ) { c != Xf && d ( a , b , c ) } : d ) } function Qc ( a ) { for ( var b , c , d , e , f = a . split ( /-(?!$)/ ) , a = f [ f . length - 1 ] , g = 0 ; g < f . length - 1 ; g ++ ) { var h = f [ g ] ; if ( /^(cmd|meta|m)$/i . test ( h ) ) e = ! 0 ; else if ( /^a(lt)?$/i . test ( h ) ) b = ! 0 ; else if ( /^(c|ctrl|control)$/i . test ( h ) ) c = ! 0 ; else { if ( ! /^s(hift)$/i . test ( h ) ) throw new Error ( "Unrecognized modifier name: " + h ) ; d = ! 0 } } return b && ( a = "Alt-" + a ) , c && ( a = "Ctrl-" + a ) , e && ( a = "Cmd-" + a ) , d && ( a = "Shift-" + a ) , a } function Rc ( a ) { return "string" == typeof a ? eg [ a ] : a } function Sc ( a , b , c , d , e ) { if ( d && d . shared ) return Tc ( a , b , c , d , e ) ; if ( a . cm && ! a . cm . curOp ) return Db ( a . cm , Sc ) ( a , b , c , d , e ) ; var f = new kg ( a , e ) , g = Gf ( b , c ) ; if ( d && He ( d , f , ! 1 ) , g > 0 || 0 == g && f . clearWhenEmpty !== ! 1 ) return f ; if ( f . replacedWith && ( f . collapsed = ! 0 , f . widgetNode = Me ( "span" , [ f . replacedWith ] , "CodeMirror-widget" ) , d . handleMouseEvents || f . widgetNode . setAttribute ( "cm-ignore-events" , "true" ) , d . insertLeft && ( f . widgetNode . insertLeft = ! 0 ) ) , f . collapsed ) { if ( nd ( a , b . line , b , c , f ) || b . line != c . line && nd ( a , c . line , b , c , f ) ) throw new Error ( "Inserting collapsed marker partially overlapping an existing one" ) ; Ef = ! 0 } f . addToHistory && fe ( a , { from : b , to : c , origin : "markText" } , a . sel , NaN ) ; var h , i = b . line , j = a . cm ; if ( a . iter ( i , c . line + 1 , function ( a ) { j && f . collapsed && ! j . options . lineWrapping && od ( a ) == j . display . maxLine && ( h = ! 0 ) , f . collapsed && i != b . line && Yd ( a , 0 ) , $c ( a , new Xc ( f , i == b . line ? b . ch : null , i == c . line ? c . ch : null ) ) , ++ i } ) , f . collapsed && a . iter ( b . line , c . line + 1 , function ( b ) { sd ( a , b ) && Yd ( b , 0 ) } ) , f . clearOnEnter && xg ( f , "beforeCursorEnter" , function ( ) { f . clear ( ) } ) , f . readOnly && ( Df = ! 0 , ( a . history . done . length || a . history . undone . length ) && a . clearHistory ( ) ) , f . collapsed && ( f . id = ++ jg , f . atomic = ! 0 ) , j ) { if ( h && ( j . curOp . updateMaxLine = ! 0 ) , f . collapsed ) Ib ( j , b . line , c . line + 1 ) ; else if ( f . className || f . title || f . startStyle || f . endStyle || f . css ) for ( var k = b . line ; k <= c . line ; k ++ ) Jb ( j , k , "text" ) ; f . atomic && Ea ( j . doc ) , te ( j , "markerAdded" , j , f ) } return f } function Tc ( a , b , c , d , e ) { d = He ( d ) , d . shared = ! 1 ; var f = [ Sc ( a , b , c , d , e ) ] , g = f [ 0 ] , h = d . widgetNode ; return Td ( a , function ( a ) { h && ( d . widg
c . poll ( ) } ) , xg ( f , "paste" , function ( a ) { return ! ! _ ( a , d ) || ( d . state . pasteIncoming = ! 0 , void c . fastPoll ( ) ) } ) , xg ( f , "cut" , b ) , xg ( f , "copy" , b ) , xg ( a . scroller , "paste" , function ( b ) { Sb ( a , b ) || ( d . state . pasteIncoming = ! 0 , c . focus ( ) ) } ) , xg ( a . lineSpace , "selectstart" , function ( b ) { Sb ( a , b ) || ug ( b ) } ) , xg ( f , "compositionstart" , function ( ) { var a = d . getCursor ( "from" ) ; c . composing = { start : a , range : d . markText ( a , d . getCursor ( "to" ) , { className : "CodeMirror-composing" } ) } } ) , xg ( f , "compositionend" , function ( ) { c . composing && ( c . poll ( ) , c . composing . range . clear ( ) , c . composing = null ) } ) } , prepareSelection : function ( ) { var a = this . cm , b = a . display , c = a . doc , d = Ia ( a ) ; if ( a . options . moveInputWithCursor ) { var e = mb ( a , c . sel . primary ( ) . head , "div" ) , f = b . wrapper . getBoundingClientRect ( ) , g = b . lineDiv . getBoundingClientRect ( ) ; d . teTop = Math . max ( 0 , Math . min ( b . wrapper . clientHeight - 10 , e . top + g . top - f . top ) ) , d . teLeft = Math . max ( 0 , Math . min ( b . wrapper . clientWidth - 10 , e . left + g . left - f . left ) ) } return d } , showSelection : function ( a ) { var b = this . cm , c = b . display ; Oe ( c . cursorDiv , a . cursors ) , Oe ( c . selectionDiv , a . selection ) , null != a . teTop && ( this . wrapper . style . top = a . teTop + "px" , this . wrapper . style . left = a . teLeft + "px" ) } , reset : function ( a ) { if ( ! this . contextMenuPending ) { var b , c , d = this . cm , e = d . doc ; if ( d . somethingSelected ( ) ) { this . prevInput = "" ; var f = e . sel . primary ( ) ; b = Wg && ( f . to ( ) . line - f . from ( ) . line > 100 || ( c = d . getSelection ( ) ) . length > 1e3 ) ; var g = b ? "-" : c || d . getSelection ( ) ; this . textarea . value = g , d . state . focused && Ig ( this . textarea ) , nf && of >= 9 && ( this . hasSelection = g ) } else a || ( this . prevInput = this . textarea . value = "" , nf && of >= 9 && ( this . hasSelection = null ) ) ; this . inaccurateSelection = b } } , getField : function ( ) { return this . textarea } , supportsTouch : function ( ) { return ! 1 } , focus : function ( ) { if ( "nocursor" != this . cm . options . readOnly && ( ! xf || Pe ( ) != this . textarea ) ) try { this . textarea . focus ( ) } catch ( a ) { } } , blur : function ( ) { this . textarea . blur ( ) } , resetPosition : function ( ) { this . wrapper . style . top = this . wrapper . style . left = 0 } , receivedFocus : function ( ) { this . slowPoll ( ) } , slowPoll : function ( ) { var a = this ; a . pollingFast || a . polling . set ( this . cm . options . pollInterval , function ( ) { a . poll ( ) , a . cm . state . focused && a . slowPoll ( ) } ) } , fastPoll : function ( ) { function a ( ) { var d = c . poll ( ) ; d || b ? ( c . pollingFast = ! 1 , c . slowPoll ( ) ) : ( b = ! 0 , c . polling . set ( 60 , a ) ) } var b = ! 1 , c = this ; c . pollingFast = ! 0 , c . polling . set ( 20 , a ) } , poll : function ( ) { var a = this . cm , b = this . textarea , c = this . prevInput ; if ( this . contextMenuPending || ! a . state . focused || Vg ( b ) && ! c || Z ( a ) || a . options . disableInput || a . state . keySeq ) return ! 1 ; var d = b . value ; if ( d == c && ! a . somethingSelected ( ) ) return ! 1 ; if ( nf && of >= 9 && this . hasSelection === d || yf && /[\uf700-\uf7ff]/ . test ( d ) ) return a . display . input . reset ( ) , ! 1 ; if ( a . doc . sel == a . display . selForContextMenu ) { var e = d . charCodeAt ( 0 ) ; if ( 8203 != e || c || ( c = " " ) , 8666 == e ) return this . reset ( ) , this . cm . execCommand ( "undo" ) } for ( var f = 0 , g = Math . min ( c . length , d . length ) ; f < g && c . charCodeAt ( f ) == d . charCodeAt ( f ) ; ) ++ f ; var h = this ; return Cb ( a , function ( ) { $ ( a , d . slice ( f ) , c . length - f , null , h . composing ? "*compose" : null ) , d . length > 1e3 || d . indexOf ( "\n" ) > - 1 ? b . value = h . prevInput = "" : h . prevInput = d , h . composing && ( h . composing . range . clear ( ) , h . composing . range = a . markText ( h . composing . start , a . getCursor ( "to" ) , { className : "CodeMirror-composing" } ) ) } ) , ! 0 } , ensurePolled : function ( ) { this . pollingFast && this . poll ( ) && ( this . pollingFast = ! 1 ) } , onKeyPress : function ( ) { nf && of >= 9 && ( this . hasSelection = null ) , this . fastPoll ( ) } , onContextMenu : function ( a ) { function b ( ) { if ( null != g . selectionStart ) { var a = e . somethingSelected ( ) , b = " " + ( a ? g . value : "" ) ; g . value = "⇚" , g . value = b , d . prevInput = a ? "" : " " , g . selectionStart = 1 , g . selectionEnd = b . length , f . selForContextMenu = e . doc . sel } } function c ( ) { if ( d . contextMenuPending = ! 1 , d . wrapper . style . position = "relative" , g . style . cssText = k , nf && of < 9 && f . scrollbars . setScrollTop ( f . scroller . scrollTop = i ) , null != g . selectionStart ) { ( ! nf || nf && of < 9 ) && b ( ) ; var a = 0 , c = function ( ) { f . selForContextMenu == e . doc . sel && 0 == g . selectionStart && g . selectionEnd > 0 && " " == d . prevInput ? Db ( e , dg . selectAll ) ( e ) : a ++ < 10 ? f . detectingSelectAll = setTimeout ( c , 500 ) : f . input . reset ( ) } ; f . detectingSelectAll = setTimeout ( c , 200 ) } } var d = this , e = d . cm , f = e . display , g = d . textarea , h = Tb ( e , a ) , i = f . scroller . scrollTop ; if ( h && ! sf ) { var j = e . options . resetSelectionOnContextMenu ; j && e . doc . sel . contains ( h ) == - 1 && Db ( e , Ba ) ( e . doc , oa (
"Ctrl-Up" : "goDocStart" , "Ctrl-Down" : "goDocEnd" , fallthrough : [ "basic" , "emacsy" ] } , eg [ "default" ] = yf ? eg . macDefault : eg . pcDefault , a . normalizeKeyMap = function ( a ) { var b = { } ; for ( var c in a ) if ( a . hasOwnProperty ( c ) ) { var d = a [ c ] ; if ( /^(name|fallthrough|(de|at)tach)$/ . test ( c ) ) continue ; if ( "..." == d ) { delete a [ c ] ; continue } for ( var e = Ee ( c . split ( " " ) , Qc ) , f = 0 ; f < e . length ; f ++ ) { var g , h ; f == e . length - 1 ? ( h = e . join ( " " ) , g = d ) : ( h = e . slice ( 0 , f + 1 ) . join ( " " ) , g = "..." ) ; var i = b [ h ] ; if ( i ) { if ( i != g ) throw new Error ( "Inconsistent bindings for " + h ) } else b [ h ] = g } delete a [ c ] } for ( var j in b ) a [ j ] = b [ j ] ; return a } ; var fg = a . lookupKey = function ( a , b , c , d ) { b = Rc ( b ) ; var e = b . call ? b . call ( a , d ) : b [ a ] ; if ( e === ! 1 ) return "nothing" ; if ( "..." === e ) return "multi" ; if ( null != e && c ( e ) ) return "handled" ; if ( b . fallthrough ) { if ( "[object Array]" != Object . prototype . toString . call ( b . fallthrough ) ) return fg ( a , b . fallthrough , c , d ) ; for ( var f = 0 ; f < b . fallthrough . length ; f ++ ) { var g = fg ( a , b . fallthrough [ f ] , c , d ) ; if ( g ) return g } } } , gg = a . isModifierKey = function ( a ) { var b = "string" == typeof a ? a : Yg [ a . keyCode ] ; return "Ctrl" == b || "Alt" == b || "Shift" == b || "Mod" == b } , hg = a . keyName = function ( a , b ) { if ( sf && 34 == a . keyCode && a [ "char" ] ) return ! 1 ; var c = Yg [ a . keyCode ] , d = c ; return null != d && ! a . altGraphKey && ( a . altKey && "Alt" != c && ( d = "Alt-" + d ) , ( Bf ? a . metaKey : a . ctrlKey ) && "Ctrl" != c && ( d = "Ctrl-" + d ) , ( Bf ? a . ctrlKey : a . metaKey ) && "Cmd" != c && ( d = "Cmd-" + d ) , ! b && a . shiftKey && "Shift" != c && ( d = "Shift-" + d ) , d ) } ; a . fromTextArea = function ( b , c ) { function d ( ) { b . value = j . getValue ( ) } if ( c = c ? He ( c ) : { } , c . value = b . value , ! c . tabindex && b . tabIndex && ( c . tabindex = b . tabIndex ) , ! c . placeholder && b . placeholder && ( c . placeholder = b . placeholder ) , null == c . autofocus ) { var e = Pe ( ) ; c . autofocus = e == b || null != b . getAttribute ( "autofocus" ) && e == document . body } if ( b . form && ( xg ( b . form , "submit" , d ) , ! c . leaveSubmitMethodAlone ) ) { var f = b . form , g = f . submit ; try { var h = f . submit = function ( ) { d ( ) , f . submit = g , f . submit ( ) , f . submit = h } } catch ( i ) { } } c . finishInit = function ( a ) { a . save = d , a . getTextArea = function ( ) { return b } , a . toTextArea = function ( ) { a . toTextArea = isNaN , d ( ) , b . parentNode . removeChild ( a . getWrapperElement ( ) ) , b . style . display = "" , b . form && ( yg ( b . form , "submit" , d ) , "function" == typeof b . form . submit && ( b . form . submit = g ) ) } } , b . style . display = "none" ; var j = a ( function ( a ) { b . parentNode . insertBefore ( a , b . nextSibling ) } , c ) ; return j } ; var ig = a . StringStream = function ( a , b ) { this . pos = this . start = 0 , this . string = a , this . tabSize = b || 8 , this . lastColumnPos = this . lastColumnValue = 0 , this . lineStart = 0 } ; ig . prototype = { eol : function ( ) { return this . pos >= this . string . length } , sol : function ( ) { return this . pos == this . lineStart } , peek : function ( ) { return this . string . charAt ( this . pos ) || void 0 } , next : function ( ) { if ( this . pos < this . string . length ) return this . string . charAt ( this . pos ++ ) } , eat : function ( a ) { var b = this . string . charAt ( this . pos ) ; if ( "string" == typeof a ) var c = b == a ; else var c = b && ( a . test ? a . test ( b ) : a ( b ) ) ; if ( c ) return ++ this . pos , b } , eatWhile : function ( a ) { for ( var b = this . pos ; this . eat ( a ) ; ) ; return this . pos > b } , eatSpace : function ( ) { for ( var a = this . pos ; /[\s\u00a0]/ . test ( this . string . charAt ( this . pos ) ) ; ) ++ this . pos ; return this . pos > a } , skipToEnd : function ( ) { this . pos = this . string . length } , skipTo : function ( a ) { var b = this . string . indexOf ( a , this . pos ) ; if ( b > - 1 ) return this . pos = b , ! 0 } , backUp : function ( a ) { this . pos -= a } , column : function ( ) { return this . lastColumnPos < this . start && ( this . lastColumnValue = Gg ( this . string , this . start , this . tabSize , this . lastColumnPos , this . lastColumnValue ) , this . lastColumnPos = this . start ) , this . lastColumnValue - ( this . lineStart ? Gg ( this . string , this . lineStart , this . tabSize ) : 0 ) } , indentation : function ( ) { return Gg ( this . string , null , this . tabSize ) - ( this . lineStart ? Gg ( this . string , this . lineStart , this . tabSize ) : 0 ) } , match : function ( a , b , c ) { if ( "string" != typeof a ) { var d = this . string . slice ( this . pos ) . match ( a ) ; return d && d . index > 0 ? null : ( d && b !== ! 1 && ( this . pos += d [ 0 ] . length ) , d ) } var e = function ( a ) { return c ? a . toLowerCase ( ) : a } , f = this . string . substr ( this . pos , a . length ) ; if ( e ( f ) == e ( a ) ) return b !== ! 1 && ( this . pos += a . length ) , ! 0 } , current : function ( ) { return this . string . slice ( this . start , this . pos ) } , hideFirstChars : function ( a , b ) { this . lineStart += a ; try { return b ( ) } finally { this . lineStart -= a } } } ; var jg = 0 , kg = a . TextMarker = function ( a , b ) { this . lines = [ ] , this . type = b , this . doc = a , this . id = ++ jg } ; ye ( kg ) , kg . prototype . clear = function ( ) { if ( ! th
c . update ( ) } ) , this . widget && this . widget . disable ( ) } } , update : function ( b ) { if ( null != this . tick ) if ( this . data && a . signal ( this . data , "update" ) , this . options . hint . async ) { var c = ++ this . tick , d = this ; this . options . hint ( this . cm , function ( a ) { d . tick == c && d . finishUpdate ( a , b ) } , this . options ) } else this . finishUpdate ( this . options . hint ( this . cm , this . options ) , b ) } , finishUpdate : function ( b , c ) { this . data = b ; var d = this . widget && this . widget . picked || c && this . options . completeSingle ; this . widget && this . widget . close ( ) , b && b . list . length && ( d && 1 == b . list . length ? this . pick ( b , 0 ) : ( this . widget = new f ( this , b ) , a . signal ( b , "shown" ) ) ) } , buildOptions : function ( a ) { var b = this . cm . options . hintOptions , c = { } ; for ( var d in k ) c [ d ] = k [ d ] ; if ( b ) for ( var d in b ) void 0 !== b [ d ] && ( c [ d ] = b [ d ] ) ; if ( a ) for ( var d in a ) void 0 !== a [ d ] && ( c [ d ] = a [ d ] ) ; return c } } , f . prototype = { close : function ( ) { if ( this . completion . widget == this ) { this . completion . widget = null , this . hints . parentNode . removeChild ( this . hints ) , this . completion . cm . removeKeyMap ( this . keyMap ) ; var a = this . completion . cm ; this . completion . options . closeOnUnfocus && ( a . off ( "blur" , this . onBlur ) , a . off ( "focus" , this . onFocus ) ) , a . off ( "scroll" , this . onScroll ) } } , disable : function ( ) { this . completion . cm . removeKeyMap ( this . keyMap ) ; var a = this ; this . keyMap = { Enter : function ( ) { a . picked = ! 0 } } , this . completion . cm . addKeyMap ( this . keyMap ) } , pick : function ( ) { this . completion . pick ( this . data , this . selectedHint ) } , changeActive : function ( b , c ) { if ( b >= this . data . list . length ? b = c ? this . data . list . length - 1 : 0 : b < 0 && ( b = c ? 0 : this . data . list . length - 1 ) , this . selectedHint != b ) { var d = this . hints . childNodes [ this . selectedHint ] ; d . className = d . className . replace ( " " + h , "" ) , d = this . hints . childNodes [ this . selectedHint = b ] , d . className += " " + h , d . offsetTop < this . hints . scrollTop ? this . hints . scrollTop = d . offsetTop - 3 : d . offsetTop + d . offsetHeight > this . hints . scrollTop + this . hints . clientHeight && ( this . hints . scrollTop = d . offsetTop + d . offsetHeight - this . hints . clientHeight + 3 ) , a . signal ( this . data , "select" , this . data . list [ this . selectedHint ] , d ) } } , screenAmount : function ( ) { return Math . floor ( this . hints . clientHeight / this . hints . firstChild . offsetHeight ) || 1 } } , a . registerHelper ( "hint" , "auto" , function ( b , c ) { var d , e = b . getHelpers ( b . getCursor ( ) , "hint" ) ; if ( e . length ) for ( var f = 0 ; f < e . length ; f ++ ) { var g = e [ f ] ( b , c ) ; if ( g && g . list . length ) return g } else if ( d = b . getHelper ( b . getCursor ( ) , "hintWords" ) ) { if ( d ) return a . hint . fromList ( b , { words : d } ) } else if ( a . hint . anyword ) return a . hint . anyword ( b , c ) } ) , a . registerHelper ( "hint" , "fromList" , function ( b , c ) { for ( var d = b . getCursor ( ) , e = b . getTokenAt ( d ) , f = [ ] , g = 0 ; g < c . words . length ; g ++ ) { var h = c . words [ g ] ; h . slice ( 0 , e . string . length ) == e . string && f . push ( h ) } if ( f . length ) return { list : f , from : a . Pos ( d . line , e . start ) , to : a . Pos ( d . line , e . end ) } } ) , a . commands . autocomplete = a . showHint ; var k = { hint : a . hint . auto , completeSingle : ! 0 , alignWithWord : ! 0 , closeCharacters : /[\s()\[\]{};:>,]/ , closeOnUnfocus : ! 0 , completeOnSingleClick : ! 0 , container : null , customKeys : null , extraKeys : null } ; a . defineOption ( "hintOptions" , null ) } ) , BI . FormulaEditor = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return $ . extend ( BI . FormulaEditor . superclass . _defaultConfig . apply ( ) , { baseCls : "bi-formula-editor bi-card" , watermark : "" , value : "" , fieldTextValueMap : { } , showHint : ! 0 , lineHeight : 2 } ) } , _init : function ( ) { BI . FormulaEditor . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this ; if ( this . editor = CodeMirror ( this . element [ 0 ] , { textWrapping : ! 0 , lineWrapping : ! 0 , lineNumbers : ! 1 , mode : "formula" , specialChars : /[\u0000-\u001f\u007f\u00ad\u200c-\u200f\u2028\u2029\ufeff]/ } ) , 1 === a . lineHeight ? this . element . addClass ( "codemirror-low-line-height" ) : this . element . addClass ( "codemirror-high-line-height" ) , this . editor . on ( "change" , function ( c , d ) { b . _checkWaterMark ( ) , a . showHint && CodeMirror . showHint ( c , CodeMirror . formulaHint , { completeSingle : ! 1 } ) , BI . nextTick ( function ( ) { b . fireEvent ( BI . FormulaEditor . EVENT _CHANGE ) } ) } ) , this . editor . on ( "focus" , function ( ) { b . _checkWaterMark ( ) , b . fireEvent ( BI . FormulaEditor . EVENT _FOCUS ) } ) , this . editor . on ( "blur" , function ( ) { b . fireEvent ( BI . FormulaEditor . EVENT _BLUR ) } ) , BI . isKey ( a . value ) && b . setValue ( a . value ) , BI . isKey ( this . options . watermark ) ) { var b = this ; this . watermark = BI . createWidget ( { type : "bi.label" , cls : "bi-water-mark" , text : this . options . watermark , whiteSpace : "nowrap" , textAlign : "
a || ( a = 1 ) ; var b = this . options , c = this . options . pages ; return c === ! 1 ? b . hasPrev ( a ) : a > 1 } , hasNext : function ( a ) { a || ( a = 1 ) ; var b = this . options , c = this . options . pages ; return c === ! 1 ? b . hasNext ( a ) : a < c } , setValue : function ( a ) { var b = this . options ; if ( a = 0 | a , a = a < 1 ? 1 : a , b . pages === ! 1 ) { var c = BI . result ( b , "lastPage" ) , d = 1 ; this . currPage = a > c ? c : ( d = BI . result ( b , "firstPage" ) , a < d ? d : a ) } else a = a > b . pages ? b . pages : a , this . currPage = a ; this . _populate ( ) } , getValue : function ( ) { var a = this . button _group . getValue ( ) [ 0 ] ; switch ( a ) { case "prev" : return - 1 ; case "next" : return 1 ; case "first" : return BI . MIN ; case "last" : return BI . MAX ; default : return a } } , attr : function ( a , b ) { BI . Pager . superclass . attr . apply ( this , arguments ) , "curr" === a && ( this . currPage = BI . result ( this . options , "curr" ) ) } , populate : function ( ) { this . _populate ( ) } } ) , BI . Pager . EVENT _CHANGE = "EVENT_CHANGE" , BI . Pager . EVENT _AFTER _POPULATE = "EVENT_AFTER_POPULATE" , BI . shortcut ( "bi.pager" , BI . Pager ) , BI . A = BI . inherit ( BI . Text , { _defaultConfig : function ( ) { var a = BI . A . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-a display-block" , href : "" , target : "_blank" , el : null , element : "<a/>" } ) } , _init : function ( ) { var a = this . options ; BI . A . superclass . _init . apply ( this , arguments ) , this . element . attr ( { href : a . href , target : a . target } ) , a . el && BI . createWidget ( a . el , { element : this } ) } } ) , BI . shortcut ( "bi.a" , BI . A ) , BI . LoadingBar = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . LoadingBar . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-loading-bar bi-tips" , height : 30 , handler : BI . emptyFn } ) } , _init : function ( ) { BI . LoadingBar . superclass . _init . apply ( this , arguments ) ; var a = this ; this . loaded = BI . createWidget ( { type : "bi.text_button" , cls : "loading-text bi-list-item-simple" , text : BI . i18nText ( "BI-Load_More" ) , width : 120 , handler : this . options . handler } ) , this . loaded . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . loading = BI . createWidget ( { type : "bi.layout" , width : this . options . height , height : this . options . height , cls : "loading-background cursor-default" } ) ; var b = BI . createWidget ( { type : "bi.center_adapt" , items : [ this . loaded ] } ) , c = BI . createWidget ( { type : "bi.center_adapt" , items : [ this . loading ] } ) ; this . cardLayout = BI . createWidget ( { type : "bi.card" , element : this , items : [ { el : b , cardName : "loaded" } , { el : c , cardName : "loading" } ] } ) , this . invisible ( ) } , _reset : function ( ) { this . visible ( ) , this . loaded . setText ( BI . i18nText ( "BI-Load_More" ) ) , this . loaded . enable ( ) } , setLoaded : function ( ) { this . _reset ( ) , this . cardLayout . showCardByName ( "loaded" ) } , setEnd : function ( ) { this . setLoaded ( ) , this . loaded . setText ( BI . i18nText ( "BI-No_More_Data" ) ) , this . loaded . disable ( ) } , setLoading : function ( ) { this . _reset ( ) , this . cardLayout . showCardByName ( "loading" ) } } ) , BI . shortcut ( "bi.loading_bar" , BI . LoadingBar ) , BI . IconButton = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . IconButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-icon-button horizon-center" , iconWidth : null , iconHeight : null } ) } , _init : function ( ) { BI . IconButton . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . element . css ( { textAlign : "center" } ) , this . icon = BI . createWidget ( { type : "bi.icon" , width : a . iconWidth , height : a . iconHeight } ) , BI . isNumber ( a . height ) && a . height > 0 && BI . isNull ( a . iconWidth ) && BI . isNull ( a . iconHeight ) ? ( this . element . css ( "lineHeight" , a . height + "px" ) , BI . createWidget ( { type : "bi.default" , element : this , items : [ this . icon ] } ) ) : BI . createWidget ( { element : this , type : "bi.center_adapt" , items : [ this . icon ] } ) } , doClick : function ( ) { BI . IconButton . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . IconButton . EVENT _CHANGE , this ) } } ) , BI . IconButton . EVENT _CHANGE = "IconButton.EVENT_CHANGE" , BI . shortcut ( "bi.icon_button" , BI . IconButton ) , BI . ImageButton = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . ImageButton . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-image-button" , src : "" , iconWidth : "100%" , iconHeight : "100%" } ) } , _init : function ( ) { BI . ImageButton . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . image = BI . createWidget ( { type : "bi.img" , width : a . iconWidth , height : a . iconHeight ,
this . style = a , this . element . css ( a ) } , getStyle : function ( ) { return this . style } , refresh : function ( ) { var a = this ; BI . nextTick ( function ( ) { a . editor . refresh ( ) } ) } } ) , BI . CodeEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . CodeEditor . EVENT _BLUR = "EVENT_BLUR" , BI . CodeEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . shortcut ( "bi.code_editor" , BI . CodeEditor ) , BI . Editor = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Editor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-editor" , hgap : 4 , vgap : 2 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , tipType : "warning" , inputType : "text" , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 1 , watermark : "" , errorText : "" } ) } , _init : function ( ) { BI . Editor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = this . addWidget ( BI . createWidget ( { type : "bi.input" , element : "<input type='" + b . inputType + "'/>" , root : ! 0 , value : b . value , watermark : b . watermark , validationChecker : b . validationChecker , quitChecker : b . quitChecker , allowBlank : b . allowBlank } ) ) , this . editor . element . css ( { width : "100%" , height : "100%" , border : "none" , outline : "none" , padding : "0" , margin : "0" } ) , BI . isKey ( this . options . watermark ) && ( this . watermark = BI . createWidget ( { type : "bi.label" , cls : "bi-water-mark" , text : this . options . watermark , forceCenter : ! 0 , height : b . height - 2 * ( b . vgap + b . tgap ) , whiteSpace : "nowrap" , textAlign : "left" } ) , this . watermark . element . bind ( { mousedown : function ( b ) { a . isEnabled ( ) ? a . editor . isEditing ( ) || a . editor . focus ( ) : a . editor . isEditing ( ) && a . editor . blur ( ) , b . stopEvent ( ) } } ) , this . watermark . element . bind ( "click" , function ( b ) { a . isEnabled ( ) ? a . editor . isEditing ( ) || a . editor . focus ( ) : a . editor . isEditing ( ) && a . editor . blur ( ) , b . stopEvent ( ) } ) , this . watermark . element . css ( { position : "absolute" , left : "3px" , right : "3px" , top : "0px" , bottom : "0px" } ) ) ; var c = [ { el : { type : "bi.default" , items : this . watermark ? [ this . editor , this . watermark ] : [ this . editor ] } , left : b . hgap + b . lgap , right : b . hgap + b . rgap , top : b . vgap + b . tgap , bottom : b . vgap + b . bgap } ] ; BI . createWidget ( { type : "bi.absolute" , element : this , items : c } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Input . EVENT _FOCUS , function ( ) { a . _checkError ( ) , a . element . addClass ( "bi-editor-focus" ) , a . fireEvent ( BI . Editor . EVENT _FOCUS , arguments ) } ) , this . editor . on ( BI . Input . EVENT _BLUR , function ( ) { a . setErrorVisible ( ! 1 ) , a . element . removeClass ( "bi-editor-focus" ) , a . fireEvent ( BI . Editor . EVENT _BLUR , arguments ) } ) , this . editor . on ( BI . Input . EVENT _CLICK , function ( ) { a . fireEvent ( BI . Editor . EVENT _CLICK , arguments ) } ) , this . editor . on ( BI . Input . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Editor . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Input . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . Editor . EVENT _KEY _DOWN , arguments ) } ) , this . editor . on ( BI . Input . EVENT _QUICK _DOWN , function ( b ) { a . watermark && a . watermark . invisible ( ) } ) , this . editor . on ( BI . Input . EVENT _VALID , function ( ) { a . _checkWaterMark ( ) , a . setErrorVisible ( ! 1 ) , a . fireEvent ( BI . Editor . EVENT _VALID , arguments ) } ) , this . editor . on ( BI . Input . EVENT _ERROR , function ( ) { a . _checkWaterMark ( ) , a . fireEvent ( BI . Editor . EVENT _ERROR , arguments ) , a . setErrorVisible ( a . isEditing ( ) ) } ) , this . editor . on ( BI . Input . EVENT _RESTRICT , function ( ) { a . _checkWaterMark ( ) ; var b = a . setErrorVisible ( ! 0 ) ; b && b . element . fadeOut ( 100 , function ( ) { b . element . fadeIn ( 100 ) } ) , a . fireEvent ( BI . Editor . EVENT _RESTRICT , arguments ) } ) , this . editor . on ( BI . Input . EVENT _EMPTY , function ( ) { a . _checkWaterMark ( ) , a . fireEvent ( BI . Editor . EVENT _EMPTY , arguments ) } ) , this . editor . on ( BI . Input . EVENT _ENTER , function ( ) { a . fireEvent ( BI . Editor . EVENT _ENTER , arguments ) } ) , this . editor . on ( BI . Input . EVENT _SPACE , function ( ) { a . fireEvent ( BI . Editor . EVENT _SPACE , arguments ) } ) , this . editor . on ( BI . Input . EVENT _BACKSPACE , function ( ) { a . fireEvent ( BI . Editor . EVENT _BACKSPACE , arguments ) } ) , this . editor . on ( BI . Input . EVENT _REMOVE , function ( ) { a . fireEvent ( BI . Editor . EVENT _REMOVE , arguments ) } ) , this . editor . on ( BI . Input . EVENT _START , function ( ) { a . fireEvent ( BI . Editor . EVENT _START , arguments ) } ) , this . editor . on ( BI . Input . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . Editor . EVENT _PAUSE , arguments ) } ) , this . editor . on ( BI . Input . EVENT _STOP , function ( ) { a . fireEvent ( BI . Editor . EVENT _STOP , arguments ) } ) , this . editor . on ( BI . Input . EVENT _CONFIRM , function ( ) { a . fireEvent ( BI . Editor . EVENT _CONFIRM , a
element : this , items : [ { el : this . text = BI . createWidget ( b ) , left : a . hgap + a . lgap , right : a . hgap + a . rgap , top : a . vgap + a . tgap , bottom : a . vgap + a . bgap } ] } ) ) : ( b . width = a . width - 2 * a . hgap , void BI . createWidget ( { type : "bi.center_adapt" , scrollable : "normal" === a . whiteSpace , element : this , items : [ { el : this . text = BI . createWidget ( b ) } ] } ) ) } return BI . isNumber ( a . textWidth ) && a . textWidth > 0 ? ( b . width = a . textWidth , void BI . createWidget ( { type : "bi.center_adapt" , scrollable : "normal" === a . whiteSpace , element : this , items : [ { el : this . text = BI . createWidget ( b ) } ] } ) ) : "normal" == a . whiteSpace ? ( this . text = BI . createWidget ( b ) , void BI . createWidget ( { type : "bi.center_adapt" , hgap : a . hgap , vgap : a . vgap , lgap : a . lgap , rgap : a . rgap , tgap : a . tgap , bgap : a . bgap , scrollable : "normal" === a . whiteSpace , element : this , items : [ this . text ] } ) ) : BI . isNumber ( a . height ) && a . height > 0 ? BI . isNumber ( a . textHeight ) && a . textHeight > 0 ? ( this . element . css ( { "line-height" : a . height + "px" } ) , void BI . createWidget ( { type : "bi.adaptive" , height : a . height , scrollable : "normal" === a . whiteSpace , element : this , items : [ { el : this . text = BI . createWidget ( b ) , left : a . hgap + a . lgap , right : a . hgap + a . rgap , top : a . vgap + a . tgap , bottom : a . vgap + a . bgap } ] } ) ) : ( BI . extend ( b , { hgap : a . hgap , vgap : a . vgap , lgap : a . lgap , rgap : a . rgap , tgap : a . tgap , bgap : a . bgap } ) , this . element . css ( { "line-height" : a . height + "px" } ) , this . text = BI . createWidget ( BI . extend ( b , { element : this } ) ) , void BI . createWidget ( { type : "bi.layout" , element : this . text , scrollable : "normal" === a . whiteSpace } ) ) : ( BI . extend ( b , { hgap : a . hgap , vgap : a . vgap , lgap : a . lgap , rgap : a . rgap , tgap : a . tgap , bgap : a . bgap } ) , a . forceCenter ? ( this . text = BI . createWidget ( b ) , void BI . createWidget ( { type : "bi.center_adapt" , element : this , items : [ this . text ] } ) ) : ( this . text = BI . createWidget ( BI . extend ( b , { element : this } ) ) , void BI . createWidget ( { type : "bi.layout" , element : this . text , scrollable : "normal" === a . whiteSpace } ) ) ) } , _createNotCenterEl : function ( ) { var a = this . options , b = this . _createJson ( ) ; return BI . isNumber ( a . width ) && a . width > 0 ? BI . isNumber ( a . textWidth ) && a . textWidth > 0 ? BI . isNumber ( a . height ) && a . height > 0 ? ( BI . createWidget ( { type : "bi.adaptive" , height : a . height , scrollable : "normal" === a . whiteSpace , element : this , items : [ { el : this . text = BI . createWidget ( b ) , left : a . hgap + a . lgap , right : a . hgap + a . rgap , top : a . vgap + a . tgap , bottom : a . vgap + a . bgap } ] } ) , void this . element . css ( { "line-height" : a . height + "px" } ) ) : ( b . width = a . textWidth , void BI . createWidget ( { type : "bi.vertical_adapt" , scrollable : "normal" === a . whiteSpace , hgap : a . hgap , vgap : a . vgap , lgap : a . lgap , rgap : a . rgap , tgap : a . tgap , bgap : a . bgap , element : this , items : [ { el : this . text = BI . createWidget ( b ) } ] } ) ) : "normal" == a . whiteSpace ? ( this . text = BI . createWidget ( b ) , void BI . createWidget ( { type : "bi.vertical_adapt" , scrollable : "normal" === a . whiteSpace , hgap : a . hgap , vgap : a . vgap , lgap : a . lgap , rgap : a . rgap , tgap : a . tgap , bgap : a . bgap , element : this , items : [ this . text ] } ) ) : BI . isNumber ( a . height ) && a . height > 0 ? ( this . element . css ( { "line-height" : a . height + "px" } ) , void BI . createWidget ( { type : "bi.absolute" , scrollable : "normal" === a . whiteSpace , element : this , items : [ { el : this . text = BI . createWidget ( b ) , left : a . hgap + a . lgap , right : a . hgap + a . rgap , top : a . vgap + a . tgap , bottom : a . vgap + a . bgap } ] } ) ) : ( b . width = a . width - 2 * a . hgap - a . lgap - a . rgap , void BI . createWidget ( { type : "bi.vertical_adapt" , scrollable : "normal" === a . whiteSpace , hgap : a . hgap , vgap : a . vgap , lgap : a . lgap , rgap : a . rgap , tgap : a . tgap , bgap : a . bgap , element : this , items : [ { el : this . text = BI . createWidget ( b ) } ] } ) ) : BI . isNumber ( a . textWidth ) && a . textWidth > 0 ? ( b . width = a . textWidth , void BI . createWidget ( { type : "bi.vertical_adapt" , scrollable : "normal" === a . whiteSpace , hgap : a . hgap , vgap : a . vgap , lgap : a . lgap , rgap : a . rgap , tgap : a . tgap , bgap : a . bgap , element : this , items : [ { el : this . text = BI . createWidget ( b ) } ] } ) ) : "normal" == a . whiteSpace ? ( this . text = BI . createWidget ( b ) , void BI . createWidget ( { type : "bi.vertical_adapt" , scrollable : "normal" === a . whiteSpace , hgap : a . hgap , vgap : a . vgap , lgap : a . lgap , rgap : a . rgap , tgap : a . tgap , bgap : a . bgap , element : this , items : [ this . text ] } ) ) : BI . isNumber ( a . height ) && a . height > 0 ? BI . isNumber ( a . textHeight ) && a . textHeight > 0 ? ( this . element . css ( { "line-height" : a . height + "px" } ) , void BI . createWidget ( { type : "bi.adaptive" , height : a . height , scrollable : "normal" === a . whiteSpace , element : this , items : [ { el : this . text = BI . createWidget ( b ) , left : a . hgap + a . lgap , right : a . hgap + a . rgap , top : a . vgap + a . tgap , bottom : a . vgap + a . bgap } ] } ) )
hs : 1 , rg : 1 } , fa = /,?([achlmqrstvxz]),?/gi , ga = /([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi , ha = /([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi , ia = /(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi , ja = ( b . _radial _gradient = /^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/ , { } ) , ka = function ( a , b ) { return $ ( a ) - $ ( b ) } , la = function ( a ) { return a } , ma = b . _rectPath = function ( a , b , c , d , e ) { return e ? [ [ "M" , a + e , b ] , [ "l" , c - 2 * e , 0 ] , [ "a" , e , e , 0 , 0 , 1 , e , e ] , [ "l" , 0 , d - 2 * e ] , [ "a" , e , e , 0 , 0 , 1 , - e , e ] , [ "l" , 2 * e - c , 0 ] , [ "a" , e , e , 0 , 0 , 1 , - e , - e ] , [ "l" , 0 , 2 * e - d ] , [ "a" , e , e , 0 , 0 , 1 , e , - e ] , [ "z" ] ] : [ [ "M" , a , b ] , [ "l" , c , 0 ] , [ "l" , 0 , d ] , [ "l" , - c , 0 ] , [ "z" ] ] } , na = function ( a , b , c , d ) { return null == d && ( d = c ) , [ [ "M" , a , b ] , [ "m" , 0 , - d ] , [ "a" , c , d , 0 , 1 , 1 , 0 , 2 * d ] , [ "a" , c , d , 0 , 1 , 1 , 0 , - 2 * d ] , [ "z" ] ] } , oa = b . _getPath = { path : function ( a ) { return a . attr ( "path" ) } , circle : function ( a ) { var b = a . attrs ; return na ( b . cx , b . cy , b . r ) } , ellipse : function ( a ) { var b = a . attrs ; return na ( b . cx , b . cy , b . rx , b . ry ) } , rect : function ( a ) { var b = a . attrs ; return ma ( b . x , b . y , b . width , b . height , b . r ) } , image : function ( a ) { var b = a . attrs ; return ma ( b . x , b . y , b . width , b . height ) } , text : function ( a ) { var b = a . _getBBox ( ) ; return ma ( b . x , b . y , b . width , b . height ) } , set : function ( a ) { var b = a . _getBBox ( ) ; return ma ( b . x , b . y , b . width , b . height ) } } , pa = b . mapPath = function ( a , b ) { if ( ! b ) return a ; var c , d , e , f , g , h , i ; for ( a = Ia ( a ) , e = 0 , g = a . length ; e < g ; e ++ ) for ( i = a [ e ] , f = 1 , h = i . length ; f < h ; f += 2 ) c = b . x ( i [ f ] , i [ f + 1 ] ) , d = b . y ( i [ f ] , i [ f + 1 ] ) , i [ f ] = c , i [ f + 1 ] = d ; return a } ; if ( b . _g = z , b . type = z . win . SVGAngle || z . doc . implementation . hasFeature ( "http://www.w3.org/TR/SVG11/feature#BasicStructure" , "1.1" ) ? "SVG" : "VML" , "VML" == b . type ) { var qa , ra = z . doc . createElement ( "div" ) ; if ( ra . innerHTML = '<v:shape adj="1"/>' , qa = ra . firstChild , qa . style . behavior = "url(#default#VML)" , ! qa || "object" != typeof qa . adj ) return b . type = F ; ra = null } b . svg = ! ( b . vml = "VML" == b . type ) , b . _Paper = B , b . fn = u = B . prototype = b . prototype , b . _id = 0 , b . _oid = 0 , b . is = function ( a , b ) { return b = L . call ( b ) , "finite" == b ? ! X [ y ] ( + a ) : "array" == b ? a instanceof Array : "null" == b && null === a || b == typeof a && null !== a || "object" == b && a === Object ( a ) || "array" == b && Array . isArray && Array . isArray ( a ) || V . call ( a ) . slice ( 8 , - 1 ) . toLowerCase ( ) == b } , b . angle = function ( a , c , d , e , f , g ) { if ( null == f ) { var h = a - d , i = c - e ; return h || i ? ( 180 + 180 * M . atan2 ( - i , - h ) / R + 360 ) % 360 : 0 } return b . angle ( a , c , f , g ) - b . angle ( d , e , f , g ) } , b . rad = function ( a ) { return a % 360 * R / 180 } , b . deg = function ( a ) { return Math . round ( 180 * a / R % 360 * 1e3 ) / 1e3 } , b . snapTo = function ( a , c , d ) { if ( d = b . is ( d , "finite" ) ? d : 10 , b . is ( a , U ) ) { for ( var e = a . length ; e -- ; ) if ( P ( a [ e ] - c ) <= d ) return a [ e ] } else { a = + a ; var f = c % a ; if ( f < d ) return c - f ; if ( f > a - d ) return c - f + a } return c } ; b . createUUID = function ( a , b ) { return function ( ) { return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx" . replace ( a , b ) . toUpperCase ( ) } } ( /[xy]/g , function ( a ) { var b = 16 * M . random ( ) | 0 , c = "x" == a ? b : 3 & b | 8 ; return c . toString ( 16 ) } ) ; b . setWindow = function ( c ) { a ( "raphael.setWindow" , b , z . win , c ) , z . win = c , z . do
} , ab = function ( a , c ) { return function ( d , e , f ) { d = Ia ( d ) ; for ( var g , h , i , j , k , l = "" , m = { } , n = 0 , o = 0 , p = d . length ; o < p ; o ++ ) { if ( i = d [ o ] , "M" == i [ 0 ] ) g = + i [ 1 ] , h = + i [ 2 ] ; else { if ( j = _a ( g , h , i [ 1 ] , i [ 2 ] , i [ 3 ] , i [ 4 ] , i [ 5 ] , i [ 6 ] ) , n + j > e ) { if ( c && ! m . start ) { if ( k = _a ( g , h , i [ 1 ] , i [ 2 ] , i [ 3 ] , i [ 4 ] , i [ 5 ] , i [ 6 ] , e - n ) , l += [ "C" + k . start . x , k . start . y , k . m . x , k . m . y , k . x , k . y ] , f ) return l ; m . start = l , l = [ "M" + k . x , k . y + "C" + k . n . x , k . n . y , k . end . x , k . end . y , i [ 5 ] , i [ 6 ] ] . join ( ) , n += j , g = + i [ 5 ] , h = + i [ 6 ] ; continue } if ( ! a && ! c ) return k = _a ( g , h , i [ 1 ] , i [ 2 ] , i [ 3 ] , i [ 4 ] , i [ 5 ] , i [ 6 ] , e - n ) , { x : k . x , y : k . y , alpha : k . alpha } } n += j , g = + i [ 5 ] , h = + i [ 6 ] } l += i . shift ( ) + i } return m . end = l , k = a ? n : c ? m : b . findDotsAtSegment ( g , h , i [ 0 ] , i [ 1 ] , i [ 2 ] , i [ 3 ] , i [ 4 ] , i [ 5 ] , 1 ) , k . alpha && ( k = { x : k . x , y : k . y , alpha : k . alpha } ) , k } } , bb = ab ( 1 ) , cb = ab ( ) , db = ab ( 0 , 1 ) ; b . getTotalLength = bb , b . getPointAtLength = cb , b . getSubpath = function ( a , b , c ) { if ( this . getTotalLength ( a ) - c < 1e-6 ) return db ( a , b ) . end ; var d = db ( a , c , 1 ) ; return b ? db ( d , b ) . end : d } , Xa . getTotalLength = function ( ) { var a = this . getPath ( ) ; if ( a ) return this . node . getTotalLength ? this . node . getTotalLength ( ) : bb ( a ) } , Xa . getPointAtLength = function ( a ) { var b = this . getPath ( ) ; if ( b ) return cb ( b , a ) } , Xa . getPath = function ( ) { var a , c = b . _getPath [ this . type ] ; if ( "text" != this . type && "set" != this . type ) return c && ( a = c ( this ) ) , a } , Xa . getSubpath = function ( a , c ) { var d = this . getPath ( ) ; if ( d ) return b . getSubpath ( d , a , c ) } ; var eb = b . easing _formulas = { linear : function ( a ) { return a } , "<" : function ( a ) { return Q ( a , 1.7 ) } , ">" : function ( a ) { return Q ( a , . 48 ) } , "<>" : function ( a ) { var b = . 48 - a / 1.04 , c = M . sqrt ( . 1734 + b * b ) , d = c - b , e = Q ( P ( d ) , 1 / 3 ) * ( d < 0 ? - 1 : 1 ) , f = - c - b , g = Q ( P ( f ) , 1 / 3 ) * ( f < 0 ? - 1 : 1 ) , h = e + g + . 5 ; return 3 * ( 1 - h ) * h * h + h * h * h } , backIn : function ( a ) { var b = 1.70158 ; return a * a * ( ( b + 1 ) * a - b ) } , backOut : function ( a ) { a -= 1 ; var b = 1.70158 ; return a * a * ( ( b + 1 ) * a + b ) + 1 } , elastic : function ( a ) { return a == ! ! a ? a : Q ( 2 , - 10 * a ) * M . sin ( ( a - . 075 ) * ( 2 * R ) / . 3 ) + 1 } , bounce : function ( a ) { var b , c = 7.5625 , d = 2.75 ; return a < 1 / d ? b = c * a * a : a < 2 / d ? ( a -= 1.5 / d , b = c * a * a + . 75 ) : a < 2.5 / d ? ( a -= 2.25 / d , b = c * a * a + . 9375 ) : ( a -= 2.625 / d , b = c * a * a + . 984375 ) , b } } ; eb . easeIn = eb [ "ease-in" ] = eb [ "<" ] , eb . easeOut = eb [ "ease-out" ] = eb [ ">" ] , eb . easeInOut = eb [ "ease-in-out" ] = eb [ "<>" ] , eb [ "back-in" ] = eb . backIn , eb [ "back-out" ] = eb . backOut ; var fb = [ ] , gb = window . requestAnimationFrame || window . webkitRequestAnimationFrame || window . mozRequestAnimationFrame || window . oRequestAnimationFrame || window . msRequestAnimationFrame || function ( a ) { setTimeout ( a , 16 ) } , hb = function ( ) { for ( var c = + new Date , d = 0 ; d < fb . length ; d ++ ) { var e = fb [ d ] ; if ( ! e . el . removed && ! e . paused ) { var f , g , h = c - e . start , i = e . ms , j = e . easing , k = e . from , l = e . diff , m = e . to , n = ( e . t , e . el ) , o = { } , p = { } ; if ( e . initstatus ? ( h = ( e . initstatus * e . anim . top - e . prev ) / ( e . percent - e . prev ) * i , e . status = e . initstatus , delete e . initstatus , e . stop && fb . splice ( d -- , 1 ) ) : e . status = ( e . prev + ( e . percent - e . prev ) * ( h / i ) ) / e . anim . top , ! ( h < 0 ) ) if ( h < i ) { var q = j ( h / i ) ; for ( var s in k ) if ( k [ y ] ( s ) ) { switch ( ca [ s ] ) { case S : f = + k [ s ] + q * i * l [ s ] ; break ; case "colour" : f = "rgb(" + [ ib ( Z ( k [ s ] . r + q * i * l [ s ] . r ) ) , ib ( Z ( k [ s ] . g + q * i * l [ s ] . g ) ) , ib ( Z ( k [ s ] . b + q * i * l [ s ] . b ) ) ] . join ( "," ) + ")" ; break ; case "path" : f = [ ] ; for ( var t = 0 , u = k [ s ] . length ; t < u ; t ++ ) { f [ t ] = [ k [ s ] [ t ] [ 0 ] ] ; for ( var v = 1 , w = k [ s ] [ t ] . length ; v < w ; v ++ ) f [ t ] [ v ] = + k [ s ] [ t ] [ v ] + q * i * l [ s ] [ t ] [ v ] ; f [ t ] = f [ t ] . join ( G ) } f = f . join ( G ) ; break ; case "transform" : if ( l [ s ] . real ) for ( f = [ ] , t = 0 , u = k [ s ] . length ; t < u ; t ++ ) for ( f [ t ] = [ k [ s ] [ t ] [ 0 ] ] , v = 1 , w = k [ s ] [ t ] . length ; v < w ; v ++ ) f [ t ] [ v ] = k [ s ] [ t ] [ v ] + q * i * l [ s ] [ t ] [ v ] ; else { var x = function ( a ) { return + k [ s ] [ a ] + q * i * l [ s ] [ a ] } ; f = [ [ "m" , x ( 0 ) , x ( 1 ) , x ( 2 ) , x ( 3 ) , x ( 4 ) , x ( 5 ) ] ] } break ; case "csv" : if ( "clip-rect" == s ) for ( f = [ ] , t = 4 ; t -- ; ) f [ t ] = + k [ s ] [ t ] + q * i * l [ s ] [ t ] ; break ; default : var z = [ ] [ D ] ( k [ s ] ) ; for ( f = [ ] , t = n . paper . customAttributes [ s ] . length ; t -- ; ) f [ t ] = + z [ t ] + q * i * l [ s ] [ t ] } o [ s ] = f } n . attr ( o ) , function ( b , c , d ) { setTimeout ( function ( ) { a ( "raphael.anim.frame." + b , c , d ) } ) } ( n . id , n , e . anim ) } else { if ( function ( c , d , e ) { setTimeout ( function ( ) { a ( "raphael.anim.frame." + d . id , d , e ) , a ( "raphael.anim.finish." + d . id , d , e ) , b . is ( c , "function" ) && c . call ( d ) } ) } ( e . callback , n , e . anim ) , n . attr ( m ) , fb . splice ( d -- , 1 ) , e . repeat > 1 && ! e . next ) { for ( g in m ) m [ y ] ( g ) && ( p [ g ] = e . totalOrigin [ g ] ) ; e . el . attr ( p ) , r ( e . anim , e . el , e . anim . percents [ 0 ] , null , e . totalOrigin , e . repeat - 1 ) } e . next && ! e . stop && r ( e . anim , e . el , e . next , null , e . totalOrigin , e . repeat ) } } } fb . length && gb ( hb ) } , ib = function ( a ) { return a > 255 ? 255 : a < 0 ? 0 : a } ; Xa . animateWith = function ( a , c , d , e , f , g ) { var h = this ; if ( h . removed ) return g && g . call (
break ; case "long" : case "short" : i = e [ g ] } var k = a . node . getElementsByTagName ( "stroke" ) [ 0 ] ; k [ f + "arrow" ] = h , k [ f + "arrowlength" ] = i , k [ f + "arrowwidth" ] = j } , B = function ( e , i ) { e . attrs = e . attrs || { } ; var l = e . node , m = e . attrs , p = l . style , q = v [ e . type ] && ( i . x != m . x || i . y != m . y || i . width != m . width || i . height != m . height || i . cx != m . cx || i . cy != m . cy || i . rx != m . rx || i . ry != m . ry || i . r != m . r ) , r = w [ e . type ] && ( m . cx != i . cx || m . cy != i . cy || m . r != i . r || m . rx != i . rx || m . ry != i . ry ) , s = e ; for ( var t in i ) i [ b ] ( t ) && ( m [ t ] = i [ t ] ) ; if ( q && ( m . path = a . _getPath [ e . type ] ( e ) , e . _ . dirty = 1 ) , i . href && ( l . href = i . href ) , i . title && ( l . title = i . title ) , i . target && ( l . target = i . target ) , i . cursor && ( p . cursor = i . cursor ) , "blur" in i && e . blur ( i . blur ) , ( i . path && "path" == e . type || q ) && ( l . path = x ( ~ c ( m . path ) . toLowerCase ( ) . indexOf ( "r" ) ? a . _pathToAbsolute ( m . path ) : m . path ) , e . _ . dirty = 1 , "image" == e . type && ( e . _ . fillpos = [ m . x , m . y ] , e . _ . fillsize = [ m . width , m . height ] , z ( e , 1 , 1 , 0 , 0 , 0 ) ) ) , "transform" in i && e . transform ( i . transform ) , r ) { var y = + m . cx , B = + m . cy , D = + m . rx || + m . r || 0 , E = + m . ry || + m . r || 0 ; l . path = a . format ( "ar{0},{1},{2},{3},{4},{1},{4},{1}x" , f ( ( y - D ) * u ) , f ( ( B - E ) * u ) , f ( ( y + D ) * u ) , f ( ( B + E ) * u ) , f ( y * u ) ) , e . _ . dirty = 1 } if ( "clip-rect" in i ) { var G = c ( i [ "clip-rect" ] ) . split ( k ) ; if ( 4 == G . length ) { G [ 2 ] = + G [ 2 ] + + G [ 0 ] , G [ 3 ] = + G [ 3 ] + + G [ 1 ] ; var H = l . clipRect || a . _g . doc . createElement ( "div" ) , I = H . style ; I . clip = a . format ( "rect({1}px {2}px {3}px {0}px)" , G ) , l . clipRect || ( I . position = "absolute" , I . top = 0 , I . left = 0 , I . width = e . paper . width + "px" , I . height = e . paper . height + "px" , l . parentNode . insertBefore ( H , l ) , H . appendChild ( l ) , l . clipRect = H ) } i [ "clip-rect" ] || l . clipRect && ( l . clipRect . style . clip = "auto" ) } if ( e . textpath ) { var J = e . textpath . style ; i . font && ( J . font = i . font ) , i [ "font-family" ] && ( J . fontFamily = '"' + i [ "font-family" ] . split ( "," ) [ 0 ] . replace ( /^['"]+|['"]+$/g , o ) + '"' ) , i [ "font-size" ] && ( J . fontSize = i [ "font-size" ] ) , i [ "font-weight" ] && ( J . fontWeight = i [ "font-weight" ] ) , i [ "font-style" ] && ( J . fontStyle = i [ "font-style" ] ) } if ( "arrow-start" in i && A ( s , i [ "arrow-start" ] ) , "arrow-end" in i && A ( s , i [ "arrow-end" ] , 1 ) , null != i . opacity || null != i [ "stroke-width" ] || null != i . fill || null != i . src || null != i . stroke || null != i [ "stroke-width" ] || null != i [ "stroke-opacity" ] || null != i [ "fill-opacity" ] || null != i [ "stroke-dasharray" ] || null != i [ "stroke-miterlimit" ] || null != i [ "stroke-linejoin" ] || null != i [ "stroke-linecap" ] ) { var K = l . getElementsByTagName ( j ) , L = ! 1 ; if ( K = K && K [ 0 ] , ! K && ( L = K = F ( j ) ) , "image" == e . type && i . src && ( K . src = i . src ) , i . fill && ( K . on = ! 0 ) , null != K . on && "none" != i . fill && null !== i . fill || ( K . on = ! 1 ) , K . on && i . fill ) { var M = c ( i . fill ) . match ( a . _ISURL ) ; if ( M ) { K . parentNode == l && l . removeChild ( K ) , K . rotate = ! 0 , K . src = M [ 1 ] , K . type = "tile" ; var N = e . getBBox ( 1 ) ; K . position = N . x + n + N . y , e . _ . fillpos = [ N . x , N . y ] , a . _preload ( M [ 1 ] , function ( ) { e . _ . fillsize = [ this . offsetWidth , this . offsetHeight ] } ) } else K . color = a . getRGB ( i . fill ) . hex , K . src = o , K . type = "solid" , a . getRGB ( i . fill ) . error && ( s . type in { circle : 1 , ellipse : 1 } || "r" != c ( i . fill ) . charAt ( ) ) && C ( s , i . fill , K ) && ( m . fill = "none" , m . gradient = i . fill , K . rotate = ! 1 ) } if ( "fill-opacity" in i || "opacity" in i ) { var O = ( ( + m [ "fill-opacity" ] + 1 || 2 ) - 1 ) * ( ( + m . opacity + 1 || 2 ) - 1 ) * ( ( + a . getRGB ( i . fill ) . o + 1 || 2 ) - 1 ) ; O = h ( g ( O , 0 ) , 1 ) , K . opacity = O , K . src && ( K . color = "none" ) } l . appendChild ( K ) ; var P = l . getElementsByTagName ( "stroke" ) && l . getElementsByTagName ( "stroke" ) [ 0 ] , Q = ! 1 ; ! P && ( Q = P = F ( "stroke" ) ) , ( i . stroke && "none" != i . stroke || i [ "stroke-width" ] || null != i [ "stroke-opacity" ] || i [ "stroke-dasharray" ] || i [ "stroke-miterlimit" ] || i [ "stroke-linejoin" ] || i [ "stroke-linecap" ] ) && ( P . on = ! 0 ) , ( "none" == i . stroke || null === i . stroke || null == P . on || 0 == i . stroke || 0 == i [ "stroke-width" ] ) && ( P . on = ! 1 ) ; var R = a . getRGB ( i . stroke ) ; P . on && i . stroke && ( P . color = R . hex ) , O = ( ( + m [ "stroke-opacity" ] + 1 || 2 ) - 1 ) * ( ( + m . opacity + 1 || 2 ) - 1 ) * ( ( + R . o + 1 || 2 ) - 1 ) ; var S = . 75 * ( d ( i [ "stroke-width" ] ) || 1 ) ; if ( O = h ( g ( O , 0 ) , 1 ) , null == i [ "stroke-width" ] && ( S = m [ "stroke-width" ] ) , i [ "stroke-width" ] && ( P . weight = S ) , S && S < 1 && ( O *= S ) && ( P . weight = 1 ) , P . opacity = O , i [ "stroke-linejoin" ] && ( P . joinstyle = i [ "stroke-linejoin" ] || "miter" ) , P . miterlimit = i [ "stroke-miterlimit" ] || 8 , i [ "stroke-linecap" ] && ( P . endcap = "butt" == i [ "stroke-linecap" ] ? "flat" : "square" == i [ "stroke-linecap" ] ? "square" : "round" ) , "stroke-dasharray" in i ) { var T = { "-" : "shortdash" , "." : "shortdot" , "-." : "shortdashdot" , "-.." : "shortdashdotdot" , ". " : "dot" , "- " : "dash" , "--" : "longdash" , "- ." : "dashdot" , "--." : "longdashdot" , "--.." : " longdashd
} , setColumnSize : function ( a ) { this . _isNeedDigest = ! 0 , this . options . columnSize = a } , setRegionColumnSize : function ( a ) { this . _isNeedDigest = ! 0 , this . options . regionColumnSize = a } , getColumnSize : function ( ) { return this . options . columnSize } , getRegionColumnSize : function ( ) { return this . options . regionColumnSize } , populate : function ( a , b ) { a && a !== this . options . items && ( this . _isNeedDigest = ! 0 , this . options . items = a , this . _restore ( ) ) , b && b !== this . options . header && ( this . _isNeedDigest = ! 0 , this . options . header = b , this . _restore ( ) ) , this . _populate ( ) } , _restore : function ( ) { this . topLeftCollection . restore ( ) , this . topRightCollection . restore ( ) , this . bottomLeftCollection . restore ( ) , this . bottomRightCollection . restore ( ) } , restore : function ( ) { this . _restore ( ) } } ) , BI . shortcut ( "bi.collection_table" , BI . CollectionTable ) , BI . QuickCollectionTable = BI . inherit ( BI . CollectionTable , { _defaultConfig : function ( ) { return BI . extend ( BI . QuickCollectionTable . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-quick-collection-table" } ) } , render : function ( ) { BI . QuickCollectionTable . superclass . render . apply ( this , arguments ) ; this . options ; this . topLeftCollection . setOverflowX ( ! 1 ) , this . topLeftCollection . setOverflowY ( ! 1 ) , this . topRightCollection . setOverflowX ( ! 1 ) , this . topRightCollection . setOverflowY ( ! 1 ) , this . bottomLeftCollection . setOverflowX ( ! 1 ) , this . bottomLeftCollection . setOverflowY ( ! 1 ) , this . bottomRightCollection . setOverflowX ( ! 1 ) , this . bottomRightCollection . setOverflowY ( ! 1 ) } , mounted : function ( ) { BI . QuickCollectionTable . superclass . mounted . apply ( this , arguments ) ; var a = this ; this . _topLeftWheelHandler = new BI . WheelHandler ( BI . bind ( this . _onWheelLeft , this ) , BI . bind ( this . _shouldHandleLeftX , this ) , BI . bind ( this . _shouldHandleY , this ) ) , this . _topRightWheelHandler = new BI . WheelHandler ( BI . bind ( this . _onWheelRight , this ) , BI . bind ( this . _shouldHandleRightX , this ) , BI . bind ( this . _shouldHandleY , this ) ) , this . _bottomLeftWheelHandler = new BI . WheelHandler ( BI . bind ( this . _onWheelLeft , this ) , BI . bind ( this . _shouldHandleLeftX , this ) , BI . bind ( this . _shouldHandleY , this ) ) , this . _bottomRightWheelHandler = new BI . WheelHandler ( BI . bind ( this . _onWheelRight , this ) , BI . bind ( this . _shouldHandleRightX , this ) , BI . bind ( this . _shouldHandleY , this ) ) , this . topLeftCollection . element . mousewheel ( function ( b ) { a . _topLeftWheelHandler . onWheel ( b . originalEvent ) } ) , this . topRightCollection . element . mousewheel ( function ( b ) { a . _topRightWheelHandler . onWheel ( b . originalEvent ) } ) , this . bottomLeftCollection . element . mousewheel ( function ( b ) { a . _bottomLeftWheelHandler . onWheel ( b . originalEvent ) } ) , this . bottomRightCollection . element . mousewheel ( function ( b ) { a . _bottomRightWheelHandler . onWheel ( b . originalEvent ) } ) } , _shouldHandleLeftX : function ( a ) { return a > 0 ? this . bottomLeftCollection . getScrollLeft ( ) < this . bottomLeftCollection . getMaxScrollLeft ( ) : this . bottomLeftCollection . getScrollLeft ( ) > 0 } , _shouldHandleRightX : function ( a ) { return a > 0 ? this . bottomRightCollection . getScrollLeft ( ) < this . bottomRightCollection . getMaxScrollLeft ( ) : this . bottomRightCollection . getScrollLeft ( ) > 0 } , _shouldHandleY : function ( a ) { return a > 0 ? this . bottomRightCollection . getScrollTop ( ) < this . bottomRightCollection . getMaxScrollTop ( ) : this . bottomRightCollection . getScrollTop ( ) > 0 } , _onWheelLeft : function ( a , b ) { var c = this , d = this . bottomLeftCollection . getScrollTop ( ) , e = this . bottomLeftCollection . getScrollLeft ( ) ; d += b , e += a , this . bottomLeftCollection . setScrollTop ( d ) , this . bottomRightCollection . setScrollTop ( d ) , this . topLeftCollection . setScrollLeft ( e ) , this . bottomLeftCollection . setScrollLeft ( e ) , c . _populateScrollbar ( ) , this . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } , _onWheelRight : function ( a , b ) { var c = this , d = this . bottomRightCollection . getScrollTop ( ) , e = this . bottomRightCollection . getScrollLeft ( ) ; d += b , e += a , this . bottomLeftCollection . setScrollTop ( d ) , this . bottomRightCollection . setScrollTop ( d ) , this . topRightCollection . setScrollLeft ( e ) , this . bottomRightCollection . setScrollLeft ( e ) , c . _populateScrollbar ( ) , this . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } , _populateTable : function ( ) { var a = this . options , b = this . getRegionSize ( ) , c = 0 , d = 0 , e = 0 , f = [ ] ; BI . each ( a . columnSize , function ( b , g ) { a . isNeedFreeze === ! 0 && a . freezeCols . contains ( b ) ? c += g : d += g , e += g , 0 === b ? f [ b ] = g : f [ b ] = f [ b - 1 ] + g } ) ; var g = b , h = this . _getFreezeHeaderHeight ( ) , i = this .
this . bottomRightBodyItems = { } ; var c = this . _table ( ) , d = this . _createColGroup ( this . columnRight , this . bottomRightColGroupTds ) , e = this . _createBottomRightBody ( ) ; if ( BI . createWidget ( { type : "bi.adaptive" , element : c , items : [ d , e ] } ) , ! b ) { var f = 0 ; BI . each ( a . columnSize , function ( b , c ) { a . freezeCols . contains ( b ) || ( f += c ) } ) , BI . isNumeric ( f ) && f > 1 && ( f = BI . parseFloat ( f ) + a . columnSize . length - a . freezeCols . length ) } return this . bottomRightContainer = BI . createWidget ( { type : "bi.adaptive" , width : this . _calculateWidth ( f ) , items : [ c ] } ) } , _createBottomRightBody : function ( ) { var a = this . bottomRightBody = this . _body ( ) ; return a . element . append ( this . _createCells ( this . bottomRightItems , this . columnRight , this . mergeRight , this . bottomRightBodyTds , this . bottomRightBodyItems , this . columnLeft . length ) ) , a } , _createFreezeTable : function ( ) { var a = this , b = this . options , c = this . _isRightFreeze ( ) , d = this . _split ( b . header ) ; this . topLeftItems = d . left , this . topRightItems = d . right , d = this . _split ( b . items ) , this . bottomLeftItems = d . left , this . bottomRightItems = d . right , this . columnLeft = [ ] , this . columnRight = [ ] , BI . each ( b . columnSize , function ( d , e ) { b . freezeCols . contains ( d ) ? a [ c ? "columnRight" : "columnLeft" ] . push ( e ) : a [ c ? "columnLeft" : "columnRight" ] . push ( e ) } ) , this . mergeLeft = [ ] , this . mergeRight = [ ] , BI . each ( b . mergeCols , function ( d , e ) { b . freezeCols . contains ( e ) ? a [ c ? "mergeRight" : "mergeLeft" ] . push ( e ) : a [ c ? "mergeLeft" : "mergeRight" ] . push ( e ) } ) ; var e = this . _createTopLeft ( ) , f = this . _createTopRight ( ) , g = this . _createBottomLeft ( ) , h = this . _createBottomRight ( ) ; this . scrollTopLeft = BI . createWidget ( { type : "bi.adaptive" , cls : "scroll-top-left" , width : "100%" , height : "100%" , scrollable : ! 1 , items : [ e ] } ) , this . scrollTopRight = BI . createWidget ( { type : "bi.adaptive" , cls : "scroll-top-right" , width : "100%" , height : "100%" , scrollable : ! 1 , items : [ f ] } ) , this . scrollBottomLeft = BI . createWidget ( { type : "bi.adaptive" , cls : "scroll-bottom-left" , width : "100%" , height : "100%" , scrollable : c || null , scrollx : ! c , items : [ g ] } ) , this . scrollBottomRight = BI . createWidget ( { type : "bi.adaptive" , cls : "scroll-bottom-right" , width : "100%" , height : "100%" , scrollable : ! c || null , scrollx : c , items : [ h ] } ) , this . topLeft = BI . createWidget ( { type : "bi.adaptive" , cls : "top-left" , scrollable : ! 1 , items : [ this . scrollTopLeft ] } ) , this . topRight = BI . createWidget ( { type : "bi.adaptive" , cls : "top-right" , scrollable : ! 1 , items : [ this . scrollTopRight ] } ) , this . bottomLeft = BI . createWidget ( { type : "bi.adaptive" , cls : "bottom-left" , items : [ this . scrollBottomLeft ] } ) , this . bottomRight = BI . createWidget ( { type : "bi.adaptive" , cls : "bottom-right" , scrollable : ! 1 , items : [ this . scrollBottomRight ] } ) ; var i = b . header . length * ( ( b . headerRowSize || b . rowSize ) + 1 ) + 1 , j = BI . sum ( b . freezeCols , function ( a , c ) { return b . columnSize [ c ] > 1 ? b . columnSize [ c ] + 1 : b . columnSize [ c ] } ) ; this . _resize = function ( ) { a . scrollBottomLeft . element . is ( ":visible" ) && ( a . scrollBottomLeft . element . css ( { "overflow-x" : "auto" } ) , a . scrollBottomRight . element . css ( { "overflow-x" : "auto" } ) , a . setColumnSize ( b . columnSize ) , c ? a . scrollBottomLeft . element . css ( { "overflow-y" : "auto" } ) : a . scrollBottomRight . element . css ( { "overflow-y" : "auto" } ) , ( a . scrollBottomLeft . element . hasHorizonScroll ( ) || a . scrollBottomRight . element . hasHorizonScroll ( ) ) && ( a . scrollBottomLeft . element . css ( "overflow-x" , "scroll" ) , a . scrollBottomRight . element . css ( "overflow-x" , "scroll" ) ) , a . scrollBottomRight . element . hasVerticalScroll ( ) ? a . scrollTopRight . element . css ( "overflow-y" , "scroll" ) : a . scrollTopRight . element . css ( "overflow-y" , "hidden" ) , a . scrollBottomLeft . element . hasVerticalScroll ( ) ? a . scrollTopLeft . element . css ( "overflow-y" , "scroll" ) : a . scrollTopLeft . element . css ( "overflow-y" , "hidden" ) , a . scrollTopLeft . element [ 0 ] . scrollLeft = a . scrollBottomLeft . element [ 0 ] . scrollLeft , a . scrollTopRight . element [ 0 ] . scrollLeft = a . scrollBottomRight . element [ 0 ] . scrollLeft , a . scrollBottomLeft . element [ 0 ] . scrollTop = a . scrollBottomRight . element [ 0 ] . scrollTop ) } ; var k = b . regionColumnSize ; 0 === b . freezeCols . length ? k = c ? [ "fill" , 0 ] : [ 0 , "fill" ] : b . freezeCols . length >= b . columnSize . length && ( k = c ? [ 0 , "fill" ] : [ "fill" , 0 ] ) , this . partitions = BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "table" , BI . extend ( { } , b . logic , { rows : 2 , columns : 2 , columnSize : k || ( c ? [ "fill" , j ] : [ j , "fill" ] ) , rowSize : [ i , "fill" ] , items : [ [ { el : this . topLeft } , { el : this . topRight } ] , [ { el : this . bottomLeft } , { el : this . bottomRight } ]
g === a . length - 1 ? ( d [ g ] = [ ] , BI . each ( h , function ( a , i ) { if ( a === b . _getFreezeColLength ( ) - 1 || a === h . length - 1 ) d [ g ] [ a ] = i ; else if ( d [ g ] [ a ] = { type : "bi.resizable_table_cell" , cell : i , suitableSize : c . minColumnSize [ a ] , maxSize : c . maxColumnSize [ a ] , resize : BI . bind ( e , null , a ) , stop : BI . bind ( f , null , a ) } , c . isNeedMerge ) for ( var j = g ; j > 0 && b . _mergeRule ( d [ j ] [ a ] , d [ j - 1 ] [ a ] ) ; ) d [ j - 1 ] [ a ] = { type : "bi.resizable_table_cell" , cell : d [ j - 1 ] [ a ] , suitableSize : c . minColumnSize [ a ] , maxSize : c . maxColumnSize [ a ] , resize : BI . bind ( e , null , a ) , stop : BI . bind ( f , null , a ) } , j -- } ) ) : d . push ( h ) } ) , d } , _populate : function ( ) { var a = ( this . options , this . _getRegionSize ( ) ) ; a > 0 ? ( this . regionResizerHandler . setVisible ( ! 0 ) , this . _setRegionResizerHandlerPosition ( a - 3 , 0 ) ) : this . regionResizerHandler . setVisible ( ! 1 ) } , setWidth : function ( a ) { BI . ResizableTable . superclass . setWidth . apply ( this , arguments ) , this . table . setWidth ( a ) } , setHeight : function ( a ) { BI . ResizableTable . superclass . setHeight . apply ( this , arguments ) , this . table . setHeight ( a ) } , setVerticalScroll : function ( a ) { this . table . setVerticalScroll ( a ) } , setLeftHorizontalScroll : function ( a ) { this . table . setLeftHorizontalScroll ( a ) } , setRightHorizontalScroll : function ( a ) { this . table . setRightHorizontalScroll ( a ) } , setColumnSize : function ( a ) { this . options . columnSize = a , this . table . setColumnSize ( a ) } , getColumnSize : function ( ) { return this . table . getColumnSize ( ) } , setRegionColumnSize : function ( a ) { this . options . regionColumnSize = a , this . table . setRegionColumnSize ( a ) } , getRegionColumnSize : function ( ) { return this . table . getRegionColumnSize ( ) } , getVerticalScroll : function ( ) { return this . table . getVerticalScroll ( ) } , getLeftHorizontalScroll : function ( ) { return this . table . getLeftHorizontalScroll ( ) } , getRightHorizontalScroll : function ( ) { return this . table . getRightHorizontalScroll ( ) } , attr : function ( ) { BI . ResizableTable . superclass . attr . apply ( this , arguments ) , this . table . attr . apply ( this . table , arguments ) } , restore : function ( ) { this . table . restore ( ) } , populate : function ( a , b ) { a && ( this . options . items = a ) , b && ( this . options . header = b , this . options . isNeedResize && ( b = this . _formatHeader ( b ) ) ) , this . table . populate ( a , b ) , this . _populate ( ) } } ) , BI . shortcut ( "bi.resizable_table" , BI . ResizableTable ) , BI . CustomTree = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . CustomTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-custom-tree" , expander : { el : { } , popup : { type : "bi.custom_tree" } } , items : [ ] , itemsCreator : BI . emptyFn , el : { type : "bi.button_tree" , chooseType : 0 , layouts : [ { type : "bi.vertical" } ] } } ) } , _init : function ( ) { BI . CustomTree . superclass . _init . apply ( this , arguments ) , this . initTree ( this . options . items ) } , _formatItems : function ( a ) { var b = this , c = this . options ; a = BI . Tree . transformToTreeFormat ( a ) ; var d = [ ] ; return BI . each ( a , function ( a , e ) { if ( BI . isNotEmptyArray ( e . children ) || e . isParent === ! 0 ) { var f = BI . extend ( { type : "bi.expander" , el : { } , popup : { type : "bi.custom_tree" } } , BI . deepClone ( c . expander ) , { id : e . id , pId : e . pId , value : e . value } ) , g = BI . stripEL ( e ) ; BI . isWidget ( g ) ? f . el = g : ( g = BI . clone ( g ) , delete g . children , BI . extend ( f . el , g ) ) , f . popup . expander = BI . deepClone ( c . expander ) , f . items = f . popup . items = e . children , f . itemsCreator = f . popup . itemsCreator = function ( a ) { if ( BI . isNotNull ( a . node ) ) return c . itemsCreator . apply ( b , arguments ) ; var d = Array . prototype . slice . call ( arguments , 0 ) ; return d [ 0 ] . node = e , c . itemsCreator . apply ( b , d ) } , BI . isNull ( f . popup . el ) && ( f . popup . el = BI . deepClone ( c . el ) ) , d . push ( f ) } else d . push ( e ) } ) , d } , initTree : function ( a ) { var b = this , c = this . options ; this . tree = BI . createWidget ( c . el , { element : this , items : this . _formatItems ( a ) , itemsCreator : function ( a , d ) { c . itemsCreator . apply ( this , [ a , function ( a ) { var c = Array . prototype . slice . call ( arguments , 0 ) ; c [ 0 ] = b . _formatItems ( a ) , d . apply ( null , c ) } ] ) } , value : c . value } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( a , c , d ) { b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a === BI . Events . CLICK && b . fireEvent ( BI . CustomTree . EVENT _CHANGE , c , d ) } ) } , stroke : function ( a ) { this . populate . apply ( this , arguments ) } , populate : function ( a ) { var b = Array . prototype . slice . call ( arguments , 0 ) ; arguments . length > 0 && ( b [ 0 ] = this . _formatItems ( a ) ) , this . tree . populate . apply ( this . tree , b ) } , setValue : function ( a ) { this . tree && this . tree . setValue ( a ) } , getValue : function ( ) { return this . tree ? this . tree . getValue ( ) : [ ] } , getAllButtons : function ( ) { return this .
var e = $$ ( b , consts . id . A , a ) ; e . attr ( "title" , c ? c : "" ) } } , setNodeTarget : function ( a , b ) { var c = $$ ( b , consts . id . A , a ) ; c . attr ( "target" , view . makeNodeTarget ( b ) ) } , setNodeUrl : function ( a , b ) { var c = $$ ( b , consts . id . A , a ) , d = view . makeNodeUrl ( a , b ) ; null == d || 0 == d . length ? c . removeAttr ( "href" ) : c . attr ( "href" , d ) } , switchNode : function ( a , b ) { if ( b . open || ! tools . canAsync ( a , b ) ) view . expandCollapseNode ( a , b , ! b . open ) ; else if ( a . async . enable ) { if ( ! view . asyncNode ( a , b ) ) return void view . expandCollapseNode ( a , b , ! b . open ) } else b && view . expandCollapseNode ( a , b , ! b . open ) } } ; $ . fn . zTree = { consts : _consts , _z : { tools : tools , view : view , event : event , data : data } , getZTreeObj : function ( a ) { var b = data . getZTreeTools ( a ) ; return b ? b : null } , destroy : function ( a ) { if ( a && a . length > 0 ) view . destroy ( data . getSetting ( a ) ) ; else for ( var b in settings ) view . destroy ( settings [ b ] ) } , init : function ( a , b , c ) { var d = tools . clone ( _setting ) ; $ . extend ( ! 0 , d , b ) , d . treeId = a . attr ( "id" ) , d . treeObj = a , d . treeObj . empty ( ) , settings [ d . treeId ] = d , "undefined" == typeof document . body . style . maxHeight && ( d . view . expandSpeed = "" ) , data . initRoot ( d ) ; var e = data . getRoot ( d ) , f = d . data . key . children ; c = c ? tools . clone ( tools . isArray ( c ) ? c : [ c ] ) : [ ] , d . data . simpleData . enable ? e [ f ] = data . transformTozTreeFormat ( d , c ) : e [ f ] = c , data . initCache ( d ) , event . unbindTree ( d ) , event . bindTree ( d ) , event . unbindEvent ( d ) , event . bindEvent ( d ) ; var g = { setting : d , addNodes : function ( a , b , c ) { function e ( ) { view . addNodes ( d , a , f , 1 == c ) } if ( ! b ) return null ; if ( a || ( a = null ) , a && ! a . isParent && d . data . keep . leaf ) return null ; var f = tools . clone ( tools . isArray ( b ) ? b : [ b ] ) ; return tools . canAsync ( d , a ) ? view . asyncNode ( d , a , c , e ) : e ( ) , f } , cancelSelectedNode : function ( a ) { view . cancelPreSelectedNode ( d , a ) } , destroy : function ( ) { view . destroy ( d ) } , expandAll : function ( a ) { return a = ! ! a , view . expandCollapseSonNode ( d , null , a , ! 0 ) , a } , expandNode : function ( a , b , c , e , f ) { if ( ! a || ! a . isParent ) return null ; if ( b !== ! 0 && b !== ! 1 && ( b = ! a . open ) , f = ! ! f , f && b && 0 == tools . apply ( d . callback . beforeExpand , [ d . treeId , a ] , ! 0 ) ) return null ; if ( f && ! b && 0 == tools . apply ( d . callback . beforeCollapse , [ d . treeId , a ] , ! 0 ) ) return null ; if ( b && a . parentTId && view . expandCollapseParentNode ( d , a . getParentNode ( ) , b , ! 1 ) , b === a . open && ! c ) return null ; if ( data . getRoot ( d ) . expandTriggerFlag = f , ! tools . canAsync ( d , a ) && c ) view . expandCollapseSonNode ( d , a , b , ! 0 , function ( ) { if ( e !== ! 1 ) try { $$ ( a , d ) . focus ( ) . blur ( ) } catch ( b ) { } } ) ; else if ( a . open = ! b , view . switchNode ( this . setting , a ) , e !== ! 1 ) try { $$ ( a , d ) . focus ( ) . blur ( ) } catch ( g ) { } return b } , getNodes : function ( ) { return data . getNodes ( d ) } , getNodeByParam : function ( a , b , c ) { return a ? data . getNodeByParam ( d , c ? c [ d . data . key . children ] : data . getNodes ( d ) , a , b ) : null } , getNodeByTId : function ( a ) { return data . getNodeCache ( d , a ) } , getNodesByParam : function ( a , b , c ) { return a ? data . getNodesByParam ( d , c ? c [ d . data . key . children ] : data . getNodes ( d ) , a , b ) : null } , getNodesByParamFuzzy : function ( a , b , c ) { return a ? data . getNodesByParamFuzzy ( d , c ? c [ d . data . key . children ] : data . getNodes ( d ) , a , b ) : null } , getNodesByFilter : function ( a , b , c , e ) { return b = ! ! b , a && "function" == typeof a ? data . getNodesByFilter ( d , c ? c [ d . data . key . children ] : data . getNodes ( d ) , a , b , e ) : b ? null : [ ] } , getNodeIndex : function ( a ) { if ( ! a ) return null ; for ( var b = d . data . key . children , c = a . parentTId ? a . getParentNode ( ) : data . getRoot ( d ) , e = 0 , f = c [ b ] . length ; e < f ; e ++ ) if ( c [ b ] [ e ] == a ) return e ; return - 1 } , getSelectedNodes : function ( ) { for ( var a = [ ] , b = data . getRoot ( d ) . curSelectedList , c = 0 , e = b . length ; c < e ; c ++ ) a . push ( b [ c ] ) ; return a } , isSelectedNode : function ( a ) { return data . isSelectedNode ( d , a ) } , reAsyncChildNodes : function ( a , b , c ) { if ( this . setting . async . enable ) { var e = ! a ; if ( e && ( a = data . getRoot ( d ) ) , "refresh" == b ) { for ( var f = this . setting . data . key . children , g = 0 , h = a [ f ] ? a [ f ] . length : 0 ; g < h ; g ++ ) data . removeNodeCache ( d , a [ f ] [ g ] ) ; if ( data . removeSelectedNode ( d ) , a [ f ] = [ ] , e ) this . setting . treeObj . empty ( ) ; else { var i = $$ ( a , consts . id . UL , d ) ; i . empty ( ) } } view . asyncNode ( this . setting , e ? null : a , ! ! c ) } } , refresh : function ( ) { this . setting . treeObj . empty ( ) ; var a = data . getRoot ( d ) , b = a [ d . data . key . children ] ; data . initRoot ( d ) , a [ d . data . key . children ] = b , data . initCache ( d ) , view . createNodes ( d , 0 , a [ d . data . key . children ] ) } , removeChildNodes : function ( a ) { if ( ! a ) return null ; var b = d . data . key . children , c = a [ b ] ; return view . removeChildNodes ( d , a ) , c ? c : null } , removeNode : function ( a , b ) { a && ( b = ! ! b , b && 0 == tools . apply ( d . callback . beforeRemove , [ d . treeId , a ] ,
iconWidth : b . iconWidth , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . node . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . setSelected ( a . isSelected ( ) ) , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , width : 13 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 13 ) , items : [ c ] } ) } , isOnce : function ( ) { return ! 0 } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , isSelected : function ( ) { return this . node . isSelected ( ) } , setSelected : function ( a ) { BI . MultiLayerIconArrowNode . superclass . setSelected . apply ( this , arguments ) , this . node . setSelected ( a ) } , doClick : function ( ) { BI . NodeButton . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MultiLayerIconArrowNode . superclass . setOpened . apply ( this , arguments ) , this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_icon_arrow_node" , BI . MultiLayerIconArrowNode ) , BI . PlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . PlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-plus-group-node bi-list-item" , logic : { dynamic : ! 1 } , id : "" , pId : "" , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . PlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checkbox = BI . createWidget ( { type : "bi.tree_node_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 , { width : 25 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( c , BI . extend ( b . logic , { items : d } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . PlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . PlusGroupNode . superclass . setOpened . apply ( this , arguments ) , this . checkbox && this . checkbox . setSelected ( a ) } } ) , BI . shortcut ( "bi.plus_group_node" , BI . PlusGroupNode ) , BI . Switch = BI . inherit ( BI . BasicButton , { props : { extraCls : "bi-switch" , height : 22 , width : 44 , logic : { dynamic : ! 1 } } , render : function ( ) { var a = this ; return { type : "bi.absolute" , ref : function ( ) { a . layout = this } , items : [ { el : { type : "bi.text_button" , cls : "circle-button bi-card" } , width : 18 , height : 18 , top : 2 , left : this . options . selected ? 24 : 2 } ] } } , setSelected : function ( a ) { BI . Switch . superclass . setSelected . apply ( this , arguments ) , this . layout . attr ( "items" ) [ 0 ] . left = a ? 24 : 2 , this . layout . resize ( ) } , doClick : function ( ) { BI . Switch . superclass . doClick . apply ( this , arguments ) , this . fireEvent ( BI . Switch . EVENT _CHANGE ) } } ) , BI . Switch . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.switch" , BI . Switch ) , BI . FirstTreeLeafItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . FirstTreeLeafItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-first-tree-leaf-item bi-list-item-active" , logic : { dynamic : ! 1 } , id : "" , pId : "" , layer : 0 , height : 25 } ) } , _init : function ( ) { BI . FirstTreeLeafItem . 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 :
a . prototype = Object . create ( b && b . prototype , { constructor : { value : a , enumerable : ! 1 , writable : ! 0 , configurable : ! 0 } } ) , b && ( Object . setPrototypeOf ? Object . setPrototypeOf ( a , b ) : a . _ _proto _ _ = b ) } function i ( a , b ) { var c = "data-clipboard-" + a ; if ( b . hasAttribute ( c ) ) return b . getAttribute ( c ) } var j = e ( b ) , k = e ( c ) , l = e ( d ) , m = function ( ) { function a ( a , b ) { for ( var c = 0 ; c < b . length ; c ++ ) { var d = b [ c ] ; d . enumerable = d . enumerable || ! 1 , d . configurable = ! 0 , "value" in d && ( d . writable = ! 0 ) , Object . defineProperty ( a , d . key , d ) } } return function ( b , c , d ) { return c && a ( b . prototype , c ) , d && a ( b , d ) , b } } ( ) , n = function ( a ) { function b ( a , c ) { f ( this , b ) ; var d = g ( this , ( b . _ _proto _ _ || Object . getPrototypeOf ( b ) ) . call ( this ) ) ; return d . resolveOptions ( c ) , d . listenClick ( a ) , d } return h ( b , a ) , m ( b , [ { key : "resolveOptions" , value : function ( ) { var a = arguments . length > 0 && void 0 !== arguments [ 0 ] ? arguments [ 0 ] : { } ; this . action = "function" == typeof a . action ? a . action : this . defaultAction , this . target = "function" == typeof a . target ? a . target : this . defaultTarget , this . text = "function" == typeof a . text ? a . text : this . defaultText } } , { key : "listenClick" , value : function ( a ) { var b = this ; this . listener = ( 0 , l [ "default" ] ) ( a , "click" , function ( a ) { return b . onClick ( a ) } ) } } , { key : "onClick" , value : function ( a ) { var b = a . delegateTarget || a . currentTarget ; this . clipboardAction && ( this . clipboardAction = null ) , this . clipboardAction = new j [ "default" ] ( { action : this . action ( b ) , target : this . target ( b ) , text : this . text ( b ) , trigger : b , emitter : this } ) } } , { key : "defaultAction" , value : function ( a ) { return i ( "action" , a ) } } , { key : "defaultTarget" , value : function ( a ) { var b = i ( "target" , a ) ; if ( b ) return document . querySelector ( b ) } } , { key : "defaultText" , value : function ( a ) { return i ( "text" , a ) } } , { key : "destroy" , value : function ( ) { this . listener . destroy ( ) , this . clipboardAction && ( this . clipboardAction . destroy ( ) , this . clipboardAction = null ) } } ] , [ { key : "isSupported" , value : function ( ) { var a = arguments . length > 0 && void 0 !== arguments [ 0 ] ? arguments [ 0 ] : [ "copy" , "cut" ] , b = "string" == typeof a ? [ a ] : a , c = ! ! document . queryCommandSupported ; return b . forEach ( function ( a ) { c = c && ! ! document . queryCommandSupported ( a ) } ) , c } } ] ) , b } ( k [ "default" ] ) ; a . exports = n } ) } , { "./clipboard-action" : 7 , "good-listener" : 4 , "tiny-emitter" : 6 } ] } , { } , [ 8 ] ) ( 8 ) } ) } catch ( e ) { ! function ( a ) { a . fn . zclip = function ( b ) { if ( "object" == typeof b && ! b . length ) { var c = a . extend ( { path : "ZeroClipboard.swf" , copy : null , beforeCopy : null , afterCopy : null , clickAfter : ! 0 , setHandCursor : ! 0 , setCSSEffects : ! 0 } , b ) ; return this . each ( function ( ) { var b = a ( this ) ; if ( b . is ( ":visible" ) && ( "string" == typeof c . copy || a . isFunction ( c . copy ) ) ) { ZeroClipboard . setMoviePath ( c . path ) ; var d = new ZeroClipboard . Client ; a . isFunction ( c . copy ) && b . bind ( "zClip_copy" , c . copy ) , a . isFunction ( c . beforeCopy ) && b . bind ( "zClip_beforeCopy" , c . beforeCopy ) , a . isFunction ( c . afterCopy ) && b . bind ( "zClip_afterCopy" , c . afterCopy ) , d . setHandCursor ( c . setHandCursor ) , d . setCSSEffects ( c . setCSSEffects ) , d . addEventListener ( "mouseOver" , function ( a ) { b . trigger ( "mouseenter" ) } ) , d . addEventListener ( "mouseOut" , function ( a ) { b . trigger ( "mouseleave" ) } ) , d . addEventListener ( "mouseDown" , function ( e ) { b . trigger ( "mousedown" ) , a . isFunction ( c . copy ) ? d . setText ( b . triggerHandler ( "zClip_copy" ) ) : d . setText ( c . copy ) , a . isFunction ( c . beforeCopy ) && b . trigger ( "zClip_beforeCopy" ) } ) , d . addEventListener ( "complete" , function ( d , e ) { a . isFunction ( c . afterCopy ) ? b . trigger ( "zClip_afterCopy" ) : ( e . length > 500 && ( e = e . substr ( 0 , 500 ) + "...\n\n(" + ( e . length - 500 ) + " characters not shown)" ) , b . removeClass ( "hover" ) , alert ( "Copied text to clipboard:\n\n " + e ) ) , c . clickAfter && b . trigger ( "click" ) } ) , d . glue ( b [ 0 ] , b . parent ( ) [ 0 ] ) , a ( window ) . bind ( "load resize" , function ( ) { d . reposition ( ) } ) } } ) } if ( "string" == typeof b ) return this . each ( function ( ) { var c = a ( this ) ; b = b . toLowerCase ( ) ; var d = c . data ( "zclipId" ) , e = a ( "#" + d + ".zclip" ) ; "remove" == b ? ( e . remove ( ) , c . removeClass ( "active hover" ) ) : "hide" == b ? ( e . hide ( ) , c . removeClass ( "active hover" ) ) : "show" == b && e . show ( ) } ) } } ( jQuery ) ; var ZeroClipboard = { version : "1.0.7" , clients : { } , moviePath : "ZeroClipboard.swf" , nextId : 1 , $ : function ( a ) { return "string" == typeof a && ( a = document . getElementById ( a ) ) , a . addClass || ( a . hide = function ( ) { this . style . display = "none" } , a . show = function ( ) { this . style . display = "" } , a . addClass = function ( a ) { this . removeClass ( a ) , this . className += " " + a } , a . removeClass = function ( a ) { for ( var b = this . className . sp
this . combo . getView ( ) . showLine ( "top" ) } } , _hideTriangle : function ( ) { this . triangle && this . triangle . destroy ( ) , this . triangle = null , this . combo . getView ( ) && this . combo . getView ( ) . hideLine ( ) } , hideView : function ( ) { this . _hideTriangle ( ) , this . combo && this . combo . hideView ( ) } , showView : function ( ) { this . combo && this . combo . showView ( ) } , isViewVisible : function ( ) { return this . combo . isViewVisible ( ) } } ) , BI . BubbleCombo . EVENT _TRIGGER _CHANGE = "EVENT_TRIGGER_CHANGE" , BI . BubbleCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . BubbleCombo . EVENT _EXPAND = "EVENT_EXPAND" , BI . BubbleCombo . EVENT _COLLAPSE = "EVENT_COLLAPSE" , BI . BubbleCombo . EVENT _AFTER _INIT = "EVENT_AFTER_INIT" , BI . BubbleCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . BubbleCombo . EVENT _AFTER _POPUPVIEW = "EVENT_AFTER_POPUPVIEW" , BI . BubbleCombo . EVENT _BEFORE _HIDEVIEW = "EVENT_BEFORE_HIDEVIEW" , BI . BubbleCombo . EVENT _AFTER _HIDEVIEW = "EVENT_AFTER_HIDEVIEW" , BI . shortcut ( "bi.bubble_combo" , BI . BubbleCombo ) , BI . BubblePopupView = BI . inherit ( BI . PopupView , { _defaultConfig : function ( ) { var a = BI . BubblePopupView . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : a . baseCls + " bi-bubble-popup-view" } ) } , _init : function ( ) { BI . BubblePopupView . superclass . _init . apply ( this , arguments ) } , showLine : function ( a ) { var b = { } , c = { } ; switch ( a ) { case "left" : b = { top : 0 , bottom : 0 , left : - 1 } , c = { width : 3 } ; break ; case "right" : b = { top : 0 , bottom : 0 , right : - 1 } , c = { width : 3 } ; break ; case "top" : b = { left : 0 , right : 0 , top : - 1 } , c = { height : 3 } ; break ; case "bottom" : b = { left : 0 , right : 0 , bottom : - 1 } , c = { height : 3 } } this . line = BI . createWidget ( c , { type : "bi.layout" , cls : "bubble-popup-line bi-high-light-background" } ) , b . el = this . line , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ b ] } ) } , hideLine : function ( ) { this . line && this . line . destroy ( ) } } ) , BI . shortcut ( "bi.bubble_popup_view" , BI . BubblePopupView ) , BI . BubblePopupBarView = BI . inherit ( BI . BubblePopupView , { _defaultConfig : function ( ) { return BI . extend ( BI . BubblePopupBarView . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-bubble-bar-popup-view" , buttons : [ { value : BI . i18nText ( BI . i18nText ( "BI-Basic_Sure" ) ) } , { value : BI . i18nText ( "BI-Basic_Cancel" ) , level : "ignore" } ] } ) } , _init : function ( ) { BI . BubblePopupBarView . superclass . _init . apply ( this , arguments ) } , _createToolBar : function ( ) { var a = this . options , b = this , c = [ ] ; return BI . each ( a . buttons . reverse ( ) , function ( a , d ) { BI . isWidget ( d ) ? c . push ( d ) : c . push ( BI . extend ( { type : "bi.button" , height : 30 , handler : function ( a ) { b . fireEvent ( BI . BubblePopupBarView . EVENT _CLICK _TOOLBAR _BUTTON , a ) } } , d ) ) } ) , BI . createWidget ( { type : "bi.right_vertical_adapt" , height : 40 , hgap : 10 , bgap : 10 , items : c } ) } } ) , BI . BubblePopupBarView . EVENT _CLICK _TOOLBAR _BUTTON = "EVENT_CLICK_TOOLBAR_BUTTON" , BI . shortcut ( "bi.bubble_bar_popup_view" , BI . BubblePopupBarView ) , BI . TextBubblePopupBarView = BI . inherit ( BI . Widget , { props : { baseCls : "bi-text-bubble-bar-popup-view" , text : "" , width : 250 } , render : function ( ) { var a = this , b = this . options ; return { type : "bi.bubble_bar_popup_view" , ref : function ( ) { a . popup = this } , el : { type : "bi.vertical" , items : [ { type : "bi.label" , text : b . text , whiteSpace : "normal" , textAlign : "left" , ref : function ( ) { a . text = this } } ] , hgap : 10 , tgap : 25 , bgap : 10 } , buttons : [ { type : "bi.button" , value : BI . i18nText ( "BI-Basic_Sure" ) , height : 24 , handler : function ( ) { a . fireEvent ( BI . BubblePopupBarView . EVENT _CLICK _TOOLBAR _BUTTON , ! 0 ) } } , { type : "bi.button" , value : BI . i18nText ( "BI-Basic_Cancel" ) , level : "ignore" , height : 24 , handler : function ( ) { a . fireEvent ( BI . BubblePopupBarView . EVENT _CLICK _TOOLBAR _BUTTON , ! 1 ) } } ] } } , populate : function ( a ) { this . text . setText ( a || this . options . text ) } , showLine : function ( a ) { this . popup . showLine ( a ) } , hideLine : function ( ) { this . popup . hideLine ( ) } } ) , BI . TextBubblePopupBarView . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_bubble_bar_popup_view" , BI . TextBubblePopupBarView ) , BI . EditorIconCheckCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . EditorIconCheckCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseClass : "bi-check-editor-combo" , width : 100 , height : 24 , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , validationChecker : BI . emptyFn , quitChecker : BI . emptyFn , allowBlank : ! 0 , watermark : "" , errorText : "" } ) } , _init : function ( ) { BI . EditorIconCheckCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . cre
BI . ClearEditor . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . ClearEditor . EVENT _SPACE = "EVENT_SPACE" , BI . ClearEditor . EVENT _BACKSPACE = "EVENT_BACKSPACE" , BI . ClearEditor . EVENT _CLEAR = "EVENT_CLEAR" , BI . ClearEditor . EVENT _START = "EVENT_START" , BI . ClearEditor . EVENT _PAUSE = "EVENT_PAUSE" , BI . ClearEditor . EVENT _STOP = "EVENT_STOP" , BI . ClearEditor . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . ClearEditor . EVENT _VALID = "EVENT_VALID" , BI . ClearEditor . EVENT _ERROR = "EVENT_ERROR" , BI . ClearEditor . EVENT _ENTER = "EVENT_ENTER" , BI . ClearEditor . EVENT _RESTRICT = "EVENT_RESTRICT" , BI . ClearEditor . EVENT _REMOVE = "EVENT_REMOVE" , BI . ClearEditor . EVENT _EMPTY = "EVENT_EMPTY" , BI . shortcut ( "bi.clear_editor" , BI . ClearEditor ) , BI . ShelterEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . ShelterEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-shelter-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 , textAlign : "left" } ) } , _init : function ( ) { BI . ShelterEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( { type : "bi.editor" , height : b . height , hgap : b . hgap , vgap : b . vgap , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , value : b . value , validationChecker : b . validationChecker , quitChecker : b . quitChecker , allowBlank : b . allowBlank , watermark : b . watermark , errorText : b . errorText } ) , this . text = BI . createWidget ( { type : "bi.text_button" , cls : "shelter-editor-text" , title : b . title , warningTitle : b . warningTitle , tipType : b . tipType , textAlign : b . textAlign , height : b . height , hgap : 4 } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . text , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . text . on ( BI . Controller . EVENT _CHANGE , function ( ) { arguments [ 2 ] = a , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . text . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _CLICK _LABEL ) } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _FOCUS , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _FOCUS , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _BLUR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _CLICK , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( b ) { a . fireEvent ( BI . ShelterEditor . EVENT _KEY _DOWN , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _VALID , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { a . _showHint ( ) , a . _checkText ( ) , a . fireEvent ( BI . ShelterEditor . EVENT _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _START , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _START , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _PAUSE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _STOP , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _STOP , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _SPACE , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _SPACE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ERROR , function ( ) { a . _checkText ( ) , a . fireEvent ( BI . ShelterEditor . EVENT _ERROR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ENTER , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _ENTER , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _RESTRICT , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _RESTRICT , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _EMPTY , function ( ) { a . fireEvent ( BI . ShelterEditor . EVENT _EMPTY , arguments ) } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ this . editor ] } ) , this . _showHint ( ) , a . _checkText ( ) , this . text . doRedMark ( b . keyword ) } , _checkText : function ( ) { var a = this . options ; "" === this . editor . getValue ( ) ? ( this . text . setValue ( a . watermark || "" ) , this . text . element . addClass ( "bi-water-mark" ) ) : ( this . text . setValue ( this . editor . getValue ( ) ) , this . text . element . removeClass ( "bi-water-mark" ) ) } , _showInput : function ( ) { this . editor . visible ( ) , this . text . invisible ( ) } , _showHint : function ( ) { this . editor . invisible ( ) , this
el : { type : "bi.button_group" } } ) } , _init : function ( ) { BI . ListPane . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . button _group = BI . createWidget ( b . el , { type : "bi.button_group" , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , behaviors : { } , items : b . items , itemsCreator : function ( c , d ) { 1 === c . times && ( a . empty ( ) , BI . nextTick ( function ( ) { a . loading ( ) } ) ) , b . itemsCreator ( c , function ( ) { d . apply ( a , arguments ) , 1 === c . times && BI . nextTick ( function ( ) { a . loaded ( ) } ) } ) } , hasNext : b . hasNext , layouts : [ { type : "bi.vertical" } ] } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( b , c , d ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b === BI . Events . CLICK && a . fireEvent ( BI . ListPane . EVENT _CHANGE , c , d ) } ) , this . check ( ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Top ) , BI . extend ( { scrolly : ! 0 , lgap : b . lgap , rgap : b . rgap , tgap : b . tgap , bgap : b . bgap , vgap : b . vgap , hgap : b . hgap } , b . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Top , this . button _group ) } ) ) ) ) } , hasPrev : function ( ) { return this . button _group . hasPrev && this . button _group . hasPrev ( ) } , hasNext : function ( ) { return this . button _group . hasNext && this . button _group . hasNext ( ) } , prependItems : function ( a ) { this . options . items = a . concat ( this . options . items ) , this . button _group . prependItems . apply ( this . button _group , arguments ) , this . check ( ) } , addItems : function ( a ) { this . options . items = this . options . items . concat ( a ) , this . button _group . addItems . apply ( this . button _group , arguments ) , this . check ( ) } , removeItemAt : function ( a ) { a = a || [ ] , BI . removeAt ( this . options . items , a ) , this . button _group . removeItemAt . apply ( this . button _group , arguments ) , this . check ( ) } , populate : function ( a ) { var b = this ; this . options ; return 0 === arguments . length && BI . isFunction ( this . button _group . attr ( "itemsCreator" ) ) ? void this . button _group . attr ( "itemsCreator" ) . apply ( this , [ { times : 1 } , function ( ) { if ( 0 === arguments . length ) throw new Error ( "参数不能为空" ) ; b . populate . apply ( b , arguments ) } ] ) : ( BI . ListPane . superclass . populate . apply ( this , arguments ) , void this . button _group . populate . apply ( this . button _group , arguments ) ) } , empty : function ( ) { this . button _group . empty ( ) } , setNotSelectedValue : function ( ) { this . button _group . setNotSelectedValue . apply ( this . button _group , arguments ) } , getNotSelectedValue : function ( ) { return this . button _group . getNotSelectedValue ( ) } , setValue : function ( ) { this . button _group . setValue . apply ( this . button _group , arguments ) } , getValue : function ( ) { return this . button _group . getValue . apply ( this . button _group , arguments ) } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , getAllLeaves : function ( ) { return this . button _group . getAllLeaves ( ) } , getSelectedButtons : function ( ) { return this . button _group . getSelectedButtons ( ) } , getNotSelectedButtons : function ( ) { return this . button _group . getNotSelectedButtons ( ) } , getIndexByValue : function ( a ) { return this . button _group . getIndexByValue ( a ) } , getNodeById : function ( a ) { return this . button _group . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . button _group . getNodeByValue ( a ) } } ) , BI . ListPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.list_pane" , BI . ListPane ) , BI . Panel = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Panel . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-panel bi-border" , title : "" , titleButtons : [ ] , el : { } , logic : { dynamic : ! 1 } } ) } , _init : function ( ) { BI . Panel . superclass . _init . apply ( this , arguments ) ; var a = this . options ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "vertical" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "top" , this . _createTitle ( ) , this . options . el ) } ) ) ) ) } , _createTitle : function ( ) { var a = this , b = this . options ; return this . text = BI . createWidget ( { type : "bi.label" , cls : "panel-title-text" , text : b . title , height : 30 } ) , this . button _group = BI . createWidget ( { type : "bi.button_group" , items : b . titleButtons , layouts : [ { type : "bi.center_adapt" , lgap : 10 } ] } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . button _group . on ( BI . ButtonGroup . EVENT _CHANGE , function ( b , c ) { a . fireEvent ( BI . Panel . EVENT _CHANGE , b , c ) } ) , { el : { type : "bi.left_right_vertical_adapt" , cls : " panel - title bi - border - bottom b
this . fireEvent ( "blur" , c ) , this . lastSelectedInstance = this . selectedInstance , this . selectedInstance = null } , setValue : function ( a ) { this . instance . setContent ( a ) } , getValue : function ( ) { return this . instance . getContent ( ) } , destroyed : function ( ) { $ ( document ) . unbind ( "mousedown." + this . getName ( ) ) } } ) , BI . NicEditor . EVENT _SELECTED = "selected" , BI . NicEditor . EVENT _BLUR = "blur" , BI . NicEditor . EVENT _KEYDOWN = "keydown" , BI . shortcut ( "bi.nic_editor" , BI . NicEditor ) ; var a = "niceditor-" , b = BI . inherit ( BI . Layout , { isSelected : ! 1 , _init : function ( ) { b . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . ne = this . options . ne , this . elm = BI . createWidget ( { type : "bi.layout" , width : a . width - 8 , scrollable : ! 1 } ) , this . elm . element . css ( { margin : "4px" , minHeight : a . height - 8 + "px" , outline : "none" } ) . html ( a . value ) , this . element . css ( "maxHeight" , a . maxHeight ? a . maxHeight + "px" : null ) , this . e = BI . createWidget ( { type : "bi.layout" , invisible : ! 0 , tagName : "textarea" } ) , BI . createWidget ( { type : "bi.default" , element : this , scrolly : ! 0 , items : [ this . elm , this . e ] } ) , this . ne . on ( "blur" , BI . bind ( this . blur , this ) ) , this . start ( ) , this . blur ( ) } , start : function ( ) { this . elm . element . attr ( "contentEditable" , ! 0 ) , "" == this . getContent ( ) , this . instanceDoc = document . defaultView , this . elm . element . on ( "mousedown" , BI . bind ( this . selected , this ) ) , this . elm . element . on ( "keydown" , BI . bind ( this . keyDown , this ) ) , this . elm . element . on ( "focus" , BI . bind ( this . selected , this ) ) , this . elm . element . on ( "blur" , BI . bind ( this . blur , this ) ) , this . elm . element . on ( "keyup" , BI . bind ( this . selected , this ) ) , this . ne . fireEvent ( "add" ) } , disable : function ( ) { this . elm . element . attr ( "contentEditable" , ! 1 ) } , getSel : function ( ) { return window . getSelection ? window . getSelection ( ) : document . selection } , getRng : function ( ) { var a = this . getSel ( ) ; if ( a && 0 !== a . rangeCount ) return a . rangeCount > 0 ? a . getRangeAt ( 0 ) : a . createRange ( ) } , selRng : function ( a , b ) { window . getSelection ? ( b . removeAllRanges ( ) , b . addRange ( a ) ) : a . select ( ) } , selElm : function ( ) { var a = this . getRng ( ) ; if ( a ) { if ( a . startContainer ) { var b = a . startContainer ; if ( 1 == a . cloneContents ( ) . childNodes . length ) for ( var c = 0 ; c < b . childNodes . length ; c ++ ) { var d = b . childNodes [ c ] . ownerDocument . createRange ( ) ; if ( d . selectNode ( b . childNodes [ c ] ) , 1 != a . compareBoundaryPoints ( Range . START _TO _START , d ) && a . compareBoundaryPoints ( Range . END _TO _END , d ) != - 1 ) return b . childNodes [ c ] } return b } return "Control" == this . getSel ( ) . type ? a . item ( 0 ) : a . parentElement ( ) } } , saveRng : function ( ) { this . savedRange = this . getRng ( ) , this . savedSel = this . getSel ( ) } , setFocus : function ( a ) { try { a . focus ( ) } catch ( b ) { } if ( window . getSelection ) { var c = document . createRange ( ) ; c . selectNodeContents ( a ) , c . collapse ( ! 1 ) ; var d = window . getSelection ( ) ; d . removeAllRanges ( ) , d . addRange ( c ) } else { var e ; try { a . focus ( ) } catch ( b ) { } e = document . selection . createRange ( ) , e . moveStart ( "character" , - a . innerText . length ) ; for ( var f = e . text , g = 0 ; g < a . innerText . length ; g ++ ) a . innerText . substring ( 0 , g + 1 ) == f . substring ( f . length - g - 1 , f . length ) && ( result = g + 1 ) } } , restoreRng : function ( ) { this . savedRange && this . selRng ( this . savedRange , this . savedSel ) } , keyDown : function ( a , b ) { this . ne . fireEvent ( "keydown" , a ) } , selected : function ( b ) { var c = b . target ; if ( c || ( c = this . selElm ( ) ) || ( c = this . selElm ( ) ) , ! b . ctrlKey ) { var d = this . ne . selectedInstance ; d != this && ( d && this . ne . fireEvent ( "blur" , b ) , this . ne . selectedInstance = this , this . ne . fireEvent ( "focus" , b ) ) , this . ne . fireEvent ( "selected" , b ) , this . isFocused = ! 0 , this . elm . element . addClass ( a + "selected" ) } } , blur : function ( ) { this . isFocused = ! 1 , this . elm . element . removeClass ( a + "selected" ) } , saveContent : function ( ) { this . ne . fireEvent ( "save" ) , this . e . element . value ( this . getContent ( ) ) } , getElm : function ( ) { return this . elm } , getContent : function ( ) { return this . content = this . getElm ( ) . element . html ( ) , this . ne . fireEvent ( "get" ) , this . content } , setContent : function ( a ) { this . content = a , this . ne . fireEvent ( "set" ) , this . elm . element . html ( this . content ) } , nicCommand : function ( a , b ) { document . execCommand ( a , ! 1 , b ) } } ) } ( ) , BI . RichEditorBackgroundChooserTrigger = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . RichEditorBackgroundChooserTrigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { width : 20 , height : 20 } ) } , _init : function ( ) { BI . RichEditorBackgroundChooserTrigger . superclass . _init . apply ( this , arguments ) , this . font = BI . createWidget ( { type : "bi.icon_button" , cls : "
BI . each ( b , function ( a , b ) { var c = b . slice ( ) ; BI . removeAt ( c , f ) , h . push ( c ) } ) , BI . each ( a , function ( a , b ) { var c = b . slice ( ) ; BI . removeAt ( c , f ) , i . push ( c ) } ) , b = h , a = i } return { items : a , header : b , deletedCols : f } } } ) , BI . shortcut ( "bi.dynamic_summary_tree_table" , BI . DynamicSummaryTreeTable ) , BI . LayerTreeTableCell = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . LayerTreeTableCell . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-layer-tree-table-cell" , layer : 0 , text : "" } ) } , _init : function ( ) { BI . LayerTreeTableCell . superclass . _init . apply ( this , arguments ) ; var a = this . options ; BI . createWidget ( { type : "bi.label" , element : this . element , textAlign : "left" , whiteSpace : "nowrap" , height : a . height , text : a . text , value : a . value , lgap : 5 + 30 * a . layer , rgap : 5 } ) } } ) , BI . shortcut ( "bi.layer_tree_table_cell" , BI . LayerTreeTableCell ) , BI . LayerTreeTable = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . LayerTreeTable . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-layer-tree-table" , el : { type : "bi.resizable_table" } , isNeedResize : ! 1 , isResizeAdapt : ! 0 , isNeedFreeze : ! 1 , freezeCols : [ ] , isNeedMerge : ! 0 , mergeCols : [ ] , mergeRule : BI . emptyFn , columnSize : [ ] , minColumnSize : [ ] , maxColumnSize : [ ] , headerRowSize : 25 , rowSize : 25 , regionColumnSize : [ ] , rowHeaderCreator : null , headerCellStyleGetter : BI . emptyFn , summaryCellStyleGetter : BI . emptyFn , sequenceCellStyleGetter : BI . emptyFn , header : [ ] , items : [ ] , crossHeader : [ ] , crossItems : [ ] } ) } , _getVDeep : function ( ) { return this . options . crossHeader . length } , _getHDeep : function ( ) { var a = this . options ; return Math . max ( a . mergeCols . length , a . freezeCols . length , BI . TableTree . maxDeep ( a . items ) - 1 ) } , _createHeader : function ( a ) { var b = this . options , c = b . header || [ ] , d = b . crossHeader || [ ] , e = BI . TableTree . formatCrossItems ( b . crossItems , a , b . headerCellStyleGetter ) , f = [ ] ; if ( BI . each ( e , function ( a , b ) { var c = [ d [ a ] ] ; f . push ( c . concat ( b || [ ] ) ) } ) , c && c . length > 0 ) { var g = this . _formatColumns ( c ) , h = this . _getHDeep ( ) ; h <= 0 ? g . unshift ( b . rowHeaderCreator || { type : "bi.table_style_cell" , text : BI . i18nText ( "BI-Row_Header" ) , styleGetter : b . headerCellStyleGetter } ) : g [ 0 ] = b . rowHeaderCreator || { type : "bi.table_style_cell" , text : BI . i18nText ( "BI-Row_Header" ) , styleGetter : b . headerCellStyleGetter } , f . push ( g ) } return f } , _formatItems : function ( a ) { function b ( a , c ) { a . type || ( a . type = "bi.layer_tree_table_cell" ) , a . layer = c ; var e = [ a ] ; e = e . concat ( a . values || [ ] ) , e . length > 0 && d . push ( e ) , BI . isNotEmptyArray ( a . children ) && BI . each ( a . children , function ( a , d ) { b ( d , c + 1 ) } ) } var c = this . options , d = [ ] ; return BI . each ( a , function ( a , e ) { if ( BI . each ( e . children , function ( a , c ) { b ( c , 0 ) } ) , BI . isArray ( e . values ) ) { var f = [ { type : "bi.table_style_cell" , text : BI . i18nText ( "BI-Summary_Values" ) , styleGetter : function ( ) { return c . summaryCellStyleGetter ( ! 0 ) } } ] . concat ( e . values ) ; d . push ( f ) } } ) , d } , _formatColumns : function ( a , b ) { return BI . isNotEmptyArray ( a ) ? ( b = b || this . _getHDeep ( ) , a . slice ( Math . max ( 0 , b - 1 ) ) ) : a } , _formatFreezeCols : function ( ) { return this . options . freezeCols . length > 0 ? [ 0 ] : [ ] } , _formatColumnSize : function ( a , b ) { if ( a . length <= 0 ) return [ ] ; var c = [ 0 ] ; return b = b || this . _getHDeep ( ) , BI . each ( a , function ( a , d ) { return a < b ? void ( c [ 0 ] += d ) : void c . push ( d ) } ) , c } , _digest : function ( ) { var a = this . options , b = this . _getHDeep ( ) , c = this . _getVDeep ( ) ; return { header : this . _createHeader ( c ) , items : this . _formatItems ( a . items ) , columnSize : this . _formatColumnSize ( a . columnSize , b ) , minColumnSize : this . _formatColumns ( a . minColumnSize , b ) , maxColumnSize : this . _formatColumns ( a . maxColumnSize , b ) , freezeCols : this . _formatFreezeCols ( ) } } , _init : function ( ) { BI . LayerTreeTable . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = this . _digest ( ) ; this . table = BI . createWidget ( b . el , { type : "bi.resizable_table" , element : this , width : b . width , height : b . height , isNeedResize : b . isNeedResize , isResizeAdapt : b . isResizeAdapt , isNeedFreeze : b . isNeedFreeze , freezeCols : c . freezeCols , isNeedMerge : b . isNeedMerge , mergeCols : [ ] , mergeRule : b . mergeRule , columnSize : c . columnSize , minColumnSize : c . minColumnSize , maxColumnSize : c . maxColumnSize , headerRowSize : b . headerRowSize , rowSize : b . rowSize , regionColumnSize : b . regionColumnSize , header : c . header , items : c . items } ) , this . table . on ( BI . Table . EVENT _TABLE _SCROLL , function ( ) { a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _AFTER _REGION _
BI . shortcut ( "bi.editor_trigger" , BI . EditorTrigger ) , BI . IconTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . IconTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-icon-trigger" , el : { } , height : 24 } ) } , _init : function ( ) { var a = this . options ; BI . IconTrigger . superclass . _init . apply ( this , arguments ) , this . iconButton = BI . createWidget ( a . el , { type : "bi.trigger_icon_button" , element : this , width : a . width , height : a . height } ) } } ) , BI . shortcut ( "bi.icon_trigger" , BI . IconTrigger ) , BI . IconTextTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 } , _defaultConfig : function ( ) { var a = BI . IconTextTrigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-trigger" , height : 24 } ) } , _init : function ( ) { BI . IconTextTrigger . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , height : b . height , text : b . text , hgap : c . hgap } ) , this . trigerButton = BI . createWidget ( { type : "bi.trigger_icon_button" , width : b . triggerWidth || b . height } ) , BI . createWidget ( { element : this , type : "bi.htape" , ref : function ( b ) { a . wrapper = b } , items : [ { el : { type : "bi.icon_change_button" , cls : "icon-combo-trigger-icon " + b . iconCls , ref : function ( b ) { a . icon = b } , disableSelected : ! 0 } , width : BI . isEmptyString ( b . iconCls ) ? 0 : b . triggerWidth || b . height } , { el : this . text } , { el : this . trigerButton , width : b . triggerWidth || b . height } ] } ) } , setValue : function ( a ) { this . text . setValue ( a ) } , setIcon : function ( a ) { var b = this . options ; this . icon . setIcon ( a ) ; var c = this . wrapper . attr ( "items" ) [ 0 ] ; BI . isNull ( a ) || BI . isEmptyString ( a ) ? 0 !== c . width && ( c . width = 0 , this . wrapper . resize ( ) ) : c . width !== ( b . triggerWidth || b . height ) && ( c . width = b . triggerWidth || b . height , this . wrapper . resize ( ) ) } , setText : function ( a ) { this . text . setText ( a ) } } ) , BI . shortcut ( "bi.icon_text_trigger" , BI . IconTextTrigger ) , BI . SelectIconTextTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectIconTextTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-text-trigger bi-border" , height : 24 } ) } , _init : function ( ) { this . options . height -= 2 , BI . SelectIconTextTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this . _digist ( a . value , a . items ) ; this . trigger = BI . createWidget ( { type : "bi.icon_text_trigger" , element : this , text : b . text , iconCls : b . iconCls , height : a . height } ) } , _digist : function ( a , b ) { var c = this . options ; a = BI . isArray ( a ) ? a : [ a ] ; var d , e = BI . Tree . transformToArrayFormat ( b ) ; return BI . any ( e , function ( b , c ) { if ( BI . deepContains ( a , c . value ) ) return d = { text : c . text || c . value , iconCls : c . iconCls } , ! 0 } ) , BI . isNotNull ( d ) ? { text : d . text , iconCls : d . iconCls } : { text : c . text , iconCls : "" } } , setValue : function ( a ) { var b = this . _digist ( a , this . options . items ) ; this . trigger . setText ( b . text ) , this . trigger . setIcon ( b . iconCls ) } , populate : function ( a ) { this . options . items = a } } ) , BI . shortcut ( "bi.select_icon_text_trigger" , BI . SelectIconTextTrigger ) , BI . TextTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 } , _defaultConfig : function ( ) { var a = BI . TextTrigger . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text-trigger" , height : 24 } ) } , _init : function ( ) { BI . TextTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , height : a . height , text : a . text , title : function ( ) { return a . text } , hgap : b . hgap , readonly : a . readonly } ) , this . trigerButton = BI . createWidget ( { type : "bi.trigger_icon_button" , width : a . triggerWidth || a . height } ) , BI . createWidget ( { element : this , type : "bi.htape" , items : [ { el : this . text } , { el : this . trigerButton , width : a . triggerWidth || a . height } ] } ) } , setText : function ( a ) { this . text . setText ( a ) } } ) , BI . shortcut ( "bi.text_trigger" , BI . TextTrigger ) , BI . SelectTextTrigger = BI . inherit ( BI . Trigger , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectTextTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-text-trigger bi-border" , height : 24 } ) } , _init : function ( ) { this . options . height -= 2 , BI . SelectTextTrigger . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . trigger = BI . createWidget ( { type : "bi.text_trigger" , element : this , height : a . height , readonly : a . readonly , text : this . _digest ( a . value , a . items ) } ) } , _dig
} ) ; return c } , _getNewCurrentDate : function ( ) { var a = Date . getDate ( ) ; return { year : a . getFullYear ( ) , month : a . getMonth ( ) } } , _setCalenderValue : function ( a ) { this . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( a ) ) , this . calendar . setValue ( a ) , this . selectedTime = a } , _setDatePicker : function ( a ) { BI . isNull ( a ) || BI . isNull ( a . year ) || BI . isNull ( a . month ) ? this . datePicker . setValue ( this . _getNewCurrentDate ( ) ) : this . datePicker . setValue ( a ) } , _setCalendar : function ( a ) { BI . isNull ( a ) || BI . isNull ( a . day ) ? ( this . calendar . empty ( ) , this . _setCalenderValue ( this . _getNewCurrentDate ( ) ) ) : this . _setCalenderValue ( a ) } , setValue : function ( a ) { this . _setDatePicker ( a ) , this . _setCalendar ( a ) } , getValue : function ( ) { return this . selectedTime } } ) , BI . shortcut ( "bi.date_pane" , BI . DatePaneWidget ) , BI . DateTimeCombo = BI . inherit ( BI . Single , { constants : { popupHeight : 290 , popupWidth : 270 , comboAdjustHeight : 1 , border : 1 , DATE _MIN _VALUE : "1900-01-01" , DATE _MAX _VALUE : "2099-12-31" } , _defaultConfig : function ( ) { return BI . extend ( BI . DateTimeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-date-time-combo bi-border" , width : 200 , height : 24 } ) } , _init : function ( ) { BI . DateTimeCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = Date . getDate ( ) ; this . storeValue = BI . isNotNull ( b . value ) ? b . value : { year : c . getFullYear ( ) , month : c . getMonth ( ) , day : c . getDate ( ) , hour : c . getHours ( ) , minute : c . getMinutes ( ) , second : c . getSeconds ( ) } , this . trigger = BI . createWidget ( { type : "bi.date_time_trigger" , min : this . constants . DATE _MIN _VALUE , max : this . constants . DATE _MAX _VALUE , value : b . value } ) , this . popup = BI . createWidget ( { type : "bi.date_time_popup" , min : this . constants . DATE _MIN _VALUE , max : this . constants . DATE _MAX _VALUE , value : b . value } ) , a . setValue ( this . storeValue ) , this . popup . on ( BI . DateTimePopup . BUTTON _CANCEL _EVENT _CHANGE , function ( ) { a . setValue ( a . storeValue ) , a . hidePopupView ( ) , a . fireEvent ( BI . DateTimeCombo . EVENT _CANCEL ) } ) , this . popup . on ( BI . DateTimePopup . BUTTON _OK _EVENT _CHANGE , function ( ) { a . storeValue = a . popup . getValue ( ) , a . setValue ( a . storeValue ) , a . hidePopupView ( ) , a . fireEvent ( BI . DateTimeCombo . EVENT _CONFIRM ) } ) , this . popup . on ( BI . DateTimePopup . CALENDAR _EVENT _CHANGE , function ( ) { a . trigger . setValue ( a . popup . getValue ( ) ) , a . fireEvent ( BI . DateTimeCombo . EVENT _CHANGE ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , toggle : ! 1 , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , adjustLength : this . constants . comboAdjustHeight , popup : { el : this . popup , maxHeight : this . constants . popupHeight , width : this . constants . popupWidth , stopPropagation : ! 1 } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . popup . setValue ( a . storeValue ) , a . fireEvent ( BI . DateTimeCombo . EVENT _BEFORE _POPUPVIEW ) } ) ; var d = BI . createWidget ( { type : "bi.icon_button" , cls : "bi-trigger-icon-button date-font bi-border-right" , width : 24 , height : 24 } ) ; d . on ( BI . TriggerIconButton . EVENT _CHANGE , function ( ) { a . combo . isViewVisible ( ) ? a . combo . hideView ( ) : a . combo . showView ( ) } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { type : "bi.absolute" , items : [ { el : this . combo , top : 0 , left : 0 , right : 0 , bottom : 0 } , { el : d , top : 0 , left : 0 } ] } ] } ) } , setValue : function ( a ) { this . storeValue = a , this . popup . setValue ( a ) , this . trigger . setValue ( a ) } , getValue : function ( ) { return this . storeValue } , hidePopupView : function ( ) { this . combo . hideView ( ) } } ) , BI . DateTimeCombo . EVENT _CANCEL = "EVENT_CANCEL" , BI . DateTimeCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . DateTimeCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . DateTimeCombo . EVENT _BEFORE _POPUPVIEW = "BI.DateTimeCombo.EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.date_time_combo" , BI . DateTimeCombo ) , BI . DateTimePopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . DateTimePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-date-time-popup" , width : 268 , height : 290 } ) } , _init : function ( ) { BI . DateTimePopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . cancelButton = BI . createWidget ( { type : "bi.text_button" , forceCenter : ! 0 , cls : "multidate-popup-button bi-border-top bi-border-right" , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Cancel" ) } ) , this . cancelButton . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . DateTimePopup . BUTTON _CANCEL _EVENT _CHANGE ) } ) , this . okButton = BI . createWidget ( { type : "bi.text_button" , forceCenter : ! 0 , cls : " multidate - popup - button bi - bo
var a = this , b = this . options ; this . checked = BI . createWidget ( { type : "bi.multi_select_bar" , text : "" , width : 36 , height : b . height } ) , this . checked . on ( BI . Controller . EVENT _CHANGE , function ( ) { arguments [ 2 ] = a , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . checked , width : 36 } , { el : { type : "bi.icon_button" , cls : "create-by-me-file-font" } , width : 20 } , { el : { type : "bi.label" , textAlign : "left" , height : b . height , text : b . text , value : b . value } } ] } ) } , getAllLeaves : function ( ) { return [ this . options . value ] } , isSelected : function ( ) { return this . checked . isSelected ( ) } , setSelected : function ( a ) { this . checked . setSelected ( a ) } } ) , BI . FileManagerFileItem . EVENT _CHANGE = "FileManagerFileItem.EVENT_CHANGE" , BI . shortcut ( "bi.file_manager_file_item" , BI . FileManagerFileItem ) , BI . FileManagerFolderItem = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . FileManagerFolderItem . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-file-manager-folder-item bi-list-item bi-border-bottom" , height : 30 } ) } , _init : function ( ) { BI . FileManagerFolderItem . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . checked = BI . createWidget ( { type : "bi.multi_select_bar" , text : "" , width : 36 , height : b . height } ) , this . checked . on ( BI . Controller . EVENT _CHANGE , function ( ) { arguments [ 2 ] = a , a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . button = BI . createWidget ( { type : "bi.text_button" , textAlign : "left" , height : b . height , text : b . text , value : b . value } ) , this . button . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . CHANGE , b . value , a ) } ) , this . tree = new BI . Tree , this . tree . initTree ( [ { id : b . id , children : b . children } ] ) , this . selectValue = [ ] , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . checked , width : 36 } , { el : { type : "bi.icon_button" , cls : "create-by-me-folder-font" } , width : 20 } , { el : this . button } ] } ) } , setAllSelected : function ( a ) { this . checked . setSelected ( a ) , this . selectValue = [ ] } , setHalfSelected : function ( a ) { this . checked . setHalfSelected ( a ) , a || ( this . selectValue = [ ] ) } , setValue : function ( a ) { var b = ( this . options , ! 1 ) , c = [ ] ; this . tree . traverse ( function ( d ) { d . isLeaf ( ) && ( BI . contains ( a , d . get ( "data" ) . value ) ? c . push ( d . get ( "data" ) . value ) : b = ! 0 ) } ) , this . setAllSelected ( c . length > 0 && ! b ) , this . setHalfSelected ( c . length > 0 && b ) , this . checked . isHalfSelected ( ) && ( this . selectValue = c ) } , getAllButtons : function ( ) { return [ this ] } , getAllLeaves : function ( ) { var a = ( this . options , [ ] ) ; return this . tree . traverse ( function ( b ) { b . isLeaf ( ) && a . push ( b . get ( "data" ) . value ) } ) , a } , getNotSelectedValue : function ( ) { var a = this , b = ( this . options , [ ] ) , c = this . checked . isSelected ( ) ; if ( c === ! 0 ) return b ; var d = this . checked . isHalfSelected ( ) ; return this . tree . traverse ( function ( c ) { if ( c . isLeaf ( ) ) { var e = c . get ( "data" ) . value ; d === ! 0 ? BI . contains ( a . selectValue , c . get ( "data" ) . value ) || b . push ( e ) : b . push ( e ) } } ) , b } , getValue : function ( ) { var a = [ ] ; return this . checked . isSelected ( ) ? ( this . tree . traverse ( function ( b ) { b . isLeaf ( ) && a . push ( b . get ( "data" ) . value ) } ) , a ) : this . checked . isHalfSelected ( ) ? this . selectValue : [ ] } } ) , BI . FileManagerFolderItem . EVENT _CHANGE = "FileManagerFolderItem.EVENT_CHANGE" , BI . shortcut ( "bi.file_manager_folder_item" , BI . FileManagerFolderItem ) , BI . FileManagerList = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . FileManagerList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-file-manager-list" , el : { } , items : [ ] } ) } , _init : function ( ) { BI . FileManagerList . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . list = BI . createWidget ( { type : "bi.select_list" , element : this , items : b . items , toolbar : { type : "bi.multi_select_bar" , height : 40 , text : "" } , el : { type : "bi.list_pane" , el : BI . isWidget ( b . el ) ? b . el : BI . extend ( { type : "bi.file_manager_button_group" } , b . el ) } } ) , this . list . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , setValue : function ( a ) { this . list . setValue ( { value : a } ) } , getValue : function ( ) { return this . list . getValue ( ) } , populate : function ( a ) { this . list . populate ( a ) , this . list . setToolBarVisible ( ! 0 ) } } ) , BI . FileManagerList . EVENT _CHANGE = "FileManagerList.EVENT_CHANGE" , BI . shortcut ( "bi.file_manager_list" , BI . FileManagerList ) , BI . FileManagerNavButton = BI . inherit ( BI . Widget , { _const : { norma
popup : { el : this . popup , maxHeight : this . constants . popupHeight , width : this . constants . popupWidth , stopPropagation : ! 1 } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . popup . setValue ( a . storeValue ) , a . fireEvent ( BI . MultiDateCombo . EVENT _BEFORE _POPUPVIEW ) } ) ; var d = BI . createWidget ( { type : "bi.icon_button" , cls : "bi-trigger-icon-button date-font" , width : 24 , height : 24 } ) ; d . on ( BI . TriggerIconButton . EVENT _CHANGE , function ( ) { a . combo . isViewVisible ( ) ? a . combo . hideView ( ) : a . combo . showView ( ) } ) , this . changeIcon = BI . createWidget ( { type : "bi.icon_button" , cls : "bi-trigger-icon-button date-change-h-font" , width : 24 , height : 24 } ) ; var e = BI . createWidget ( { type : "bi.absolute" , items : [ { el : this . combo , top : 0 , left : 0 , right : 0 , bottom : 0 } , { el : d , top : 0 , left : 0 } ] } ) ; BI . createWidget ( { type : "bi.htape" , element : this , items : [ e , { el : this . changeIcon , width : 30 } ] , ref : function ( b ) { a . comboWrapper = b } } ) , this . _checkDynamicValue ( b . value ) } , _checkDynamicValue : function ( a ) { var b = null ; switch ( BI . isNotNull ( a ) && ( b = a . type ) , b ) { case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _PREV : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _AFTER : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _BEGIN : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _YEAR _END : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _PREV : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _AFTER : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _BEGIN : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _QUARTER _END : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _MONTH _PREV : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _MONTH _AFTER : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _MONTH _BEGIN : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _MONTH _END : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _WEEK _PREV : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _WEEK _AFTER : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _PREV : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _AFTER : case BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _TODAY : this . changeIcon . setVisible ( ! 0 ) , this . comboWrapper . attr ( "items" ) [ 1 ] . width = 30 , this . comboWrapper . resize ( ) ; break ; default : this . comboWrapper . attr ( "items" ) [ 1 ] . width = 0 , this . comboWrapper . resize ( ) , this . changeIcon . setVisible ( ! 1 ) } } , setValue : function ( a ) { this . storeValue = a , this . popup . setValue ( a ) , this . trigger . setValue ( a ) , this . _checkDynamicValue ( a ) } , getValue : function ( ) { return this . storeValue } , getKey : function ( ) { return this . trigger . getKey ( ) } , hidePopupView : function ( ) { this . combo . hideView ( ) } } ) , BI . shortcut ( "bi.multidate_combo" , BI . MultiDateCombo ) , BI . MultiDateCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . MultiDateCombo . EVENT _FOCUS = "EVENT_FOCUS" , BI . MultiDateCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiDateCombo . EVENT _VALID = "EVENT_VALID" , BI . MultiDateCombo . EVENT _ERROR = "EVENT_ERROR" , BI . MultiDateCombo . EVENT _BEFORE _POPUPVIEW = "BI.MultiDateCombo.EVENT_BEFORE_POPUPVIEW" , BI . extend ( BI . MultiDateCombo , { MULTI _DATE _YMD _CARD : 1 , MULTI _DATE _YEAR _CARD : 2 , MULTI _DATE _QUARTER _CARD : 3 , MULTI _DATE _MONTH _CARD : 4 , MULTI _DATE _WEEK _CARD : 5 , MULTI _DATE _DAY _CARD : 6 } ) , BI . extend ( BI . MultiDateCombo , { DATE _TYPE : { MULTI _DATE _YEAR _PREV : 1 , MULTI _DATE _YEAR _AFTER : 2 , MULTI _DATE _YEAR _BEGIN : 3 , MULTI _DATE _YEAR _END : 4 , MULTI _DATE _MONTH _PREV : 5 , MULTI _DATE _MONTH _AFTER : 6 , MULTI _DATE _MONTH _BEGIN : 7 , MULTI _DATE _MONTH _END : 8 , MULTI _DATE _QUARTER _PREV : 9 , MULTI _DATE _QUARTER _AFTER : 10 , MULTI _DATE _QUARTER _BEGIN : 11 , MULTI _DATE _QUARTER _END : 12 , MULTI _DATE _WEEK _PREV : 13 , MULTI _DATE _WEEK _AFTER : 14 , MULTI _DATE _DAY _PREV : 15 , MULTI _DATE _DAY _AFTER : 16 , MULTI _DATE _DAY _TODAY : 17 , MULTI _DATE _PARAM : 18 , MULTI _DATE _CALENDAR : 19 , YEAR _QUARTER : 20 , YEAR _MONTH : 21 , YEAR _WEEK : 22 , YEAR _DAY : 23 , MONTH _WEEK : 24 , MONTH _DAY : 25 , YEAR : 26 , SAME _PERIOD : 27 , LAST _SAME _PERIOD : 28 } } ) , BI . DayCard = BI . inherit ( BI . MultiDateCard , { _defaultConfig : function ( ) { return $ . extend ( BI . DayCard . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multidate-daycard" } ) } , _init : function ( ) { BI . DayCard . superclass . _init . apply ( this , arguments ) } , dateConfig : function ( ) { return [ { isEditorExist : ! 0 , selected : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Day_Prev" ) , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _PREV } , { isEditorExist : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Day_Next" ) , value : BI . MultiDateCombo . DATE _TYPE . MULTI _DATE _DAY _AFTER } , { isEditorExist : ! 1 , value : BI . MultiDateCombo . DATE _TY
} } ) , BI . MultiLayerSingleLevelTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multilayer_single_level_tree" , BI . MultiLayerSingleLevelTree ) , BI . MultiLayerSingleTreePopup = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSingleTreePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multilayer-singletree-popup" , tipText : BI . i18nText ( "BI-No_Selected_Item" ) , isDefaultInit : ! 1 , itemsCreator : BI . emptyFn , items : [ ] } ) } , _init : function ( ) { BI . MultiLayerSingleTreePopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . tree = BI . createWidget ( { type : "bi.multilayer_single_level_tree" , isDefaultInit : b . isDefaultInit , items : b . items , itemsCreator : b . itemsCreator , value : b . value } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , scrollable : ! 0 , element : this , items : [ this . tree ] } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . tree . on ( BI . MultiLayerSingleLevelTree . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiLayerSingleTreePopup . EVENT _CHANGE ) } ) , this . check ( ) } , getValue : function ( ) { return this . tree . getValue ( ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , this . tree . setValue ( a ) } , populate : function ( a ) { BI . MultiLayerSingleTreePopup . superclass . populate . apply ( this , arguments ) , this . tree . populate ( a ) } } ) , BI . MultiLayerSingleTreePopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multilayer_single_tree_popup" , BI . MultiLayerSingleTreePopup ) , BI . MultiLayerSingleTreeFirstPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . MultiLayerSingleTreeFirstPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-multilayer-single-tree-first-plus-group-node bi-list-item" , layer : 0 , id : "" , pId : "" , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . MultiLayerSingleTreeFirstPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.first_plus_group_node" , cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : b . id , pId : b . pId , open : b . open , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . node . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b !== BI . Events . CLICK && a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , cls : "base-line-conn-background" , width : 13 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 13 ) , items : [ c ] } ) } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , doClick : function ( ) { BI . MultiLayerSingleTreeFirstPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MultiLayerSingleTreeFirstPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . node ) && this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_single_tree_first_plus_group_node" , BI . MultiLayerSingleTreeFirstPlusGroupNode ) , BI . MultiLayerSingleTreeLastPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . MultiLayerSingleTreeLastPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-multilayer-single-tree-last-plus-group-node bi-list-item" , layer : 0 , id : "" , pId : "" , open : ! 1 , height : 25 } ) } , _init : function ( ) { BI . MultiLayerSingleTreeLastPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.last_plus_group_node" , cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : b . id , pId : b . pId , open : b . open , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py } ) , this . node . on ( BI . Controller . EVENT _CHANGE , function ( b ) { b !== BI . Events . CLICK && a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var c = [ ] ; BI . count ( 0 , b . layer , function ( ) { c . push ( { type : "bi.layout" , cls : "base-line-conn-background" , width : 13 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 13 ) , items : [ c ] } ) } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , d
this . searcher = BI . createWidget ( b . searcher , { type : "bi.multi_select_searcher" , height : b . height , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , popup : { } , adapter : b . adapter , masker : b . masker , value : b . value } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _START , function ( ) { a . fireEvent ( BI . MultiSelectTrigger . EVENT _START ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . MultiSelectTrigger . EVENT _PAUSE ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _SEARCHING , function ( ) { a . fireEvent ( BI . MultiSelectTrigger . EVENT _SEARCHING , arguments ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _STOP , function ( ) { a . fireEvent ( BI . MultiSelectTrigger . EVENT _STOP ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectTrigger . EVENT _CHANGE , arguments ) } ) , this . numberCounter = BI . createWidget ( b . switcher , { type : "bi.multi_select_check_selected_switcher" , valueFormatter : b . valueFormatter , itemsCreator : b . itemsCreator , adapter : b . adapter , masker : b . masker , value : b . value } ) , this . numberCounter . on ( BI . MultiSelectCheckSelectedSwitcher . EVENT _TRIGGER _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectTrigger . EVENT _COUNTER _CLICK ) } ) , this . numberCounter . on ( BI . MultiSelectCheckSelectedSwitcher . EVENT _BEFORE _POPUPVIEW , function ( ) { a . fireEvent ( BI . MultiSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW ) } ) ; var c = BI . createWidget ( { type : "bi.right_vertical_adapt" , hgap : 4 , items : [ { el : this . numberCounter } ] } ) , d = BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . searcher , width : "fill" } , { el : c , width : 0 } , { el : BI . createWidget ( ) , width : 30 } ] } ) ; this . numberCounter . on ( BI . Events . VIEW , function ( b ) { BI . nextTick ( function ( ) { d . attr ( "items" ) [ 1 ] . width = b === ! 0 ? a . numberCounter . element . outerWidth ( ) + 8 : 0 , d . resize ( ) } ) } ) , this . element . click ( function ( b ) { a . element . _ _isMouseInBounds _ _ ( b ) && ! a . numberCounter . element . _ _isMouseInBounds _ _ ( b ) && a . numberCounter . hideView ( ) } ) } , getCounter : function ( ) { return this . numberCounter } , getSearcher : function ( ) { return this . searcher } , stopEditing : function ( ) { this . searcher . stopSearch ( ) , this . numberCounter . hideView ( ) } , setAdapter : function ( a ) { this . searcher . setAdapter ( a ) , this . numberCounter . setAdapter ( a ) } , setValue : function ( a ) { this . searcher . setValue ( a ) , this . numberCounter . setValue ( a ) } , getKey : function ( ) { return this . searcher . getKey ( ) } , getValue : function ( ) { return this . searcher . getValue ( ) } } ) , BI . MultiSelectTrigger . EVENT _TRIGGER _CLICK = "EVENT_TRIGGER_CLICK" , BI . MultiSelectTrigger . EVENT _COUNTER _CLICK = "EVENT_COUNTER_CLICK" , BI . MultiSelectTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiSelectTrigger . EVENT _START = "EVENT_START" , BI . MultiSelectTrigger . EVENT _STOP = "EVENT_STOP" , BI . MultiSelectTrigger . EVENT _PAUSE = "EVENT_PAUSE" , BI . MultiSelectTrigger . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . MultiSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW = "EVENT_BEFORE_COUNTER_POPUPVIEW" , BI . shortcut ( "bi.multi_select_trigger" , BI . MultiSelectTrigger ) , BI . MultiSelectSearchLoader = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectSearchLoader . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-search-loader" , itemsCreator : BI . emptyFn , keywordGetter : BI . emptyFn , valueFormatter : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectSearchLoader . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = ! 1 ; this . storeValue = BI . deepClone ( b . value ) , this . button _group = BI . createWidget ( { type : "bi.select_list" , element : this , logic : { dynamic : ! 1 } , value : b . value , el : { tipText : BI . i18nText ( "BI-No_Select" ) , el : { type : "bi.loader" , isDefaultInit : ! 1 , logic : { dynamic : ! 0 , scrolly : ! 0 } , el : { chooseType : BI . ButtonGroup . CHOOSE _TYPE _MULTI , behaviors : { redmark : function ( ) { return ! 0 } } , layouts : [ { type : "bi.vertical" } ] } } } , itemsCreator : function ( d , e ) { a . storeValue && ( d = BI . extend ( d || { } , { selectedValues : a . storeValue . value } ) ) , b . itemsCreator ( d , function ( f ) { var g = f . keyword = b . keywordGetter ( ) ; c = f . hasNext ; var h = [ ] ; if ( 1 === d . times && a . storeValue ) { var i = a . _filterValues ( a . storeValue ) ; h = a . _createItems ( i ) } e ( h . concat ( a . _createItems ( f . items ) ) , g ) , 1 === d . times && a . storeValue && a . setValue ( a . storeValue ) } ) } , hasNext : function ( ) { return c } } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . butt
} ] } ) ; this . display = BI . createWidget ( { type : "bi.display_tree" , cls : "bi-multi-tree-display" , itemsCreator : function ( a , c ) { a . type = BI . TreeView . REQ _TYPE _GET _SELECTED _DATA , b . itemsCreator ( a , c ) } , value : ( b . value || { } ) . value } ) , this . display . on ( BI . Events . AFTERINIT , function ( ) { a . fireEvent ( BI . Events . AFTERINIT ) } ) , this . display . on ( BI . TreeView . EVENT _INIT , function ( ) { d . setVisible ( ! 1 ) } ) , this . display . on ( BI . TreeView . EVENT _AFTERINIT , function ( ) { d . setVisible ( ! 0 ) } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { height : this . constants . height , el : d } , { height : "fill" , el : this . display } ] } ) } , empty : function ( ) { this . display . empty ( ) } , populate : function ( a ) { this . display . stroke ( a ) } , setValue : function ( a ) { a || ( a = { } ) , this . display . setSelectedValue ( a . value ) } , getValue : function ( ) { } } ) , BI . MultiTreeCheckPane . EVENT _CONTINUE _CLICK = "EVENT_CONTINUE_CLICK" , BI . shortcut ( "bi.multi_tree_check_pane" , BI . MultiTreeCheckPane ) , BI . MultiTreeCombo = BI . inherit ( BI . Single , { constants : { offset : { top : 1 , left : 1 , right : 2 , bottom : 33 } } , _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-combo" , itemsCreator : BI . emptyFn , height : 25 } ) } , _init : function ( ) { function a ( ) { h ( ) ? b . storeValue = { value : b . trigger . getValue ( ) } : i ( ) && ( b . storeValue = { value : b . combo . getValue ( ) } ) , b . trigger . setValue ( b . storeValue ) } BI . MultiTreeCombo . superclass . _init . apply ( this , arguments ) ; var b = this , c = this . options , d = ! 1 , e = ! 1 ; this . storeValue = { value : c . value || { } } , this . trigger = BI . createWidget ( { type : "bi.multi_select_trigger" , height : c . height , masker : { offset : this . constants . offset } , searcher : { type : "bi.multi_tree_searcher" , itemsCreator : c . itemsCreator } , switcher : { el : { type : "bi.multi_tree_check_selected_button" } , popup : { type : "bi.multi_tree_check_pane" , itemsCreator : c . itemsCreator } } , value : { value : c . value || { } } } ) , this . combo = BI . createWidget ( { type : "bi.combo" , toggle : ! 1 , el : this . trigger , adjustLength : 1 , popup : { type : "bi.multi_tree_popup_view" , ref : function ( ) { b . popup = this , b . trigger . setAdapter ( this ) } , listeners : [ { eventName : BI . MultiTreePopup . EVENT _AFTERINIT , action : function ( ) { b . trigger . getCounter ( ) . adjustView ( ) , d = ! 0 , e === ! 0 && a ( ) } } , { eventName : BI . MultiTreePopup . EVENT _CHANGE , action : function ( ) { f = ! 0 ; var a = { type : BI . Selection . Multi , value : this . hasChecked ( ) ? this . getValue ( ) : { } } ; b . trigger . getSearcher ( ) . setState ( a ) , b . trigger . getCounter ( ) . setButtonChecked ( a ) } } , { eventName : BI . MultiTreePopup . EVENT _CLICK _CONFIRM , action : function ( ) { b . combo . hideView ( ) } } , { eventName : BI . MultiTreePopup . EVENT _CLICK _CLEAR , action : function ( ) { g = ! 0 , b . setValue ( ) , b . _defaultState ( ) } } ] , itemsCreator : c . itemsCreator , onLoaded : function ( ) { BI . nextTick ( function ( ) { b . trigger . getCounter ( ) . adjustView ( ) , b . trigger . getSearcher ( ) . adjustView ( ) } ) } } , value : { value : c . value || { } } , hideChecker : function ( a ) { return 0 === j . element . find ( a . target ) . length } } ) ; var f = ! 1 , g = ! 1 , h = function ( ) { return b . trigger . getSearcher ( ) . isSearching ( ) } , i = function ( ) { return b . combo . isViewVisible ( ) } ; this . trigger . on ( BI . MultiSelectTrigger . EVENT _START , function ( ) { b . storeValue = { value : b . combo . getValue ( ) } , this . setValue ( b . storeValue ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _STOP , function ( ) { b . storeValue = { value : this . getValue ( ) } , b . combo . setValue ( b . storeValue ) , BI . nextTick ( function ( ) { i ( ) && b . combo . populate ( ) } ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW , function ( ) { e === ! 1 && ( e = ! 0 ) , d === ! 0 && ( e = null , a ( ) ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _TRIGGER _CLICK , function ( ) { b . combo . toggle ( ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _COUNTER _CLICK , function ( ) { b . combo . isViewVisible ( ) || b . combo . showView ( ) } ) , this . trigger . on ( BI . MultiSelectTrigger . EVENT _CHANGE , function ( ) { var a = this . getSearcher ( ) . hasChecked ( ) , b = { type : BI . Selection . Multi , value : a ? { 1 : 1 } : { } } ; this . getSearcher ( ) . setState ( a ? BI . Selection . Multi : BI . Selection . None ) , this . getCounter ( ) . setButtonChecked ( b ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { h ( ) || ( f === ! 0 && ( b . storeValue = { value : b . combo . getValue ( ) } , f = ! 1 ) , b . combo . setValue ( b . storeValue ) , b . populate ( ) ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _HIDEVIEW , function ( ) { h ( ) ? ( b . trigger . stopEditing ( ) , b . fireEvent ( BI . MultiTreeCombo . EVENT _CONFIRM ) ) : i ( ) && ( b . trigger . stopEditing ( ) , b . storeValue = { value : b . combo . getValue ( ) } , g ==
} , getColumnSize : function ( ) { return this . table . getColumnSize ( ) } , getCalculateColumnSize : function ( ) { return this . table . getCalculateColumnSize ( ) } , setHeaderColumnSize : function ( a ) { return this . table . setHeaderColumnSize ( a ) } , setRegionColumnSize : function ( a ) { return this . table . setRegionColumnSize ( a ) } , getRegionColumnSize : function ( ) { return this . table . getRegionColumnSize ( ) } , getCalculateRegionColumnSize : function ( ) { return this . table . getCalculateRegionColumnSize ( ) } , getCalculateRegionRowSize : function ( ) { return this . table . getCalculateRegionRowSize ( ) } , getClientRegionColumnSize : function ( ) { return this . table . getClientRegionColumnSize ( ) } , getScrollRegionColumnSize : function ( ) { return this . table . getScrollRegionColumnSize ( ) } , getScrollRegionRowSize : function ( ) { return this . table . getScrollRegionRowSize ( ) } , hasVerticalScroll : function ( ) { return this . table . hasVerticalScroll ( ) } , setVerticalScroll : function ( a ) { return this . table . setVerticalScroll ( a ) } , setLeftHorizontalScroll : function ( a ) { return this . table . setLeftHorizontalScroll ( a ) } , setRightHorizontalScroll : function ( a ) { return this . table . setRightHorizontalScroll ( a ) } , getVerticalScroll : function ( ) { return this . table . getVerticalScroll ( ) } , getLeftHorizontalScroll : function ( ) { return this . table . getLeftHorizontalScroll ( ) } , getRightHorizontalScroll : function ( ) { return this . table . getRightHorizontalScroll ( ) } , getColumns : function ( ) { return this . table . getColumns ( ) } , populate : function ( a , b ) { this . table . populate ( a , b ) } } ) , BI . PreviewTable . EVENT _CHANGE = "PreviewTable.EVENT_CHANGE" , BI . shortcut ( "bi.preview_table" , BI . PreviewTable ) , BI . QuarterCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . QuarterCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-quarter-combo" , behaviors : { } , height : 25 } ) } , _init : function ( ) { BI . QuarterCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . storeValue = "" , this . trigger = BI . createWidget ( { type : "bi.quarter_trigger" , value : b . value } ) , this . trigger . on ( BI . QuarterTrigger . EVENT _FOCUS , function ( ) { a . storeValue = this . getKey ( ) } ) , this . trigger . on ( BI . QuarterTrigger . EVENT _START , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . QuarterTrigger . EVENT _STOP , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , this . trigger . on ( BI . QuarterTrigger . EVENT _CONFIRM , function ( ) { a . combo . isViewVisible ( ) || ( this . getKey ( ) && this . getKey ( ) !== a . storeValue ? a . setValue ( this . getKey ( ) ) : this . getKey ( ) || a . setValue ( ) , a . fireEvent ( BI . QuarterCombo . EVENT _CONFIRM ) ) } ) , this . popup = BI . createWidget ( { type : "bi.quarter_popup" , behaviors : b . behaviors , value : b . value } ) , this . popup . on ( BI . QuarterPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . QuarterCombo . EVENT _CONFIRM ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , element : this , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 85 , el : this . popup } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . fireEvent ( BI . QuarterCombo . EVENT _BEFORE _POPUPVIEW ) } ) } , setValue : function ( a ) { this . trigger . setValue ( a ) , this . popup . setValue ( a ) } , getValue : function ( ) { return this . popup . getValue ( ) || "" } } ) , BI . QuarterCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . QuarterCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.quarter_combo" , BI . QuarterCombo ) , BI . QuarterPopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . QuarterPopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-quarter-popup" , behaviors : { } } ) } , _init : function ( ) { BI . QuarterPopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = [ { text : Date . _QN [ 1 ] , value : 1 } , { text : Date . _QN [ 2 ] , value : 2 } , { text : Date . _QN [ 3 ] , value : 3 } , { text : Date . _QN [ 4 ] , value : 4 } ] ; c = BI . map ( c , function ( a , b ) { return BI . extend ( b , { type : "bi.text_item" , cls : "bi-list-item-active" , textAlign : "left" , whiteSpace : "nowrap" , once : ! 1 , forceSelected : ! 0 , height : 25 } ) } ) , this . quarter = BI . createWidget ( { type : "bi.button_group" , element : this , behaviors : b . behaviors , items : BI . createItems ( c , { } ) , layouts : [ { type : "bi.vertical" } ] , value : b . value } ) , this . quarter . on ( BI . Controller . EVENT _CHANGE , function ( b ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , b === BI . Events . CLICK && a . fireEvent ( BI . MonthPo
} } ) , BI . shortcut ( "bi.sequence_table" , BI . SequenceTable ) , BI . SingleSelectSearchLoader = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectSearchLoader . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-search-loader" , itemsCreator : BI . emptyFn , keywordGetter : BI . emptyFn , valueFormatter : BI . emptyFn } ) } , _init : function ( ) { BI . SingleSelectSearchLoader . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = ! 1 ; this . button _group = BI . createWidget ( { type : "bi.single_select_list" , element : this , logic : { dynamic : ! 1 } , el : { tipText : BI . i18nText ( "BI-No_Select" ) , el : { type : "bi.loader" , isDefaultInit : ! 1 , logic : { dynamic : ! 0 , scrolly : ! 0 } , el : { chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE , behaviors : { redmark : function ( ) { return ! 0 } } , layouts : [ { type : "bi.vertical" } ] } } } , itemsCreator : function ( d , e ) { a . storeValue && ( d = BI . extend ( d || { } , { selectedValues : [ a . storeValue ] } ) ) , b . itemsCreator ( d , function ( f ) { var g = f . keyword = b . keywordGetter ( ) ; c = f . hasNext ; var h = [ ] ; if ( 1 === d . times && a . storeValue ) { var i = BI . map ( [ a . storeValue ] , function ( a , c ) { var d = b . valueFormatter ( c ) || c ; return { text : d , value : c , title : d , selected : ! 1 } } ) ; h = a . _createItems ( i ) } e ( h . concat ( a . _createItems ( f . items ) ) , g ) , 1 === d . times && a . storeValue && a . setValue ( a . storeValue ) } ) } , hasNext : function ( ) { return c } } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . button _group . on ( BI . SingleSelectList . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SingleSelectSearchLoader . EVENT _CHANGE , arguments ) } ) } , _createItems : function ( a ) { return BI . createItems ( a , { type : "bi.single_select_radio_item" , logic : { dynamic : ! 1 } , height : 25 , selected : ! 1 } ) } , _filterValues : function ( a ) { var b = this . options , c = b . keywordGetter ( ) , d = BI . deepClone ( a . value ) || [ ] , e = BI . map ( d , function ( a , c ) { return { text : b . valueFormatter ( c ) || c , value : c } } ) ; if ( BI . isKey ( c ) ) { var f = BI . Func . getSearchResult ( e , c ) ; d = f . matched . concat ( f . finded ) } return BI . map ( d , function ( a , b ) { return { text : b . text , title : b . text , value : b . value , selected : ! 1 } } ) } , setValue : function ( a ) { this . storeValue = a , this . button _group . setValue ( a ) } , getValue : function ( ) { return this . button _group . getValue ( ) } , getAllButtons : function ( ) { return this . button _group . getAllButtons ( ) } , empty : function ( ) { this . button _group . empty ( ) } , populate : function ( a ) { this . button _group . populate . apply ( this . button _group , arguments ) } , resetHeight : function ( a ) { this . button _group . resetHeight ( a ) } , resetWidth : function ( a ) { this . button _group . resetWidth ( a ) } } ) , BI . SingleSelectSearchLoader . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_search_loader" , BI . SingleSelectSearchLoader ) , BI . SingleSelectSearchPane = BI . inherit ( BI . Widget , { constants : { height : 25 , lgap : 10 , tgap : 5 } , _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectSearchPane . superclass . _defaultConfig . apply ( this , arguments ) , { 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_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 . emp
d [ b ] = b ) } ) ; var e = ! 1 ; return BI . each ( a . assist , function ( a , b ) { BI . isNotNull ( d [ b ] ) && ( e = ! 0 , delete d [ b ] ) } ) , e && ( this . storeValue . value = BI . values ( d ) ) , void c . _adjust ( b ) } this . _joinAll ( a , b ) } , _setStartValue : function ( a ) { this . _startValue = a , this . popup . setStartValue ( a ) } , setValue : function ( a ) { this . storeValue = a || "" , this . _assertValue ( this . storeValue ) , this . combo . setValue ( this . storeValue ) } , getValue : function ( ) { return this . storeValue } , populate : function ( ) { this . _count = null , this . combo . populate . apply ( this . combo , arguments ) } } ) , BI . extend ( BI . SingleSelectCombo , { REQ _GET _DATA _LENGTH : 0 , REQ _GET _ALL _DATA : - 1 } ) , BI . SingleSelectCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.single_select_add_combo" , BI . SingleSelectCombo ) , BI . SingleSelectTrigger = BI . inherit ( BI . Trigger , { constants : { height : 14 , rgap : 4 , lgap : 4 } , _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-trigger bi-border" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , searcher : { } , switcher : { } , adapter : null , masker : { } } ) } , _init : function ( ) { BI . SingleSelectTrigger . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; b . height && this . setHeight ( b . height - 2 ) , this . searcher = BI . createWidget ( b . searcher , { type : "bi.single_select_add_searcher" , height : b . height , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , popup : { } , adapter : b . adapter , masker : b . masker } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _START , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _START ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _PAUSE ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _SEARCHING , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _SEARCHING , arguments ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _STOP , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _STOP ) } ) , this . searcher . on ( BI . SingleSelectSearcher . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SingleSelectTrigger . EVENT _CHANGE , arguments ) } ) ; BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . searcher , width : "fill" } , { el : BI . createWidget ( ) , width : 30 } ] } ) } , getSearcher : function ( ) { return this . searcher } , stopEditing : function ( ) { this . searcher . stopSearch ( ) } , setAdapter : function ( a ) { this . searcher . setAdapter ( a ) } , setValue : function ( a ) { this . searcher . setValue ( a ) } , getKey : function ( ) { return this . searcher . getKey ( ) } , getValue : function ( ) { return this . searcher . getValue ( ) } } ) , BI . SingleSelectTrigger . EVENT _TRIGGER _CLICK = "EVENT_TRIGGER_CLICK" , BI . SingleSelectTrigger . EVENT _COUNTER _CLICK = "EVENT_COUNTER_CLICK" , BI . SingleSelectTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . SingleSelectTrigger . EVENT _START = "EVENT_START" , BI . SingleSelectTrigger . EVENT _STOP = "EVENT_STOP" , BI . SingleSelectTrigger . EVENT _PAUSE = "EVENT_PAUSE" , BI . SingleSelectTrigger . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . SingleSelectTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW = "EVENT_BEFORE_COUNTER_POPUPVIEW" , BI . shortcut ( "bi.single_select_add_trigger" , BI . SingleSelectTrigger ) , BI . SingleSelectSearcher = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectSearcher . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-searcher" , itemsCreator : BI . emptyFn , el : { } , popup : { } , valueFormatter : BI . emptyFn , adapter : null , masker : { } } ) } , _init : function ( ) { BI . SingleSelectSearcher . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( b . el , { type : "bi.single_select_editor" , height : b . height } ) , this . searcher = BI . createWidget ( { type : "bi.searcher" , element : this , height : b . height , isAutoSearch : ! 1 , isAutoSync : ! 1 , onSearch : function ( a , b ) { b ( ) } , el : this . editor , popup : BI . extend ( { type : "bi.single_select_search_add_pane" , valueFormatter : b . valueFormatter , keywordGetter : function ( ) { return a . editor . getValue ( ) } , itemsCreator : function ( c , d ) { c . keyword = a . editor . getValue ( ) , this . setKeyword ( c . keyword ) , b . itemsCreator ( c , d ) } } , b . popup ) , adapter : b . adapter , masker : b . masker } ) , this . searcher . on ( BI . Searcher . EVENT _START , function ( ) { a . fireEvent ( BI . SingleSelectSearcher . EVENT _START ) } ) , this . searcher . on ( BI . Searcher . EVENT _PAUSE , function ( ) { this . hasMatched ( ) , a . fireEvent ( BI . SingleSelectSearcher . EVENT _PAUSE ) } ) , this . searcher . on ( BI
} , _checkVoid : function ( a ) { return ! Date . checkVoid ( a . year , a . month , a . day , this . constants . DATE _MIN _VALUE , this . constants . DATE _MAX _VALUE ) [ 0 ] } , _check : function ( a , b ) { var c = a . match ( /\d+/g ) , d = b . match ( /\d+/g ) ; return this . _dateCheck ( a ) && Date . checkLegal ( a ) && this . _checkVoid ( { year : c [ 0 ] , month : c [ 1 ] , day : c [ 2 ] } ) && this . _dateCheck ( b ) && Date . checkLegal ( b ) && this . _checkVoid ( { year : d [ 0 ] , month : d [ 1 ] , day : d [ 2 ] } ) } , _compare : function ( a , b ) { return a = Date . parseDateTime ( a , "%Y-%X-%d" ) . print ( "%Y-%X-%d" ) , b = Date . parseDateTime ( b , "%Y-%X-%d" ) . print ( "%Y-%X-%d" ) , BI . isNotNull ( a ) && BI . isNotNull ( b ) && a > b } , _setTitle : function ( a ) { this . left . setTitle ( a ) , this . right . setTitle ( a ) , this . label . setTitle ( a ) } , _clearTitle : function ( ) { this . left . setTitle ( "" ) , this . right . setTitle ( "" ) , this . label . setTitle ( "" ) } , setValue : function ( a ) { a = a || { } , this . left . setValue ( a . start ) , this . right . setValue ( a . end ) } , getValue : function ( ) { return { start : this . left . getValue ( ) , end : this . right . getValue ( ) } } } ) , BI . TimeInterval . EVENT _VALID = "EVENT_VALID" , BI . TimeInterval . EVENT _ERROR = "EVENT_ERROR" , BI . TimeInterval . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.time_interval" , BI . TimeInterval ) , BI . YearCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . YearCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-year-combo" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" , height : 25 } ) } , _init : function ( ) { BI . YearCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . storeValue = "" , this . trigger = BI . createWidget ( { type : "bi.year_trigger" , min : b . min , max : b . max , value : b . value || "" } ) , this . trigger . on ( BI . YearTrigger . EVENT _FOCUS , function ( ) { a . storeValue = this . getKey ( ) } ) , this . trigger . on ( BI . YearTrigger . EVENT _START , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . YearTrigger . EVENT _STOP , function ( ) { a . combo . showView ( ) } ) , this . trigger . on ( BI . YearTrigger . EVENT _ERROR , function ( ) { a . combo . isViewVisible ( ) && a . combo . hideView ( ) } ) , this . trigger . on ( BI . YearTrigger . EVENT _CONFIRM , function ( ) { a . combo . isViewVisible ( ) || ( this . getKey ( ) && this . getKey ( ) !== a . storeValue ? a . setValue ( this . getKey ( ) ) : this . getKey ( ) || a . setValue ( ) , a . fireEvent ( BI . YearCombo . EVENT _CONFIRM ) ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , element : this , destroyWhenHide : ! 0 , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : this . trigger , popup : { minWidth : 85 , stopPropagation : ! 1 , el : { type : "bi.year_popup" , ref : function ( ) { a . popup = this } , listeners : [ { eventName : BI . YearPopup . EVENT _CHANGE , action : function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . YearCombo . EVENT _CONFIRM ) } } ] , behaviors : b . behaviors , min : b . min , max : b . max } , value : b . value || "" } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { var b = a . trigger . getKey ( ) ; BI . isNotNull ( b ) ? a . popup . setValue ( b ) : b || b === a . storeValue ? a . setValue ( ) : a . popup . setValue ( a . storeValue ) , a . fireEvent ( BI . YearCombo . EVENT _BEFORE _POPUPVIEW ) } ) } , setValue : function ( a ) { this . combo . setValue ( a || "" ) } , getValue : function ( ) { return this . popup . getValue ( ) } } ) , BI . YearCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . YearCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.year_combo" , BI . YearCombo ) , BI . YearPopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . YearPopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-year-popup" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" } ) } , _createYearCalendar : function ( a ) { var b = this . options , c = this . _year , d = BI . createWidget ( { type : "bi.year_calendar" , behaviors : b . behaviors , min : b . min , max : b . max , logic : { dynamic : ! 0 } , year : c + 12 * a } ) ; return d . setValue ( this . _year ) , d } , _init : function ( ) { BI . YearPopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . selectedYear = this . _year = Date . getDate ( ) . getFullYear ( ) ; var c = BI . createWidget ( { type : "bi.icon_button" , cls : "pre-page-h-font" , width : 25 , height : 25 , value : - 1 } ) , d = BI . createWidget ( { type : "bi.icon_button" , cls : "next-page-h-font" , width : 25 , height : 25 , value : 1 } ) ; this . navigation = BI . createWidget ( { type : "bi.navigation" , element : this , single : ! 0 , logic : { dynamic : ! 0 } , tab : { cls : "year-popup-navigation bi-high-light bi-border-top" , height : 25 , items : [ c , d ] } , cardCreator : BI . bind ( this . _createYearCalendar , this ) , afterCardShow : function ( ) { this . setValue ( a . selectedYear ) ; var b = th
void this . loadUrl ( ) ) } , loadUrl : function ( a ) { return a = this . fragment = this . getFragment ( a ) , _ . any ( this . handlers , function ( b ) { if ( b . route . test ( a ) ) return b . callback ( a ) , ! 0 } ) } , navigate : function ( a , b ) { if ( ! j . started ) return ! 1 ; b && b !== ! 0 || ( b = { trigger : ! ! b } ) , a = this . getFragment ( a || "" ) ; var c = this . root ; "" !== a && "?" !== a . charAt ( 0 ) || ( c = c . slice ( 0 , - 1 ) || "/" ) ; var d = c + a ; if ( a = decodeURI ( a . replace ( m , "" ) ) , this . fragment !== a ) { if ( this . fragment = a , this . _hasPushState ) this . history [ b . replace ? "replaceState" : "pushState" ] ( { } , document . title , d ) ; else { if ( ! this . _wantsHashChange ) return this . location . assign ( d ) ; this . _updateHash ( this . location , a , b . replace ) , this . iframe && a !== this . getHash ( this . iframe ) && ( b . replace || this . iframe . document . open ( ) . close ( ) , this . _updateHash ( this . iframe . location , a , b . replace ) ) } return b . trigger ? this . loadUrl ( a ) : void 0 } } , _updateHash : function ( a , b , c ) { if ( c ) { var d = a . href . replace ( /(javascript:|#).*$/ , "" ) ; a . replace ( d + "#" + b ) } else a . hash = "#" + b } } ) , BI . history = new j } ( ) , BI . servletURL = "https://fanruan.coding.me/fineui/dist/" , BI . resourceURL = "https://fanruan.coding.me/fineui/dist/resource/" , BI . i18n = { "BI-Multi_Date_Quarter_End" : "季度末" , "BI-Multi_Date_Month_Begin" : "月初" , "BI-Multi_Date_YMD" : "年/月/日" , "BI-Custom_Color" : "自定义颜色" , "BI-Numerical_Interval_Input_Data" : "请输入数值" , "BI-Please_Input_Natural_Number" : "请输入非负整数" , "BI-No_More_Data" : "无更多数据" , "BI-Basic_Altogether" : "共" , "BI-Basic_Sunday" : "星期日" , "BI-Widget_Background_Colour" : "组件背景" , "BI-Color_Picker_Error_Text" : "请输入0~255的正整数" , "BI-Multi_Date_Month" : "月" , "BI-No_Selected_Item" : "没有可选项" , "BI-Multi_Date_Year_Begin" : "年初" , "BI-Quarter_1" : "第1季度" , "BI-Quarter_2" : "第2季度" , "BI-Quarter_3" : "第3季度" , "BI-Quarter_4" : "第4季度" , "BI-Multi_Date_Year_Next" : "年后" , "BI-Multi_Date_Month_Prev" : "个月前" , "BI-Month_Trigger_Error_Text" : "请输入1~12的正整数" , "BI-Less_And_Equal" : "小于等于" , "BI-Year_Trigger_Invalid_Text" : "请输入有效时间" , "BI-Multi_Date_Week_Next" : "周后" , "BI-Font_Size" : "字号" , "BI-Basic_Total" : "共" , "BI-Already_Selected" : "已选择" , "BI-Formula_Insert" : "插入" , "BI-Select_All" : "全选" , "BI-Basic_Tuesday" : "星期二" , "BI-Multi_Date_Month_End" : "月末" , "BI-Load_More" : "点击加载更多数据" , "BI-Basic_September" : "九月" , "BI-Current_Is_Last_Page" : "当前已是最后一页" , "BI-Basic_Auto" : "自动" , "BI-Basic_Count" : "个" , "BI-Basic_Value" : "值" , "BI-Basic_Unrestricted" : "无限制" , "BI-Quarter_Trigger_Error_Text" : "请输入1~4的正整数" , "BI-Basic_More" : "更多" , "BI-Basic_Wednesday" : "星期三" , "BI-Basic_Bold" : "加粗" , "BI-Basic_Simple_Saturday" : "六" , "BI-Multi_Date_Month_Next" : "个月后" , "BI-Basic_March" : "三月" , "BI-Current_Is_First_Page" : "当前已是第一页" , "BI-Basic_Thursday" : "星期四" , "BI-Basic_Prompt" : "提示" , "BI-Multi_Date_Today" : "今天" , "BI-Multi_Date_Quarter_Prev" : "个季度前" , "BI-Row_Header" : "行表头" , "BI-Date_Trigger_Error_Text" : "日期格式示例:2015-3-11" , "BI-Basic_Cancel" : "取消" , "BI-Basic_January" : "一月" , "BI-Basic_June" : "六月" , "BI-Basic_July" : "七月" , "BI-Basic_April" : "四月" , "BI-Multi_Date_Quarter_Begin" : "季度初" , "BI-Multi_Date_Week" : "周" , "BI-Click_Blank_To_Select" : '点按"空格键"选中匹配项' , "BI-Basic_August" : "八月" , "BI-Word_Align_Left" : "文字居左" , "BI-Basic_November" : "十一月" , "BI-Font_Colour" : "字体颜色" , "BI-Multi_Date_Day_Prev" : "天前" , "BI-Select_Part" : "部分选择" , "BI-Multi_Date_Day_Next" : "天后" , "BI-Less_Than" : "小于" , "BI-Basic_February" : "二月" , "BI-Multi_Date_Year" : "年" , "BI-Number_Index" : "序号" , "BI-Multi_Date_Week_Prev" : "周前" , "BI-Next_Page" : "下一页" , "BI-Right_Page" : "向右翻页" , "BI-Numerical_Interval_Signal_Value" : "前后值相等,请将操作符改为“≤”" , "BI-Basic_December" : "十二月" , "BI-Basic_Saturday" : "星期六" , "BI-Basic_Simple_Wednesday" : "三" , "BI-Multi_Date_Quarter_Next" : "个季度后" , "BI-Basic_October" : "十月" , "BI-Basic_Simple_Friday" : "五" , "BI-Primary_Key" : "主键" , "BI-Basic_Save" : "保存" , "BI-Numerical_Interval_Number_Value" : "请保证前面的数值小于/等于后面的数值" , "BI-Previous_Page" : "上一页" , " BI - No _S