/*! fineui 08-08-2018 */
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 digitLength ( a ) { var b = a . toString ( ) . split ( /[eE]/ ) , c = ( b [ 0 ] . split ( "." ) [ 1 ] || "" ) . length - + ( b [ 1 ] || 0 ) ; return c > 0 ? c : 0 } function float2Fixed ( a ) { if ( a . toString ( ) . indexOf ( "e" ) === - 1 ) return Number ( a . toString ( ) . replace ( "." , "" ) ) ; var b = digitLength ( a ) ; return b > 0 ? a * Math . pow ( 10 , b ) : a } function times ( a , b ) { for ( var c = [ ] , d = 2 ; d < arguments . length ; d ++ ) c [ d - 2 ] = arguments [ d ] ; if ( c . length > 0 ) return times . apply ( void 0 , [ times ( a , b ) , c [ 0 ] ] . concat ( c . slice ( 1 ) ) ) ; var e = float2Fixed ( a ) , f = float2Fixed ( b ) , g = digitLength ( a ) + digitLength ( b ) , h = e * f ; return h / Math . pow ( 10 , g ) } function accDivide ( a , b ) { for ( var c = [ ] , d = 2 ; d < arguments . length ; d ++ ) c [ d - 2 ] = arguments [ d ] ; if ( c . length > 0 ) return accDivide . apply ( void 0 , [ accDivide ( a , b ) , c [ 0 ] ] . concat ( c . slice ( 1 ) ) ) ; var e = float2Fixed ( a ) , f = float2Fixed ( b ) ; return times ( e / f , Math . pow ( 10 , digitLength ( b ) - digitLength ( a ) ) ) } function _classCallCheck ( a , b ) { if ( ! ( a instanceof b ) ) throw new TypeError ( "Cannot call a class as a function" ) } ! 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 . g
this . selected = ia . inArray ( ia ( this ) . val ( ) , c ) >= 0 } ) , c . length || ( a . selectedIndex = - 1 ) , c } } } , attr : function ( a , c , d ) { var e , f , g , h = a . nodeType ; if ( a && 3 !== h && 8 !== h && 2 !== h ) return typeof a . getAttribute === V ? ia . prop ( a , c , d ) : ( f = 1 !== h || ! ia . isXMLDoc ( a ) , f && ( c = c . toLowerCase ( ) , e = ia . attrHooks [ c ] || ( Ga . test ( c ) ? Ba : Aa ) ) , d === b ? e && f && "get" in e && null !== ( g = e . get ( a , c ) ) ? g : ( typeof a . getAttribute !== V && ( g = a . getAttribute ( c ) ) , null == g ? b : g ) : null !== d ? e && f && "set" in e && ( g = e . set ( a , d , c ) ) !== b ? g : ( a . setAttribute ( c , d + "" ) , d ) : void ia . removeAttr ( a , c ) ) } , removeAttr : function ( a , b ) { var c , d , e = 0 , f = b && b . match ( ka ) ; if ( f && 1 === a . nodeType ) for ( ; c = f [ e ++ ] ; ) d = ia . propFix [ c ] || c , Ga . test ( c ) ? ! Ia && Ha . test ( c ) ? a [ ia . camelCase ( "default-" + c ) ] = a [ d ] = ! 1 : a [ d ] = ! 1 : ia . attr ( a , c , "" ) , a . removeAttribute ( Ia ? c : d ) } , attrHooks : { type : { set : function ( a , b ) { if ( ! ia . support . radioValue && "radio" === b && ia . nodeName ( a , "input" ) ) { var c = a . value ; return a . setAttribute ( "type" , b ) , c && ( a . value = c ) , b } } } } , propFix : { tabindex : "tabIndex" , readonly : "readOnly" , "for" : "htmlFor" , "class" : "className" , maxlength : "maxLength" , cellspacing : "cellSpacing" , cellpadding : "cellPadding" , rowspan : "rowSpan" , colspan : "colSpan" , usemap : "useMap" , frameborder : "frameBorder" , contenteditable : "contentEditable" } , prop : function ( a , c , d ) { var e , f , g , h = a . nodeType ; if ( a && 3 !== h && 8 !== h && 2 !== h ) return g = 1 !== h || ! ia . isXMLDoc ( a ) , g && ( c = ia . propFix [ c ] || c , f = ia . propHooks [ c ] ) , d !== b ? f && "set" in f && ( e = f . set ( a , d , c ) ) !== b ? e : a [ c ] = d : f && "get" in f && null !== ( e = f . get ( a , c ) ) ? e : a [ c ] } , propHooks : { tabIndex : { get : function ( a ) { var c = a . getAttributeNode ( "tabindex" ) ; return c && c . specified ? parseInt ( c . value , 10 ) : Ea . test ( a . nodeName ) || Fa . test ( a . nodeName ) && a . href ? 0 : b } } } } ) , Ba = { get : function ( a , c ) { var d = ia . prop ( a , c ) , e = "boolean" == typeof d && a . getAttribute ( c ) , f = "boolean" == typeof d ? Ja && Ia ? null != e : Ha . test ( c ) ? a [ ia . camelCase ( "default-" + c ) ] : ! ! e : a . getAttributeNode ( c ) ; return f && f . value !== ! 1 ? c . toLowerCase ( ) : b } , set : function ( a , b , c ) { return b === ! 1 ? ia . removeAttr ( a , c ) : Ja && Ia || ! Ha . test ( c ) ? a . setAttribute ( ! Ia && ia . propFix [ c ] || c , c ) : a [ ia . camelCase ( "default-" + c ) ] = a [ c ] = ! 0 , c } } , Ja && Ia || ( ia . attrHooks . value = { get : function ( a , c ) { var d = a . getAttributeNode ( c ) ; return ia . nodeName ( a , "input" ) ? a . defaultValue : d && d . specified ? d . value : b } , set : function ( a , b , c ) { return ia . nodeName ( a , "input" ) ? void ( a . defaultValue = b ) : Aa && Aa . set ( a , b , c ) } } ) , Ia || ( Aa = ia . valHooks . button = { get : function ( a , c ) { var d = a . getAttributeNode ( c ) ; return d && ( "id" === c || "name" === c || "coords" === c ? "" !== d . value : d . specified ) ? d . value : b } , set : function ( a , c , d ) { var e = a . getAttributeNode ( d ) ; return e || a . setAttributeNode ( e = a . ownerDocument . createAttribute ( d ) ) , e . value = c += "" , "value" === d || c === a . getAttribute ( d ) ? c : b } } , ia . attrHooks . contenteditable = { get : Aa . get , set : function ( a , b , c ) { Aa . set ( a , "" !== b && b , c ) } } , ia . each ( [ "width" , "height" ] , function ( a , b ) { ia . attrHooks [ b ] = ia . extend ( ia . attrHooks [ b ] , { set : function ( a , c ) { if ( "" === c ) return a . setAttribute ( b , "auto" ) , c } } ) } ) ) , ia . support . hrefNormalized || ( ia . each ( [ "href" , "src" , "width" , "height" ] , function ( a , c ) { ia . attrHooks [ c ] = ia . extend ( ia . attrHooks [ c ] , { get : function ( a ) { var d = a . getAttribute ( c , 2 ) ; return null == d ? b : d } } ) } ) , ia . each ( [ "href" , "src" ] , function ( a , b ) { ia . propHooks [ b ] = { get : function ( a ) { return a . getAttribute ( b , 4 ) } } } ) ) , ia . support . style || ( ia . attrHooks . style = { get : function ( a ) { return a . style . cssText || b } , set : function ( a , b ) { return a . style . cssText = b + "" } } ) , ia . support . optSelected || ( ia . propHooks . 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 = { } ) , (
children : ! 0 , contents : ! 0 , next : ! 0 , prev : ! 0 } ; ia . fn . extend ( { find : function ( a ) { var b , c , d , e = this . length ; if ( "string" != typeof a ) return d = this , this . pushStack ( ia ( a ) . filter ( function ( ) { for ( b = 0 ; b < e ; b ++ ) if ( ia . contains ( d [ b ] , this ) ) return ! 0 } ) ) ; for ( c = [ ] , b = 0 ; b < e ; b ++ ) ia . find ( a , this [ b ] , c ) ; return c = this . pushStack ( e > 1 ? ia . unique ( c ) : c ) , c . selector = ( this . selector ? this . selector + " " : "" ) + a , c } , has : function ( a ) { var b , c = ia ( a , this ) , d = c . length ; return this . filter ( function ( ) { for ( b = 0 ; b < d ; b ++ ) if ( ia . contains ( this , c [ b ] ) ) return ! 0 } ) } , not : function ( a ) { return this . pushStack ( l ( this , a , ! 1 ) ) } , filter : function ( a ) { return this . pushStack ( l ( this , a , ! 0 ) ) } , is : function ( a ) { return ! ! a && ( "string" == typeof a ? Sa . test ( a ) ? ia ( a , this . context ) . index ( this [ 0 ] ) >= 0 : ia . filter ( a , this ) . length > 0 : this . filter ( a ) . length > 0 ) } , closest : function ( a , b ) { for ( var c , d = 0 , e = this . length , f = [ ] , g = Sa . test ( a ) || "string" != typeof a ? ia ( a , b || this . context ) : 0 ; d < e ; d ++ ) for ( c = this [ d ] ; c && c . ownerDocument && c !== b && 11 !== c . nodeType ; ) { if ( g ? g . index ( c ) > - 1 : ia . find . matchesSelector ( c , a ) ) { f . push ( c ) ; break } c = c . parentNode } return this . pushStack ( f . length > 1 ? ia . unique ( f ) : f ) } , index : function ( a ) { return a ? "string" == typeof a ? ia . inArray ( this [ 0 ] , ia ( a ) ) : ia . inArray ( a . jquery ? a [ 0 ] : a , this ) : this [ 0 ] && this [ 0 ] . parentNode ? this . first ( ) . prevAll ( ) . length : - 1 } , add : function ( a , b ) { var c = "string" == typeof a ? ia ( a , b ) : ia . makeArray ( a && a . nodeType ? [ a ] : a ) , d = ia . merge ( this . get ( ) , c ) ; return this . pushStack ( ia . unique ( d ) ) } , addBack : function ( a ) { return this . add ( null == a ? this . prevObject : this . prevObject . filter ( a ) ) } } ) , ia . fn . andSelf = ia . fn . addBack , ia . each ( { parent : function ( a ) { var b = a . parentNode ; return b && 11 !== b . nodeType ? b : null } , parents : function ( a ) { return ia . dir ( a , "parentNode" ) } , parentsUntil : function ( a , b , c ) { return ia . dir ( a , "parentNode" , c ) } , next : function ( a ) { return k ( a , "nextSibling" ) } , prev : function ( a ) { return k ( a , "previousSibling" ) } , nextAll : function ( a ) { return ia . dir ( a , "nextSibling" ) } , prevAll : function ( a ) { return ia . dir ( a , "previousSibling" ) } , nextUntil : function ( a , b , c ) { return ia . dir ( a , "nextSibling" , c ) } , prevUntil : function ( a , b , c ) { return ia . dir ( a , "previousSibling" , c ) } , siblings : function ( a ) { return ia . sibling ( ( a . parentNode || { } ) . firstChild , a ) } , children : function ( a ) { return ia . sibling ( a . firstChild ) } , contents : function ( a ) { return ia . nodeName ( a , "iframe" ) ? a . contentDocument || a . contentWindow . document : ia . merge ( [ ] , a . childNodes ) } } , function ( a , b ) { ia . fn [ a ] = function ( c , d ) { var e = ia . map ( this , b , c ) ; return Pa . test ( a ) || ( d = c ) , d && "string" == typeof d && ( e = ia . filter ( d , e ) ) , e = this . length > 1 && ! Ta [ a ] ? ia . unique ( e ) : e , this . length > 1 && Qa . test ( a ) && ( e = e . reverse ( ) ) , this . pushStack ( e ) } } ) , ia . extend ( { filter : function ( a , b , c ) { return c && ( a = ":not(" + a + ")" ) , 1 === b . length ? ia . find . matchesSelector ( b [ 0 ] , a ) ? [ b [ 0 ] ] : [ ] : ia . find . matches ( a , b ) } , dir : function ( a , c , d ) { for ( var e = [ ] , f = a [ c ] ; f && 9 !== f . nodeType && ( d === b || 1 !== f . nodeType || ! ia ( f ) . is ( d ) ) ; ) 1 === f . nodeType && e . push ( f ) , f = f [ c ] ; return e } , sibling : function ( a , b ) { for ( var c = [ ] ; a ; a = a . nextSibling ) 1 === a . nodeType && a !== b && c . push ( a ) ; return c } } ) ; var Ua = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video" , Va = / jQuery\d+="(?:null|\d+)"/g , Wa = new RegExp ( "<(?:" + Ua + ")[\\s/>]" , "i" ) , Xa = /^\s+/ , Ya = /<(?!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 ] && thi
return c } function k ( a , b ) { for ( var c = - 1 , d = null == a ? 0 : a . length ; ++ c < d ; ) if ( b ( a [ c ] , c , a ) ) return ! 0 ; return ! 1 } function l ( a ) { return a . split ( "" ) } function m ( a , b , c ) { var d ; return c ( a , function ( a , c , e ) { if ( b ( a , c , e ) ) return d = c , ! 1 } ) , d } function n ( a , b , c , d ) { for ( var e = a . length , f = c + ( d ? 1 : - 1 ) ; d ? f -- : ++ f < e ; ) if ( b ( a [ f ] , f , a ) ) return f ; return - 1 } function o ( a , b , c ) { return b === b ? J ( a , b , c ) : n ( a , p , c ) } function p ( a ) { return a !== a } function q ( a ) { return function ( b ) { return null == b ? Ie : b [ a ] } } function r ( a ) { return function ( b ) { return null == a ? Ie : a [ b ] } } function s ( a , b , c , d , e ) { return e ( a , function ( a , e , f ) { c = d ? ( d = ! 1 , a ) : b ( c , a , e , f ) } ) , c } function t ( a , b ) { var c = a . length ; for ( a . sort ( b ) ; c -- ; ) a [ c ] = a [ c ] . value ; return a } function u ( a , b ) { for ( var c = - 1 , d = Array ( a ) ; ++ c < a ; ) d [ c ] = b ( c ) ; return d } function v ( a ) { return function ( b ) { return a ( b ) } } function w ( a , b ) { return h ( b , function ( b ) { return a [ b ] } ) } function x ( a , b ) { return a . has ( b ) } function y ( a , b ) { for ( var c = - 1 , d = a . length ; ++ c < d && o ( b , a [ c ] , 0 ) > - 1 ; ) ; return c } function z ( a , b ) { for ( var c = a . length ; c -- && o ( b , a [ c ] , 0 ) > - 1 ; ) ; return c } function A ( a , b ) { for ( var c = a . length , d = 0 ; c -- ; ) a [ c ] === b && ++ d ; return d } function B ( a , b ) { return null == a ? Ie : a [ b ] } function C ( a ) { return Cg . test ( a ) } function D ( a ) { for ( var b , c = [ ] ; ! ( b = a . next ( ) ) . done ; ) c . push ( b . value ) ; return c } function E ( a ) { var b = - 1 , c = Array ( a . size ) ; return a . forEach ( function ( a , d ) { c [ ++ b ] = [ d , a ] } ) , c } function F ( a , b ) { return function ( c ) { return a ( b ( c ) ) } } function G ( a , b ) { for ( var c = - 1 , d = a . length , e = 0 , f = [ ] ; ++ c < d ; ) { var g = a [ c ] ; g !== b && g !== Oe || ( a [ c ] = Oe , f [ e ++ ] = c ) } return f } function H ( a , b ) { return "__proto__" == b ? Ie : a [ b ] } function I ( a ) { var b = - 1 , c = Array ( a . size ) ; return a . forEach ( function ( a ) { c [ ++ b ] = a } ) , c } function J ( a , b , c ) { for ( var d = c - 1 , e = a . length ; ++ d < e ; ) if ( a [ d ] === b ) return d ; return - 1 } function K ( a ) { return C ( a ) ? M ( a ) : Vg ( a ) } function L ( a ) { return C ( a ) ? N ( a ) : l ( a ) } function M ( a ) { for ( var b = Bg . lastIndex = 0 ; Bg . test ( a ) ; ) ++ b ; return b } function N ( a ) { return a . match ( Bg ) || [ ] } function O ( a ) { if ( Td ( a ) && ! si ( a ) && ! ( a instanceof R ) ) { if ( a instanceof Q ) return a ; if ( ah . call ( a , "__wrapped__" ) ) return Xc ( a ) } return new Q ( a ) } function P ( ) { } function Q ( a , b ) { this . _ _wrapped _ _ = a , this . _ _actions _ _ = [ ] , this . _ _chain _ _ = ! ! b , this . _ _index _ _ = 0 , this . _ _values _ _ = Ie } function R ( a ) { this . _ _wrapped _ _ = a , this . _ _actions _ _ = [ ] , this . _ _dir _ _ = 1 , this . _ _filtered _ _ = ! 1 , this . _ _iteratees _ _ = [ ] , this . _ _takeCount _ _ = mf , this . _ _views _ _ = [ ] } function S ( ) { var a = new R ( this . _ _wrapped _ _ ) ; return a . _ _actions _ _ = Qb ( this . _ _actions _ _ ) , a . _ _dir _ _ = this . _ _dir _ _ , a . _ _filtered _ _ = this . _ _filtered _ _ , a . _ _iteratees _ _ = Qb ( this . _ _iteratees _ _ ) , a . _ _takeCount _ _ = this . _ _takeCount _ _ , a . _ _views _ _ = Qb ( this . _ _views _ _ ) , a } function T ( ) { if ( this . _ _filtered _ _ ) { var a = new R ( this ) ; a . _ _dir _ _ = - 1 , a . _ _filtered _ _ = ! 0 } else a = this . clone ( ) , a . _ _dir _ _ *= - 1 ; return a } function U ( ) { var a = this . _ _wrapped _ _ . value ( ) , b = this . _ _dir _ _ , c = si ( a ) , d = b < 0 , e = c ? a . length : 0 , f = uc ( 0 , e , this . _ _views _ _ ) , g = f . start , h = f . end , i = h - g , j = d ? h : g - 1 , k = this . _ _iteratees _ _ , l = k . length , m = 0 , n = Ah ( i , this . _ _takeCount _ _ ) ; if ( ! c || ! d && e == i && n == i ) return Bb ( a , this . _ _actions _ _ ) ; var o = [ ] ; a : for ( ; i -- && m < n ; ) { j += b ; for ( var p = - 1 , q = a [ j ] ; ++ p < l ; ) { var r = k [ p ] , s = r . iteratee , t = r . type , u = s ( q ) ; if ( t == ff ) q = u ; else if ( ! u ) { if ( t == ef ) continue a ; break a } } o [ m ++ ] = q } return o } function V ( a ) { var b = - 1 , c = null == a ? 0 : a . length ; for ( this . clear ( ) ; ++ b < c ; ) { var d = a [ b ] ; this . set ( d [ 0 ] , d [ 1 ] ) } } function W ( ) { this . _ _data _ _ = Ih ? Ih ( null ) : { } , this . size = 0 } function X ( a ) { var b = this . has ( a ) && delete this . _ _data _ _ [ a ] ; return this . size -= b ? 1 : 0 , b } function Y ( a ) { var b = this . _ _data _ _ ; if ( Ih ) { var c = b [ a ] ; return c === Me ? Ie : c } return ah . call ( b , a ) ? b [ a ] : Ie } function Z ( a ) { var b = this . _ _data _ _ ; return Ih ? b [ a ] !== Ie : ah . call ( b , a ) } function $ ( a , b ) { var c = this . _ _data _ _ ; return this . size += this . has ( a ) ? 0 : 1 , c [ a ] = Ih && b === Ie ? Me : b , this } function _ ( a ) { var b = - 1 , c = null == a ? 0 : a . length ; for ( this . clear ( ) ; ++ b < c ; ) { var d = a [ b ] ; this . set ( d [ 0 ] , d [ 1 ] ) } } function aa ( ) { this . _ _data _ _ = [ ] , this . size = 0 } function ba ( a ) { var b = this . _ _data _ _ , c = xa ( b , a ) ; if ( c < 0 ) return ! 1 ; var d = b . length - 1 ; return c == d ? b . pop ( ) : oh . call ( b , c , 1 ) , -- this . size , ! 0 } function ca ( a ) { var b = this . _ _data _ _ , c = xa ( b , a ) ; return c < 0 ? Ie : b [ c ] [ 1 ] } function da ( a ) { return xa ( this . _ _data _ _ , a ) > - 1 } function ea ( a , b ) { var c = this . _ _data _ _ , d = xa ( c , a ) ; return d < 0 ? ( ++ this . size , c . push ( [ a , b ] ) ) : c [ d ] [ 1 ] = b , this } function fa ( a ) { var b = - 1 , c = null == a ? 0 : a . length ; for ( this . clear ( )
} function ye ( a ) { return kb ( Ea ( a , Pe ) ) } function ze ( a , b , d ) { var e = le ( b ) , f = Na ( b , e ) ; null != d || Sd ( b ) && ( f . length || ! e . length ) || ( d = b , b = a , a = this , f = Na ( b , le ( b ) ) ) ; var g = ! ( Sd ( d ) && "chain" in d && ! d . chain ) , h = Qd ( a ) ; return c ( f , function ( c ) { var d = b [ c ] ; a [ c ] = d , h && ( a . prototype [ c ] = function ( ) { var b = this . _ _chain _ _ ; if ( g || b ) { var c = a ( this . _ _wrapped _ _ ) , e = c . _ _actions _ _ = Qb ( this . _ _actions _ _ ) ; return e . push ( { func : d , args : arguments , thisArg : a } ) , c . _ _chain _ _ = b , c } return d . apply ( a , i ( [ this . value ( ) ] , arguments ) ) } ) } ) , a } function Ae ( ) { return Kg . _ === this && ( Kg . _ = fh ) , this } function Be ( ) { } function Ce ( a ) { return Ec ( a ) ? q ( Uc ( a ) ) : rb ( a ) } function De ( ) { return [ ] } function Ee ( ) { return ! 1 } function Fe ( a ) { var b = ++ bh ; return ee ( a ) + b } function Ge ( a ) { return a && a . length ? Ia ( a , we , Ra ) : Ie } function He ( a ) { return a && a . length ? Ia ( a , we , ib ) : Ie } var Ie , Je = "4.17.5" , Ke = 200 , Le = "Expected a function" , Me = "__lodash_hash_undefined__" , Ne = 500 , Oe = "__lodash_placeholder__" , Pe = 1 , Qe = 2 , Re = 4 , Se = 1 , Te = 2 , Ue = 1 , Ve = 2 , We = 4 , Xe = 8 , Ye = 16 , Ze = 32 , $e = 64 , _e = 128 , af = 256 , bf = 512 , cf = 800 , df = 16 , ef = 1 , ff = 2 , gf = 3 , hf = 1 / 0 , jf = 9007199254740991 , kf = 1.7976931348623157 e308 , lf = NaN , mf = 4294967295 , nf = [ [ "ary" , _e ] , [ "bind" , Ue ] , [ "bindKey" , Ve ] , [ "curry" , Xe ] , [ "curryRight" , Ye ] , [ "flip" , bf ] , [ "partial" , Ze ] , [ "partialRight" , $e ] , [ "rearg" , af ] ] , of = "[object Arguments]" , pf = "[object Array]" , qf = "[object AsyncFunction]" , rf = "[object Boolean]" , sf = "[object Date]" , tf = "[object Error]" , uf = "[object Function]" , vf = "[object GeneratorFunction]" , wf = "[object Map]" , xf = "[object Number]" , yf = "[object Null]" , zf = "[object Object]" , Af = "[object Promise]" , Bf = "[object Proxy]" , Cf = "[object RegExp]" , Df = "[object Set]" , Ef = "[object String]" , Ff = "[object Symbol]" , Gf = "[object Undefined]" , Hf = "[object WeakMap]" , If = "[object ArrayBuffer]" , Jf = "[object DataView]" , Kf = "[object Float32Array]" , Lf = "[object Float64Array]" , Mf = "[object Int8Array]" , Nf = "[object Int16Array]" , Of = "[object Int32Array]" , Pf = "[object Uint8Array]" , Qf = "[object Uint8ClampedArray]" , Rf = "[object Uint16Array]" , Sf = "[object Uint32Array]" , Tf = /[&<>"']/g , Uf = RegExp ( Tf . source ) , Vf = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/ , Wf = /^\w*$/ , Xf = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g , Yf = /[\\^$.*+?()[\]{}|]/g , Zf = /^\s+|\s+$/g , $f = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/ , _f = /\{\n\/\* \[wrapped with (.+)\] \*/ , ag = /,? & / , bg = /\\(\\)?/g , cg = /\w*$/ , dg = /^[-+]0x[0-9a-f]+$/i , eg = /^0b[01]+$/i , fg = /^\[object .+?Constructor\]$/ , gg = /^0o[0-7]+$/i , hg = /^(?:0|[1-9]\d*)$/ , ig = "\\ud800-\\udfff" , jg = "\\u0300-\\u036f" , kg = "\\ufe20-\\ufe2f" , lg = "\\u20d0-\\u20ff" , mg = jg + kg + lg , ng = "\\ufe0e\\ufe0f" , og = "[" + ig + "]" , pg = "[" + mg + "]" , qg = "\\ud83c[\\udffb-\\udfff]" , rg = "(?:" + pg + "|" + qg + ")" , sg = "[^" + ig + "]" , tg = "(?:\\ud83c[\\udde6-\\uddff]){2}" , ug = "[\\ud800-\\udbff][\\udc00-\\udfff]" , vg = "\\u200d" , wg = rg + "?" , xg = "[" + ng + "]?" , yg = "(?:" + vg + "(?:" + [ sg , tg , ug ] . join ( "|" ) + ")" + xg + wg + ")*" , zg = xg + wg + yg , Ag = "(?:" + [ sg + pg + "?" , pg , tg , ug , og ] . join ( "|" ) + ")" , Bg = RegExp ( qg + "(?=" + qg + ")|" + Ag + zg , "g" ) , Cg = RegExp ( "[" + vg + ig + mg + ng + "]" ) , Dg = { } ; Dg [ Kf ] = Dg [ Lf ] = Dg [ Mf ] = Dg [ Nf ] = Dg [ Of ] = Dg [ Pf ] = Dg [ Qf ] = Dg [ Rf ] = Dg [ Sf ] = ! 0 , Dg [ of ] = Dg [ pf ] = Dg [ If ] = Dg [ rf ] = Dg [ Jf ] = Dg [ sf ] = Dg [ tf ] = Dg [ uf ] = Dg [ wf ] = Dg [ xf ] = Dg [ zf ] = Dg [ Cf ] = Dg [ Df ] = Dg [ Ef ] = Dg [ Hf ] = ! 1 ; var Eg = { } ; Eg [ of ] = Eg [ pf ] = Eg [ If ] = Eg [ Jf ] = Eg [ rf ] = Eg [ sf ] = Eg [ Kf ] = Eg [ Lf ] = Eg [ Mf ] = Eg [ Nf ] = Eg [ Of ] = Eg [ wf ] = Eg [ xf ] = Eg [ zf ] = Eg [ Cf ] = Eg [ Df ] = Eg [ Ef ] = Eg [ Ff ] = Eg [ Pf ] = Eg [ Qf ] = Eg [ Rf ] = Eg [ Sf ] = ! 0 , Eg [ tf ] = Eg [ uf ] = Eg [ Hf ] = ! 1 ; var Fg = { "&" : "&" , "<" : "<" , ">" : ">" , '"' : """ , "'" : "'" } , Gg = parseFloat , Hg = parseInt , Ig = "object" == typeof global && global && global . Object === Object && global , Jg = "object" == typeof self && self && self . Object === Object && self , Kg = Ig || Jg || Function ( "return this" ) ( ) , Lg = "object" == typeof exports && exports && ! exports . nodeType && exports , Mg = Lg && "object" == typeof module && module && ! module . nodeType && module , Ng = Mg && Mg . exports === Lg , Og = Ng && Ig . process , Pg = function ( ) { try { return Og && Og . binding && Og . binding ( "util" ) } catch ( a ) { } } ( ) , Qg = Pg && Pg . isDate , Rg = Pg && Pg . isMap , Sg = Pg && Pg . isRegExp , Tg = Pg && Pg . isSet , Ug = Pg && Pg . isTypedArray , Vg = q ( "length" ) , Wg = r ( Fg ) , Xg = Array . prototype , Yg = Function . prototype , Zg = Object . prototype , $g = Kg [ "__core-js_shared__" ] , _g = Yg . toString , ah = Zg . hasOwnProperty , bh = 0 , ch = function ( ) { var a = /[^.]+$/ . exec ( $g && $g . keys && $g . keys . IE _PROTO || ""
if ( a = a . toLowerCase ( ) , null == b ) delete this . _getEvents ( ) [ a ] ; else { var c = this . _getEvents ( ) [ a ] ; if ( _ . isArray ( c ) ) { var d = [ ] ; _ . each ( c , function ( a ) { a != b && d . push ( a ) } ) , this . _getEvents ( ) [ a ] = d } } } , purgeListeners : function ( ) { this . events = [ ] } , fireEvent : function ( ) { var a = arguments [ 0 ] . toLowerCase ( ) , b = this . _getEvents ( ) [ a ] ; if ( BI . isArray ( b ) ) if ( BI . isArguments ( arguments [ 1 ] ) ) { for ( var c = 0 ; c < b . length ; c ++ ) if ( b [ c ] . apply ( this , arguments [ 1 ] ) === ! 1 ) return ! 1 } else for ( var d = Array . prototype . slice . call ( arguments , 1 ) , c = 0 ; c < b . length ; c ++ ) if ( b [ c ] . apply ( this , d ) === ! 1 ) return ! 1 ; return ! 0 } , destroy : function ( ) { this . destroyed && this . destroyed ( ) , this . _purgeRef ( ) , this . purgeListeners ( ) } } ) , BI . Widget = BI . inherit ( BI . OB , { _defaultConfig : function ( ) { return BI . extend ( BI . Widget . superclass . _defaultConfig . apply ( this ) , { root : ! 1 , tagName : "div" , attributes : null , data : null , tag : null , disabled : ! 1 , invisible : ! 1 , invalid : ! 1 , baseCls : "" , extraCls : "" , cls : "" } ) } , beforeInit : null , beforeCreate : null , created : null , render : null , beforeMount : null , mounted : null , shouldUpdate : null , update : function ( ) { } , beforeDestroy : null , destroyed : null , _init : function ( ) { BI . Widget . superclass . _init . apply ( this , arguments ) , this . _initRoot ( ) , this . _initElementWidth ( ) , this . _initElementHeight ( ) , this . _initVisual ( ) , this . _initState ( ) , this . beforeInit ? ( this . _ _asking = ! 0 , this . beforeInit ( BI . bind ( this . _render , this ) ) , this . _ _asking === ! 0 && ( this . _ _async = ! 0 ) ) : this . _render ( ) } , _render : function ( ) { this . _ _asking = ! 1 , this . beforeCreate && this . beforeCreate ( ) , this . _initElement ( ) , this . _initEffects ( ) , this . created && this . created ( ) } , _initRoot : function ( ) { var a = this . options ; this . widgetName = a . widgetName || BI . uniqueId ( "widget" ) , this . _isRoot = a . root , 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 . _ _asking !== ! 0 && ( 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 -
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 (
} , 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" ) ; break ; case ! 1 : this . element . css ( "overflow" , "hidden" ) } this . options . scrollx && this . element . css ( { "overflow-x" : "auto" , "overflow-y" : "hidden" } ) , this . options . scrolly && this . element . css ( { "overflow-x" : "hidden" , "overflow-y" : "auto" } ) } , _mountChildren : function ( ) { var a = this , b = document . createDocumentFragment ( ) , c = ! 1 ; BI . each ( this . _children , function ( d , e ) { e . element !== a . element && ( b . appendChild ( e . el
} , create : function ( a , b , c ) { if ( this . _check ( a ) ) return this ; var d = BI . createWidget ( b || { } , { type : "bi.popover" } , c ) ; return this . add ( a , d , b , c ) , this } , add : function ( a , b , c , d ) { var e = this ; return c || ( c = { } ) , this . _check ( a ) ? this : ( this . floatContainer [ a ] = BI . createWidget ( { type : "bi.absolute" , cls : "bi-popup-view" , items : [ { el : this . floatLayer [ a ] = BI . createWidget ( { type : "bi.absolute" , items : [ b ] } , d ) , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . floatManager [ a ] = b , function ( a ) { b . on ( BI . Popover . EVENT _CLOSE , function ( ) { e . close ( a ) } ) } ( a ) , BI . createWidget ( { type : "bi.absolute" , element : c . container || this . options . render , items : [ { el : this . floatContainer [ a ] , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this ) } , open : function ( a ) { if ( ! this . _check ( a ) ) return this ; if ( ! this . floatOpened [ a ] ) { this . floatOpened [ a ] = ! 0 ; var b = this . floatContainer [ a ] ; b . element . css ( "zIndex" , this . zindex ++ ) , this . modal && b . element . _ _hasZIndexMask _ _ ( this . zindexMap [ a ] ) && b . element . _ _releaseZIndexMask _ _ ( this . zindexMap [ a ] ) , this . zindexMap [ a ] = this . zindex , this . modal && b . element . _ _buildZIndexMask _ _ ( this . zindex ++ ) , this . get ( a ) . setZindex ( this . zindex ++ ) , this . floatContainer [ a ] . visible ( ) ; var c = this . get ( a ) ; c . show && c . show ( ) ; var d = $ ( this . options . render ) . width ( ) , e = $ ( this . options . render ) . height ( ) , f = c . element . width ( ) , g = c . element . height ( ) , h = ( d - f ) / 2 , i = ( e - g ) / 2 ; h < 0 && ( h = 0 ) , i < 0 && ( i = 0 ) , c . element . css ( { left : h + "px" , top : i + "px" } ) } return this } , close : function ( a ) { return this . _check ( a ) ? ( this . floatOpened [ a ] && ( delete this . floatOpened [ a ] , this . floatContainer [ a ] . invisible ( ) , this . modal && this . floatContainer [ a ] . element . _ _releaseZIndexMask _ _ ( this . zindexMap [ a ] ) ) , this ) : this } , get : function ( a ) { return this . floatManager [ a ] } , remove : function ( a ) { return this . _check ( a ) ? ( this . floatContainer [ a ] . destroy ( ) , this . modal && this . floatContainer [ a ] . element . _ _releaseZIndexMask _ _ ( this . zindexMap [ a ] ) , delete this . floatManager [ a ] , delete this . floatLayer [ a ] , delete this . zindexMap [ a ] , delete this . floatContainer [ a ] , delete this . floatOpened [ a ] , this ) : this } } ) , 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 = e . element . offset ( ) . left / e . element . get ( 0 ) . getBoundingClientRect ( ) . left , m = ( a . pageX || a . clientX ) * l + 15 , n = ( a . pageY || a . clientY ) * l + 15 ; return m + k . element . outerWidth ( ) > $ ( "body" ) .
i [ "%S" ] = o < 10 ? "0" + o : o , i [ "%t" ] = "\t" , i [ "%U" ] = i [ "%W" ] = i [ "%V" ] = f < 10 ? "0" + f : f , i [ "%u" ] = h + 1 , i [ "%w" ] = h , i [ "%y" ] = e . substr ( 2 , 2 ) , i [ "%Y" ] = e , i [ "%%" ] = "%" , i [ "%Q" ] = g ; var p = /%./g ; if ( ! BI . isKhtml ( ) ) return a . replace ( p , function ( a ) { return i [ a ] || a } ) ; for ( var q = a . match ( p ) , r = 0 ; r < q . length ; r ++ ) { var s = i [ q [ r ] ] ; s && ( p = new RegExp ( q [ r ] , "g" ) , a = a . replace ( p , s ) ) } return a } , $ . extend ( $ . Event . prototype , { stopEvent : function ( ) { this . stopPropagation ( ) , this . preventDefault ( ) } } ) , Function . prototype . before = function ( a ) { var b = this ; return function ( ) { return a . apply ( this , arguments ) !== ! 1 && b . apply ( this , arguments ) } } , Function . prototype . after = function ( a ) { var b = this ; return function ( ) { var c = b . apply ( this , arguments ) ; return c !== ! 1 && ( a . apply ( this , arguments ) , c ) } } , jQuery && ! function ( a ) { a . fn . insets || ( a . fn . insets = function ( ) { var a = this . padding ( ) , b = this . border ( ) ; return { top : a . top , bottom : a . bottom + b . bottom + b . top , left : a . left , right : a . right + b . right + b . left } } ) , a . fn . bounds || ( a . fn . bounds = function ( a ) { var b = { hasIgnoredBounds : ! 0 } ; return a ? ( isNaN ( a . x ) || ( b . left = a . x ) , isNaN ( a . y ) || ( b . top = a . y ) , null != a . width && ( b . width = a . width - ( this . outerWidth ( ! 0 ) - this . width ( ) ) , b . width = b . width >= 0 ? b . width : a . width ) , null != a . height && ( b . height = a . height - ( this . outerHeight ( ! 0 ) - this . height ( ) ) , b . height = b . height >= 0 ? b . height : a . height ) , this . css ( b ) , this ) : ( b = this . position ( ) , { x : b . left , y : b . top , width : this . outerWidth ( ) , height : this . outerHeight ( ) } ) } ) } ( jQuery ) , Number . prototype . toFixed && "0.000" === 8e-5 . toFixed ( 3 ) && "0" !== . 9. toFixed ( 0 ) && "1.25" === 1.255 . toFixed ( 2 ) && "1000000000000000128" === ( 0xde0b6b3a7640080 ) . toFixed ( 0 ) || ! function ( ) { function a ( a , b ) { for ( var c = - 1 ; ++ c < g ; ) b += a * h [ c ] , h [ c ] = b % f , b = Math . floor ( b / f ) } function b ( a ) { for ( var b = g , c = 0 ; -- b >= 0 ; ) c += h [ b ] , h [ b ] = Math . floor ( c / a ) , c = c % a * f } function c ( ) { for ( var a = g , b = "" ; -- a >= 0 ; ) if ( "" !== b || 0 === a || 0 !== h [ a ] ) { var c = String ( h [ a ] ) ; "" === b ? b = c : b += "0000000" . slice ( 0 , 7 - c . length ) + c } return b } function d ( a , b , c ) { return 0 === b ? c : b % 2 === 1 ? d ( a , b - 1 , c * a ) : d ( a * a , b / 2 , c ) } function e ( a ) { for ( var b = 0 ; a >= 4096 ; ) b += 12 , a /= 4096 ; for ( ; a >= 2 ; ) b += 1 , a /= 2 ; return b } var f , g , h ; f = 1e7 , g = 6 , h = [ 0 , 0 , 0 , 0 , 0 , 0 ] , Number . prototype . toFixed = function ( f ) { var g , h , i , j , k , l , m , n ; if ( g = Number ( f ) , g = g !== g ? 0 : Math . floor ( g ) , g < 0 || g > 20 ) throw new RangeError ( "Number.toFixed called with invalid number of decimals" ) ; if ( h = Number ( this ) , h !== h ) return "NaN" ; if ( h <= - 1e21 || h > 1e21 ) return String ( h ) ; if ( i = "" , h < 0 && ( i = "-" , h = - h ) , j = "0" , h > 1e-21 ) if ( k = e ( h * d ( 2 , 69 , 1 ) ) - 69 , l = k < 0 ? h * d ( 2 , - k , 1 ) : h / d ( 2 , k , 1 ) , l *= 4503599627370496 , k = 52 - k , k > 0 ) { for ( a ( 0 , l ) , m = g ; m >= 7 ; ) a ( 1e7 , 0 ) , m -= 7 ; for ( a ( d ( 10 , m , 1 ) , 0 ) , m = k - 1 ; m >= 23 ; ) b ( 1 << 23 ) , m -= 23 ; b ( 1 << m ) , a ( 1 , 1 ) , b ( 2 ) , j = c ( ) } else a ( 0 , l ) , a ( 1 << - k , 0 ) , j = c ( ) + "0.00000000000000000000" . slice ( 2 , 2 + g ) ; return g > 0 ? ( n = j . length , j = n <= g ? i + "0.0000000000000000000" . slice ( 0 , g - n + 2 ) + j : i + j . slice ( 0 , n - g ) + "." + j . slice ( n - g ) ) : j = i + j , j } } ( ) , Number . prototype . add = function ( a ) { return accAdd ( a , this ) } , Number . prototype . sub = function ( a ) { return accSub ( this , a ) } , Number . prototype . mul = function ( a ) { return accMul ( a , this ) } , Number . prototype . div = function ( a ) { return accDivide ( this , a ) } , _ . extend ( String . prototype , { startWith : function ( a ) { return ! ( null == a || "" == a || 0 === this . length || a . length > this . length ) && this . substr ( 0 , a . length ) == a } , endWith : function ( a ) { return ! ( null == a || "" == a || 0 === this . length || a . length > this . length ) && this . substring ( this . length - a . length ) == a } , getQuery : function ( a ) { var b = new RegExp ( "(^|&)" + a + "=([^&]*)(&|$)" ) , c = this . substr ( this . indexOf ( "?" ) + 1 ) . match ( b ) ; return c ? unescape ( c [ 2 ] ) : null } , appendQuery : function ( a ) { if ( ! a ) return this ; var b = this ; return b . indexOf ( "?" ) === - 1 && ( b += "?" ) , b . endWith ( "?" ) !== ! 1 || ( b += "&" ) , _ . each ( a , function ( a , c ) { "string" == typeof c && ( b += c + "=" + a + "&" ) } ) , b = b . substr ( 0 , b . length - 1 ) } , replaceAll : function ( a , b ) { return this . replace ( new RegExp ( a , "gm" ) , b ) } , perfectStart : function ( a ) { return this . startWith ( a ) ? this : a + this } , allIndexOf : function ( a ) { if ( "string" != typeof a ) return [ ] ; for ( var b = this , c = [ ] , d = 0 ; b . length > 0 ; ) { var e = b . indexOf ( a ) ; if ( e === - 1 ) break ; c . push ( d + e ) , b = b . substring ( e + a . length , b . length ) , d += e + a . length } return c } } ) , BI . EventListener = { listen : function ( a , b , c ) { return a . addEventListener ? ( a . addEventListener ( b , c , ! 1 ) , { remove : function ( ) { a . removeEventListener ( b , c , ! 1 ) } } ) : a . attachEvent ? ( a . attachEvent ( "on" + b , c ) , { remove : function ( ) { a . detachEvent ( "on" + b , c ) } } ) : void 0 } , capture : function ( a , b , c )
c = ! 0 ) } ) , c === ! 0 && ( this . $wrapper . append ( b ) , this . element . append ( this . $wrapper ) ) } , _getWrapper : function ( ) { return this . $wrapper } , resize : function ( ) { } , populate : function ( a ) { BI . FlexCenterLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_wrapper_center" , BI . FlexCenterLayout ) , BI . FlexHorizontalLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexHorizontalLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-flex-wrapper-horizontal-layout clearfix" , verticalAlign : BI . VerticalAlign . Middle , columnSize : [ ] , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FlexHorizontalLayout . superclass . render . apply ( this , arguments ) ; var a = this . options ; this . $wrapper = $ ( "<div>" ) . addClass ( "flex-wrapper-horizontal-layout-wrapper " + a . verticalAlign ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . FlexHorizontalLayout . 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 . 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 ( { l
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 d ( 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 e ( a , b , e ) { a instanceof BI . Widget ? c ( a . element , b , e ) : a . el instanceof BI . Widget ? c ( a . el . element , b , e ) : a . el ? d ( a . el , b , e ) : d ( a , b , e ) } for ( var f = this . options , g = BI . createWidget ( { type : "bi.default" , tagName : "tr" } ) , h = 0 ; h < b . length ; h ++ ) { var i = BI . createWidget ( b [ h ] ) ; i . element . css ( { position : "relative" , top : "0" , left : "0" , margin : "0px auto" } ) , b [ h ] . lgap && i . element . css ( { "margin-left" : b [ h ] . lgap + "px" } ) , b [ h ] . rgap && i . element . css ( { "margin-right" : b [ h ] . rgap + "px" } ) , b [ h ] . tgap && i . element . css ( { "margin-top" : b [ h ] . tgap + "px" } ) , b [ h ] . bgap && i . element . css ( { "margin-bottom" : b [ h ] . bgap + "px" } ) , e ( i , this . rows ++ , h ) ; var j = BI . createWidget ( { type : "bi.default" , attributes : { width : f . columnSize [ h ] <= 1 ? 100 * f . columnSize [ h ] + "%" : f . columnSize [ h ] } , tagName : "td" , items : [ i ] } ) ; j . element . css ( { position : "relative" , "vertical-align" : "middle" , margin : "0" , padding : "0" , border : "none" } ) , g . addItem ( j ) } return this . addWidget ( this . getName ( ) + a , g ) , g } , _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 . $table . append ( b ) , this . element . append ( this . $table ) ) } , resize : function ( ) { } , addItem : function ( a ) { if ( ! BI . isArray ( a ) ) throw new Error ( "item must be array" ) ; return BI . TdLayout . superclass . addItem . apply ( this , arguments ) } , populate : function ( a ) { BI . TdLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.td" , BI . TdLayout ) , BI . VerticalLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . VerticalLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-vertical-layout" , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , scrolly : ! 0 } ) } , render : function ( ) { BI . VerticalLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( a , b ) { var c = this . options , d = BI . VerticalLayout . 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" : ( 0 === a ? c . vgap : 0 ) + 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" : c . hgap + 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 } , 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 . makeAr
type : "bi.layout" , cls : "loading-background" , height : 30 } ) , this . _loading . element . css ( "zIndex" , 1 ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . _loading , left : 0 , right : 0 , top : 0 } ] } ) ) } , loaded : function ( ) { var a = this , b = this . options ; BI . Layers . remove ( a . getName ( ) ) , this . _loading && this . _loading . destroy ( ) , this . _loading && ( this . _loading = null ) , b . onLoaded ( ) , a . fireEvent ( BI . Pane . EVENT _LOADED ) } , check : function ( ) { this . setTipVisible ( BI . isEmpty ( this . options . items ) ) } , setTipVisible : function ( a ) { a === ! 0 ? ( this . _assertTip ( ) , this . _tipText . setVisible ( ! 0 ) ) : this . _tipText && this . _tipText . setVisible ( ! 1 ) } , populate : function ( a ) { this . options . items = a || [ ] , this . check ( ) } , empty : function ( ) { } } ) , BI . Pane . EVENT _LOADED = "EVENT_LOADED" , BI . Single = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . Single . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-single" , readonly : ! 1 , title : null , warningTitle : null , tipType : null , value : null , belowMouse : ! 1 } ) } , _showToolTip : function ( a , b ) { b || ( b = { } ) ; var c = this . options , d = this . getTipType ( ) || ( this . isEnabled ( ) ? "success" : "warning" ) , e = "success" === d ? this . getTitle ( ) : this . getWarningTitle ( ) || this . getTitle ( ) ; BI . isKey ( e ) && ( BI . Tooltips . show ( a , this . getName ( ) , e , d , this , b ) , c . action && BI . Actions . runAction ( c . action , "hover" , c , this ) , BI . Actions . runGlobalAction ( "hover" , c , this ) ) } , _hideTooltip : function ( ) { var a = this , b = BI . Tooltips . get ( this . getName ( ) ) ; BI . isNotNull ( b ) && b . element . fadeOut ( 200 , function ( ) { BI . Tooltips . remove ( a . getName ( ) ) } ) } , _init : function ( ) { BI . Single . superclass . _init . apply ( this , arguments ) ; var a = this . options ; ( BI . isKey ( a . title ) || BI . isKey ( a . warningTitle ) || BI . isFunction ( a . title ) || BI . isFunction ( a . warningTitle ) ) && this . enableHover ( { belowMouse : a . belowMouse , container : a . container } ) } , enableHover : function ( a ) { a || ( a = { } ) ; var b = this ; this . _hoverBinded || ( this . element . on ( "mouseenter.title" + this . getName ( ) , function ( c ) { b . _e = c , "warning" === b . getTipType ( ) || BI . isKey ( b . getWarningTitle ( ) ) && ! b . isEnabled ( ) ? b . timeout = BI . delay ( function ( ) { b . _showToolTip ( b . _e || c , a ) } , 200 ) : ( "success" === b . getTipType ( ) || b . isEnabled ( ) ) && ( b . timeout = BI . delay ( function ( ) { b . _showToolTip ( b . _e || c , a ) } , 500 ) ) } ) , this . element . on ( "mousemove.title" + this . getName ( ) , function ( a ) { b . _e = a , b . element . _ _isMouseInBounds _ _ ( a ) || ( BI . isNotNull ( b . timeout ) && clearTimeout ( b . timeout ) , b . _hideTooltip ( ) ) } ) , this . element . on ( "mouseleave.title" + this . getName ( ) , function ( ) { b . _e = null , BI . isNotNull ( b . timeout ) && clearTimeout ( b . timeout ) , b . _hideTooltip ( ) } ) , this . _hoverBinded = ! 0 ) } , disabledHover : function ( ) { BI . isNotNull ( this . timeout ) && clearTimeout ( this . timeout ) , this . _hideTooltip ( ) , $ ( this . element ) . unbind ( "mouseenter.title" + this . getName ( ) ) . unbind ( "mousemove.title" + this . getName ( ) ) . unbind ( "mouseleave.title" + this . getName ( ) ) , this . _hoverBinded = ! 1 } , populate : function ( a ) { this . items = a || [ ] } , setTitle : function ( a , b ) { this . options . title = a , BI . isKey ( a ) || BI . isFunction ( a ) ? this . enableHover ( b ) : this . disabledHover ( ) } , setWarningTitle : function ( a , b ) { this . options . warningTitle = a , BI . isKey ( a ) || BI . isFunction ( a ) ? this . enableHover ( b ) : this . disabledHover ( ) } , getTipType : function ( ) { return this . options . tipType } , isReadOnly : function ( ) { return ! ! this . options . readonly } , getTitle : function ( ) { var a = this . options . title ; return BI . isFunction ( a ) ? a ( ) : a } , getWarningTitle : function ( ) { var a = this . options . warningTitle ; return BI . isFunction ( a ) ? a ( ) : a } , setValue : function ( a ) { this . options . readonly || ( this . options . value = a ) } , getValue : function ( ) { return this . options . value } , _unMount : function ( ) { BI . Single . superclass . _unMount . apply ( this , arguments ) , BI . Tooltips . remove ( this . getName ( ) ) } } ) , BI . Text = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Text . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-text" , textAlign : "left" , whiteSpace : "normal" , lineHeight : null , handler : null , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 , text : "" , py : "" } ) } , _init : function ( ) { BI . Text . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; b . hgap + b . lgap > 0 && this . element . css ( { "padding-left" : b . hgap + b . lgap + "px" } ) , b . hgap + b . rgap > 0 && this . element . css ( { "padding-right" : b . hgap + b . rgap + "px" } ) , b . vgap + b . tgap > 0 && this . element . css ( { "padding-top" : b . vgap + b . tgap + "px" } ) , b . vgap + b . bgap > 0
d . setTipVisible ( g . length <= 0 ) , d . loaded ( ) , f ? d . tip . setLoaded ( ) : d . tip . invisible ( ) , d . fireEvent ( BI . Events . AFTERINIT ) } } ; BI . delay ( function ( ) { e . itemsCreator ( g , h ) } , 100 ) } , getValue : function ( ) { var a = this . options , b = BI . PartTree . superclass . getValue . apply ( this , arguments ) ; return a . itemsCreator ( { type : BI . TreeView . REQ _TYPE _ADJUST _DATA , selectedValues : b } , function ( a ) { b = a } ) , b } , stroke : function ( a ) { var b = this . options ; delete b . paras . keyword , BI . extend ( b . paras , a ) , delete b . paras . lastSearchValue ; var c = this . _configSetting ( ) ; this . _initTree ( c , b . paras . keyword ) } } ) , BI . shortcut ( "bi.part_tree" , BI . PartTree ) , BI . Resizers = new BI . ResizeController , BI . Layers = new BI . LayerController , BI . Maskers = new BI . MaskersController , BI . Bubbles = new BI . BubblesController , BI . Tooltips = new BI . TooltipsController , BI . Popovers = new BI . PopoverController , BI . Broadcasts = new BI . BroadcastController , BI . StyleLoaders = new BI . StyleLoaderManager , BI . Canvas = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Canvas . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-canvas" } ) } , _init : function ( ) { BI . Canvas . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = document . createElement ( "canvas" ) ; document . createElement ( "canvas" ) . getContext || ( b = window . G _vmlCanvasManager . initElement ( b ) ) , this . element . append ( b ) , b . width = a . width , b . height = a . height , $ ( b ) . width ( "100%" ) , $ ( b ) . height ( "100%" ) , this . canvas = b , this . _queue = [ ] } , mounted : function ( ) { this . stroke ( ) } , _getContext : function ( ) { return this . ctx || ( this . ctx = this . canvas . getContext ( "2d" ) ) , this . ctx } , _attr : function ( a , b ) { var c = this ; if ( ! BI . isNull ( a ) ) return BI . isObject ( a ) ? void BI . each ( a , function ( a , b ) { c . _queue . push ( { k : a , v : b } ) } ) : void this . _queue . push ( { k : a , v : b } ) } , _line : function ( a , b ) { var c = this , d = [ ] . slice . call ( arguments , 2 ) ; BI . isOdd ( d . length ) && ( this . _attr ( BI . last ( d ) ) , d = BI . initial ( d ) ) , this . _attr ( "moveTo" , [ a , b ] ) ; var e = BI . filter ( d , function ( a ) { return a % 2 === 0 } ) , f = BI . filter ( d , function ( a ) { return a % 2 !== 0 } ) ; d = BI . zip ( e , f ) , BI . each ( d , function ( a , b ) { c . _attr ( "lineTo" , b ) } ) } , line : function ( a , b , c , d ) { this . _line . apply ( this , arguments ) , this . _attr ( "stroke" , [ ] ) } , rect : function ( a , b , c , d , e ) { this . _attr ( "fillStyle" , e ) , this . _attr ( "fillRect" , [ a , b , c , d ] ) } , circle : function ( a , b , c , d ) { this . _attr ( { fillStyle : d , beginPath : [ ] , arc : [ a , b , c , 0 , 2 * Math . PI , ! 0 ] , closePath : [ ] , fill : [ ] } ) } , hollow : function ( ) { this . _attr ( "beginPath" , [ ] ) , this . _line . apply ( this , arguments ) , this . _attr ( "closePath" , [ ] ) , this . _attr ( "stroke" , [ ] ) } , solid : function ( ) { this . hollow . apply ( this , arguments ) , this . _attr ( "fill" , [ ] ) } , gradient : function ( a , b , c , d , e , f ) { var g = this . _getContext ( ) . createLinearGradient ( a , b , c , d ) ; return g . addColorStop ( 0 , e ) , g . addColorStop ( 1 , f ) , g } , reset : function ( ) { this . _getContext ( ) . clearRect ( 0 , 0 , this . canvas . width , this . canvas . height ) } , stroke : function ( ) { var a = this . _getContext ( ) ; return ! ! a && ( BI . each ( this . _queue , function ( b , c ) { BI . isFunction ( a [ c . k ] ) ? a [ c . k ] . apply ( a , c . v ) : a [ c . k ] = c . v } ) , void ( this . _queue = [ ] ) ) } } ) , BI . shortcut ( "bi.canvas" , BI . Canvas ) , BI . CollectionView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . CollectionView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-collection" , overflowX : ! 0 , overflowY : ! 0 , cellSizeAndPositionGetter : BI . emptyFn , horizontalOverscanSize : 0 , verticalOverscanSize : 0 , scrollLeft : 0 , scrollTop : 0 , items : [ ] } ) } , _init : function ( ) { BI . CollectionView . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . renderedCells = [ ] , this . renderedKeys = [ ] , this . renderRange = { } , this . _scrollLock = ! 1 , this . _debounceRelease = BI . debounce ( function ( ) { a . _scrollLock = ! 1 } , 1e3 / 60 ) , this . container = BI . createWidget ( { type : "bi.absolute" } ) , this . element . scroll ( function ( ) { a . _scrollLock !== ! 0 && ( b . scrollLeft = a . element . scrollLeft ( ) , b . scrollTop = a . element . scrollTop ( ) , a . _calculateChildrenToRender ( ) , a . fireEvent ( BI . CollectionView . EVENT _SCROLL , { scrollLeft : b . scrollLeft , scrollTop : b . scrollTop } ) ) } ) , BI . createWidget ( { type : "bi.vertical" , element : this , scrollable : b . overflowX === ! 0 && b . overflowY === ! 0 , scrolly : b . overflowX === ! 1 && b . overflowY === ! 0 , scrollx : b . overflowX === ! 0 && b . overflowY === ! 1 , items : [ this . container ] } ) , b . items . length > 0 && ( this . _calculateSizeAndPositionData ( ) , this . _populate ( ) ) , 0 === b . scrollLeft && 0 === b . scrollTop || BI . nextTick ( function ( ) { a . element . scrollTop (
} , addItems : function ( a ) { this . count += a . length , BI . isObject ( this . next ) && ( this . hasNext ( ) ? ( this . options . items = this . options . items . concat ( a ) , this . next . setLoaded ( ) ) : this . next . setEnd ( ) ) , this . button _group . addItems . apply ( this . button _group , arguments ) } , populate : function ( a ) { var b = this , c = this . options ; return 0 === arguments . length && BI . isFunction ( c . itemsCreator ) ? void c . itemsCreator . apply ( this , [ { times : 1 } , function ( ) { if ( 0 === arguments . length ) throw new Error ( "arguments can not be null!!!" ) ; b . populate . apply ( b , arguments ) , c . onLoaded ( ) } ] ) : ( this . options . items = a , this . times = 1 , this . count = 0 , this . count += a . length , BI . isObject ( this . next ) && ( this . hasNext ( ) ? this . next . setLoaded ( ) : this . next . invisible ( ) ) , BI . isObject ( this . prev ) && ( this . hasPrev ( ) ? this . prev . setLoaded ( ) : this . prev . invisible ( ) ) , void this . button _group . populate . apply ( this . button _group , arguments ) ) } , 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 ) } , empty : function ( ) { this . button _group . empty ( ) , BI . each ( [ this . prev , this . next ] , function ( a , b ) { b && b . setVisible ( ! 1 ) } ) } , destroy : function ( ) { BI . Loader . superclass . destroy . apply ( this , arguments ) } } ) , BI . Loader . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.loader" , BI . Loader ) , BI . Navigation = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Navigation . superclass . _defaultConfig . apply ( this , arguments ) , { direction : "bottom" , logic : { dynamic : ! 1 } , single : ! 1 , showIndex : ! 1 , tab : ! 1 , cardCreator : function ( a ) { return BI . createWidget ( ) } , afterCardCreated : BI . emptyFn , afterCardShow : BI . emptyFn } ) } , render : function ( ) { var a = this , b = this . options ; this . tab = BI . createWidget ( this . options . tab , { type : "bi.button_group" } ) , this . cardMap = { } , this . showIndex = 0 , this . layout = BI . createWidget ( { type : "bi.card" } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( b . direction ) , BI . extend ( { } , b . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( b . direction , this . tab , this . layout ) } ) ) ) ) , new BI . ShowListener ( { eventObj : this . tab , cardLayout : this . layout , cardNameCreator : function ( b ) { return a . showIndex + b } , cardCreator : function ( c ) { var d = b . cardCreator ( c ) ; return a . cardMap [ c ] = d , d } , afterCardCreated : BI . bind ( this . afterCardCreated , this ) , afterCardShow : BI . bind ( this . afterCardShow , this ) } ) } , mounted : function ( ) { var a = this . options ; a . showIndex !== ! 1 && this . setSelect ( a . showIndex ) } , _deleteOtherCards : function ( a ) { var b = this , c = this . options ; c . single === ! 0 && BI . each ( this . cardMap , function ( c , d ) { c !== a + "" && ( b . layout . deleteCardByName ( c ) , delete b . cardMap [ c ] ) } ) } , afterCardCreated : function ( a ) { var b = this ; this . cardMap [ a ] . on ( BI . Controller . EVENT _CHANGE , function ( a , c , d ) { b . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , a === BI . Events . CLICK && b . fireEvent ( BI . Navigation . EVENT _CHANGE , d ) } ) , this . options . afterCardCreated . apply ( this , arguments ) } , afterCardShow : function ( a ) { this . showIndex = a , this . _deleteOtherCards ( a ) , this . options . afterCardShow . apply ( this , arguments ) } , populate : function ( ) { var a = this . layout . getShowingCard ( ) ; if ( a ) return a . populate . apply ( a , arguments ) } , _assertCard : function ( a ) { if ( ! this . layout . isCardExisted ( a ) ) { var b = this . options . cardCreator ( a ) ; this . cardMap [ a ] = b , this . layout . addCardByName ( a , b ) , this . afterCardCreated ( a ) } } , setSelect : function ( a ) { this . _assertCard ( a ) , this . layout . showCardByName ( a ) , this . _deleteOtherCards ( a ) , this . showIndex !== a && ( this . showIndex = a , BI . nextTick ( BI . bind ( this . afterCardShow , this , a ) ) ) } , getSelect : function ( ) { return thi
var l = i [ k ] ; if ( l . hidden ) ; else if ( l . node && l . node . parentNode == g ) { for ( ; h != l . node ; ) h = d ( h ) ; var m = f && null != b && b <= j && l . lineNumber ; l . changes && ( De ( l . changes , "gutter" ) > - 1 && ( m = ! 1 ) , J ( a , l , j , c ) ) , m && ( Ne ( l . lineNumber ) , l . lineNumber . appendChild ( document . createTextNode ( x ( a . options , j ) ) ) ) , h = l . node . nextSibling } else { var n = R ( a , l , j , c ) ; g . insertBefore ( n , h ) } j += l . size } for ( ; h ; ) h = d ( h ) } function J ( a , b , c , d ) { for ( var e = 0 ; e < b . changes . length ; e ++ ) { var f = b . changes [ e ] ; "text" == f ? N ( a , b ) : "gutter" == f ? P ( a , b , c , d ) : "class" == f ? O ( b ) : "widget" == f && Q ( a , b , d ) } b . changes = null } function K ( a ) { return a . node == a . text && ( a . node = Me ( "div" , null , null , "position: relative" ) , a . text . parentNode && a . text . parentNode . replaceChild ( a . node , a . text ) , a . node . appendChild ( a . text ) , nf && of < 8 && ( a . node . style . zIndex = 2 ) ) , a . node } function L ( a ) { var b = a . bgClass ? a . bgClass + " " + ( a . line . bgClass || "" ) : a . line . bgClass ; if ( b && ( b += " CodeMirror-linebackground" ) , a . background ) b ? a . background . className = b : ( a . background . parentNode . removeChild ( a . background ) , a . background = null ) ; else if ( b ) { var c = K ( a ) ; a . background = c . insertBefore ( Me ( "div" , null , b ) , c . firstChild ) } } function M ( a , b ) { var c = a . display . externalMeasured ; return c && c . line == b . line ? ( a . display . externalMeasured = null , b . measure = c . measure , c . built ) : Id ( a , b ) } function N ( a , b ) { var c = b . text . className , d = M ( a , b ) ; b . text == b . node && ( b . node = d . pre ) , b . text . parentNode . replaceChild ( d . pre , b . text ) , b . text = d . pre , d . bgClass != b . bgClass || d . textClass != b . textClass ? ( b . bgClass = d . bgClass , b . textClass = d . textClass , O ( b ) ) : c && ( b . text . className = c ) } function O ( a ) { L ( a ) , a . line . wrapClass ? K ( a ) . className = a . line . wrapClass : a . node != a . text && ( a . node . className = "" ) ; var b = a . textClass ? a . textClass + " " + ( a . line . textClass || "" ) : a . line . textClass ; a . text . className = b || "" } function P ( a , b , c , d ) { b . gutter && ( b . node . removeChild ( b . gutter ) , b . gutter = null ) ; var e = b . line . gutterMarkers ; if ( a . options . lineNumbers || e ) { var f = K ( b ) , g = b . gutter = Me ( "div" , null , "CodeMirror-gutter-wrapper" , "left: " + ( a . options . fixedGutter ? d . fixedPos : - d . gutterTotalWidth ) + "px; width: " + d . gutterTotalWidth + "px" ) ; if ( a . display . input . setUneditable ( g ) , f . insertBefore ( g , b . text ) , b . line . gutterClass && ( g . className += " " + b . line . gutterClass ) , ! a . options . lineNumbers || e && e [ "CodeMirror-linenumbers" ] || ( b . lineNumber = g . appendChild ( Me ( "div" , x ( a . options , c ) , "CodeMirror-linenumber CodeMirror-gutter-elt" , "left: " + d . gutterLeft [ "CodeMirror-linenumbers" ] + "px; width: " + a . display . lineNumInnerWidth + "px" ) ) ) , e ) for ( var h = 0 ; h < a . options . gutters . length ; ++ h ) { var i = a . options . gutters [ h ] , j = e . hasOwnProperty ( i ) && e [ i ] ; j && g . appendChild ( Me ( "div" , [ j ] , "CodeMirror-gutter-elt" , "left: " + d . gutterLeft [ i ] + "px; width: " + d . gutterWidth [ i ] + "px" ) ) } } } function Q ( a , b , c ) { b . alignable && ( b . alignable = null ) ; for ( var d , e = b . node . firstChild ; e ; e = d ) { var d = e . nextSibling ; "CodeMirror-linewidget" == e . className && b . node . removeChild ( e ) } S ( a , b , c ) } function R ( a , b , c , d ) { var e = M ( a , b ) ; return b . text = b . node = e . pre , e . bgClass && ( b . bgClass = e . bgClass ) , e . textClass && ( b . textClass = e . textClass ) , O ( b ) , P ( a , b , c , d ) , S ( a , b , d ) , b . node } function S ( a , b , c ) { if ( T ( a , b . line , b , c , ! 0 ) , b . rest ) for ( var d = 0 ; d < b . rest . length ; d ++ ) T ( a , b . rest [ d ] , b , c , ! 1 ) } function T ( a , b , c , d , e ) { if ( b . widgets ) for ( var f = K ( c ) , g = 0 , h = b . widgets ; g < h . length ; ++ g ) { var i = h [ g ] , j = Me ( "div" , [ i . node ] , "CodeMirror-linewidget" ) ; i . handleMouseEvents || j . setAttribute ( "cm-ignore-events" , "true" ) , U ( i , j , c , d ) , a . display . input . setUneditable ( j ) , e && i . above ? f . insertBefore ( j , c . gutter || c . text ) : f . appendChild ( j ) , te ( i , "redraw" ) } } function U ( a , b , c , d ) { if ( a . noHScroll ) { ( c . alignable || ( c . alignable = [ ] ) ) . push ( b ) ; var e = d . wrapperWidth ; b . style . left = d . fixedPos + "px" , a . coverGutter || ( e -= d . gutterTotalWidth , b . style . paddingLeft = d . gutterTotalWidth + "px" ) , b . style . width = e + "px" } a . coverGutter && ( b . style . zIndex = 5 , b . style . position = "relative" , a . noHScroll || ( b . style . marginLeft = - d . gutterTotalWidth + "px" ) ) } function V ( a ) { return Ff ( a . line , a . ch ) } function W ( a , b ) { return Gf ( a , b ) < 0 ? b : a } function X ( a , b ) { return Gf ( a , b ) < 0 ? a : b } function Y ( a ) { a . state . focused || ( a . display . input . focus ( ) , nc ( a ) ) } function Z ( a ) { return a . options . readOnly || a . doc . cantEdit } function $ ( a , b , c , d , e ) { var f = a . doc ; a . display . shift = ! 1 , d || ( d = f . sel ) ; var g = a . state . pasteIncoming || "paste" == e , h = Ug ( b ) , i = null ; g && d . ranges . length > 1 && ( Hf && Hf . join ( "\n" ) == b ? i = d . ranges . length % Hf . length == 0 && E
g ( b . display . scroller , "dragenter" , f . simple ) , g ( b . display . scroller , "dragover" , f . simple ) , g ( b . display . scroller , "drop" , f . drop ) } } function Rb ( a ) { var b = a . display ; b . lastWrapHeight == b . wrapper . clientHeight && b . lastWrapWidth == b . wrapper . clientWidth || ( b . cachedCharWidth = b . cachedTextHeight = b . cachedPaddingH = null , b . scrollbarsClipped = ! 1 , a . setSize ( ) ) } function Sb ( a , b ) { for ( var c = re ( b ) ; c != a . wrapper ; c = c . parentNode ) if ( ! c || 1 == c . nodeType && "true" == c . getAttribute ( "cm-ignore-events" ) || c . parentNode == a . sizer && c != a . mover ) return ! 0 } function Tb ( a , b , c , d ) { var e = a . display ; if ( ! c && "true" == re ( b ) . getAttribute ( "cm-not-content" ) ) return null ; var f , g , h = e . lineSpace . getBoundingClientRect ( ) ; try { f = b . clientX - h . left , g = b . clientY - h . top } catch ( b ) { return null } var i , j = pb ( a , f , g ) ; if ( d && 1 == j . xRel && ( i = Vd ( a . doc , j . line ) . text ) . length == j . ch ) { var k = Gg ( i , i . length , a . options . tabSize ) - i . length ; j = Ff ( j . line , Math . max ( 0 , Math . round ( ( f - Sa ( a . display ) . left ) / sb ( a . display ) ) - k ) ) } return j } function Ub ( a ) { var b = this , c = b . display ; if ( ! ( c . activeTouch && c . input . supportsTouch ( ) || ve ( b , a ) ) ) { if ( c . shift = a . shiftKey , Sb ( c , a ) ) return void ( pf || ( c . scroller . draggable = ! 1 , setTimeout ( function ( ) { c . scroller . draggable = ! 0 } , 100 ) ) ) ; if ( ! Zb ( b , a ) ) { var d = Tb ( b , a ) ; switch ( window . focus ( ) , se ( a ) ) { case 1 : d ? Vb ( b , a , d ) : re ( a ) == c . scroller && ug ( a ) ; break ; case 2 : pf && ( b . state . lastMiddleDown = + new Date ) , d && va ( b . doc , d ) , setTimeout ( function ( ) { c . input . focus ( ) } , 20 ) , ug ( a ) ; break ; case 3 : Cf ? pc ( b , a ) : mc ( b ) } } } } function Vb ( a , b , c ) { nf ? setTimeout ( Ie ( Y , a ) , 0 ) : a . curOp . focus = Pe ( ) ; var d , e = + new Date ; Kf && Kf . time > e - 400 && 0 == Gf ( Kf . pos , c ) ? d = "triple" : Jf && Jf . time > e - 400 && 0 == Gf ( Jf . pos , c ) ? ( d = "double" , Kf = { time : e , pos : c } ) : ( d = "single" , Jf = { time : e , pos : c } ) ; var f , g = a . doc . sel , h = yf ? b . metaKey : b . ctrlKey ; a . options . dragDrop && Tg && ! Z ( a ) && "single" == d && ( f = g . contains ( c ) ) > - 1 && ( Gf ( ( f = g . ranges [ f ] ) . from ( ) , c ) < 0 || c . xRel > 0 ) && ( Gf ( f . to ( ) , c ) > 0 || c . xRel < 0 ) ? Wb ( a , b , c , h ) : Xb ( a , b , c , d , h ) } function Wb ( a , b , c , d ) { var e = a . display , f = + new Date , g = Db ( a , function ( h ) { pf && ( e . scroller . draggable = ! 1 ) , a . state . draggingText = ! 1 , yg ( document , "mouseup" , g ) , yg ( e . scroller , "drop" , g ) , Math . abs ( b . clientX - h . clientX ) + Math . abs ( b . clientY - h . clientY ) < 10 && ( ug ( h ) , ! d && + new Date - 200 < f && va ( a . doc , c ) , pf || nf && 9 == of ? setTimeout ( function ( ) { document . body . focus ( ) , e . input . focus ( ) } , 20 ) : e . input . focus ( ) ) } ) ; pf && ( e . scroller . draggable = ! 0 ) , a . state . draggingText = g , e . scroller . dragDrop && e . scroller . dragDrop ( ) , xg ( document , "mouseup" , g ) , xg ( e . scroller , "drop" , g ) } function Xb ( a , b , c , d , e ) { function f ( b ) { if ( 0 != Gf ( q , b ) ) if ( q = b , "rect" == d ) { for ( var e = [ ] , f = a . options . tabSize , g = Gg ( Vd ( j , c . line ) . text , c . ch , f ) , h = Gg ( Vd ( j , b . line ) . text , b . ch , f ) , i = Math . min ( g , h ) , n = Math . max ( g , h ) , o = Math . min ( c . line , b . line ) , p = Math . min ( a . lastLine ( ) , Math . max ( c . line , b . line ) ) ; o <= p ; o ++ ) { var r = Vd ( j , o ) . text , s = Ae ( r , i , f ) ; i == n ? e . push ( new ma ( Ff ( o , s ) , Ff ( o , s ) ) ) : r . length > s && e . push ( new ma ( Ff ( o , s ) , Ff ( o , Ae ( r , n , f ) ) ) ) } e . length || e . push ( new ma ( c , c ) ) , Ba ( j , na ( m . ranges . slice ( 0 , l ) . concat ( e ) , l ) , { origin : "*mouse" , scroll : ! 1 } ) , a . scrollIntoView ( b ) } else { var t = k , u = t . anchor , v = b ; if ( "single" != d ) { if ( "double" == d ) var w = a . findWordAt ( b ) ; else var w = new ma ( Ff ( b . line , 0 ) , qa ( j , Ff ( b . line + 1 , 0 ) ) ) ; Gf ( w . anchor , u ) > 0 ? ( v = w . head , u = X ( t . from ( ) , w . anchor ) ) : ( v = w . anchor , u = W ( t . to ( ) , w . head ) ) } var e = m . ranges . slice ( 0 ) ; e [ l ] = new ma ( qa ( j , u ) , v ) , Ba ( j , na ( e , l ) , Eg ) } } function g ( b ) { var c = ++ s , e = Tb ( a , b , ! 0 , "rect" == d ) ; if ( e ) if ( 0 != Gf ( e , q ) ) { a . curOp . focus = Pe ( ) , f ( e ) ; var h = u ( i , j ) ; ( e . line >= h . to || e . line < h . from ) && setTimeout ( Db ( a , function ( ) { s == c && g ( b ) } ) , 150 ) } else { var k = b . clientY < r . top ? - 20 : b . clientY > r . bottom ? 20 : 0 ; k && setTimeout ( Db ( a , function ( ) { s == c && ( i . scroller . scrollTop += k , g ( b ) ) } ) , 50 ) } } function h ( a ) { s = 1 / 0 , ug ( a ) , i . input . focus ( ) , yg ( document , "mousemove" , t ) , yg ( document , "mouseup" , v ) , j . history . lastSelOrigin = null } var i = a . display , j = a . doc ; ug ( b ) ; var k , l , m = j . sel , n = m . ranges ; if ( e && ! b . shiftKey ? ( l = j . sel . contains ( c ) , k = l > - 1 ? n [ l ] : new ma ( c , c ) ) : ( k = j . sel . primary ( ) , l = j . sel . primIndex ) , b . altKey ) d = "rect" , e || ( k = new ma ( c , c ) ) , c = Tb ( a , b , ! 0 , ! 0 ) , l = - 1 ; else if ( "double" == d ) { var o = a . findWordAt ( c ) ; k = a . display . shift || j . extend ? ua ( j , k , o . anchor , o . head ) : o } else if ( "triple" == d ) { var p = new ma ( Ff ( c . line , 0 ) , qa ( j , Ff ( c . line + 1 , 0 ) ) ) ; k = a . display . shift || j . extend ? ua ( j , k , p . anchor , p . head ) : p } else k = ua ( j , k , c ) ; e ? l == - 1 ? ( l = n . length , Ba ( j , na ( n . concat ( [ k ] ) , l ) , { scroll : ! 1 , origin : "*mouse" } )
a . map . push ( a . pos , a . pos + n , o ) , a . col += n , a . pos += n } if ( ! m ) break ; if ( l += n + 1 , "\t" == m [ 0 ] ) { var p = a . cm . options . tabSize , q = p - a . col % p , o = k . appendChild ( Me ( "span" , Be ( q ) , "cm-tab" ) ) ; o . setAttribute ( "role" , "presentation" ) , o . setAttribute ( "cm-text" , "\t" ) , a . col += q } else { var o = a . cm . options . specialCharPlaceholder ( m [ 0 ] ) ; o . setAttribute ( "cm-text" , m [ 0 ] ) , nf && of < 9 ? k . appendChild ( Me ( "span" , [ o ] ) ) : k . appendChild ( o ) , a . col += 1 } a . map . push ( a . pos , a . pos + 1 , o ) , a . pos ++ } else { a . col += b . length ; var k = document . createTextNode ( h ) ; a . map . push ( a . pos , a . pos + b . length , k ) , nf && of < 9 && ( j = ! 0 ) , a . pos += b . length } if ( c || d || e || j || g ) { var r = c || "" ; d && ( r += d ) , e && ( r += e ) ; var s = Me ( "span" , [ k ] , r , g ) ; return f && ( s . title = f ) , a . content . appendChild ( s ) } a . content . appendChild ( k ) } } function Ld ( a ) { for ( var b = " " , c = 0 ; c < a . length - 2 ; ++ c ) b += c % 2 ? " " : " " ; return b += " " } function Md ( a , b ) { return function ( c , d , e , f , g , h , i ) { e = e ? e + " cm-force-border" : "cm-force-border" ; for ( var j = c . pos , k = j + d . length ; ; ) { for ( var l = 0 ; l < b . length ; l ++ ) { var m = b [ l ] ; if ( m . to > j && m . from <= j ) break } if ( m . to >= k ) return a ( c , d , e , f , g , h , i ) ; a ( c , d . slice ( 0 , m . to - j ) , e , f , null , h , i ) , f = null , d = d . slice ( m . to - j ) , j = m . to } } } function Nd ( a , b , c , d ) { var e = ! d && c . widgetNode ; e && a . map . push ( a . pos , a . pos + b , e ) , ! d && a . cm . display . input . needsContentAttribute && ( e || ( e = a . content . appendChild ( document . createElement ( "span" ) ) ) , e . setAttribute ( "cm-marker" , c . id ) ) , e && ( a . cm . display . input . setUneditable ( e ) , a . content . appendChild ( e ) ) , a . pos += b } function Od ( a , b , c ) { var d = a . markedSpans , e = a . text , f = 0 ; if ( d ) for ( var g , h , i , j , k , l , m , n = e . length , o = 0 , p = 1 , q = "" , r = 0 ; ; ) { if ( r == o ) { i = j = k = l = h = "" , m = null , r = 1 / 0 ; for ( var s = [ ] , t = 0 ; t < d . length ; ++ t ) { var u = d [ t ] , v = u . marker ; "bookmark" == v . type && u . from == o && v . widgetNode ? s . push ( v ) : u . from <= o && ( null == u . to || u . to > o || v . collapsed && u . to == o && u . from == o ) ? ( null != u . to && u . to != o && r > u . to && ( r = u . to , j = "" ) , v . className && ( i += " " + v . className ) , v . css && ( h = v . css ) , v . startStyle && u . from == o && ( k += " " + v . startStyle ) , v . endStyle && u . to == r && ( j += " " + v . endStyle ) , v . title && ! l && ( l = v . title ) , v . collapsed && ( ! m || jd ( m . marker , v ) < 0 ) && ( m = u ) ) : u . from > o && r > u . from && ( r = u . from ) } if ( m && ( m . from || 0 ) == o ) { if ( Nd ( b , ( null == m . to ? n + 1 : m . to ) - o , m . marker , null == m . from ) , null == m . to ) return ; m . to == o && ( m = ! 1 ) } if ( ! m && s . length ) for ( var t = 0 ; t < s . length ; ++ t ) Nd ( b , 0 , s [ t ] ) } if ( o >= n ) break ; for ( var w = Math . min ( n , r ) ; ; ) { if ( q ) { var x = o + q . length ; if ( ! m ) { var y = x > w ? q . slice ( 0 , w - o ) : q ; b . addToken ( b , y , g ? g + i : i , k , o + y . length == r ? j : "" , l , h ) } if ( x >= w ) { q = q . slice ( w - o ) , o = w ; break } o = x , k = "" } q = e . slice ( f , f = c [ p ++ ] ) , g = Hd ( c [ p ++ ] , b . cm . options ) } } else for ( var p = 1 ; p < c . length ; p += 2 ) b . addToken ( b , e . slice ( f , f = c [ p ] ) , Hd ( c [ p + 1 ] , b . cm . options ) ) } function Pd ( a , b ) { return 0 == b . from . ch && 0 == b . to . ch && "" == Ce ( b . text ) && ( ! a . cm || a . cm . options . wholeLineUpdateBefore ) } function Qd ( a , b , c , d ) { function e ( a ) { return c ? c [ a ] : null } function f ( a , c , e ) { xd ( a , c , e , d ) , te ( a , "change" , a , b ) } function g ( a , b ) { for ( var c = a , f = [ ] ; c < b ; ++ c ) f . push ( new ng ( j [ c ] , e ( c ) , d ) ) ; return f } var h = b . from , i = b . to , j = b . text , k = Vd ( a , h . line ) , l = Vd ( a , i . line ) , m = Ce ( j ) , n = e ( j . length - 1 ) , o = i . line - h . line ; if ( b . full ) a . insert ( 0 , g ( 0 , j . length ) ) , a . remove ( j . length , a . size - j . length ) ; else if ( Pd ( a , b ) ) { var p = g ( 0 , j . length - 1 ) ; f ( l , l . text , n ) , o && a . remove ( h . line , o ) , p . length && a . insert ( h . line , p ) } else if ( k == l ) if ( 1 == j . length ) f ( k , k . text . slice ( 0 , h . ch ) + m + k . text . slice ( i . ch ) , n ) ; else { var p = g ( 1 , j . length - 1 ) ; p . push ( new ng ( m + k . text . slice ( i . ch ) , n , d ) ) , f ( k , k . text . slice ( 0 , h . ch ) + j [ 0 ] , e ( 0 ) ) , a . insert ( h . line + 1 , p ) } else if ( 1 == j . length ) f ( k , k . text . slice ( 0 , h . ch ) + j [ 0 ] + l . text . slice ( i . ch ) , e ( 0 ) ) , a . remove ( h . line + 1 , o ) ; else { f ( k , k . text . slice ( 0 , h . ch ) + j [ 0 ] , e ( 0 ) ) , f ( l , m + l . text . slice ( i . ch ) , n ) ; var p = g ( 1 , j . length - 1 ) ; o > 1 && a . remove ( h . line + 1 , o - 1 ) , a . insert ( h . line + 1 , p ) } te ( a , "change" , a , b ) } function Rd ( a ) { this . lines = a , this . parent = null ; for ( var b = 0 , c = 0 ; b < a . length ; ++ b ) a [ b ] . parent = this , c += a [ b ] . height ; this . height = c } function Sd ( a ) { this . children = a ; for ( var b = 0 , c = 0 , d = 0 ; d < a . length ; ++ d ) { var e = a [ d ] ; b += e . chunkSize ( ) , c += e . height , e . parent = this } this . size = b , this . height = c , this . parent = null } function Td ( a , b , c ) { function d ( a , e , f ) { if ( a . linked ) for ( var g = 0 ; g < a . linked . length ; ++ g ) { var h = a . linked [ g ] ; if ( h . doc != e ) { var i = f && h . sharedHist ; c && ! i || ( b ( h . doc , i ) , d ( h . doc , a , i ) ) } } } d ( a , null , ! 0 ) } function Ud ( a , b ) { if ( b . cm ) throw new Error ( "This document is already in use." ) ; a . doc = b , b . cm = a , g ( a ) , c ( a ) , a . options . lineWrapping || m ( a ) , a . options . mod
g && c . push ( g ) } else e . helperType && d [ e . helperType ] ? c . push ( d [ e . helperType ] ) : d [ e . name ] && c . push ( d [ e . name ] ) ; for ( var f = 0 ; f < d . _global . length ; f ++ ) { var h = d . _global [ f ] ; h . pred ( e , this ) && De ( c , h . val ) == - 1 && c . push ( h . val ) } return c } , getStateAfter : function ( a , b ) { var c = this . doc ; return a = pa ( c , null == a ? c . first + c . size - 1 : a ) , Pa ( this , a + 1 , b ) } , cursorCoords : function ( a , b ) { var c , d = this . doc . sel . primary ( ) ; return c = null == a ? d . head : "object" == typeof a ? qa ( this . doc , a ) : a ? d . from ( ) : d . to ( ) , mb ( this , c , b || "page" ) } , charCoords : function ( a , b ) { return lb ( this , qa ( this . doc , a ) , b || "page" ) } , coordsChar : function ( a , b ) { return a = kb ( this , a , b || "page" ) , pb ( this , a . left , a . top ) } , lineAtHeight : function ( a , b ) { return a = kb ( this , { top : a , left : 0 } , b || "page" ) . top , $d ( this . doc , a + this . display . viewOffset ) } , heightAtLine : function ( a , b ) { var c , d = ! 1 ; if ( "number" == typeof a ) { var e = this . doc . first + this . doc . size - 1 ; a < this . doc . first ? a = this . doc . first : a > e && ( a = e , d = ! 0 ) , c = Vd ( this . doc , a ) } else c = a ; return jb ( this , c , { top : 0 , left : 0 } , b || "page" ) . top + ( d ? this . doc . height - _d ( c ) : 0 ) } , defaultTextHeight : function ( ) { return rb ( this . display ) } , defaultCharWidth : function ( ) { return sb ( this . display ) } , setGutterMarker : Eb ( function ( a , b , c ) { return Lc ( this . doc , a , "gutter" , function ( a ) { var d = a . gutterMarkers || ( a . gutterMarkers = { } ) ; return d [ b ] = c , ! c && Ke ( d ) && ( a . gutterMarkers = null ) , ! 0 } ) } ) , clearGutter : Eb ( function ( a ) { var b = this , c = b . doc , d = c . first ; c . iter ( function ( c ) { c . gutterMarkers && c . gutterMarkers [ a ] && ( c . gutterMarkers [ a ] = null , Jb ( b , d , "gutter" ) , Ke ( c . gutterMarkers ) && ( c . gutterMarkers = null ) ) , ++ d } ) } ) , lineInfo : function ( a ) { if ( "number" == typeof a ) { if ( ! sa ( this . doc , a ) ) return null ; var b = a ; if ( a = Vd ( this . doc , a ) , ! a ) return null } else { var b = Zd ( a ) ; if ( null == b ) return null } return { line : b , handle : a , text : a . text , gutterMarkers : a . gutterMarkers , textClass : a . textClass , bgClass : a . bgClass , wrapClass : a . wrapClass , widgets : a . widgets } } , getViewport : function ( ) { return { from : this . display . viewFrom , to : this . display . viewTo } } , addWidget : function ( a , b , c , d , e ) { var f = this . display ; a = mb ( this , qa ( this . doc , a ) ) ; var g = a . bottom , h = a . left ; if ( b . style . position = "absolute" , b . setAttribute ( "cm-ignore-events" , "true" ) , this . display . input . setUneditable ( b ) , f . sizer . appendChild ( b ) , "over" == d ) g = a . top ; else if ( "above" == d || "near" == d ) { var i = Math . max ( f . wrapper . clientHeight , this . doc . height ) , j = Math . max ( f . sizer . clientWidth , f . lineSpace . clientWidth ) ; ( "above" == d || a . bottom + b . offsetHeight > i ) && a . top > b . offsetHeight ? g = a . top - b . offsetHeight : a . bottom + b . offsetHeight <= i && ( g = a . bottom ) , h + b . offsetWidth > j && ( h = j - b . offsetWidth ) } b . style . top = g + "px" , b . style . left = b . style . right = "" , "right" == e ? ( h = f . sizer . clientWidth - b . offsetWidth , b . style . right = "0px" ) : ( "left" == e ? h = 0 : "middle" == e && ( h = ( f . sizer . clientWidth - b . offsetWidth ) / 2 ) , b . style . left = h + "px" ) , c && Fc ( this , h , g , h + b . offsetWidth , g + b . offsetHeight ) } , triggerOnKeyDown : Eb ( ic ) , triggerOnKeyPress : Eb ( lc ) , triggerOnKeyUp : kc , execCommand : function ( a ) { if ( dg . hasOwnProperty ( a ) ) return dg [ a ] ( this ) } , triggerElectric : Eb ( function ( a ) { aa ( this , a ) } ) , findPosH : function ( a , b , c , d ) { var e = 1 ; b < 0 && ( e = - 1 , b = - b ) ; for ( var f = 0 , g = qa ( this . doc , a ) ; f < b && ( g = Nc ( this . doc , g , e , c , d ) , ! g . hitSide ) ; ++ f ) ; return g } , moveH : Eb ( function ( a , b ) { var c = this ; c . extendSelectionsBy ( function ( d ) { return c . display . shift || c . doc . extend || d . empty ( ) ? Nc ( c . doc , d . head , a , b , c . options . rtlMoveVisually ) : a < 0 ? d . from ( ) : d . to ( ) } , Fg ) } ) , deleteH : Eb ( function ( a , b ) { var c = this . doc . sel , d = this . doc ; c . somethingSelected ( ) ? d . replaceSelection ( "" , null , "+delete" ) : Mc ( this , function ( c ) { var e = Nc ( d , c . head , a , b , ! 1 ) ; return a < 0 ? { from : e , to : c . head } : { from : c . head , to : e } } ) } ) , findPosV : function ( a , b , c , d ) { var e = 1 , f = d ; b < 0 && ( e = - 1 , b = - b ) ; for ( var g = 0 , h = qa ( this . doc , a ) ; g < b ; ++ g ) { var i = mb ( this , h , "div" ) ; if ( null == f ? f = i . left : i . left = f , h = Oc ( this , i , e , c ) , h . hitSide ) break } return h } , moveV : Eb ( function ( a , b ) { var c = this , d = this . doc , e = [ ] , f = ! c . display . shift && ! d . extend && d . sel . somethingSelected ( ) ; if ( d . extendSelectionsBy ( function ( g ) { if ( f ) return a < 0 ? g . from ( ) : g . to ( ) ; var h = mb ( c , g . head , "div" ) ; null != g . goalColumn && ( h . left = g . goalColumn ) , e . push ( h . left ) ; var i = Oc ( c , h , a , b ) ; return "page" == b && g == d . sel . primary ( ) && Hc ( c , null , lb ( c , i , "div" ) . top - h . top ) , i } , Fg ) , e . length ) for ( var g = 0 ; g < d . sel . ranges . length ; g ++ ) d . sel . ranges [ g ] . goalColumn = e [ g ] } ) , findWordAt : function ( a ) { var b = this . doc , c = Vd ( b , a . line ) . text , d = a . ch , e = a . ch ; if ( c ) { var
if ( c ) for ( var d = 0 ; d < c . length ; ++ d ) { var e = c [ d ] ; ( null == e . from || e . from <= a . ch ) && ( null == e . to || e . to >= a . ch ) && b . push ( e . marker . parent || e . marker ) } return b } , findMarks : function ( a , b , c ) { a = qa ( this , a ) , b = qa ( this , b ) ; var d = [ ] , e = a . line ; return this . iter ( a . line , b . line + 1 , function ( f ) { var g = f . markedSpans ; if ( g ) for ( var h = 0 ; h < g . length ; h ++ ) { var i = g [ h ] ; e == a . line && a . ch > i . to || null == i . from && e != a . line || e == b . line && i . from > b . ch || c && ! c ( i . marker ) || d . push ( i . marker . parent || i . marker ) } ++ e } ) , d } , getAllMarks : function ( ) { var a = [ ] ; return this . iter ( function ( b ) { var c = b . markedSpans ; if ( c ) for ( var d = 0 ; d < c . length ; ++ d ) null != c [ d ] . from && a . push ( c [ d ] . marker ) } ) , a } , posFromIndex : function ( a ) { var b , c = this . first ; return this . iter ( function ( d ) { var e = d . text . length + 1 ; return e > a ? ( b = a , ! 0 ) : ( a -= e , void ++ c ) } ) , qa ( this , Ff ( c , b ) ) } , indexFromPos : function ( a ) { a = qa ( this , a ) ; var b = a . ch ; return a . line < this . first || a . ch < 0 ? 0 : ( this . iter ( this . first , a . line , function ( a ) { b += a . text . length + 1 } ) , b ) } , copy : function ( a ) { var b = new rg ( Xd ( this , this . first , this . first + this . size ) , this . modeOption , this . first ) ; return b . scrollTop = this . scrollTop , b . scrollLeft = this . scrollLeft , b . sel = this . sel , b . extend = ! 1 , a && ( b . history . undoDepth = this . history . undoDepth , b . setHistory ( this . getHistory ( ) ) ) , b } , linkedDoc : function ( a ) { a || ( a = { } ) ; var b = this . first , c = this . first + this . size ; null != a . from && a . from > b && ( b = a . from ) , null != a . to && a . to < c && ( c = a . to ) ; var d = new rg ( Xd ( this , b , c ) , a . mode || this . modeOption , b ) ; return a . sharedHist && ( d . history = this . history ) , ( this . linked || ( this . linked = [ ] ) ) . push ( { doc : d , sharedHist : a . sharedHist } ) , d . linked = [ { doc : this , isParent : ! 0 , sharedHist : a . sharedHist } ] , Vc ( d , Uc ( this ) ) , d } , unlinkDoc : function ( b ) { if ( b instanceof a && ( b = b . doc ) , this . linked ) for ( var c = 0 ; c < this . linked . length ; ++ c ) { var d = this . linked [ c ] ; if ( d . doc == b ) { this . linked . splice ( c , 1 ) , b . unlinkDoc ( this ) , Wc ( Uc ( this ) ) ; break } } if ( b . history == this . history ) { var e = [ b . id ] ; Td ( b , function ( a ) { e . push ( a . id ) } , ! 0 ) , b . history = new be ( null ) , b . history . done = me ( this . history . done , e ) , b . history . undone = me ( this . history . undone , e ) } } , iterLinkedDocs : function ( a ) { Td ( this , a ) } , getMode : function ( ) { return this . mode } , getEditor : function ( ) { return this . cm } } ) , rg . prototype . eachLine = rg . prototype . iter ; var sg = "iter insert remove copy getEditor constructor" . split ( " " ) ; for ( var tg in rg . prototype ) rg . prototype . hasOwnProperty ( tg ) && De ( sg , tg ) < 0 && ( a . prototype [ tg ] = function ( a ) { return function ( ) { return a . apply ( this . doc , arguments ) } } ( rg . prototype [ tg ] ) ) ; ye ( rg ) ; var ug = a . e _preventDefault = function ( a ) { a . preventDefault ? a . preventDefault ( ) : a . returnValue = ! 1 } , vg = a . e _stopPropagation = function ( a ) { a . stopPropagation ? a . stopPropagation ( ) : a . cancelBubble = ! 0 } , wg = a . e _stop = function ( a ) { ug ( a ) , vg ( a ) } , xg = a . on = function ( a , b , c ) { if ( a . addEventListener ) a . addEventListener ( b , c , ! 1 ) ; else if ( a . attachEvent ) a . attachEvent ( "on" + b , c ) ; else { var d = a . _handlers || ( a . _handlers = { } ) , e = d [ b ] || ( d [ b ] = [ ] ) ; e . push ( c ) } } , yg = a . off = function ( a , b , c ) { if ( a . removeEventListener ) a . removeEventListener ( b , c , ! 1 ) ; else if ( a . detachEvent ) a . detachEvent ( "on" + b , c ) ; else { var d = a . _handlers && a . _handlers [ b ] ; if ( ! d ) return ; for ( var e = 0 ; e < d . length ; ++ e ) if ( d [ e ] == c ) { d . splice ( e , 1 ) ; break } } } , zg = a . signal = function ( a , b ) { var c = a . _handlers && a . _handlers [ b ] ; if ( c ) for ( var d = Array . prototype . slice . call ( arguments , 2 ) , e = 0 ; e < c . length ; ++ e ) c [ e ] . apply ( null , d ) } , Ag = null , Bg = 30 , Cg = a . Pass = { toString : function ( ) { return "CodeMirror.Pass" } } , Dg = { scroll : ! 1 } , Eg = { origin : "*mouse" } , Fg = { origin : "+move" } ; ze . prototype . set = function ( a , b ) { clearTimeout ( this . id ) , this . id = setTimeout ( b , a ) } ; var Gg = a . countColumn = function ( a , b , c , d , e ) { null == b && ( b = a . search ( /[^\s\u00a0]/ ) , b == - 1 && ( b = a . length ) ) ; for ( var f = d || 0 , g = e || 0 ; ; ) { var h = a . indexOf ( "\t" , f ) ; if ( h < 0 || h >= b ) return g + ( b - f ) ; g += h - f , g += c - g % c , f = h + 1 } } , Hg = [ "" ] , Ig = function ( a ) { a . select ( ) } ; wf ? Ig = function ( a ) { a . selectionStart = 0 , a . selectionEnd = a . value . length } : nf && ( Ig = function ( a ) { try { a . select ( ) } catch ( b ) { } } ) ; var Jg , Kg = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/ , Lg = a . isWordChar = function ( a ) { return /\w/ . test ( a ) || a > " " && ( a . toUpperCase ( ) != a . toLowerCase ( ) || Kg . test ( a ) ) } , Mg = / [ \ u 0 3 0 0 - \ u 0 3 6 f \ u 0 4 8 3 - \ u 0 4 8 9 \ u 0 5 9 1 - \ u 0 5 b d \ u 0 5 b f \ u 0 5 c 1 \ u 0 5 c 2 \ u 0 5 c 4 \ u 0 5 c 5 \ u 0 5 c 7 \ u 0 6 1 0 - \ u 0 6 1 a \ u 0 6 4 b - \ u 0 6 5 e \ u 0 6 7 0 \ u 0 6 d 6 - \ u 0 6 d c \ u 0 6 d e - \ u 0 6 e 4 \ u 0 6 e 7 \ u 0 6 e 8 \ u 0 6 e a - \ u 0 6 e d \ u 0 7
} , _getMaxScrollLeft : function ( ) { return Math . max ( 0 , this . _columnSizeAndPositionManager . getTotalSize ( ) - this . options . width + ( this . options . overflowX ? BI . DOM . getScrollWidth ( ) : 0 ) ) } , _getMaxScrollTop : function ( ) { return Math . max ( 0 , this . _rowSizeAndPositionManager . getTotalSize ( ) - this . options . height + ( this . options . overflowY ? BI . DOM . getScrollWidth ( ) : 0 ) ) } , _populate : function ( a ) { var b = this . options ; this . _reRange ( ) , this . columnCount = 0 , this . rowCount = 0 , a && a !== this . options . items && ( this . options . items = a ) , BI . isNumber ( b . columnCount ) ? this . columnCount = b . columnCount : b . items . length > 0 && ( this . columnCount = b . items [ 0 ] . length ) , BI . isNumber ( b . rowCount ) ? this . rowCount = b . rowCount : this . rowCount = b . items . length , this . container . setWidth ( this . columnCount * b . estimatedColumnSize ) , this . container . setHeight ( this . rowCount * b . estimatedRowSize ) , this . _columnSizeAndPositionManager = new BI . ScalingCellSizeAndPositionManager ( this . columnCount , b . columnWidthGetter , b . estimatedColumnSize ) , this . _rowSizeAndPositionManager = new BI . ScalingCellSizeAndPositionManager ( this . rowCount , b . rowHeightGetter , b . estimatedRowSize ) , this . _calculateChildrenToRender ( ) ; try { this . element . scrollTop ( b . scrollTop ) , this . element . scrollLeft ( b . scrollLeft ) } catch ( c ) { } } , setScrollLeft : function ( a ) { this . options . scrollLeft !== a && ( this . _scrollLock = ! 0 , this . options . scrollLeft = BI . clamp ( a || 0 , 0 , this . _getRealMaxScrollLeft ( ) ) , this . _debounceRelease ( ) , this . _calculateChildrenToRender ( ) , this . element . scrollLeft ( this . options . scrollLeft ) ) } , setScrollTop : function ( a ) { this . options . scrollTop !== a && ( this . _scrollLock = ! 0 , this . options . scrollTop = BI . clamp ( a || 0 , 0 , this . _getMaxScrollTop ( ) ) , this . _debounceRelease ( ) , this . _calculateChildrenToRender ( ) , this . element . scrollTop ( this . options . scrollTop ) ) } , setColumnCount : function ( a ) { this . options . columnCount = a } , setRowCount : function ( a ) { this . options . rowCount = a } , setOverflowX : function ( a ) { var b = this ; this . options . overflowX !== ! ! a && ( this . options . overflowX = ! ! a , BI . nextTick ( function ( ) { b . element . css ( { overflowX : a ? "auto" : "hidden" } ) } ) ) } , setOverflowY : function ( a ) { var b = this ; this . options . overflowY !== ! ! a && ( this . options . overflowY = ! ! a , BI . nextTick ( function ( ) { b . element . css ( { overflowY : a ? "auto" : "hidden" } ) } ) ) } , getScrollLeft : function ( ) { return this . options . scrollLeft } , getScrollTop : function ( ) { return this . options . scrollTop } , getMaxScrollLeft : function ( ) { return this . _getMaxScrollLeft ( ) } , getMaxScrollTop : function ( ) { return this . _getMaxScrollTop ( ) } , setEstimatedColumnSize : function ( a ) { this . options . estimatedColumnSize = a } , setEstimatedRowSize : function ( a ) { this . options . estimatedRowSize = a } , _reRange : function ( ) { this . renderRange = { } } , _clearChildren : function ( ) { this . container . _children = { } , this . container . attr ( "items" , [ ] ) } , restore : function ( ) { BI . each ( this . renderedCells , function ( a , b ) { b . el . _destroy ( ) } ) , this . _clearChildren ( ) , this . renderedCells = [ ] , this . renderedKeys = [ ] , this . renderRange = { } , this . _scrollLock = ! 1 } , populate : function ( a ) { a && a !== this . options . items && this . restore ( ) , this . _populate ( a ) } } ) , BI . GridView . EVENT _SCROLL = "EVENT_SCROLL" , BI . shortcut ( "bi.grid_view" , BI . GridView ) , BI . Popover = BI . inherit ( BI . Widget , { _constant : { SIZE : { SMALL : "small" , NORMAL : "normal" , BIG : "big" } , HEADER _HEIGHT : 40 } , _defaultConfig : function ( ) { return BI . extend ( BI . Popover . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-popover bi-card" , size : "normal" , header : null , body : null , footer : null } ) } , render : function ( ) { var a = this , b = this . options ; this . startX = 0 , this . startY = 0 , this . tracker = new BI . MouseMoveTracker ( function ( b , c ) { var d = a . _calculateSize ( ) , e = $ ( "body" ) . width ( ) , f = $ ( "body" ) . height ( ) ; a . startX += b , a . startY += c , a . element . css ( { left : BI . clamp ( a . startX , 0 , e - d . width ) + "px" , top : BI . clamp ( a . startY , 0 , f - d . height ) + "px" } ) , BI . Resizers . _resize ( ) } , function ( ) { a . tracker . releaseMouseMoves ( ) } , window ) ; var c = { north : { el : { type : "bi.htape" , cls : "bi-message-title bi-header-background" , ref : function ( b ) { a . dragger = b } , items : [ { type : "bi.absolute" , items : [ { el : BI . isPlainObject ( b . header ) ? BI . createWidget ( b . header , { extraCls : "bi-font-bold" } ) : { type : "bi.label" , cls : "bi-font-bold" , height : this . _constant . HEADER _HEIGHT , text : b . header , textAlign : "left" } , left : 20 , top : 0 , right : 0 , bottom : 0 } ] } , { el : { type : "bi.icon_button" , cls : "bi-message-close close-font" , height : this . _constant . HEADER _HEIGHT , h
width : a . height } ) } ) ) ) ) } , doClick : function ( ) { BI . BlankIconTextIconItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . BlankIconTextIconItem . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } } ) , BI . BlankIconTextIconItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.blank_icon_text_icon_item" , BI . BlankIconTextIconItem ) , BI . BlankIconTextItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . BlankIconTextItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-blank-icon-text-item" , logic : { dynamic : ! 1 } , cls : "close-ha-font" , blankWidth : 0 , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . BlankIconTextItem . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = ( this . _const , BI . createWidget ( { type : "bi.layout" , width : a . blankWidth } ) ) ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , hgap : a . textHgap , vgap : a . textVgap , lgap : a . textLgap , rgap : a . textRgap , text : a . text , value : a . value , keyword : a . keyword , height : a . height } ) , this . icon = BI . createWidget ( { type : "bi.icon_label" , width : a . height , height : a . height , iconWidth : a . iconWidth , iconHeight : a . iconHeight } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , b , this . icon , this . text ) } ) ) ) ) } , doClick : function ( ) { BI . BlankIconTextItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . BlankIconTextItem . EVENT _CHANGE , this . getValue ( ) , this ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } } ) , BI . BlankIconTextItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.blank_icon_text_item" , BI . BlankIconTextItem ) , BI . IconTextIconItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var a = BI . IconTextIconItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-icon-text-icon-item" , logic : { dynamic : ! 1 } , iconCls1 : "close-ha-font" , iconCls2 : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . IconTextIconItem . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . _const ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , hgap : a . textHgap , vgap : a . textVgap , lgap : a . textLgap , rgap : a . textRgap , text : a . text , value : a . value , keyword : a . keyword , height : a . height } ) ; var b = BI . createWidget ( { type : "bi.icon_label" , cls : a . iconCls1 , width : a . leftIconWrapperWidth , height : a . height , iconWidth : a . iconWidth , iconHeight : a . iconHeight } ) , c = BI . createWidget ( { type : "bi.layout" , width : a . height } ) ; BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.icon_label" , cls : a . iconCls2 , width : a . rightIconWrapperWidth , height : a . height , iconWidth : a . iconWidth , iconHeight : a . iconHeight } , top : 0 , bottom : 0 , right : 0 } ] } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( a . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , b , this . text , c ) } ) ) ) ) } , doClick : function ( ) { BI . IconTextIconItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . IconTextIconItem . EV
this . element . attr ( "name" , a ) } , getName : function ( ) { return this . options . name } , getWidth : function ( ) { return this . options . width } , getHeight : function ( ) { return this . options . height } } ) , BI . shortcut ( "bi.iframe" , BI . Iframe ) , BI . Img = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var a = BI . Img . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-img display-block" , src : "" , width : "100%" , height : "100%" } ) } , _init : function ( ) { var a = this . options ; this . options . element = $ ( "<img src='" + a . src + "'>" ) , BI . Img . superclass . _init . apply ( this , arguments ) } , setSrc : function ( a ) { this . options . src = a , this . element . attr ( "src" , a ) } , getSrc : function ( ) { return this . options . src } } ) , BI . shortcut ( "bi.img" , BI . Img ) , BI . Checkbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { var a = BI . Checkbox . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : ( a . baseCls || "" ) + " bi-checkbox check-box-icon" , selected : ! 1 , handler : BI . emptyFn , width : 16 , height : 16 , iconWidth : 16 , iconHeight : 16 } ) } , _init : function ( ) { BI . Checkbox . superclass . _init . apply ( this , arguments ) } , doClick : function ( ) { BI . Checkbox . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . Checkbox . EVENT _CHANGE ) } } ) , BI . Checkbox . EVENT _CHANGE = "Checkbox.EVENT_CHANGE" , BI . shortcut ( "bi.checkbox" , BI . Checkbox ) , function ( ) { var F = function ( a ) { return function ( b ) { var c = b . files || [ b ] ; return c . item || ( c . item = a ) , c } } ( function ( a ) { return this [ a ] } ) , event = { add : document . addEventListener ? function ( a , b , c ) { return a . addEventListener ( b , c , ! 1 ) , this } : function ( a , b , c ) { return a . attachEvent ( "on" + b , c ) , this } , del : document . removeEventListener ? function ( a , b , c ) { return a . removeEventListener ( b , c , ! 1 ) , this } : function ( a , b , c ) { return a . detachEvent ( "on" + b , c ) , this } , stop : function ( a ) { return a ? ( a . stopPropagation ? a . stopPropagation ( ) : a . cancelBubble = ! 0 , a . preventDefault ? a . preventDefault ( ) : a . returnValue = ! 1 ) : self . event && ( event . returnValue = ! ( event . cancelBubble = ! 0 ) ) , ! 1 } } , sendFile = function ( toString ) { var multipart = function ( a , b , c ) { return "--" . concat ( a , CRLF , 'Content-Disposition: form-data; name="' , b , '"; filename="' , BI . cjkEncode ( c . fileName ) , '"' , CRLF , "Content-Type: application/octet-stream" , CRLF , CRLF , c . getAsBinary ( ) , CRLF , "--" , a , "--" , CRLF ) } , isFunction = function ( a ) { return "[object Function]" === toString . call ( a ) } , split = "onabort.onerror.onloadstart.onprogress" . split ( "." ) , length = split . length , CRLF = "\r\n" , xhr = this . XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject ( "Microsoft.XMLHTTP" ) , sendFile ; return sendFile = xhr . upload || xhr . sendAsBinary ? function ( a , b , c , d ) { if ( - 1 < b && b < a . file . fileSize ) return void ( isFunction ( a . onerror ) && a . onerror ( ) ) ; for ( var e = new XMLHttpRequest , f = e . upload || { addEventListener : function ( a , b ) { this [ "on" + a ] = b } } , g = 0 ; g < length ; g ++ ) f . addEventListener ( split [ g ] . substring ( 2 ) , function ( b ) { return function ( c ) { isFunction ( a [ b ] ) && a [ b ] ( c , e ) } } ( split [ g ] ) , ! 1 ) ; if ( f . addEventListener ( "load" , function ( b ) { a . onreadystatechange === ! 1 ? isFunction ( a . onload ) && a . onload ( b , e ) : setTimeout ( function ( ) { 4 === e . readyState ? isFunction ( a . onload ) && a . onload ( b , e ) : setTimeout ( arguments . callee , 15 ) } , 15 ) } , ! 1 ) , e . open ( "post" , a . url + "&filename=" + window . encodeURIComponent ( a . file . fileName ) , ! 0 ) , e . upload ) e . onreadystatechange = function ( ) { switch ( e . readyState ) { case 4 : var b = BI . jsonDecode ( e . responseText ) ; a . file . type . indexOf ( "image" ) != - 1 && ( b . attach _type = "image" ) , b . filename = a . file . fileName , 1 == a . maxlength ? a . attach _array [ 0 ] = b : a . attach _array . push ( b ) } } , isFunction ( f . onloadstart ) && f . onloadstart ( ) ; else { var h = { loaded : 0 , total : a . file . fileSize || a . file . size , simulation : ! 0 } ; h . interval = setInterval ( function ( ) { h . loaded += 256 , h . total <= h . loaded && ( h . loaded = h . total ) , f . onprogress ( h ) } , 100 ) , e . onabort = function ( ) { f . onabort ( { } ) } , e . onerror = function ( ) { f . onerror ( { } ) } , e . onreadystatechange = function ( ) { switch ( e . readyState ) { case 2 : case 3 : h . total <= h . loaded && ( h . loaded = h . total ) , f . onprogress ( h ) ; break ; case 4 : if ( clearInterval ( h . interval ) , h . interval = 0 , h . loaded = h . total , f . onprogress ( h ) , 199 < e . status && e . status < 400 ) { f . onload ( { } ) ; var b = BI . jsonDecode ( e . responseText ) ; b . filename = a . file . fileName , a . file . type . indexOf ( "image" ) != - 1 && ( b . attach _type = "image" ) , a . attach _array . push ( b ) } else f . onerror ( { } ) } } , f . onloadstart ( h ) } var i = "AjaxUploadBoundary" + ( new Date ) . getTime ( ) ; if ( e .
a . text = d , a ) } function n ( a , b , c , d ) { for ( var e = ! 1 , f = [ ] , g = b . start , j = ! 0 ; j ; ) j = "." == b . string . charAt ( 0 ) , e = e || b . string . charAt ( 0 ) == t , g = b . start , f . unshift ( l ( b . string ) ) , b = d . getTokenAt ( v ( a . line , b . start ) ) , "." == b . string && ( j = ! 0 , b = d . getTokenAt ( v ( a . line , b . start ) ) ) ; var n = f . join ( "." ) ; k ( c , n , q , function ( a ) { return e ? m ( a ) : a } ) , k ( c , n , r , function ( a ) { return e ? m ( a ) : a } ) , n = f . pop ( ) ; var o = f . join ( "." ) , s = ! 1 , u = o ; if ( ! h ( o ) ) { var w = o ; o = p ( o , d ) , o !== w && ( s = ! 0 ) } var x = h ( o ) ; return x && x . columns && ( x = x . columns ) , x && k ( c , n , x , function ( a ) { var b = o ; return 1 == s && ( b = u ) , "string" == typeof a ? a = b + "." + a : ( a = i ( a ) , a . text = b + "." + a . text ) , e ? m ( a ) : a } ) , g } function o ( a , b ) { for ( var c = a . split ( /\s+/ ) , d = 0 ; d < c . length ; d ++ ) c [ d ] && b ( c [ d ] . replace ( /[,;]/g , "" ) ) } function p ( a , b ) { for ( var c = b . doc , d = c . getValue ( ) , e = a . toUpperCase ( ) , f = "" , g = "" , i = [ ] , j = { start : v ( 0 , 0 ) , end : v ( b . lastLine ( ) , b . getLineHandle ( b . lastLine ( ) ) . length ) } , k = d . indexOf ( u . QUERY _DIV ) ; k != - 1 ; ) i . push ( c . posFromIndex ( k ) ) , k = d . indexOf ( u . QUERY _DIV , k + 1 ) ; i . unshift ( v ( 0 , 0 ) ) , i . push ( v ( b . lastLine ( ) , b . getLineHandle ( b . lastLine ( ) ) . text . length ) ) ; for ( var l = null , m = b . getCursor ( ) , n = 0 ; n < i . length ; n ++ ) { if ( ( null == l || w ( m , l ) > 0 ) && w ( m , i [ n ] ) <= 0 ) { j = { start : l , end : i [ n ] } ; break } l = i [ n ] } for ( var p = c . getRange ( j . start , j . end , ! 1 ) , n = 0 ; n < p . length ; n ++ ) { var q = p [ n ] ; if ( o ( q , function ( a ) { var b = a . toUpperCase ( ) ; b === e && h ( f ) && ( g = f ) , b !== u . ALIAS _KEYWORD && ( f = a ) } ) , g ) break } return g } var q , r , s , t , u = { QUERY _DIV : ";" , ALIAS _KEYWORD : "AS" } , v = a . Pos , w = a . cmpPos ; a . registerHelper ( "hint" , "sql" , function ( a , b ) { q = g ( b && b . tables ) ; var e = b && b . defaultTable , f = b && b . disableKeywords ; r = e && h ( e ) , s = c ( a ) ; var i = BI . size ( s ) , j = [ ] , l = a . getCursor ( ) , m = a . getTokenAt ( l ) ; b . supportFunction && ( BI . each ( BI . FormulaCollections , function ( a , b ) { 0 != b . lastIndexOf ( m . string , 0 ) || BI . contains ( j , b ) || j . push ( b ) } ) , s = BI . concat ( BI . keys ( s ) , j ) ) , t = d ( a ) , e && ! r && ( r = p ( e , a ) ) , r = r || [ ] , r . columns && ( r = r . columns ) ; var o , u , w , x = [ ] ; return m . end > l . ch && ( m . end = l . ch , m . string = m . string . slice ( 0 , l . ch - m . start ) ) , m . string . match ( /^[.`"\w@]\w*$/ ) ? ( w = m . string , o = m . start , u = m . end ) : ( o = u = l . ch , w = "" ) , "." == w . charAt ( 0 ) || w . charAt ( 0 ) == t ? o = n ( l , m , x , a ) : ( k ( x , w , q , function ( a ) { return a } ) , k ( x , w , r , function ( a ) { return a } ) , f || k ( x , w , s , function ( a , b ) { var c = b < i ; return { isKeyword : c , text : a } } ) ) , { list : x , from : v ( l . line , o ) , to : v ( l . line , u ) } } ) } ) , function ( a ) { a ( CodeMirror ) } ( function ( a ) { "use strict" ; a . defineMode ( "sql" , function ( b , c ) { function d ( a , b ) { var c = a . next ( ) ; if ( o [ c ] ) { var d = o [ c ] ( a , b ) ; if ( d !== ! 1 ) return d } if ( n . hexNumber && ( "0" == c && a . match ( /^[xX][0-9a-fA-F]+/ ) || ( "x" == c || "X" == c ) && a . match ( /^'[0-9a-fA-F]+'/ ) ) ) return "number" ; if ( n . binaryNumber && ( ( "b" == c || "B" == c ) && a . match ( /^'[01]+'/ ) || "0" == c && a . match ( /^b[01]+/ ) ) ) return "number" ; if ( c . charCodeAt ( 0 ) > 47 && c . charCodeAt ( 0 ) < 58 ) return a . match ( /^[0-9]*(\.[0-9]+)?([eE][-+]?[0-9]+)?/ ) , n . decimallessFloat && a . match ( /^\.(?!\.)/ ) , "number" ; if ( "?" == c && ( a . eatSpace ( ) || a . eol ( ) || a . eat ( ";" ) ) ) return "variable-3" ; if ( "'" == c || '"' == c && n . doubleQuote ) return b . tokenize = e ( c ) , b . tokenize ( a , b ) ; if ( ( n . nCharCast && ( "n" == c || "N" == c ) || n . charsetCast && "_" == c && a . match ( /[a-z][a-z0-9]*/i ) ) && ( "'" == a . peek ( ) || '"' == a . peek ( ) ) ) return "keyword" ; if ( /^[\(\),\;\[\]]/ . test ( c ) ) return null ; if ( n . commentSlashSlash && "/" == c && a . eat ( "/" ) ) return a . skipToEnd ( ) , "comment" ; if ( n . commentHash && "#" == c || "-" == c && a . eat ( "-" ) && ( ! n . commentSpaceRequired || a . eat ( " " ) ) ) return a . skipToEnd ( ) , "comment" ; if ( "/" == c && a . eat ( "*" ) ) return b . tokenize = f ( 1 ) , b . tokenize ( a , b ) ; if ( "." != c ) { if ( m . test ( c ) ) return a . eatWhile ( m ) , null ; if ( "{" == c && ( a . match ( /^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/ ) || a . match ( /^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/ ) ) ) return "number" ; a . eatWhile ( /^[_\w\d]/ ) ; var g = a . current ( ) . toLowerCase ( ) ; return p . hasOwnProperty ( g ) && ( a . match ( /^( )+'[^']*'/ ) || a . match ( /^( )+"[^"]*"/ ) ) ? "number" : j . hasOwnProperty ( g ) ? "atom" : k . hasOwnProperty ( g ) ? "builtin" : q . hasOwnProperty ( g ) && "(" === a . peek ( ) ? "function" : l . hasOwnProperty ( g ) ? "keyword" : i . hasOwnProperty ( g ) ? "string-2" : null } return n . zerolessFloat && a . match ( /^(?:\d+(?:e[+-]?\d+)?)/i ) ? "number" : a . match ( /^\.+/ ) ? null : n . ODBCdotTable && a . match ( /^[\w\d_]+/ ) ? "variable-2" : void 0 } function e ( a ) { return function ( b , c ) { for ( var e , f = ! 1 ; null != ( e = b . next ( ) ) ; ) { if ( e == a && ! f ) { c . tokenize = d ; break } f = ! f && "\\" == e } return "string" } } function f ( a ) { return function ( b , c ) { var e = b . match ( /^.*?(\/\*|\*\/)/ ) ; return e ? "/*" == e [ 1 ] ? c . tokeniz
var e = b . pathBBox ( a ) ; return b . isPointInsideBBox ( e , c , d ) && m ( a , [ [ "M" , c , d ] , [ "H" , e . x2 + 10 ] ] , 1 ) % 2 == 1 } , b . _removedFactory = function ( b ) { return function ( ) { a ( "raphael.log" , null , "Raphaël: you are calling to method “" + b + "” of removed object" , b ) } } ; var za = b . pathBBox = function ( a ) { var b = ya ( a ) ; if ( b . bbox ) return c ( b . bbox ) ; if ( ! a ) return { x : 0 , y : 0 , width : 0 , height : 0 , x2 : 0 , y2 : 0 } ; a = Ia ( a ) ; for ( var d , e = 0 , f = 0 , g = [ ] , h = [ ] , i = 0 , j = a . length ; i < j ; i ++ ) if ( d = a [ i ] , "M" == d [ 0 ] ) e = d [ 1 ] , f = d [ 2 ] , g . push ( e ) , h . push ( f ) ; else { var k = Ha ( e , f , d [ 1 ] , d [ 2 ] , d [ 3 ] , d [ 4 ] , d [ 5 ] , d [ 6 ] ) ; g = g [ D ] ( k . min . x , k . max . x ) , h = h [ D ] ( k . min . y , k . max . y ) , e = d [ 5 ] , f = d [ 6 ] } var l = O [ C ] ( 0 , g ) , m = O [ C ] ( 0 , h ) , n = N [ C ] ( 0 , g ) , o = N [ C ] ( 0 , h ) , p = n - l , q = o - m , r = { x : l , y : m , x2 : n , y2 : o , width : p , height : q , cx : l + p / 2 , cy : m + q / 2 } ; return b . bbox = c ( r ) , r } , Aa = function ( a ) { var d = c ( a ) ; return d . toString = b . _path2string , d } , Ba = b . _pathToRelative = function ( a ) { var c = ya ( a ) ; if ( c . rel ) return Aa ( c . rel ) ; b . is ( a , U ) && b . is ( a && a [ 0 ] , U ) || ( a = b . parsePathString ( a ) ) ; var d = [ ] , e = 0 , f = 0 , g = 0 , h = 0 , i = 0 ; "M" == a [ 0 ] [ 0 ] && ( e = a [ 0 ] [ 1 ] , f = a [ 0 ] [ 2 ] , g = e , h = f , i ++ , d . push ( [ "M" , e , f ] ) ) ; for ( var j = i , k = a . length ; j < k ; j ++ ) { var l = d [ j ] = [ ] , m = a [ j ] ; if ( m [ 0 ] != L . call ( m [ 0 ] ) ) switch ( l [ 0 ] = L . call ( m [ 0 ] ) , l [ 0 ] ) { case "a" : l [ 1 ] = m [ 1 ] , l [ 2 ] = m [ 2 ] , l [ 3 ] = m [ 3 ] , l [ 4 ] = m [ 4 ] , l [ 5 ] = m [ 5 ] , l [ 6 ] = + ( m [ 6 ] - e ) . toFixed ( 3 ) , l [ 7 ] = + ( m [ 7 ] - f ) . toFixed ( 3 ) ; break ; case "v" : l [ 1 ] = + ( m [ 1 ] - f ) . toFixed ( 3 ) ; break ; case "m" : g = m [ 1 ] , h = m [ 2 ] ; default : for ( var n = 1 , o = m . length ; n < o ; n ++ ) l [ n ] = + ( m [ n ] - ( n % 2 ? e : f ) ) . toFixed ( 3 ) } else { l = d [ j ] = [ ] , "m" == m [ 0 ] && ( g = m [ 1 ] + e , h = m [ 2 ] + f ) ; for ( var p = 0 , q = m . length ; p < q ; p ++ ) d [ j ] [ p ] = m [ p ] } var r = d [ j ] . length ; switch ( d [ j ] [ 0 ] ) { case "z" : e = g , f = h ; break ; case "h" : e += + d [ j ] [ r - 1 ] ; break ; case "v" : f += + d [ j ] [ r - 1 ] ; break ; default : e += + d [ j ] [ r - 2 ] , f += + d [ j ] [ r - 1 ] } } return d . toString = b . _path2string , c . rel = Aa ( d ) , d } , Ca = b . _pathToAbsolute = function ( a ) { var c = ya ( a ) ; if ( c . abs ) return Aa ( c . abs ) ; if ( b . is ( a , U ) && b . is ( a && a [ 0 ] , U ) || ( a = b . parsePathString ( a ) ) , ! a || ! a . length ) return [ [ "M" , 0 , 0 ] ] ; var d = [ ] , e = 0 , f = 0 , h = 0 , i = 0 , j = 0 ; "M" == a [ 0 ] [ 0 ] && ( e = + a [ 0 ] [ 1 ] , f = + a [ 0 ] [ 2 ] , h = e , i = f , j ++ , d [ 0 ] = [ "M" , e , f ] ) ; for ( var k , l , m = 3 == a . length && "M" == a [ 0 ] [ 0 ] && "R" == a [ 1 ] [ 0 ] . toUpperCase ( ) && "Z" == a [ 2 ] [ 0 ] . toUpperCase ( ) , n = j , o = a . length ; n < o ; n ++ ) { if ( d . push ( k = [ ] ) , l = a [ n ] , l [ 0 ] != aa . call ( l [ 0 ] ) ) switch ( k [ 0 ] = aa . call ( l [ 0 ] ) , k [ 0 ] ) { case "A" : k [ 1 ] = l [ 1 ] , k [ 2 ] = l [ 2 ] , k [ 3 ] = l [ 3 ] , k [ 4 ] = l [ 4 ] , k [ 5 ] = l [ 5 ] , k [ 6 ] = + ( l [ 6 ] + e ) , k [ 7 ] = + ( l [ 7 ] + f ) ; break ; case "V" : k [ 1 ] = + l [ 1 ] + f ; break ; case "H" : k [ 1 ] = + l [ 1 ] + e ; break ; case "R" : for ( var p = [ e , f ] [ D ] ( l . slice ( 1 ) ) , q = 2 , r = p . length ; q < r ; q ++ ) p [ q ] = + p [ q ] + e , p [ ++ q ] = + p [ q ] + f ; d . pop ( ) , d = d [ D ] ( g ( p , m ) ) ; break ; case "M" : h = + l [ 1 ] + e , i = + l [ 2 ] + f ; default : for ( q = 1 , r = l . length ; q < r ; q ++ ) k [ q ] = + l [ q ] + ( q % 2 ? e : f ) } else if ( "R" == l [ 0 ] ) p = [ e , f ] [ D ] ( l . slice ( 1 ) ) , d . pop ( ) , d = d [ D ] ( g ( p , m ) ) , k = [ "R" ] [ D ] ( l . slice ( - 2 ) ) ; else for ( var s = 0 , t = l . length ; s < t ; s ++ ) k [ s ] = l [ s ] ; switch ( k [ 0 ] ) { case "Z" : e = h , f = i ; break ; case "H" : e = k [ 1 ] ; break ; case "V" : f = k [ 1 ] ; break ; case "M" : h = k [ k . length - 2 ] , i = k [ k . length - 1 ] ; default : e = k [ k . length - 2 ] , f = k [ k . length - 1 ] } } return d . toString = b . _path2string , c . abs = Aa ( d ) , d } , Da = function ( a , b , c , d ) { return [ a , b , c , d , c , d ] } , Ea = function ( a , b , c , d , e , f ) { var g = 1 / 3 , h = 2 / 3 ; return [ g * a + h * c , g * b + h * d , g * e + h * c , g * f + h * d , e , f ] } , Fa = function ( a , b , c , d , f , g , h , i , j , k ) { var l , m = 120 * R / 180 , n = R / 180 * ( + f || 0 ) , o = [ ] , p = e ( function ( a , b , c ) { var d = a * M . cos ( c ) - b * M . sin ( c ) , e = a * M . sin ( c ) + b * M . cos ( c ) ; return { x : d , y : e } } ) ; if ( k ) y = k [ 0 ] , z = k [ 1 ] , w = k [ 2 ] , x = k [ 3 ] ; else { l = p ( a , b , - n ) , a = l . x , b = l . y , l = p ( i , j , - n ) , i = l . x , j = l . y ; var q = ( M . cos ( R / 180 * f ) , M . sin ( R / 180 * f ) , ( a - i ) / 2 ) , r = ( b - j ) / 2 , s = q * q / ( c * c ) + r * r / ( d * d ) ; s > 1 && ( s = M . sqrt ( s ) , c = s * c , d = s * d ) ; var t = c * c , u = d * d , v = ( g == h ? - 1 : 1 ) * M . sqrt ( P ( ( t * u - t * r * r - u * q * q ) / ( t * r * r + u * q * q ) ) ) , w = v * c * r / d + ( a + i ) / 2 , x = v * - d * q / c + ( b + j ) / 2 , y = M . asin ( ( ( b - x ) / d ) . toFixed ( 9 ) ) , z = M . asin ( ( ( j - x ) / d ) . toFixed ( 9 ) ) ; y = a < w ? R - y : y , z = i < w ? R - z : z , y < 0 && ( y = 2 * R + y ) , z < 0 && ( z = 2 * R + z ) , h && y > z && ( y -= 2 * R ) , ! h && z > y && ( z -= 2 * R ) } var A = z - y ; if ( P ( A ) > m ) { var B = z , C = i , E = j ; z = y + m * ( h && z > y ? 1 : - 1 ) , i = w + c * M . cos ( z ) , j = x + d * M . sin ( z ) , o = Fa ( i , j , c , d , f , 0 , h , C , E , [ z , B , w , x ] ) } A = z - y ; var F = M . cos ( y ) , G = M . sin ( y ) , H = M . cos ( z ) , J = M . sin ( z ) , K = M . tan ( A / 4 ) , L = 4 / 3 * c * K , N = 4 / 3 * d * K , O = [ a , b ] , Q = [ a + L * G , b - N * F ] , S = [ i + L * J , j - N * H ] , T = [ i , j ] ; if ( Q [ 0 ] = 2 * O [ 0 ] - Q [ 0 ] , Q [ 1 ] = 2 * O [ 1 ] - Q [ 1 ] , k ) return [ Q , S , T ] [ D ] ( o ) ; o = [ Q , S , T ] [ D ] ( o ) . join ( ) [ I ] ( "," ) ; for ( var U = [ ] , V = 0 , W = o . length ; V < W ; V ++ ) U [ V ] = V % 2 ? p ( o [ V - 1 ] , o [ V ] , n ) . y : p ( o [ V ] , o [ V + 1 ] , n ) . x ; return U } , Ga = function ( a , b , c , d , e , f , g , h , i ) { var j = 1 - i ; return { x : Q ( j , 3 ) * a + 3 * Q ( j , 2 ) * i * c + 3 * j * i * i * e + Q ( i , 3 ) * g , y : Q ( j , 3 ) * b + 3 * Q ( j , 2 ) * i * d + 3 * j * i * i * f +
} ) , e = ( null == e || e == d ? a : e ) + "" } ; return function ( b , d ) { return String ( b ) . replace ( a , function ( a , b ) { return c ( a , b , d ) } ) } } ( ) , b . ninja = function ( ) { return A . was ? z . win . Raphael = A . is : delete Raphael , b } , b . st = kb , a . on ( "raphael.DOMload" , function ( ) { t = ! 0 } ) , function ( a , c , d ) { function e ( ) { /in/ . test ( a . readyState ) ? setTimeout ( e , 9 ) : b . eve ( "raphael.DOMload" ) } null == a . readyState && a . addEventListener && ( a . addEventListener ( c , d = function ( ) { a . removeEventListener ( c , d , ! 1 ) , a . readyState = "complete" } , ! 1 ) , a . readyState = "loading" ) , e ( ) } ( document , "DOMContentLoaded" ) , b } ) , function ( a , b ) { "function" == typeof define && define . amd ? define ( "raphael.svg" , [ "raphael.core" ] , function ( a ) { return b ( a ) } ) : b ( "object" == typeof exports ? require ( "raphael.core" ) : a . Raphael ) } ( this , function ( a ) { if ( ! a || a . svg ) { var b = "hasOwnProperty" , c = String , d = parseFloat , e = parseInt , f = Math , g = f . max , h = f . abs , i = f . pow , j = /[, ]+/ , k = a . eve , l = "" , m = " " , n = "http://www.w3.org/1999/xlink" , o = { block : "M5,0 0,2.5 5,5z" , classic : "M5,0 0,2.5 5,5 3.5,3 3.5,2z" , diamond : "M2.5,0 5,2.5 2.5,5 0,2.5z" , open : "M6,1 1,3.5 6,6" , oval : "M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z" } , p = { } ; a . toString = function ( ) { return "Your browser supports SVG.\nYou are running Raphaël " + this . version } ; var q = function ( d , e ) { if ( e ) { "string" == typeof d && ( d = q ( d ) ) ; for ( var f in e ) e [ b ] ( f ) && ( "xlink:" == f . substring ( 0 , 6 ) ? d . setAttributeNS ( n , f . substring ( 6 ) , c ( e [ f ] ) ) : d . setAttribute ( f , c ( e [ f ] ) ) ) } else d = a . _g . doc . createElementNS ( "http://www.w3.org/2000/svg" , d ) , d . style && ( d . style . webkitTapHighlightColor = "rgba(0,0,0,0)" ) ; return d } , r = function ( b , e ) { var j = "linear" , k = b . id + e , m = . 5 , n = . 5 , o = b . node , p = b . paper , r = o . style , s = a . _g . doc . getElementById ( k ) ; if ( ! s ) { if ( e = c ( e ) . replace ( a . _radial _gradient , function ( a , b , c ) { if ( j = "radial" , b && c ) { m = d ( b ) , n = d ( c ) ; var e = 2 * ( n > . 5 ) - 1 ; i ( m - . 5 , 2 ) + i ( n - . 5 , 2 ) > . 25 && ( n = f . sqrt ( . 25 - i ( m - . 5 , 2 ) ) * e + . 5 ) && . 5 != n && ( n = n . toFixed ( 5 ) - 1e-5 * e ) } return l } ) , e = e . split ( /\s*\-\s*/ ) , "linear" == j ) { var t = e . shift ( ) ; if ( t = - d ( t ) , isNaN ( t ) ) return null ; var u = [ 0 , 0 , f . cos ( a . rad ( t ) ) , f . sin ( a . rad ( t ) ) ] , v = 1 / ( g ( h ( u [ 2 ] ) , h ( u [ 3 ] ) ) || 1 ) ; u [ 2 ] *= v , u [ 3 ] *= v , u [ 2 ] < 0 && ( u [ 0 ] = - u [ 2 ] , u [ 2 ] = 0 ) , u [ 3 ] < 0 && ( u [ 1 ] = - u [ 3 ] , u [ 3 ] = 0 ) } var w = a . _parseDots ( e ) ; if ( ! w ) return null ; if ( k = k . replace ( /[\(\)\s,\xb0#]/g , "_" ) , b . gradient && k != b . gradient . id && ( p . defs . removeChild ( b . gradient ) , delete b . gradient ) , ! b . gradient ) { s = q ( j + "Gradient" , { id : k } ) , b . gradient = s , q ( s , "radial" == j ? { fx : m , fy : n } : { x1 : u [ 0 ] , y1 : u [ 1 ] , x2 : u [ 2 ] , y2 : u [ 3 ] , gradientTransform : b . matrix . invert ( ) } ) , p . defs . appendChild ( s ) ; for ( var x = 0 , y = w . length ; x < y ; x ++ ) s . appendChild ( q ( "stop" , { offset : w [ x ] . offset ? w [ x ] . offset : x ? "100%" : "0%" , "stop-color" : w [ x ] . color || "#fff" , "stop-opacity" : isFinite ( w [ x ] . opacity ) ? w [ x ] . opacity : 1 } ) ) } } return q ( o , { fill : "url('" + document . location . origin + document . location . pathname + "#" + k + "')" , opacity : 1 , "fill-opacity" : 1 } ) , r . fill = l , r . opacity = 1 , r . fillOpacity = 1 , 1 } , s = function ( a ) { var b = a . getBBox ( 1 ) ; q ( a . pattern , { patternTransform : a . matrix . invert ( ) + " translate(" + b . x + "," + b . y + ")" } ) } , t = function ( d , e , f ) { if ( "path" == d . type ) { for ( var g , h , i , j , k , m = c ( e ) . toLowerCase ( ) . split ( "-" ) , n = d . paper , r = f ? "end" : "start" , s = d . node , t = d . attrs , u = t [ "stroke-width" ] , v = m . length , w = "classic" , x = 3 , y = 3 , z = 5 ; v -- ; ) switch ( m [ v ] ) { case "block" : case "classic" : case "oval" : case "diamond" : case "open" : case "none" : w = m [ v ] ; break ; case "wide" : y = 5 ; break ; case "narrow" : y = 2 ; break ; case "long" : x = 5 ; break ; case "short" : x = 2 } if ( "open" == w ? ( x += 2 , y += 2 , z += 2 , i = 1 , j = f ? 4 : 1 , k = { fill : "none" , stroke : t . stroke } ) : ( j = i = x / 2 , k = { fill : t . stroke , stroke : "none" } ) , d . _ . arrows ? f ? ( d . _ . arrows . endPath && p [ d . _ . arrows . endPath ] -- , d . _ . arrows . endMarker && p [ d . _ . arrows . endMarker ] -- ) : ( d . _ . arrows . startPath && p [ d . _ . arrows . startPath ] -- , d . _ . arrows . startMarker && p [ d . _ . arrows . startMarker ] -- ) : d . _ . arrows = { } , "none" != w ) { var A = "raphael-marker-" + w , B = "raphael-marker-" + r + w + x + y + "-obj" + d . id ; a . _g . doc . getElementById ( A ) ? p [ A ] ++ : ( n . defs . appendChild ( q ( q ( "path" ) , { "stroke-linecap" : "round" , d : o [ w ] , id : A } ) ) , p [ A ] = 1 ) ; var C , D = a . _g . doc . getElementById ( B ) ; D ? ( p [ B ] ++ , C = D . getElementsByTagName ( "use" ) [ 0 ] ) : ( D = q ( q ( "marker" ) , { id : B , markerHeight : y , markerWidth : x , orient : "auto" , refX : j , refY : y / 2 } ) , C = q ( q ( "use" ) , { "xlink:href" : "#" + A , transform : ( f ? "rotate(180 " + x / 2 + " " + y / 2 + ") " : l ) + "scale(" + x / z + "," + y / z + ")" , "stroke-width" : ( 1 / ( ( x / z + y / z ) / 2 ) ) . toFixed ( 4 ) } ) , D . appendChild ( C ) , n . defs . appendChild ( D ) , p [ B ] = 1 ) , q ( C , k ) ; var E = i * ( " di
this ) } , E . blur = function ( b ) { var c = this . node . runtimeStyle , d = c . filter ; return d = d . replace ( r , o ) , 0 !== + b ? ( this . attrs . blur = b , c . filter = d + n + m + ".Blur(pixelradius=" + ( + b || 1.5 ) + ")" , c . margin = a . format ( "-{0}px 0 0 -{0}px" , f ( + b || 1.5 ) ) ) : ( c . filter = d , c . margin = 0 , delete this . attrs . blur ) , this } , a . _engine . path = function ( a , b ) { var c = F ( "shape" ) ; c . style . cssText = t , c . coordsize = u + n + u , c . coordorigin = b . coordorigin ; var d = new D ( c , b ) , e = { fill : "none" , stroke : "#000" } ; a && ( e . path = a ) , d . type = "path" , d . path = [ ] , d . Path = o , B ( d , e ) , b . canvas . appendChild ( c ) ; var f = F ( "skew" ) ; return f . on = ! 0 , c . appendChild ( f ) , d . skew = f , d . transform ( o ) , d } , a . _engine . rect = function ( b , c , d , e , f , g ) { var h = a . _rectPath ( c , d , e , f , g ) , i = b . path ( h ) , j = i . attrs ; return i . X = j . x = c , i . Y = j . y = d , i . W = j . width = e , i . H = j . height = f , j . r = g , j . path = h , i . type = "rect" , i } , a . _engine . ellipse = function ( a , b , c , d , e ) { var f = a . path ( ) ; f . attrs ; return f . X = b - d , f . Y = c - e , f . W = 2 * d , f . H = 2 * e , f . type = "ellipse" , B ( f , { cx : b , cy : c , rx : d , ry : e } ) , f } , a . _engine . circle = function ( a , b , c , d ) { var e = a . path ( ) ; e . attrs ; return e . X = b - d , e . Y = c - d , e . W = e . H = 2 * d , e . type = "circle" , B ( e , { cx : b , cy : c , r : d } ) , e } , a . _engine . image = function ( b , c , d , e , f , g ) { var h = a . _rectPath ( d , e , f , g ) , i = b . path ( h ) . attr ( { stroke : "none" } ) , k = i . attrs , l = i . node , m = l . getElementsByTagName ( j ) [ 0 ] ; return k . src = c , i . X = k . x = d , i . Y = k . y = e , i . W = k . width = f , i . H = k . height = g , k . path = h , i . type = "image" , m . parentNode == l && l . removeChild ( m ) , m . rotate = ! 0 , m . src = c , m . type = "tile" , i . _ . fillpos = [ d , e ] , i . _ . fillsize = [ f , g ] , l . appendChild ( m ) , z ( i , 1 , 1 , 0 , 0 , 0 ) , i } , a . _engine . text = function ( b , d , e , g ) { var h = F ( "shape" ) , i = F ( "path" ) , j = F ( "textpath" ) ; d = d || 0 , e = e || 0 , g = g || "" , i . v = a . format ( "m{0},{1}l{2},{1}" , f ( d * u ) , f ( e * u ) , f ( d * u ) + 1 ) , i . textpathok = ! 0 , j . string = c ( g ) , j . on = ! 0 , h . style . cssText = t , h . coordsize = u + n + u , h . coordorigin = "0 0" ; var k = new D ( h , b ) , l = { fill : "#000" , stroke : "none" , font : a . _availableAttrs . font , text : g } ; k . shape = h , k . path = i , k . textpath = j , k . type = "text" , k . attrs . text = c ( g ) , k . attrs . x = d , k . attrs . y = e , k . attrs . w = 1 , k . attrs . h = 1 , B ( k , l ) , h . appendChild ( j ) , h . appendChild ( i ) , b . canvas . appendChild ( h ) ; var m = F ( "skew" ) ; return m . on = ! 0 , h . appendChild ( m ) , k . skew = m , k . transform ( o ) , k } , a . _engine . setSize = function ( b , c ) { var d = this . canvas . style ; return this . width = b , this . height = c , b == + b && ( b += "px" ) , c == + c && ( c += "px" ) , d . width = b , d . height = c , d . clip = "rect(0 " + b + " " + c + " 0)" , this . _viewBox && a . _engine . setViewBox . apply ( this , this . _viewBox ) , this } , a . _engine . setViewBox = function ( b , c , d , e , f ) { a . eve ( "raphael.setViewBox" , this , this . _viewBox , [ b , c , d , e , f ] ) ; var g , h , i = this . getSize ( ) , j = i . width , k = i . height ; return f && ( g = k / e , h = j / d , d * g < j && ( b -= ( j - d * g ) / 2 / g ) , e * h < k && ( c -= ( k - e * h ) / 2 / h ) ) , this . _viewBox = [ b , c , d , e , ! ! f ] , this . _viewBoxShift = { dx : - b , dy : - c , scale : i } , this . forEach ( function ( a ) { a . transform ( "..." ) } ) , this } ; var F ; a . _engine . initWin = function ( a ) { var b = a . document ; b . styleSheets . length < 31 ? b . createStyleSheet ( ) . addRule ( ".rvml" , "behavior:url(#default#VML)" ) : b . styleSheets [ 0 ] . addRule ( ".rvml" , "behavior:url(#default#VML)" ) ; try { ! b . namespaces . rvml && b . namespaces . add ( "rvml" , "urn:schemas-microsoft-com:vml" ) , F = function ( a ) { return b . createElement ( "<rvml:" + a + ' class="rvml">' ) } } catch ( c ) { F = function ( a ) { return b . createElement ( "<" + a + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">' ) } } } , a . _engine . initWin ( a . _g . win ) , a . _engine . create = function ( ) { var b = a . _getContainer . apply ( 0 , arguments ) , c = b . container , d = b . height , e = b . width , f = b . x , g = b . y ; if ( ! c ) throw new Error ( "VML container not found." ) ; var h = new a . _Paper , i = h . canvas = a . _g . doc . createElement ( "div" ) , j = i . style ; return f = f || 0 , g = g || 0 , e = e || 512 , d = d || 342 , h . width = e , h . height = d , e == + e && ( e += "px" ) , d == + d && ( d += "px" ) , h . coordsize = 1e3 * u + n + 1e3 * u , h . coordorigin = "0 0" , h . span = a . _g . doc . createElement ( "span" ) , h . span . style . cssText = "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;" , i . appendChild ( h . span ) , j . cssText = a . format ( "top:0;left:0;display:inline-block;position:absolute;clip:rect(0 {0} {1} 0);" , e , d ) , 1 == c ? ( a . _g . doc . body . appendChild ( i ) , j . left = f + "px" , j . top = g + "px" , j . position = "absolute" ) : c . firstChild ? c . insertBefore ( i , c . firstChild ) : c . appendChild ( i ) , h . renderfix = function ( ) { } , h } , a . prototype . clear = function ( ) { a . eve ( "raphael.clear" , this ) , this . canvas . innerHTML = o , this . span = a . _g . doc . createElement ( "span" ) , this . span . style . cssText = " position : absolute ; left : - 9999 em ; top : - 9999 em ; padding : 0 ; margin : 0 ;
this . topScrollbar . populate ( ) , this . leftScrollbar . setContentSize ( c ) , this . leftScrollbar . setSize ( b ) , this . leftScrollbar . setPosition ( this . bottomLeftGrid . getScrollLeft ( ) ) , this . leftScrollbar . populate ( ) , this . rightScrollbar . setContentSize ( d ) , this . rightScrollbar . setSize ( this . _width - b ) , this . rightScrollbar . setPosition ( this . bottomRightGrid . getScrollLeft ( ) ) , this . rightScrollbar . populate ( ) ; var g = this . scrollBarLayout . attr ( "items" ) ; g [ 0 ] . top = this . _getFreezeHeaderHeight ( ) , g [ 1 ] . top = this . _height , g [ 2 ] . top = this . _height , g [ 2 ] . left = b , this . scrollBarLayout . attr ( "items" , g ) , this . scrollBarLayout . resize ( ) } , _getHeader : function ( ) { var a = this . options , b = this . _getFreezeColLength ( ) , c = [ ] , d = [ ] ; return BI . each ( a . header , function ( a , e ) { c [ a ] = [ ] , d [ a ] = [ ] , BI . each ( e , function ( e , f ) { var g = { type : "bi.grid_table_cell" , cell : f } ; e < b ? c [ a ] . push ( g ) : d [ a ] . push ( g ) } ) } ) , [ c , d ] } , _getItems : function ( ) { var a = ( this . options , this . _getFreezeColLength ( ) ) , b = [ ] , c = [ ] ; return BI . each ( this . _getActualItems ( ) , function ( d , e ) { b [ d ] = [ ] , c [ d ] = [ ] , BI . each ( e , function ( e , f ) { var g = { type : "bi.grid_table_cell" , cell : f } ; e < a ? b [ d ] . push ( g ) : c [ d ] . push ( g ) } ) } ) , [ b , c ] } , _populateTable : function ( ) { var a = this . options , b = this . getRegionSize ( ) , c = 0 , d = 0 , e = 0 , f = [ ] , g = this . _getFreezeColLength ( ) ; 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 h = b , i = this . _getFreezeHeaderHeight ( ) , j = this . _width - b , k = this . _getFreezeHeaderHeight ( ) , l = b , m = this . _height - i , n = this . _width - b , o = this . _height - k , p = h + this . _scrollBarSize , q = i + this . _scrollBarSize , r = j + this . _scrollBarSize , s = k + this . _scrollBarSize , t = l + this . _scrollBarSize , u = m + this . _scrollBarSize , v = n + this . _scrollBarSize , w = o + this . _scrollBarSize , x = function ( a ) { a . element . css ( { overflow : "scroll" , overflowX : "scroll" , overflowY : "scroll" } ) } ; this . topLeft . setWidth ( h ) , this . topLeft . setHeight ( i ) , this . topRight . setWidth ( j ) , this . topRight . setHeight ( k ) , this . bottomLeft . setWidth ( l ) , this . bottomLeft . setHeight ( m ) , this . bottomRight . setWidth ( n ) , this . bottomRight . setHeight ( o ) , this . topLeftGrid . setWidth ( p ) , this . topLeftGrid . setHeight ( q ) , this . topRightGrid . setWidth ( r ) , this . topRightGrid . setHeight ( s ) , this . bottomLeftGrid . setWidth ( t ) , this . bottomLeftGrid . setHeight ( u ) , this . bottomRightGrid . setWidth ( v ) , this . bottomRightGrid . setHeight ( w ) , x ( this . topLeftGrid ) , x ( this . topRightGrid ) , x ( this . bottomLeftGrid ) , x ( this . bottomRightGrid ) , this . topLeftGrid . setEstimatedColumnSize ( g > 0 ? c / g : 0 ) , this . topLeftGrid . setEstimatedRowSize ( a . headerRowSize ) , this . topRightGrid . setEstimatedColumnSize ( a . columnSize . length - g > 0 ? d / ( a . columnSize . length - g ) : 0 ) , this . topRightGrid . setEstimatedRowSize ( a . headerRowSize ) , this . bottomLeftGrid . setEstimatedColumnSize ( g > 0 ? c / g : 0 ) , this . bottomLeftGrid . setEstimatedRowSize ( a . rowSize ) , this . bottomRightGrid . setEstimatedColumnSize ( a . columnSize . length - g > 0 ? d / ( a . columnSize . length - g ) : 0 ) , this . bottomRightGrid . setEstimatedRowSize ( a . rowSize ) , this . topLeftGrid . setColumnCount ( g ) , this . topRightGrid . setColumnCount ( a . columnSize . length - g ) , this . bottomLeftGrid . setColumnCount ( g ) , this . bottomRightGrid . setColumnCount ( a . columnSize . length - g ) ; var y = this . contextLayout . attr ( "items" ) ; y [ 1 ] . left = b , y [ 2 ] . top = this . _getFreezeHeaderHeight ( ) , y [ 3 ] . left = b , y [ 3 ] . top = this . _getFreezeHeaderHeight ( ) , this . contextLayout . attr ( "items" , y ) , this . contextLayout . resize ( ) , this . topLeftGrid . _populate ( this . header [ 0 ] ) , this . topRightGrid . _populate ( this . header [ 1 ] ) , this . bottomLeftGrid . _populate ( this . items [ 0 ] ) , this . bottomRightGrid . _populate ( this . items [ 1 ] ) } , _populate : function ( ) { this . _width <= 0 || this . _height <= 0 || ( this . _populateTable ( ) , this . _populateScrollbar ( ) ) } , getRegionSize : function ( ) { var a = this . options , b = a . regionColumnSize [ 0 ] || 0 ; return a . isNeedFreeze === ! 1 || 0 === a . freezeCols . length ? 0 : ( b || BI . each ( a . freezeCols , function ( c , d ) { b += a . columnSize [ d ] } ) , b ) } , setVerticalScroll : function ( a ) { this . bottomLeftGrid . setScrollTop ( a ) , this . bottomRightGrid . setScrollTop ( a ) , this . _populateScrollbar ( ) } , setLeftHorizontalScroll : function ( a ) { this . topLeftGrid . setScrollLeft ( a ) , this . bottomLeftGrid . setScrollLeft ( a ) , this . _populateScrollbar ( ) } , setRightHorizontalScroll : function ( a ) { this . topRightGrid . setScrollLeft ( a ) , this . bottomRightGrid . setScrollLeft ( a ) , this . _populateScrollbar ( ) } , getVerticalScroll : function (
BI . isNumeric ( e ) ? a == BI . size ( d ) - 1 ? d [ a ] . attr ( "width" , e - 1 ) . css ( "width" , e - 1 ) : d [ a ] . attr ( "width" , e ) . css ( "width" , e ) : d [ a ] . attr ( "width" , "" ) . css ( "width" , "" ) } else a == BI . size ( d ) - 1 ? d [ a ] . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : d [ a ] . attr ( "width" , f ) . css ( "width" , f ) } ) , BI . each ( k , function ( c , e ) { if ( e [ a ] ) if ( d [ c ] [ a ] . _ _mergeCols . length > 1 ) { var g = 0 ; BI . each ( l , function ( b , e ) { d [ c ] [ a ] . _ _mergeCols . contains ( b ) && ( g += e ) } ) , g = b . _calculateWidth ( g ) , g > 1 && ( g += d [ c ] [ a ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( g ) ? a == BI . size ( e ) - 1 ? e [ a ] . element . attr ( "width" , g - 1 ) . css ( "width" , g - 1 ) : e [ a ] . element . attr ( "width" , g ) . css ( "width" , g ) : e [ a ] . element . attr ( "width" , "" ) . css ( "width" , "" ) } else BI . isNumeric ( f ) ? a == BI . size ( e ) - 1 ? e [ a ] . element . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : e [ a ] . element . attr ( "width" , f ) . css ( "width" , f ) : e [ a ] . element . attr ( "width" , "" ) . css ( "width" , "" ) } ) } } ) } ; k ( g ) , k ( h ) , k ( i ) , k ( j ) ; var l = 0 , m = 0 ; this . columnLeft = [ ] , this . columnRight = [ ] , BI . each ( c . columnSize , function ( a , e ) { c . freezeCols . contains ( a ) ? ( l += e , b [ d ? "columnRight" : "columnLeft" ] . push ( e ) ) : ( m += e , b [ d ? "columnLeft" : "columnRight" ] . push ( e ) ) } ) , l = this . _calculateWidth ( l ) , m = this . _calculateWidth ( m ) , BI . isNumeric ( l ) && ( l = BI . parseFloat ( l ) + c . freezeCols . length ) , BI . isNumeric ( m ) && ( m = BI . parseFloat ( m ) + c . columnSize . length - c . freezeCols . length ) , this . topLeftContainer . element . width ( d ? m : l ) , this . bottomLeftContainer . element . width ( d ? m : l ) , this . topRightContainer . element . width ( d ? l : m ) , this . bottomRightContainer . element . width ( d ? l : m ) , this . scrollTopLeft . element [ 0 ] . scrollLeft = this . scrollBottomLeft . element [ 0 ] . scrollLeft , this . scrollTopRight . element [ 0 ] . scrollLeft = this . scrollBottomRight . element [ 0 ] . scrollLeft } else { BI . each ( this . colgroupTds , function ( a , d ) { var e = 0 | d . attr ( "width" ) ; if ( "" !== c . columnSize [ a ] && e !== c . columnSize [ a ] ) { var f = b . _calculateWidth ( c . columnSize [ a ] ) ; d . attr ( "width" , f ) . css ( "width" , f ) , BI . each ( b . bodyTds , function ( d , e ) { if ( e [ a ] ) if ( e [ a ] . _ _mergeCols . length > 1 ) { var g = 0 ; BI . each ( c . columnSize , function ( b , c ) { e [ a ] . _ _mergeCols . contains ( b ) && ( g += c ) } ) , g = b . _calculateWidth ( g ) , g > 1 && ( g += e [ a ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( g ) ? a == BI . size ( e ) - 1 ? e [ a ] . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : e [ a ] . attr ( "width" , f ) . css ( "width" , f ) : e [ a ] . attr ( "width" , "" ) . css ( "width" , "" ) } else a == BI . size ( e ) - 1 ? e [ a ] . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : e [ a ] . attr ( "width" , f ) . css ( "width" , f ) } ) , BI . each ( b . headerTds , function ( d , e ) { if ( e [ a ] ) if ( e [ a ] . _ _mergeCols . length > 1 ) { var g = 0 ; BI . each ( c . columnSize , function ( b , c ) { e [ a ] . _ _mergeCols . contains ( b ) && ( g += c ) } ) , g = b . _calculateWidth ( g ) , g > 1 && ( g += e [ a ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( g ) ? a == BI . size ( e ) - 1 ? e [ a ] . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : e [ a ] . attr ( "width" , f ) . css ( "width" , f ) : e [ a ] . attr ( "width" , "" ) . css ( "width" , "" ) } else a == BI . size ( e ) - 1 ? e [ a ] . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : e [ a ] . attr ( "width" , f ) . css ( "width" , f ) } ) , BI . each ( b . footerTds , function ( d , e ) { if ( e [ a ] ) if ( e [ a ] . _ _mergeCols . length > 1 ) { var g = 0 ; BI . each ( c . columnSize , function ( b , c ) { e [ a ] . _ _mergeCols . contains ( b ) && ( g += c ) } ) , g = b . _calculateWidth ( g ) , g > 1 && ( g += e [ a ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( g ) ? a == BI . size ( e ) - 1 ? e [ a ] . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : e [ a ] . attr ( "width" , f ) . css ( "width" , f ) : e [ a ] . attr ( "width" , "" ) . css ( "width" , "" ) } else a == BI . size ( e ) - 1 ? e [ a ] . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : e [ a ] . attr ( "width" , f ) . css ( "width" , f ) } ) , BI . each ( b . bodyItems , function ( d , e ) { if ( e [ a ] ) if ( b . bodyTds [ d ] [ a ] . _ _mergeCols . length > 1 ) { var g = 0 ; BI . each ( c . columnSize , function ( c , e ) { b . bodyTds [ d ] [ a ] . _ _mergeCols . contains ( c ) && ( g += e ) } ) , g = b . _calculateWidth ( g ) , g > 1 && ( g += b . bodyTds [ d ] [ a ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( g ) ? a == BI . size ( e ) - 1 ? e [ a ] . element . attr ( "width" , g - 1 ) . css ( "width" , g - 1 ) : e [ a ] . element . attr ( "width" , g ) . css ( "width" , g ) : e [ a ] . element . attr ( "width" , "" ) . css ( "width" , "" ) } else BI . isNumeric ( f ) ? a == BI . size ( e ) - 1 ? e [ a ] . element . attr ( "width" , f - 1 ) . css ( "width" , f - 1 ) : e [ a ] . element . attr ( "width" , f ) . css ( "width" , f ) : e [ a ] . element . attr ( "width" , "" ) . css ( "width" , "" ) } ) , BI . each ( b . headerItems , function ( d , e ) { if ( e [ a ] ) if ( b . headerTds [ d ] [ a ] . _ _mergeCols . length > 1 ) { var g = 0 ; BI . each ( c . columnSize , function ( c , e ) { b . headerTds [ d ] [ a ] . _ _mergeCols . contains ( c ) && ( g += e ) } ) , g = b . _calculateWidth ( g ) , g > 1 && ( g += b . headerTds [ d ] [ a ] . _ _mergeCols . length - 1 ) , BI . isNumeric ( g ) ? a == BI . size ( e ) - 1 ? e [ a ] . element . attr ( "width" , g - 1 ) . css ( "width" , g - 1 ) : e [ a ] . element . attr ( "width" , g ) . css ( "width" , g ) :
a . data . simpleData . enable && ( b [ a . data . simpleData . pIdKey ] = b . parentTId ? b . getParentNode ( ) [ a . data . simpleData . idKey ] : a . data . simpleData . rootPId ) } , getAfterA : function ( a , b , c ) { for ( var d = 0 , e = _init . afterA . length ; d < e ; d ++ ) _init . afterA [ d ] . apply ( this , arguments ) } , getBeforeA : function ( a , b , c ) { for ( var d = 0 , e = _init . beforeA . length ; d < e ; d ++ ) _init . beforeA [ d ] . apply ( this , arguments ) } , getInnerAfterA : function ( a , b , c ) { for ( var d = 0 , e = _init . innerAfterA . length ; d < e ; d ++ ) _init . innerAfterA [ d ] . apply ( this , arguments ) } , getInnerBeforeA : function ( a , b , c ) { for ( var d = 0 , e = _init . innerBeforeA . length ; d < e ; d ++ ) _init . innerBeforeA [ d ] . apply ( this , arguments ) } , getCache : function ( a ) { return caches [ a . treeId ] } , getNextNode : function ( a , b ) { if ( ! b ) return null ; for ( var c = a . data . key . children , d = b . parentTId ? b . getParentNode ( ) : data . getRoot ( a ) , e = 0 , f = d [ c ] . length - 1 ; e <= f ; e ++ ) if ( d [ c ] [ e ] === b ) return e == f ? null : d [ c ] [ e + 1 ] ; return null } , getNodeByParam : function ( a , b , c , d ) { if ( ! b || ! c ) return null ; for ( var e = a . data . key . children , f = 0 , g = b . length ; f < g ; f ++ ) { if ( b [ f ] [ c ] == d ) return b [ f ] ; var h = data . getNodeByParam ( a , b [ f ] [ e ] , c , d ) ; if ( h ) return h } return null } , getNodeCache : function ( a , b ) { if ( ! b ) return null ; var c = caches [ a . treeId ] . nodes [ data . getNodeCacheId ( b ) ] ; return c ? c : null } , getNodeName : function ( a , b ) { var c = a . data . key . name ; return "" + b [ c ] } , getNodeTitle : function ( a , b ) { var c = "" === a . data . key . title ? a . data . key . name : a . data . key . title ; return "" + b [ c ] } , getNodes : function ( a ) { return data . getRoot ( a ) [ a . data . key . children ] } , getNodesByParam : function ( a , b , c , d ) { if ( ! b || ! c ) return [ ] ; for ( var e = a . data . key . children , f = [ ] , g = 0 , h = b . length ; g < h ; g ++ ) b [ g ] [ c ] == d && f . push ( b [ g ] ) , f = f . concat ( data . getNodesByParam ( a , b [ g ] [ e ] , c , d ) ) ; return f } , getNodesByParamFuzzy : function ( a , b , c , d ) { if ( ! b || ! c ) return [ ] ; var e = a . data . key . children , f = [ ] ; d = d . toLowerCase ( ) ; for ( var g = 0 , h = b . length ; g < h ; g ++ ) "string" == typeof b [ g ] [ c ] && b [ g ] [ c ] . toLowerCase ( ) . indexOf ( d ) > - 1 && f . push ( b [ g ] ) , f = f . concat ( data . getNodesByParamFuzzy ( a , b [ g ] [ e ] , c , d ) ) ; return f } , getNodesByFilter : function ( a , b , c , d , e ) { if ( ! b ) return d ? null : [ ] ; for ( var f = a . data . key . children , g = d ? null : [ ] , h = 0 , i = b . length ; h < i ; h ++ ) { if ( tools . apply ( c , [ b [ h ] , e ] , ! 1 ) ) { if ( d ) return b [ h ] ; g . push ( b [ h ] ) } var j = data . getNodesByFilter ( a , b [ h ] [ f ] , c , d , e ) ; if ( d && j ) return j ; g = d ? j : g . concat ( j ) } return g } , getPreNode : function ( a , b ) { if ( ! b ) return null ; for ( var c = a . data . key . children , d = b . parentTId ? b . getParentNode ( ) : data . getRoot ( a ) , e = 0 , f = d [ c ] . length ; e < f ; e ++ ) if ( d [ c ] [ e ] === b ) return 0 == e ? null : d [ c ] [ e - 1 ] ; return null } , getRoot : function ( a ) { return a ? roots [ a . treeId ] : null } , getRoots : function ( ) { return roots } , getSetting : function ( a ) { return settings [ a ] } , getSettings : function ( ) { return settings } , getZTreeTools : function ( a ) { var b = this . getRoot ( this . getSetting ( a ) ) ; return b ? b . treeTools : null } , initCache : function ( a ) { for ( var b = 0 , c = _init . caches . length ; b < c ; b ++ ) _init . caches [ b ] . apply ( this , arguments ) } , initNode : function ( a , b , c , d , e , f ) { for ( var g = 0 , h = _init . nodes . length ; g < h ; g ++ ) _init . nodes [ g ] . apply ( this , arguments ) } , initRoot : function ( a ) { for ( var b = 0 , c = _init . roots . length ; b < c ; b ++ ) _init . roots [ b ] . apply ( this , arguments ) } , isSelectedNode : function ( a , b ) { for ( var c = data . getRoot ( a ) , d = 0 , e = c . curSelectedList . length ; d < e ; d ++ ) if ( b === c . curSelectedList [ d ] ) return ! 0 ; return ! 1 } , removeNodeCache : function ( a , b ) { var c = a . data . key . children ; if ( b [ c ] ) for ( var d = 0 , e = b [ c ] . length ; d < e ; d ++ ) arguments . callee ( a , b [ c ] [ d ] ) ; data . getCache ( a ) . nodes [ data . getNodeCacheId ( b . tId ) ] = null } , removeSelectedNode : function ( a , b ) { for ( var c = data . getRoot ( a ) , d = 0 , e = c . curSelectedList . length ; d < e ; d ++ ) b !== c . curSelectedList [ d ] && data . getNodeCache ( a , c . curSelectedList [ d ] . tId ) || ( c . curSelectedList . splice ( d , 1 ) , d -- , e -- ) } , setCache : function ( a , b ) { caches [ a . treeId ] = b } , setRoot : function ( a , b ) { roots [ a . treeId ] = b } , setZTreeTools : function ( a , b ) { for ( var c = 0 , d = _init . zTreeTools . length ; c < d ; c ++ ) _init . zTreeTools [ c ] . apply ( this , arguments ) } , transformToArrayFormat : function ( a , b ) { if ( ! b ) return [ ] ; var c = a . data . key . children , d = [ ] ; if ( tools . isArray ( b ) ) for ( var e = 0 , f = b . length ; e < f ; e ++ ) d . push ( b [ e ] ) , b [ e ] [ c ] && ( d = d . concat ( data . transformToArrayFormat ( a , b [ e ] [ c ] ) ) ) ; else d . push ( b ) , b [ c ] && ( d = d . concat ( data . transformToArrayFormat ( a , b [ c ] ) ) ) ; return d } , transformTozTreeFormat : function ( a , b ) { var c , d , e = a . data . simpleData . idKey , f = a . data . simpleData . pIdKey , g = a . data . key . children ; if ( ! e || "" == e || ! b ) retu
} } } , m = { } , n = { onCheckNode : function ( a , b ) { if ( b . chkDisabled === ! 0 ) return ! 1 ; var c = v . getSetting ( a . data . treeId ) , d = c . data . key . checked ; if ( 0 == s . apply ( c . callback . beforeCheck , [ c . treeId , b ] , ! 0 ) ) return ! 0 ; b [ d ] = ! b [ d ] , u . checkNodeRelation ( c , b ) ; var e = w ( b , t . id . CHECK , c ) ; return u . setChkClass ( c , e , b ) , u . repairParentChkClassWithSelf ( c , b ) , c . treeObj . trigger ( t . event . CHECK , [ a , c . treeId , b ] ) , ! 0 } , onMouseoverCheck : function ( a , b ) { if ( b . chkDisabled === ! 0 ) return ! 1 ; var c = v . getSetting ( a . data . treeId ) , d = w ( b , t . id . CHECK , c ) ; return b . check _Focus = ! 0 , u . setChkClass ( c , d , b ) , ! 0 } , onMouseoutCheck : function ( a , b ) { if ( b . chkDisabled === ! 0 ) return ! 1 ; var c = v . getSetting ( a . data . treeId ) , d = w ( b , t . id . CHECK , c ) ; return b . check _Focus = ! 1 , u . setChkClass ( c , d , b ) , ! 0 } } , o = { } , p = { checkNodeRelation : function ( a , b ) { var c , d , e , f = a . data . key . children , g = a . data . key . checked , h = t . radio ; if ( a . check . chkStyle == h . STYLE ) { var i = v . getRadioCheckedList ( a ) ; if ( b [ g ] ) if ( a . check . radioType == h . TYPE _ALL ) { for ( d = i . length - 1 ; d >= 0 ; d -- ) c = i [ d ] , c [ g ] && c != b && ( c [ g ] = ! 1 , i . splice ( d , 1 ) , u . setChkClass ( a , w ( c , t . id . CHECK , a ) , c ) , c . parentTId != b . parentTId && u . repairParentChkClassWithSelf ( a , c ) ) ; i . push ( b ) } else { var j = b . parentTId ? b . getParentNode ( ) : v . getRoot ( a ) ; for ( d = 0 , e = j [ f ] . length ; d < e ; d ++ ) c = j [ f ] [ d ] , c [ g ] && c != b && ( c [ g ] = ! 1 , u . setChkClass ( a , w ( c , t . id . CHECK , a ) , c ) ) } else if ( a . check . radioType == h . TYPE _ALL ) for ( d = 0 , e = i . length ; d < e ; d ++ ) if ( b == i [ d ] ) { i . splice ( d , 1 ) ; break } } else b [ g ] && ( ! b [ f ] || 0 == b [ f ] . length || a . check . chkboxType . Y . indexOf ( "s" ) > - 1 ) && u . setSonNodeCheckBox ( a , b , ! 0 ) , b [ g ] || b [ f ] && 0 != b [ f ] . length && ! ( a . check . chkboxType . N . indexOf ( "s" ) > - 1 ) || u . setSonNodeCheckBox ( a , b , ! 1 ) , b [ g ] && a . check . chkboxType . Y . indexOf ( "p" ) > - 1 && u . setParentNodeCheckBox ( a , b , ! 0 ) , ! b [ g ] && a . check . chkboxType . N . indexOf ( "p" ) > - 1 && u . setParentNodeCheckBox ( a , b , ! 1 ) } , makeChkClass : function ( a , b ) { var c = a . data . key . checked , d = t . checkbox , e = t . radio , f = "" ; f = b . chkDisabled === ! 0 ? d . DISABLED : b . halfCheck ? d . PART : a . check . chkStyle == e . STYLE ? b . check _Child _State < 1 ? d . FULL : d . PART : b [ c ] ? 2 === b . check _Child _State || b . check _Child _State === - 1 ? d . FULL : d . PART : b . check _Child _State < 1 ? d . FULL : d . PART ; var g = a . check . chkStyle + "_" + ( b [ c ] ? d . TRUE : d . FALSE ) + "_" + f ; return g = b . check _Focus && b . chkDisabled !== ! 0 ? g + "_" + d . FOCUS : g , t . className . BUTTON + " " + d . DEFAULT + " " + g } , repairAllChk : function ( a , b ) { if ( a . check . enable && a . check . chkStyle === t . checkbox . STYLE ) for ( var c = a . data . key . checked , d = a . data . key . children , e = v . getRoot ( a ) , f = 0 , g = e [ d ] . length ; f < g ; f ++ ) { var h = e [ d ] [ f ] ; h . nocheck !== ! 0 && h . chkDisabled !== ! 0 && ( h [ c ] = b ) , u . setSonNodeCheckBox ( a , h , b ) } } , repairChkClass : function ( a , b ) { if ( b && ( v . makeChkFlag ( a , b ) , b . nocheck !== ! 0 ) ) { var c = w ( b , t . id . CHECK , a ) ; u . setChkClass ( a , c , b ) } } , repairParentChkClass : function ( a , b ) { if ( b && b . parentTId ) { var c = b . getParentNode ( ) ; u . repairChkClass ( a , c ) , u . repairParentChkClass ( a , c ) } } , repairParentChkClassWithSelf : function ( a , b ) { if ( b ) { var c = a . data . key . children ; b [ c ] && b [ c ] . length > 0 ? u . repairParentChkClass ( a , b [ c ] [ 0 ] ) : u . repairParentChkClass ( a , b ) } } , repairSonChkDisabled : function ( a , b , c , d ) { if ( b ) { var e = a . data . key . children ; if ( b . chkDisabled != c && ( b . chkDisabled = c ) , u . repairChkClass ( a , b ) , b [ e ] && d ) for ( var f = 0 , g = b [ e ] . length ; f < g ; f ++ ) { var h = b [ e ] [ f ] ; u . repairSonChkDisabled ( a , h , c , d ) } } } , repairParentChkDisabled : function ( a , b , c , d ) { b && ( b . chkDisabled != c && d && ( b . chkDisabled = c ) , u . repairChkClass ( a , b ) , u . repairParentChkDisabled ( a , b . getParentNode ( ) , c , d ) ) } , setChkClass : function ( a , b , c ) { b && ( c . nocheck === ! 0 ? b . hide ( ) : b . show ( ) , b . attr ( "class" , u . makeChkClass ( a , c ) ) ) } , setParentNodeCheckBox : function ( a , b , c , d ) { var e = a . data . key . children , f = a . data . key . checked , g = w ( b , t . id . CHECK , a ) ; if ( d || ( d = b ) , v . makeChkFlag ( a , b ) , b . nocheck !== ! 0 && b . chkDisabled !== ! 0 && ( b [ f ] = c , u . setChkClass ( a , g , b ) , a . check . autoCheckTrigger && b != d && a . treeObj . trigger ( t . event . CHECK , [ null , a . treeId , b ] ) ) , b . parentTId ) { var h = ! 0 ; if ( ! c ) for ( var i = b . getParentNode ( ) [ e ] , j = 0 , k = i . length ; j < k ; j ++ ) if ( i [ j ] . nocheck !== ! 0 && i [ j ] . chkDisabled !== ! 0 && i [ j ] [ f ] || ( i [ j ] . nocheck === ! 0 || i [ j ] . chkDisabled === ! 0 ) && i [ j ] . check _Child _State > 0 ) { h = ! 1 ; break } h && u . setParentNodeCheckBox ( a , b . getParentNode ( ) , c , d ) } } , setSonNodeCheckBox : function ( a , b , c , d ) { if ( b ) { var e = a . data . key . children , f = a . data . key . checked , g = w ( b , t . id . CHECK , a ) ; d || ( d = b ) ; var h = ! 1 ; if ( b [ e ] ) for ( var i = 0 , j = b [ e ] . length ; i < j && b . chkDisabled !== ! 0 ; i ++ ) { var k = b [ e ] [ i ] ; u . setSonNodeCheckBox ( a , k , c , d ) , k . chkDis
var a = this , b = this . options ; this . item = BI . createWidget ( { type : "bi.icon_tree_leaf_item" , cls : "bi-list-item-none" , iconCls : b . iconCls , id : b . id , pId : b . pId , isFront : ! 0 , height : b . height , hgap : b . hgap , text : b . text , value : b . value , py : b . py , iconWidth : b . iconWidth , iconHeight : b . iconHeight } ) , this . item . 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" , width : 24 , height : b . height } ) } ) , c . push ( this . item ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 24 ) , items : [ c ] } ) } , doRedMark : function ( ) { this . item . doRedMark . apply ( this . item , arguments ) } , unRedMark : function ( ) { this . item . unRedMark . apply ( this . item , arguments ) } , doHighLight : function ( ) { this . item . doHighLight . apply ( this . item , arguments ) } , unHighLight : function ( ) { this . item . unHighLight . apply ( this . item , arguments ) } , getId : function ( ) { return this . options . id } , getPId : function ( ) { return this . options . pId } , doClick : function ( ) { BI . MultiLayerIconTreeLeafItem . superclass . doClick . apply ( this , arguments ) , this . item . setSelected ( this . isSelected ( ) ) } , setSelected : function ( a ) { BI . MultiLayerIconTreeLeafItem . superclass . setSelected . apply ( this , arguments ) , this . item . setSelected ( a ) } , getValue : function ( ) { return this . options . value } } ) , BI . shortcut ( "bi.multilayer_icon_tree_leaf_item" , BI . MultiLayerIconTreeLeafItem ) , BI . TreeTextLeafItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . TreeTextLeafItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-tree-text-leaf-item bi-list-item-active" , id : "" , pId : "" , height : 24 , hgap : 0 , lgap : 0 , rgap : 0 } ) } , _init : function ( ) { BI . TreeTextLeafItem . superclass . _init . apply ( this , arguments ) ; var a = this . options ; this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : a . height , height : a . height , hgap : a . hgap , lgap : a . lgap , rgap : a . hgap , text : a . text , value : a . value , py : a . py } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { el : this . text } ] } ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , getId : function ( ) { return this . options . id } , getPId : function ( ) { return this . options . pId } } ) , BI . shortcut ( "bi.tree_text_leaf_item" , BI . TreeTextLeafItem ) , BI . CalendarDateItem = BI . inherit ( BI . BasicButton , { render : function ( ) { var a = this , b = this . options ; return { type : "bi.absolute" , items : [ { el : { type : "bi.text_item" , cls : "bi-list-item-select" , textAlign : "center" , whiteSpace : "normal" , text : b . text , value : b . value , ref : function ( ) { a . text = this } } , left : b . lgap , right : b . rgap , top : 0 , bottom : 0 } ] } } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , setSelected : function ( a ) { BI . CalendarDateItem . superclass . setSelected . apply ( this , arguments ) , this . text . setSelected ( a ) } , getValue : function ( ) { return this . text . getValue ( ) } } ) , BI . shortcut ( "bi.calendar_date_item" , BI . CalendarDateItem ) , BI . Calendar = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var a = BI . Calendar . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { baseCls : "bi-calendar" , logic : { dynamic : ! 1 } , min : "1900-01-01" , max : "2099-12-31" , year : 2015 , month : 8 , day : 25 } ) } , _dateCreator : function ( a , b , c ) { var d = this . options , e = { } , f = BI . getDate ( ) , g = d . min . match ( /\d+/g ) , h = d . max . match ( /\d+/g ) ; a < ( 0 | g [ 0 ] ) && ( a = 0 | g [ 0 ] ) , a > ( 0 | h [ 0 ] ) && ( a = 0 | h [ 0 ] ) , f . setFullYear ( a , b , c ) , e . ymd = [ f . getFullYear ( ) , f . getMonth ( ) , f . getDate ( ) ] ; var i = Date . _MD . slice ( 0 ) ; i [ 1 ] = BI . isLeapYear ( e . ymd [ 0 ] ) ? 29 : 28 , f . setFullYear ( e . ymd [ 0 ] , e . ymd [ 1 ] , 1 ) , e . FDay = f . getDay ( ) , e . PDay = i [ 0 === b ? 11 : b - 1 ] - e . FDay + 1 , e . NDay = 1 ; var j = [ ] ; return BI . each ( BI . range ( 42 ) , function ( a ) { var b , c = { } , d = e . ymd [ 0 ] , f = e . ymd [ 1 ] + 1 ; a < e . FDay ? ( c . lastMonth = ! 0 , b = a + e . PDay , 1 === f && ( d -= 1 ) , f = 1 === f ? 12 : f - 1 ) : a >= e . FDay && a < e . FDay + i [ e . ymd [ 1 ] ] ? ( b = a - e . FDay + 1 , a - e . FDay + 1 === e . ymd [ 2 ] && ( c . currentDay = ! 0 ) ) : ( c . nextMonth = ! 0 , b = e . NDay ++ , 12 === f && ( d += 1 ) , f = 12 === f ? 1 : f + 1 ) , BI . checkDateV
} } ) , this . clipboard . on ( "success" , a . afterCopy ) ) : this . element . zclip ( { path : BI . resourceURL + "/ZeroClipboard.swf" , copy : a . copy , beforeCopy : a . beforeCopy , afterCopy : a . afterCopy } ) } , destroyed : function ( ) { this . clipboard && this . clipboard . destroy ( ) } } ) , BI . shortcut ( "bi.clipboard" , BI . ClipBoard ) , BI . CustomColorChooser = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . CustomColorChooser . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-custom-color-chooser" , width : 227 , height : 245 } ) } , _init : function ( ) { BI . CustomColorChooser . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( b . editor , { type : "bi.simple_color_picker_editor" } ) , this . editor . on ( BI . ColorPickerEditor . EVENT _CHANGE , function ( ) { a . setValue ( this . getValue ( ) ) } ) , this . farbtastic = BI . createWidget ( { type : "bi.farbtastic" } ) , this . farbtastic . on ( BI . Farbtastic . EVENT _CHANGE , function ( ) { a . setValue ( this . getValue ( ) ) } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { type : "bi.absolute" , items : [ { el : this . editor , left : 0 , top : 0 , right : 0 } ] , height : 30 } , { type : "bi.absolute" , items : [ { el : this . farbtastic , left : 15 , right : 15 , top : 7 } ] , height : 215 } ] } ) } , setValue : function ( a ) { this . editor . setValue ( a ) , this . farbtastic . setValue ( a ) } , getValue : function ( ) { return this . editor . getValue ( ) } } ) , BI . CustomColorChooser . EVENT _CHANGE = "CustomColorChooser.EVENT_CHANGE" , BI . shortcut ( "bi.custom_color_chooser" , BI . CustomColorChooser ) , BI . ColorChooser = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . ColorChooser . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-color-chooser" , value : "" } ) } , _init : function ( ) { BI . ColorChooser . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . combo = BI . createWidget ( { type : "bi.combo" , element : this , container : b . container , adjustLength : 1 , isNeedAdjustWidth : ! 1 , isNeedAdjustHeight : ! 1 , el : BI . extend ( { type : b . width <= 24 ? "bi.color_chooser_trigger" : "bi.long_color_chooser_trigger" , ref : function ( b ) { a . trigger = b } , width : b . width , height : b . height } , b . el ) , popup : { el : BI . extend ( { type : "bi.color_chooser_popup" , ref : function ( b ) { a . colorPicker = b } , listeners : [ { eventName : BI . ColorChooserPopup . EVENT _VALUE _CHANGE , action : function ( ) { c ( ) , a . _isRGBColor ( a . colorPicker . getValue ( ) ) || a . combo . hideView ( ) } } , { eventName : BI . ColorChooserPopup . EVENT _CHANGE , action : function ( ) { c ( ) , a . combo . hideView ( ) } } ] } , b . popup ) , stopPropagation : ! 1 , width : 230 } , value : b . value } ) ; var c = function ( ) { var b = a . colorPicker . getValue ( ) ; a . trigger . setValue ( b ) ; var c = BI . string2Array ( BI . Cache . getItem ( "colors" ) || "" ) , d = new BI . Queue ( 8 ) ; d . fromArray ( c ) , d . remove ( b ) , d . unshift ( b ) , BI . Cache . setItem ( "colors" , BI . array2String ( d . toArray ( ) ) ) } ; this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { a . colorPicker . setStoreColors ( BI . string2Array ( BI . Cache . getItem ( "colors" ) || "" ) ) } ) , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { a . fireEvent ( BI . ColorChooser . EVENT _CHANGE , arguments ) } ) } , _isRGBColor : function ( a ) { return BI . isNotEmptyString ( a ) && "transparent" !== a } , isViewVisible : function ( ) { return this . combo . isViewVisible ( ) } , hideView : function ( ) { this . combo . hideView ( ) } , showView : function ( ) { this . combo . showView ( ) } , setValue : function ( a ) { this . combo . setValue ( a ) } , getValue : function ( ) { return this . combo . getValue ( ) } } ) , BI . ColorChooser . EVENT _CHANGE = "ColorChooser.EVENT_CHANGE" , BI . shortcut ( "bi.color_chooser" , BI . ColorChooser ) , BI . ColorChooserPopup = BI . inherit ( BI . Widget , { props : { baseCls : "bi-color-chooser-popup" , width : 230 , height : 145 } , render : function ( ) { var a = this , b = this . options ; this . colorEditor = BI . createWidget ( b . editor , { type : "bi.color_picker_editor" , value : b . value , cls : "bi-background bi-border-bottom" , height : 30 } ) , this . colorEditor . on ( BI . ColorPickerEditor . EVENT _CHANGE , function ( ) { a . setValue ( this . getValue ( ) ) , a . fireEvent ( BI . ColorChooserPopup . EVENT _VALUE _CHANGE , arguments ) } ) , this . storeColors = BI . createWidget ( { type : "bi.color_picker" , items : [ [ { value : "" , disabled : ! 0 } , { value : "" , disabled : ! 0 } , { value : "" , disabled : ! 0 } , { value : "" , disabled : ! 0 } , { value : "" , disabled : ! 0 } , { value : "" , disabled : ! 0 } , { value : "" , disabled : ! 0 } , { value : "" , disabled : ! 0 } ] ] , width : 210 , height : 24 , value : b . value } ) , this . storeColors . on ( BI . ColorPicker . EVENT _CHANGE , function ( ) { a . setValue ( this . getValue ( ) [ 0 ] ) , a . fireEvent ( BI . ColorChooserPopup . EVEN
} , _createToolBar : function ( ) { var a = this . options , b = this , c = [ ] ; return BI . each ( a . buttons , 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_Cancel" ) , ghost : ! 0 , height : 24 , handler : function ( ) { a . fireEvent ( BI . BubblePopupBarView . EVENT _CLICK _TOOLBAR _BUTTON , ! 1 ) } } , { type : "bi.button" , value : BI . i18nText ( "BI-Basic_Sure" ) , height : 24 , handler : function ( ) { a . fireEvent ( BI . BubblePopupBarView . EVENT _CLICK _TOOLBAR _BUTTON , ! 0 ) } } ] } } , 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 . createWidget ( { type : "bi.editor_trigger" , items : b . items , height : b . height , validationChecker : b . validationChecker , quitChecker : b . quitChecker , allowBlank : b . allowBlank , watermark : b . watermark , errorText : b . errorText , value : b . value } ) , this . trigger . on ( BI . EditorTrigger . EVENT _CHANGE , function ( ) { a . popup . setValue ( this . getValue ( ) ) , a . fireEvent ( BI . EditorIconCheckCombo . EVENT _CHANGE ) } ) , this . popup = BI . createWidget ( { type : "bi.text_value_check_combo_popup" , chooseType : b . chooseType , items : b . items , value : b . value } ) , this . popup . on ( BI . TextValueCheckComboPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . editorIconCheckCombo . hideView ( ) , a . fireEvent ( BI . EditorIconCheckCombo . EVENT _CHANGE ) } ) , this . popup . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editorIconCheckCombo = BI . createWidget ( { type : "bi.combo" , container : b . container , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup , maxHeight : 300 } } ) } , setValue : function ( a ) { this . editorIconCheckCombo . setValue ( a ) } , getValue : function ( ) { return this . trigger . getValue ( ) } , populate : function ( a ) { this . options . items = a , this . editorIconCheckCombo . populate ( a ) } } ) , BI . EditorIconCheckCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.editor_icon_check_combo" , BI . EditorIconCheckCombo ) , BI . IconCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . IconCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-icon-combo" , width : 24 , height : 24 , el : { } , popup : { } , minWidth : 100 , maxWidth : "auto" , maxHeight : 300 , direction : "bottom" , adjustLength : 3 , adjustXOffset : 0 , adjustYOffset : 0 , offsetStyle : "left" , chooseType : BI . ButtonGroup . CHOOSE _TYPE _SINGLE } ) } , _init : function ( ) { BI . IconCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( b . el , { type : "bi.icon_combo_trigger" , iconCls : b . iconCls , title : b . title , items : b . items , width : b . width , height : b . height , iconWidth : b . iconWidth , iconHeight : b . iconHeight , value : b . value } ) , this . popup = BI . createWidget ( b . popup , { type : "bi.icon_combo_popup" , chooseType : b . chooseType , items : b . items , value : b . value } ) , this . popup . on ( BI . IconComboPopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . iconCombo . hideView ( ) , a . fireEvent (
if ( this . isValid ( ) ) { var a = this . editor . getValue ( ) . match ( /[\S]+/g ) ; return BI . isNull ( a ) ? "" : a [ a . length - 1 ] } } , setValue : function ( a ) { this . editor . setValue ( a ) , BI . isKey ( a ) && this . clear . visible ( ) } , isValid : function ( ) { return this . editor . isValid ( ) } } ) , BI . ClearEditor . EVENT _CHANGE = "EVENT_CHANGE" , BI . ClearEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . ClearEditor . EVENT _BLUR = "EVENT_BLUR" , BI . ClearEditor . EVENT _CLICK = "EVENT_CLICK" , 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 . _checkT
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" , height : 29 , items : { left : [ this . text ] , right : [ this . button _group ] } , lhgap : 10 , rhgap : 10 } , height : 29 } } , setTitle : function ( a ) { this . text . setValue ( a ) } } ) , BI . Panel . EVENT _CHANGE = "Panel.EVENT_CHANGE" , BI . shortcut ( "bi.panel" , BI . Panel ) , BI . LinearSegmentButton = BI . inherit ( BI . BasicButton , { props : { extraCls : "bi-line-segment-button bi-list-item-effect" , once : ! 0 , readonly : ! 0 , hgap : 10 , height : 25 } , render : function ( ) { var a = this , b = thi
baseCls : "bi-nic-editor" } ) } , _init : function ( ) { BI . NicEditor . superclass . _init . apply ( this , arguments ) ; this . options ; $ ( document ) . bind ( "mousedown." + this . getName ( ) , BI . bind ( this . selectCheck , this ) ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . instance = this . addInstance ( ) ] } ) } , addInstance : function ( ) { var a = this . options , b = { ne : this , height : a . height , maxHeight : a . maxHeight ? a . maxHeight : null , readOnly : a . readOnly } ; if ( this . element [ 0 ] . contentEditable || window . opera ) var d = new c ( b ) ; else console . error ( "不支持此浏览器" ) ; return d } , insertElem : function ( a ) { this . selectedInstance && this . selectedInstance . insertElem ( a ) } , insertHTML : function ( a ) { this . selectedInstance && this . selectedInstance . insertHTML ( a ) } , nicCommand : function ( a , b ) { this . selectedInstance && this . selectedInstance . nicCommand ( a , b ) } , selectCheck : function ( a ) { var c = a . target , d = this ; this . instance . saveRng ( ) ; do { if ( "svg" !== c . nodeName && c . className && c . className . indexOf && c . className . indexOf ( b ) != - 1 ) return ; if ( this . instance . checkToolbar ( c ) ) return void BI . defer ( function ( ) { d . instance . restoreRng ( ) } ) } while ( c = c . parentNode ) ; this . fireEvent ( "blur" , c ) , this . lastSelectedInstance = this . selectedInstance || this . lastSelectedInstance , this . selectedInstance = null } , focus : function ( ) { this . instance . focus ( ) } , bindToolbar : function ( a ) { this . instance . bindToolbar ( a ) } , setValue : function ( b ) { b = b || ( a ( ) ? "" : "<br>" ) , b = b . startWith ( "<p" ) ? b : "<p>" + b + "</p>" , this . instance . setContent ( b ) } , getValue : function ( ) { return this . instance . getContent ( ) } , getContentHeight : function ( ) { return this . instance . getContentHeight ( ) } , getInstance : function ( ) { return this . instance } , destroyed : function ( ) { $ ( document ) . unbind ( "mousedown." + this . getName ( ) ) } } ) , BI . NicEditor . EVENT _SELECTED = "selected" , BI . NicEditor . EVENT _BLUR = "blur" , BI . NicEditor . EVENT _FOCUS = "focus" , BI . NicEditor . EVENT _KEYDOWN = "keydown" , BI . NicEditor . EVENT _KEYUP = "keyup" , BI . shortcut ( "bi.nic_editor" , BI . NicEditor ) ; var b = "niceditor-" , c = BI . inherit ( BI . Layout , { isSelected : ! 1 , _init : function ( ) { c . superclass . _init . apply ( this , arguments ) ; var a = this . options , b = a . value || "<br>" ; b = b . startWith ( "<p>" ) ? b : "<p>" + b + "</p>" , this . ne = this . options . ne , this . elm = BI . createWidget ( { type : "bi.layout" , width : a . width - 8 , scrollable : ! 1 } ) , this . elm . element . css ( { minHeight : BI . isNumber ( a . height ) ? a . height - 8 + "px" : a . height , outline : "none" , padding : "0 10px" , wordWrap : "break-word" } ) . html ( b ) , a . readOnly && ( this . elm . element . attr ( "contentEditable" , ! 1 ) , this . elm . element . css ( "word-break" , "break-all" ) ) , 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" , this . options . readOnly !== ! 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" ) } , 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 ( ) { var a = this . getRng ( ) ; this . _isChildOf ( this . getSelectionContainerElem ( a ) , this . element [ 0 ] ) && ( this . savedRange = a , this . savedSel = this . getSel ( ) ) } , getSelectionContainerElem : function ( a ) { if ( a ) { var b = a . commonAncestorCon
return this . table . getVerticalScroll ( ) } , getLeftHorizontalScroll : function ( ) { return this . table . getLeftHorizontalScroll ( ) } , getRightHorizontalScroll : function ( ) { return this . table . getRightHorizontalScroll ( ) } , attr : function ( a , b ) { var c = this ; if ( BI . isObject ( a ) ) return void BI . each ( a , function ( a , b ) { c . attr ( a , b ) } ) ; switch ( BI . DynamicSummaryLayerTreeTable . superclass . attr . apply ( this , arguments ) , a ) { case "columnSize" : case "minColumnSize" : case "maxColumnSize" : case "freezeCols" : case "mergeCols" : return } this . table . attr . apply ( this . table , [ a , b ] ) } , restore : function ( ) { this . table . restore ( ) } , populate : function ( a , b , c , d ) { var e = this . options ; a && ( e . items = a ) , b && ( e . header = b ) , c && ( e . crossItems = c ) , d && ( e . crossHeader = d ) ; var f = this . _digest ( ) ; this . table . setColumnSize ( f . columnSize ) , this . table . attr ( "minColumnSize" , f . minColumnSize ) , this . table . attr ( "maxColumnSize" , f . maxColumnSize ) , this . table . attr ( "freezeCols" , f . freezeCols ) , this . table . populate ( f . items , f . header ) } , destroy : function ( ) { this . table . destroy ( ) , BI . DynamicSummaryLayerTreeTable . superclass . destroy . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.dynamic_summary_layer_tree_table" , BI . DynamicSummaryLayerTreeTable ) , BI . DynamicSummaryTreeTable = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . DynamicSummaryTreeTable . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-dynamic-summary-tree-table" , el : { type : "bi.resizable_table" } , isNeedResize : ! 0 , isResizeAdapt : ! 0 , isNeedFreeze : ! 1 , freezeCols : [ ] , isNeedMerge : ! 0 , mergeCols : [ ] , mergeRule : BI . emptyFn , columnSize : [ ] , minColumnSize : [ ] , maxColumnSize : [ ] , headerRowSize : 25 , footerRowSize : 25 , rowSize : 25 , regionColumnSize : [ ] , headerCellStyleGetter : BI . emptyFn , summaryCellStyleGetter : BI . emptyFn , sequenceCellStyleGetter : BI . emptyFn , header : [ ] , footer : ! 1 , items : [ ] , crossHeader : [ ] , crossItems : [ ] } ) } , _getVDeep : function ( ) { return this . options . crossHeader . length } , _getHDeep : function ( ) { var a = this . options ; return Math . max ( a . mergeCols . length , a . freezeCols . length , BI . TableTree . maxDeep ( a . items ) - 1 ) } , _init : function ( ) { BI . DynamicSummaryTreeTable . 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 : b . freezeCols , isNeedMerge : b . isNeedMerge , mergeCols : b . mergeCols , mergeRule : b . mergeRule , columnSize : b . columnSize , minColumnSize : b . minColumnSize , maxColumnSize : b . maxColumnSize , headerRowSize : b . headerRowSize , rowSize : b . rowSize , regionColumnSize : b . regionColumnSize , header : c . header , items : c . items } ) , this . table . on ( BI . Table . EVENT _TABLE _SCROLL , function ( ) { a . fireEvent ( BI . Table . EVENT _TABLE _SCROLL , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _AFTER _REGION _RESIZE , function ( ) { b . regionColumnSize = this . getRegionColumnSize ( ) ; var c = this . getColumnSize ( ) , d = b . columnSize . length - c . length ; b . columnSize = c . slice ( ) , b . columnSize = b . columnSize . concat ( BI . makeArray ( d , 0 ) ) , a . fireEvent ( BI . Table . EVENT _TABLE _AFTER _REGION _RESIZE , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _AFTER _COLUMN _RESIZE , function ( ) { b . regionColumnSize = this . getRegionColumnSize ( ) ; var c = this . getColumnSize ( ) , d = b . columnSize . length - c . length ; b . columnSize = c . slice ( ) , b . columnSize = b . columnSize . concat ( BI . makeArray ( d , 0 ) ) , a . fireEvent ( BI . Table . EVENT _TABLE _AFTER _COLUMN _RESIZE , arguments ) } ) } , _digest : function ( ) { var a = this . options , b = this . _getHDeep ( ) , c = this . _getVDeep ( ) , d = BI . TableTree . formatHeader ( a . header , a . crossHeader , a . crossItems , b , c , a . headerCellStyleGetter ) , e = BI . DynamicSummaryTreeTable . formatHorizontalItems ( a . items , b , ! 1 , a . summaryCellStyleGetter ) , f = BI . DynamicSummaryTreeTable . formatSummaryItems ( e , d , a . crossItems , b ) , g = a . columnSize . slice ( ) , h = a . minColumnSize . slice ( ) , i = a . maxColumnSize . slice ( ) ; return BI . removeAt ( g , f . deletedCols ) , BI . removeAt ( h , f . deletedCols ) , BI . removeAt ( i , f . deletedCols ) , { header : f . header , items : f . items , columnSize : g , minColumnSize : h , maxColumnSize : i } } , setWidth : function ( a ) { BI . DynamicSummaryTreeTable . superclass . setWidth . apply ( this , arguments ) , this . table . setWidth ( a ) } , setHeight : function ( a ) { BI . DynamicSummaryTreeTable . superclass . setHeight . apply ( this , arguments ) , this . table . setHeight ( a ) } , setColumnSize : functio
return BI . extend ( BI . BranchTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-branch-tree" , expander : { } , el : { } , items : [ ] } ) } , _init : function ( ) { BI . BranchTree . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . branchTree = BI . createWidget ( { type : "bi.custom_tree" , element : this , expander : BI . extend ( { type : "bi.branch_expander" , el : { } , popup : { type : "bi.custom_tree" } } , b . expander ) , el : BI . extend ( { type : "bi.button_tree" , chooseType : BI . ButtonGroup . CHOOSE _TYPE _MULTI , layouts : [ { type : "bi.vertical" } ] } , b . el ) , items : this . options . items } ) , this . branchTree . on ( BI . CustomTree . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . BranchTree . EVENT _CHANGE , arguments ) } ) , this . branchTree . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) } , populate : function ( ) { this . branchTree . populate . apply ( this . branchTree , arguments ) } , getValue : function ( ) { return this . branchTree . getValue ( ) } } ) , BI . BranchTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.branch_tree" , BI . BranchTree ) , BI . DisplayTree = BI . inherit ( BI . TreeView , { _defaultConfig : function ( ) { return BI . extend ( BI . DisplayTree . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-display-tree" } ) } , _init : function ( ) { BI . DisplayTree . superclass . _init . apply ( this , arguments ) } , _configSetting : function ( ) { function a ( a , b ) { return ! 1 } var b = { view : { selectedMulti : ! 1 , dblClickExpand : ! 1 , showIcon : ! 1 , nameIsHTML : ! 0 , showTitle : ! 1 } , data : { key : { title : "title" , name : "text" } , simpleData : { enable : ! 0 } } , callback : { beforeCollapse : a } } ; return b } , _dealWidthNodes : function ( a ) { a = BI . DisplayTree . superclass . _dealWidthNodes . apply ( this , arguments ) ; this . options ; return BI . each ( a , function ( a , b ) { null == b . text && b . count > 0 && ( b . text = b . value + "(" + BI . i18nText ( "BI-Basic_Altogether" ) + b . count + BI . i18nText ( "BI-Basic_Count" ) + ")" ) } ) , a } , initTree : function ( a , b ) { var b = b || this . _configSetting ( ) ; this . nodes = $ . fn . zTree . init ( this . tree . element , b , a ) } , destroy : function ( ) { BI . DisplayTree . superclass . destroy . apply ( this , arguments ) } } ) , BI . DisplayTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.display_tree" , BI . DisplayTree ) , BI . LevelTree = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . LevelTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-level-tree" , el : { chooseType : 0 } , expander : { } , items : [ ] , value : "" } ) } , _init : function ( ) { BI . LevelTree . superclass . _init . apply ( this , arguments ) , this . initTree ( this . options . items ) } , _formatItems : function ( a , b ) { var c = this ; return BI . each ( a , function ( d , e ) { var f = { layer : b } ; if ( BI . isKey ( e . id ) || ( e . id = BI . UUID ( ) ) , e . isParent === ! 0 || BI . isNotEmptyArray ( e . children ) ) { switch ( d ) { case 0 : f . type = "bi.first_plus_group_node" ; break ; case a . length - 1 : f . type = "bi.last_plus_group_node" ; break ; default : f . type = "bi.mid_plus_group_node" } BI . defaults ( e , f ) , c . _formatItems ( e . children , b + 1 ) } else { switch ( d ) { case a . length - 1 : f . type = "bi.last_tree_leaf_item" ; break ; default : f . type = "bi.mid_tree_leaf_item" } BI . defaults ( e , f ) } } ) , a } , _assertId : function ( a ) { BI . each ( a , function ( a , b ) { BI . isKey ( b . id ) || ( b . id = BI . UUID ( ) ) } ) } , initTree : function ( a ) { var b = this , c = this . options ; this . empty ( ) , this . _assertId ( a ) , this . tree = BI . createWidget ( { type : "bi.custom_tree" , element : this , expander : BI . extend ( { el : { } , popup : { type : "bi.custom_tree" } } , c . expander ) , items : this . _formatItems ( BI . Tree . transformToTreeFormat ( a ) , 0 ) , value : c . value , el : BI . extend ( { type : "bi.button_tree" , chooseType : 0 , layouts : [ { type : "bi.vertical" } ] } , c . el ) } ) , 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 . LevelTree . EVENT _CHANGE , c , d ) } ) } , stroke : function ( a ) { this . tree . stroke . apply ( this . tree , arguments ) } , populate : function ( a , b ) { a = this . _formatItems ( BI . Tree . transformToTreeFormat ( a ) , 0 ) , this . tree . populate ( a , b ) } , setValue : function ( a ) { this . tree . setValue ( a ) } , getValue : function ( ) { return this . tree . getValue ( ) } , getAllLeaves : function ( ) { return this . tree . getAllLeaves ( ) } , getNodeById : function ( a ) { return this . tree . getNodeById ( a ) } , getNodeByValue : function ( a ) { return this . tree . getNodeByValue ( a ) } } ) , BI . LevelTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.level_tree" , BI . LevelTree ) , BI . SimpleTreeView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SimpleTreeView . superclass . _defaul
this . _year = this . today . getFullYear ( ) , this . _month = this . today . getMonth ( ) + 1 , this . selectedTime = b . selectedTime || { year : this . _year , month : this . _month } , this . datePicker = BI . createWidget ( { type : "bi.date_picker" , behaviors : b . behaviors , min : b . min , max : b . max } ) , this . datePicker . on ( BI . DatePicker . EVENT _CHANGE , function ( ) { var b = a . datePicker . getValue ( ) , c = BI . getDate ( b . year , b . month - 1 , 1 ) . getMonthDays ( ) , d = a . selectedTime . day || 0 ; d > c && ( d = c ) , a . selectedTime = { year : b . year , month : b . month } , 0 !== d && ( a . selectedTime . day = d ) , a . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( a . selectedTime ) ) , a . calendar . setValue ( a . selectedTime ) , 0 !== d && a . fireEvent ( BI . DateCalendarPopup . EVENT _CHANGE ) } ) , this . calendar = BI . createWidget ( { direction : "custom" , type : "bi.navigation" , tab : this . datePicker , cardCreator : BI . bind ( this . _createNav , this ) } ) , this . calendar . on ( BI . Navigation . EVENT _CHANGE , function ( ) { a . selectedTime = a . calendar . getValue ( ) , a . calendar . empty ( ) , a . setValue ( a . selectedTime ) , a . fireEvent ( BI . DateCalendarPopup . EVENT _CHANGE ) } ) , this . setValue ( b . selectedTime ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . datePicker , height : 40 } , this . calendar ] , hgap : 10 } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.layout" , cls : "bi-border-top" } , height : 1 , top : 40 , left : 0 , right : 0 } ] } ) } , _createNav : function ( a ) { var b = BI . Calendar . getDateJSONByPage ( a ) , c = BI . createWidget ( { type : "bi.calendar" , logic : { dynamic : ! 1 } , min : this . options . min , max : this . options . max , year : b . year , month : b . month , day : this . selectedTime . day } ) ; return c } , _getNewCurrentDate : function ( ) { var a = BI . getDate ( ) ; return { year : a . getFullYear ( ) , month : a . getMonth ( ) + 1 } } , _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.static_date_pane_card" , BI . StaticDatePaneCard ) , BI . DynamicDatePane = BI . inherit ( BI . Widget , { props : { baseCls : "bi-dynamic-date-pane" } , render : function ( ) { var a = this , b = this . options ; return { type : "bi.vtape" , items : [ { el : { type : "bi.linear_segment" , cls : "bi-border-bottom" , height : 30 , items : BI . createItems ( [ { text : BI . i18nText ( "BI-Multi_Date_YMD" ) , value : BI . DynamicDatePane . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicDatePane . Dynamic } ] , { textAlign : "center" } ) , listeners : [ { eventName : BI . ButtonGroup . EVENT _CHANGE , action : function ( ) { var b = this . getValue ( ) [ 0 ] ; switch ( a . dateTab . setSelect ( b ) , b ) { case BI . DynamicDatePane . Static : var c = BI . DynamicDateHelper . getCalculation ( a . dynamicPane . getValue ( ) ) ; a . ymd . setValue ( { year : c . getFullYear ( ) , month : c . getMonth ( ) + 1 , day : c . getDate ( ) } ) ; break ; case BI . DynamicDatePane . Dynamic : a . dynamicPane . setValue ( { year : 0 } ) } } } ] , ref : function ( ) { a . switcher = this } } , height : 30 } , { type : "bi.tab" , ref : function ( ) { a . dateTab = this } , showIndex : BI . DynamicDatePane . Static , cardCreator : function ( c ) { switch ( c ) { case BI . DynamicDatePane . Static : return { type : "bi.static_date_pane_card" , behaviors : b . behaviors , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { a . fireEvent ( "EVENT_CHANGE" ) } } ] , ref : function ( ) { a . ymd = this } } ; case BI . DynamicDatePane . Dynamic : default : return { type : "bi.dynamic_date_card" , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { a . _checkValue ( a . getValue ( ) ) && a . fireEvent ( "EVENT_CHANGE" ) } } ] , ref : function ( ) { a . dynamicPane = this } } } } } ] } } , mounted : function ( ) { this . setValue ( this . options . value ) } , _checkValueValid : function ( a ) { return BI . isNull ( a ) || BI . isEmptyObject ( a ) || BI . isEmptyString ( a ) } , _checkValue : function ( a ) { switch ( a . type ) { case BI . DynamicDateCombo . Dynamic : return BI . isNotEmptyObject ( a . value ) ; case BI . DynamicDateCombo . Static : default : return ! 0 } } , setValue : function ( a ) { a = a || { } ; var b = a . type || BI . DynamicDateCombo . Static , c = a . value || a ; switch ( this . switcher . setValue ( b ) , this . dateTab . setSelect ( b ) , b ) { case BI . DynamicDateCombo . Dynamic : this . dynamicPane . setValue ( c ) ; brea
logic : { dynamic : ! 0 } } ) , layouts : [ { type : "bi.left" , rgap : 4 } ] , listeners : [ { eventName : BI . ButtonGroup . EVENT _CHANGE , action : function ( ) { var b = a . checkgroup . getValue ( ) ; 0 !== b . length && a . workDayBox . setSelected ( ! 1 ) ; var c = { } ; BI . each ( a . resultPane . getAllButtons ( ) , function ( a , b ) { var d = b . getValue ( ) ; BI . isNotNull ( d . dateType ) && ( c [ d . dateType ] = { value : d . value , offset : d . offset } ) } ) , a . resultPane . populate ( a . _getParamJson ( BI . map ( a . checkgroup . getValue ( ) , function ( a , b ) { var d = { dateType : b } ; return BI . has ( c , b ) && ( d . value = c [ b ] . value , d . offset = c [ b ] . offset ) , d } ) ) ) , a . position = BI . DynamicDateCard . OFFSET . CURRENT , a . fireEvent ( "EVENT_CHANGE" ) } } ] } , { type : "bi.vertical_adapt" , lgap : 2 , items : [ { el : { type : "bi.multi_select_item" , ref : function ( ) { a . workDayBox = this } , logic : { dynamic : ! 0 } , text : BI . i18nText ( "BI-Basic_Work_Day" ) , value : BI . DynamicDateCard . TYPE . WORK _DAY , listeners : [ { eventName : BI . MultiSelectItem . EVENT _CHANGE , action : function ( ) { this . isSelected ( ) && a . checkgroup . setValue ( ) , a . resultPane . populate ( this . isSelected ( ) ? a . _getParamJson ( [ { dateType : BI . DynamicDateCard . TYPE . WORK _DAY } ] ) : [ ] ) , a . position = BI . DynamicDateCard . OFFSET . CURRENT , a . fireEvent ( "EVENT_CHANGE" ) } } ] } } ] , ref : function ( ) { a . workDay = this } } , { type : "bi.button_group" , items : this . _getParamJson ( [ { dateType : BI . DynamicDateCard . TYPE . YEAR } ] ) , ref : function ( ) { a . resultPane = this } , layouts : [ { type : "bi.vertical" , bgap : 10 , hgap : 10 } ] } ] } } , _getParamJson : function ( a , b ) { var c = this , d = BI . map ( a , function ( a , b ) { return { el : { type : "bi.dynamic_date_param_item" , dateType : b . dateType , value : b . value , offset : b . offset , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { c . fireEvent ( "EVENT_CHANGE" ) } } ] } , tgap : 0 === a ? 5 : 0 } } ) ; if ( 1 === a . length && a [ 0 ] . dateType === BI . DynamicDateCard . TYPE . DAY ) { var e = this . _getText ( BI . DynamicDateCard . TYPE . MONTH ) ; e [ 0 ] . text = BI . i18nText ( "BI-Basic_Empty" ) , d . push ( { type : "bi.text_value_combo" , height : 24 , items : e , container : null , value : b || BI . DynamicDateCard . OFFSET . CURRENT , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { c . position = this . getValue ( ) [ 0 ] , c . fireEvent ( "EVENT_CHANGE" ) } } ] } ) } else 0 !== a . length && BI . last ( a ) . dateType !== BI . DynamicDateCard . TYPE . DAY && BI . last ( a ) . dateType !== BI . DynamicDateCard . TYPE . WORK _DAY && d . push ( { type : "bi.text_value_combo" , height : 24 , container : null , items : this . _getText ( BI . last ( a ) . dateType ) , value : b || BI . DynamicDateCard . OFFSET . CURRENT , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { c . position = this . getValue ( ) [ 0 ] , c . fireEvent ( "EVENT_CHANGE" ) } } ] } ) ; return d } , _getText : function ( a ) { switch ( a ) { case BI . DynamicDateCard . TYPE . YEAR : return [ { text : BI . i18nText ( "BI-Basic_Current_Day" ) , value : BI . DynamicDateCard . OFFSET . CURRENT } , { text : BI . i18nText ( "BI-Basic_Year_Begin" ) , value : BI . DynamicDateCard . OFFSET . BEGIN } , { text : BI . i18nText ( "BI-Basic_Year_End" ) , value : BI . DynamicDateCard . OFFSET . END } ] ; case BI . DynamicDateCard . TYPE . QUARTER : return [ { text : BI . i18nText ( "BI-Basic_Current_Day" ) , value : BI . DynamicDateCard . OFFSET . CURRENT } , { text : BI . i18nText ( "BI-Basic_Quarter_Begin" ) , value : BI . DynamicDateCard . OFFSET . BEGIN } , { text : BI . i18nText ( "BI-Basic_Quarter_End" ) , value : BI . DynamicDateCard . OFFSET . END } ] ; case BI . DynamicDateCard . TYPE . MONTH : return [ { text : BI . i18nText ( "BI-Basic_Current_Day" ) , value : BI . DynamicDateCard . OFFSET . CURRENT } , { text : BI . i18nText ( "BI-Basic_Month_Begin" ) , value : BI . DynamicDateCard . OFFSET . BEGIN } , { text : BI . i18nText ( "BI-Basic_Month_End" ) , value : BI . DynamicDateCard . OFFSET . END } ] ; case BI . DynamicDateCard . TYPE . WEEK : default : return [ { text : BI . i18nText ( "BI-Basic_Current_Day" ) , value : BI . DynamicDateCard . OFFSET . CURRENT } , { text : BI . i18nText ( "BI-Basic_Week_Begin" ) , value : BI . DynamicDateCard . OFFSET . BEGIN } , { text : BI . i18nText ( "BI-Basic_Week_End" ) , value : BI . DynamicDateCard . OFFSET . END } ] } } , _createValue : function ( a , b ) { return { dateType : a , value : Math . abs ( b ) , offset : b > 0 ? 1 : 0 } } , setValue : function ( a ) { a = a || { } , this . position = a . position || BI . DynamicDateCard . OFFSET . CURRENT ; var b = [ ] , c = [ ] ; BI . isNotNull ( a . year ) && ( b . push ( BI . DynamicDateCard . TYPE . YEAR ) , c . push ( this . _createValue ( BI . DynamicDateCard . TYPE . YEAR , a . year ) ) ) , BI . isNotNull ( a . quarter ) && ( b . push ( BI . DynamicDateCard . TYPE . QUARTER ) , c . push ( this . _createValue ( BI . DynamicDateCard . TYPE . QUARTER , a . quarter ) ) ) , BI . isNotNull ( a . month ) && ( b . push ( BI . DynamicDateCard . TYPE . MONTH ) , c . push ( this . _createValue ( BI . DynamicDateCard . TYPE . MONTH , a . m
this . textButton . setValue ( BI . i18nText ( "BI-Multi_Date_Today" ) ) } else this . ymd . setValue ( c ) , this . timeSelect . setValue ( { hour : c . hour , minute : c . minute , second : c . second } ) , this . textButton . setValue ( BI . i18nText ( "BI-Multi_Date_Today" ) ) ; this . textButton . setEnable ( ! 0 ) } } , getValue : function ( ) { var a = this . dateTab . getSelect ( ) ; return { type : a , value : a === BI . DynamicDateTimeCombo . Static ? BI . extend ( this . ymd . getValue ( ) , this . timeSelect . getValue ( ) ) : this . dynamicPane . getValue ( ) } } } ) , BI . DynamicDateTimePopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . DynamicDateTimePopup . BUTTON _OK _EVENT _CHANGE = "BUTTON_OK_EVENT_CHANGE" , BI . DynamicDateTimePopup . BUTTON _lABEL _EVENT _CHANGE = "BUTTON_lABEL_EVENT_CHANGE" , BI . DynamicDateTimePopup . BUTTON _CLEAR _EVENT _CHANGE = "BUTTON_CLEAR_EVENT_CHANGE" , BI . shortcut ( "bi.dynamic_date_time_popup" , BI . DynamicDateTimePopup ) , BI . DynamicDateTimeSelect = BI . inherit ( BI . Widget , { props : { baseCls : "bi-date-time-select bi-border-top" } , render : function ( ) { var a = this ; return { type : "bi.center_adapt" , items : [ { type : "bi.vertical_adapt" , items : [ { el : { type : "bi.number_editor" , ref : function ( ) { a . hour = this } , validationChecker : function ( a ) { return BI . isNaturalNumber ( a ) && BI . parseInt ( a ) < 24 } , errorText : function ( a ) { return BI . isNumeric ( a ) ? BI . i18nText ( "BI-Basic_Input_From_To_Number" , '"00-23"' ) : BI . i18nText ( "BI-Numerical_Interval_Input_Data" ) } , listeners : [ { eventName : BI . SignEditor . EVENT _CONFIRM , action : function ( ) { var b = this . getValue ( ) ; a . _checkHour ( b ) , this . setValue ( a . _formatValueToDoubleDigit ( b ) ) , a . fireEvent ( BI . DynamicDateTimeSelect . EVENT _CONFIRM ) } } , { eventName : BI . SignEditor . EVENT _CHANGE , action : function ( ) { var b = a . _autoSwitch ( this . getValue ( ) , BI . DynamicDateTimeSelect . HOUR ) ; this . setValue ( b ) } } ] , width : 60 , height : 24 } , lgap : 14 } , { type : "bi.label" , text : ":" , width : 20 } , { type : "bi.number_editor" , ref : function ( ) { a . minute = this } , validationChecker : function ( a ) { return BI . isNaturalNumber ( a ) && BI . parseInt ( a ) < 60 } , errorText : function ( a ) { return BI . isNumeric ( a ) ? BI . i18nText ( "BI-Basic_Input_From_To_Number" , '"00-59"' ) : BI . i18nText ( "BI-Numerical_Interval_Input_Data" ) } , listeners : [ { eventName : BI . SignEditor . EVENT _CONFIRM , action : function ( ) { var b = this . getValue ( ) ; a . _checkMinute ( b ) , this . setValue ( a . _formatValueToDoubleDigit ( b ) , BI . DynamicDateTimeSelect . MINUTE ) , a . fireEvent ( BI . DynamicDateTimeSelect . EVENT _CONFIRM ) } } , { eventName : BI . SignEditor . EVENT _CHANGE , action : function ( ) { var b = a . _autoSwitch ( this . getValue ( ) , BI . DynamicDateTimeSelect . MINUTE ) ; this . setValue ( b ) } } ] , width : 60 , height : 24 } , { type : "bi.label" , text : ":" , width : 20 } , { type : "bi.number_editor" , ref : function ( ) { a . second = this } , validationChecker : function ( a ) { return BI . isNaturalNumber ( a ) && BI . parseInt ( a ) < 60 } , errorText : function ( a ) { return BI . isNumeric ( a ) ? BI . i18nText ( "BI-Basic_Input_From_To_Number" , '"00-59"' ) : BI . i18nText ( "BI-Numerical_Interval_Input_Data" ) } , listeners : [ { eventName : BI . SignEditor . EVENT _CONFIRM , action : function ( ) { var b = this . getValue ( ) ; a . _checkSecond ( b ) , this . setValue ( a . _formatValueToDoubleDigit ( b ) ) , a . fireEvent ( BI . DynamicDateTimeSelect . EVENT _CONFIRM ) } } ] , width : 60 , height : 24 } ] } ] } } , _checkBorder : function ( a ) { a = a || { } , this . _checkHour ( a . hour ) , this . _checkMinute ( a . minute ) , this . _checkSecond ( a . second ) } , _checkHour : function ( a ) { this . hour . setDownEnable ( BI . parseInt ( a ) > 0 ) , this . hour . setUpEnable ( BI . parseInt ( a ) < 23 ) } , _checkMinute : function ( a ) { this . minute . setDownEnable ( BI . parseInt ( a ) > 0 ) , this . minute . setUpEnable ( BI . parseInt ( a ) < 59 ) } , _checkSecond : function ( a ) { this . second . setDownEnable ( BI . parseInt ( a ) > 0 ) , this . second . setUpEnable ( BI . parseInt ( a ) < 59 ) } , _autoSwitch : function ( a , b ) { var c = 0 , d = a ; switch ( b ) { case BI . DynamicDateTimeSelect . HOUR : c = 2 ; break ; case BI . DynamicDateTimeSelect . MINUTE : c = 5 } return 1 === a . length && BI . parseInt ( a ) > c && ( d = "0" + d ) , 2 === d . length && ( b === BI . DynamicDateTimeSelect . HOUR ? this . minute . focus ( ) : this . second . focus ( ) ) , d } , _formatValueToDoubleDigit : function ( a ) { ( BI . isNull ( a ) || BI . isEmptyString ( a ) ) && ( a = 0 ) ; var b = BI . parseInt ( a ) ; return b < 10 && ( b = "0" + b ) , b } , _assertValue : function ( a ) { return a = a || { } , a . hour = this . _formatValueToDoubleDigit ( a . hour ) || "00" , a . minute = this . _formatValueToDoubleDigit ( a . minute ) || "00" , a . second = this . _formatValueToDoubleDigit ( a . second ) || "00" , a } , getValue : function ( ) { return { hour : BI . parseInt ( this . hour . getValue ( ) ) , minute : BI . parseInt ( this . minute . getValue
this . grayTrack = BI . createWidget ( { type : "bi.layout" , cls : "gray-track" , height : 6 } ) , this . blueTrack = BI . createWidget ( { type : "bi.layout" , cls : "blue-track bi-high-light-background" , height : 6 } ) , this . track = this . _createTrackWrapper ( ) , this . labelOne = BI . createWidget ( { type : "bi.sign_text_editor" , cls : "slider-editor-button" , text : this . options . unit , allowBlank : ! 1 , width : b . EDITOR _WIDTH , validationChecker : function ( b ) { return a . _checkValidation ( b ) } } ) , this . labelOne . element . hover ( function ( ) { a . labelOne . element . removeClass ( "bi-border" ) . addClass ( "bi-border" ) } , function ( ) { a . labelOne . element . removeClass ( "bi-border" ) } ) , this . labelOne . on ( BI . Editor . EVENT _CONFIRM , function ( ) { var b = a . valueOne , c = BI . parseFloat ( this . getValue ( ) ) ; a . valueOne = c ; var d = a . _getPercentByValue ( c ) , e = BI . parseFloat ( d . toFixed ( 1 ) ) ; a . _setSliderOnePosition ( e ) , a . _setBlueTrack ( ) , a . _checkLabelPosition ( b , a . valueTwo , a . valueOne , a . valueTwo ) , a . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } ) , this . labelTwo = BI . createWidget ( { type : "bi.sign_text_editor" , cls : "slider-editor-button" , text : this . options . unit , allowBlank : ! 1 , width : b . EDITOR _WIDTH , validationChecker : function ( b ) { return a . _checkValidation ( b ) } } ) , this . labelTwo . element . hover ( function ( ) { a . labelTwo . element . removeClass ( "bi-border" ) . addClass ( "bi-border" ) } , function ( ) { a . labelTwo . element . removeClass ( "bi-border" ) } ) , this . labelTwo . on ( BI . Editor . EVENT _CONFIRM , function ( ) { var b = a . valueTwo , c = BI . parseFloat ( this . getValue ( ) ) ; a . valueTwo = c ; var d = a . _getPercentByValue ( c ) , e = BI . parseFloat ( d . toFixed ( 1 ) ) ; a . _setSliderTwoPosition ( e ) , a . _setBlueTrack ( ) , a . _checkLabelPosition ( a . valueOne , b , a . valueOne , a . valueTwo ) , a . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } ) , this . sliderOne = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . sliderTwo = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . _draggable ( this . sliderOne , ! 0 ) , this . _draggable ( this . sliderTwo , ! 1 ) , this . _setVisible ( ! 1 ) , { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . track , width : "100%" , height : b . TRACK _HEIGHT } ] } ] , hgap : 7 , height : b . TRACK _HEIGHT } , top : 23 , left : 0 , width : "100%" } , this . _createLabelWrapper ( ) , this . _createSliderWrapper ( ) ] } } , _rePosBySizeAfterMove : function ( a , b ) { var c = this . options , d = 100 * a / this . _getGrayTrackLength ( ) , e = BI . parseFloat ( d . toFixed ( 1 ) ) , f = this . _getValueByPercent ( e ) ; f = this . _assertValue ( f ) , f = c . digit === ! 1 ? f : f . toFixed ( c . digit ) ; var g = this . valueOne , h = this . valueTwo ; b ? ( this . _setSliderOnePosition ( e ) , this . labelOne . setValue ( f ) , this . valueOne = f , this . _checkLabelPosition ( g , h , f , this . valueTwo ) ) : ( this . _setSliderTwoPosition ( e ) , this . labelTwo . setValue ( f ) , this . valueTwo = f , this . _checkLabelPosition ( g , h , this . valueOne , f ) ) , this . _setBlueTrack ( ) } , _rePosBySizeAfterStop : function ( a , b ) { var c = 100 * a / this . _getGrayTrackLength ( ) , d = BI . parseFloat ( c . toFixed ( 1 ) ) ; b ? this . _setSliderOnePosition ( d ) : this . _setSliderTwoPosition ( d ) } , _draggable : function ( a , b ) { function c ( a ) { return BI . clamp ( a , 0 , d . _getGrayTrackLength ( ) ) } var d = this , e = ( this . options , ! 1 ) , f = 0 , g = 0 , h = 0 , i = new BI . MouseMoveTracker ( function ( j ) { i . isDragging ( ) && ( e = ! 0 , g += j , f = c ( h + g ) , a . element . addClass ( "dragging" ) , d . _rePosBySizeAfterMove ( f , b ) ) } , function ( ) { e === ! 0 && ( f = c ( f ) , d . _rePosBySizeAfterStop ( f , b ) , f = 0 , g = 0 , h = f , e = ! 1 ) , a . element . removeClass ( "dragging" ) , i . releaseMouseMoves ( ) , d . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } , window ) ; a . element . on ( "mousedown" , function ( b ) { a . isEnabled ( ) && ( h = this . offsetLeft , c ( h ) , i . captureMouseMoves ( b ) ) } ) } , _createLabelWrapper : function ( ) { var a = this . _constant ; return { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . labelOne , top : 0 , left : "0%" } ] } , { type : "bi.absolute" , items : [ { el : this . labelTwo , top : 0 , left : "100%" } ] } ] , rgap : a . EDITOR _R _GAP , height : 70 } , top : 0 , left : 0 , width : "100%" } } , _createSliderWrapper : function ( ) { var a = this . _constant ; return { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . sliderOne , top : 0 , left : "0%" } ] } , { type : "bi.absolute" , items : [ { el : this . sliderTwo , top : 0 , left : "100%" } ] } ] , hgap : a . SLIDER _WIDTH _HALF , height : a . SLIDER _HEIGHT } , top : 20 , left : 0 , width : "100%" } } , _createTrackWrapper : function ( ) { return BI . createWidget ( { type : "bi.absolute" , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . grayTrack , top : 0 , left : 0 , width : "100%" } , { el : this . blueTr
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 ) { a . setSelected ( a . isSelected ( ) ) , 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 : 12 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 12 ) , items : [ c ] } ) } , 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 . MultiLayerSelectTreeLastPlusGroupNode . superclass . setSelected . apply ( this , arguments ) , this . node . setSelected ( a ) } , doClick : function ( ) { BI . MultiLayerSelectTreeLastPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MultiLayerSelectTreeLastPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_select_tree_last_plus_group_node" , BI . MultiLayerSelectTreeLastPlusGroupNode ) , BI . MultiLayerSelectTreeMidPlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var a = BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( a , { extraCls : "bi-multilayer-select-tree-mid-plus-group-node bi-list-item-active" , layer : 0 , id : "" , pId : "" , readonly : ! 0 , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . node = BI . createWidget ( { type : "bi.select_tree_mid_plus_group_node" , cls : "bi-list-item-none" , stopPropagation : ! 0 , 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 ) { a . setSelected ( a . isSelected ( ) ) , 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 : 12 , height : b . height } ) } ) , c . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( b . layer , 12 ) , items : [ c ] } ) } , 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 . MultiLayerSelectTreeMidPlusGroupNode . superclass . setSelected . apply ( this , arguments ) , this . node . setSelected ( a ) } , doClick : function ( ) { BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( a ) { BI . MultiLayerSelectTreeMidPlusGroupNode . superclass . setOpened . apply ( this , arguments ) , this . node . setOpened ( a ) } } ) , BI . shortcut ( "bi.multilayer_select_tree_mid_plus_group_node" , BI . MultiLayerSelectTreeMidPlusGroupNode ) , BI . MultiLayerSingleTreeCombo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSingleTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multilayer-singletree-combo" , isDefaultInit : ! 1 , height : 24 , text : "" , itemsCreator : BI . emptyFn , items : [ ] , value : "" , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . MultiLayerSingleTreeCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . trigger = BI . createWidget ( { type : "bi.single_tree_trigger" , text : b . text , height : b . height , items : b . items , value : b . value } ) , this . popup = BI . createWidget ( { type : "bi.multilayer_single_tree_popup" , isDefaultInit : b . isDefaultInit , itemsCreator : b . itemsCreator , items : b . items , value : b . value } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : b . container , element : this , adjustLength : 2 , el : this . trigger , popup : { el : this . popup } } ) , this . combo . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . popup . on ( BI . MultiLayerSingleTreePopup . EVENT _CHANGE , function ( ) { a . setValue ( a . popup . getValue ( ) ) , a . combo . hideView ( ) , a . fireEvent ( BI . MultiLayerSingleTreeCombo . EVENT _CHANGE ) } ) } , setValue : function ( a ) { a = BI . isArray ( a ) ? a : [ a ] , this . trigger . setV
keywords : a } , function ( a ) { var b = BI . map ( a . items , "value" ) ; c ( b ) } ) } , _joinAll : function ( a , b ) { var c = this , d = this . options ; this . _assertValue ( a ) , this . requesting = ! 0 , d . itemsCreator ( { type : BI . MultiSelectInsertCombo . REQ _GET _ALL _DATA , keywords : [ this . trigger . getKey ( ) ] } , function ( d ) { var e = BI . map ( d . items , "value" ) ; if ( c . storeValue . type === a . type ) { var f = ! 1 , g = c . _makeMap ( c . storeValue . value ) ; return BI . each ( e , function ( a , b ) { BI . isNotNull ( g [ b ] ) && ( f = ! 0 , delete g [ b ] ) } ) , f && ( c . storeValue . value = BI . values ( g ) ) , void c . _adjust ( b ) } var h = c . _makeMap ( c . storeValue . value ) , i = c . _makeMap ( a . value ) , j = [ ] ; BI . each ( e , function ( a , b ) { BI . isNotNull ( h [ e [ a ] ] ) && delete h [ e [ a ] ] , BI . isNull ( i [ e [ a ] ] ) && j . push ( b ) } ) , c . storeValue . value = j . concat ( BI . values ( h ) ) , c . _adjust ( b ) } ) } , _adjust : function ( a ) { function b ( ) { c . wants2Quit === ! 0 && ( c . fireEvent ( BI . MultiSelectInsertCombo . EVENT _CONFIRM ) , c . wants2Quit = ! 1 ) , c . requesting = ! 1 } var c = this ; this . options ; b ( ) , a ( ) } , _join : function ( a , b ) { var c = this ; this . options ; if ( this . _assertValue ( a ) , this . _assertValue ( this . storeValue ) , this . storeValue . type === a . type ) { var d = this . _makeMap ( this . storeValue . value ) ; BI . each ( a . value , function ( a , b ) { d [ b ] || ( c . storeValue . value . push ( b ) , d [ b ] = b ) } ) ; var e = ! 1 ; return BI . each ( a . assist , function ( a , b ) { BI . isNotNull ( d [ b ] ) && ( e = ! 0 , delete d [ b ] ) } ) , e && ( this . storeValue . value = BI . values ( d ) ) , void c . _adjust ( b ) } this . _joinAll ( a , b ) } , _setStartValue : function ( a ) { this . _startValue = a , this . popup . setStartValue ( a ) } , setValue : function ( a ) { this . storeValue = a || { } , this . _assertValue ( this . storeValue ) , this . combo . setValue ( this . storeValue ) } , getValue : function ( ) { return BI . deepClone ( this . storeValue ) } , populate : function ( ) { this . combo . populate . apply ( this . combo , arguments ) } } ) , BI . extend ( BI . MultiSelectInsertCombo , { REQ _GET _DATA _LENGTH : 1 , REQ _GET _ALL _DATA : - 1 } ) , BI . MultiSelectInsertCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.multi_select_insert_combo" , BI . MultiSelectInsertCombo ) , BI . MultiSelectInsertNoBarCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectInsertNoBarCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-insert-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 24 , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . MultiSelectInsertNoBarCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = function ( ) { BI . isKey ( a . _startValue ) && a . storeValue . value [ a . storeValue . type === BI . Selection . All ? "remove" : "pushDistinct" ] ( a . _startValue ) , a . trigger . getSearcher ( ) . setState ( a . storeValue ) , a . trigger . getCounter ( ) . setButtonChecked ( a . storeValue ) } ; this . storeValue = { type : BI . Selection . Multi , value : b . value || [ ] } , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.multi_select_insert_trigger" , height : b . height , text : b . text , masker : { offset : { left : 0 , top : 0 , right : 0 , bottom : 26 } } , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { 1 === c . times && BI . isNotNull ( c . keywords ) && a . trigger . setValue ( { type : BI . Selection . Multi , value : a . getValue ( ) } ) , d . apply ( a , arguments ) } ) } , value : { type : BI . Selection . Multi , value : b . value } } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _START , function ( ) { a . _setStartValue ( "" ) , this . getSearcher ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _STOP , function ( ) { a . _setStartValue ( "" ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _PAUSE , function ( ) { this . getSearcher ( ) . hasMatched ( ) && a . _addItem ( c ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _ADD _ITEM , function ( ) { this . getSearcher ( ) . hasMatched ( ) || ( a . _addItem ( c ) , a . trigger . stopEditing ( ) ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _SEARCHING , function ( b ) { var d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . combo . setValue ( a . storeValue ) , c ( ) , a . combo . populate ( ) , a . _setStartValue ( "" ) ) : ( a . combo . setValue ( a . storeValue ) , c ( ) ) } ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _CHANGE , function ( b , d ) { d instanceof BI . MultiSelectBar ? a . _joinAll ( this . getValue ( ) , function ( ) { c ( ) } ) : a . _join ( this . getValue ( ) , function ( ) { c ( ) } ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW , function ( ) { this . getCounter ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger .
_defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectCheckSelectedButton . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-check-selected-button" , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectCheckSelectedButton . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . numberCounter = BI . createWidget ( { type : "bi.text_button" , element : this , hgap : 4 , text : "0" , textAlign : "center" , textHeight : 16 , cls : "bi-high-light-background count-tip" } ) , this . numberCounter . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . numberCounter . on ( BI . TextButton . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectCheckSelectedButton . EVENT _CHANGE , arguments ) } ) , this . numberCounter . element . hover ( function ( ) { a . numberCounter . setTag ( a . numberCounter . getText ( ) ) , a . numberCounter . setText ( BI . i18nText ( "BI-Check_Selected" ) ) } , function ( ) { a . numberCounter . setText ( a . numberCounter . getTag ( ) ) } ) , this . setVisible ( ! 1 ) , BI . isNotNull ( b . value ) && this . setValue ( b . value ) } , setValue : function ( a ) { var b = this , c = this . options ; return a || ( a = { } ) , a . type || ( a . type = BI . Selection . Multi ) , a . value || ( a . value = [ ] ) , a . type === BI . Selection . All ? void c . itemsCreator ( { type : BI . MultiSelectCombo . REQ _GET _DATA _LENGTH } , function ( c ) { var d = c . count - a . value . length ; BI . nextTick ( function ( ) { b . numberCounter . setText ( d ) , b . setVisible ( d > 0 ) } ) } ) : void BI . nextTick ( function ( ) { b . numberCounter . setText ( a . value . length ) , b . setVisible ( a . value . length > 0 ) } ) } , getValue : function ( ) { } } ) , BI . MultiSelectCheckSelectedButton . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_check_selected_button" , BI . MultiSelectCheckSelectedButton ) , BI . MultiSelectEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectEditor . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-editor" , el : { } } ) } , _init : function ( ) { BI . MultiSelectEditor . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( b . el , { type : "bi.state_editor" , element : this , height : b . height , watermark : BI . i18nText ( "BI-Basic_Search" ) , allowBlank : ! 0 , value : b . value , text : b . text } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . StateEditor . EVENT _PAUSE , function ( ) { a . fireEvent ( BI . MultiSelectEditor . EVENT _PAUSE ) } ) , this . editor . on ( BI . StateEditor . EVENT _CLICK _LABEL , function ( ) { } ) } , focus : function ( ) { this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) } , setState : function ( a ) { this . editor . setState ( a ) } , setValue : function ( a ) { this . editor . setValue ( a ) } , getValue : function ( ) { var a = this . editor . getState ( ) ; return BI . isArray ( a ) && a . length > 0 ? a [ a . length - 1 ] : "" } , getKeywords : function ( ) { var a = this . editor . getLastValidValue ( ) , b = a . match ( /[\S]+/g ) ; return BI . isEndWithBlank ( a ) ? b . concat ( [ " " ] ) : b } , populate : function ( a ) { } } ) , BI . MultiSelectEditor . EVENT _PAUSE = "MultiSelectEditor.EVENT_PAUSE" , BI . shortcut ( "bi.multi_select_editor" , BI . MultiSelectEditor ) , BI . MultiSelectInsertSearcher = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectInsertSearcher . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-searcher" , itemsCreator : BI . emptyFn , el : { } , popup : { } , valueFormatter : BI . emptyFn , adapter : null , masker : { } , text : BI . i18nText ( "BI-Basic_Please_Select" ) } ) } , _init : function ( ) { BI . MultiSelectInsertSearcher . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( b . el , { type : "bi.multi_select_editor" , height : b . height , text : b . text } ) , 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.multi_select_search_insert_pane" , valueFormatter : b . valueFormatter , keywordGetter : function ( ) { return a . editor . getValue ( ) } , itemsCreator : function ( c , d ) { var e = a . editor . getValue ( ) ; c . keywords = [ e ] , this . setKeyword ( e ) , b . itemsCreator ( c , d ) } , value : b . value , listeners : [ { eventName : BI . MultiSelectSearchInsertPane . EVENT _ADD _ITEM , action : function ( ) { a . fireEvent ( BI . MultiSelectInsertSearcher . EVENT _ADD _ITEM ) } } ] } , b . popup ) , adapter : b . adapter , masker : b . masker } ) , this . searcher . on ( BI . Searcher . EVENT _START , functi
this . adapter . setSelectedValue ( a ) , this . searcherPane . setSelectedValue ( a ) , this . searcher . setValue ( { value : a || { } } ) } , setValue : function ( a ) { this . adapter . setValue ( a ) } , stopSearch : function ( ) { this . searcher . stopSearch ( ) } , updateValue : function ( a ) { this . adapter . updateValue ( a ) } , getValue : function ( ) { return this . storeValue . value } , populate : function ( ) { this . searcher . populate . apply ( this . searcher , arguments ) , this . adapter . populate . apply ( this . adapter , arguments ) } } ) , BI . MultiSelectTree . EVENT _CHANGE = "BI.MultiSelectTree.EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_tree" , BI . MultiSelectTree ) , BI . MultiSelectTreePopup = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectTreePopup . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-tree-popup bi-border-left bi-border-right bi-border-bottom" , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectTreePopup . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . popup = BI . createWidget ( { type : "bi.async_tree" , element : this , itemsCreator : b . itemsCreator } ) , this . popup . on ( BI . TreeView . EVENT _AFTERINIT , function ( ) { a . fireEvent ( BI . MultiSelectTreePopup . EVENT _AFTER _INIT ) } ) , this . popup . on ( BI . TreeView . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . MultiSelectTreePopup . EVENT _CHANGE ) } ) } , hasChecked : function ( ) { return this . popup . hasChecked ( ) } , getValue : function ( ) { return this . popup . getValue ( ) } , setValue : function ( a ) { a || ( a = { } ) , this . popup . setValue ( a ) } , setSelectedValue : function ( a ) { a || ( a = { } ) , this . popup . setSelectedValue ( a ) } , updateValue : function ( a ) { this . popup . updateValue ( a ) , this . popup . refresh ( ) } , populate : function ( a ) { this . popup . stroke ( a ) } } ) , BI . MultiSelectTreePopup . EVENT _AFTER _INIT = "BI.MultiSelectTreePopup.EVENT_AFTER_INIT" , BI . MultiSelectTreePopup . EVENT _CHANGE = "BI.MultiSelectTreePopup.EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_tree_popup" , BI . MultiSelectTreePopup ) , BI . MultiTreeCheckPane = BI . inherit ( BI . Pane , { constants : { height : 25 , lgap : 10 , tgap : 5 } , _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreeCheckPane . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-check-pane bi-background" , onClickContinueSelect : BI . emptyFn } ) } , _init : function ( ) { BI . MultiTreeCheckPane . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . selectedValues = { } ; var c = BI . createWidget ( { type : "bi.text_button" , text : BI . i18nText ( "BI-Continue_Select" ) , cls : "multi-tree-check-selected" } ) ; c . on ( BI . TextButton . EVENT _CHANGE , function ( ) { b . onClickContinueSelect ( ) , BI . nextTick ( function ( ) { a . empty ( ) } ) } ) ; var d = BI . createWidget ( { type : "bi.left" , cls : "multi-tree-continue-select" , items : [ { el : { type : "bi.label" , text : BI . i18nText ( "BI-Selected_Data" ) } , lgap : this . constants . lgap , tgap : this . constants . tgap } , { el : c , lgap : this . constants . lgap , tgap : this . constants . tgap } ] } ) ; this . display = BI . createWidget ( { type : "bi.display_tree" , cls : "bi-multi-tree-display" , itemsCreator : function ( a , c ) { a . type = BI . TreeView . REQ _TYPE _GET _SELECTED _DATA , b . itemsCreator ( a , c ) } , 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 : 0 , left : 0 , right : 0 , bottom : 31 } } , _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreeCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 24 } ) } , _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 =
return this . table . getRegionColumnSize ( ) } , getVerticalScroll : function ( ) { return this . table . getVerticalScroll ( ) } , setLeftHorizontalScroll : function ( a ) { this . table . setLeftHorizontalScroll ( a ) } , setRightHorizontalScroll : function ( a ) { this . table . setRightHorizontalScroll ( a ) } , setVerticalScroll : function ( a ) { this . table . setVerticalScroll ( a ) } , restore : function ( ) { this . table . restore ( ) } , attr : function ( ) { BI . PageTable . superclass . attr . apply ( this , arguments ) , this . table . attr . apply ( this . table , arguments ) } , populate : function ( ) { this . pager . populate ( ) , this . table . populate . apply ( this . table , arguments ) } , destroy : function ( ) { this . table . destroy ( ) , this . pager && this . pager . destroy ( ) , BI . PageTable . superclass . destroy . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.page_table" , BI . PageTable ) , BI . PreviewTableCell = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . PreviewTableCell . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-preview-table-cell" , text : "" } ) } , _init : function ( ) { BI . PreviewTableCell . superclass . _init . apply ( this , arguments ) ; var a = this . options ; BI . createWidget ( { type : "bi.label" , element : this , textAlign : a . textAlign || "left" , whiteSpace : a . whiteSpace || "normal" , height : this . options . height , text : this . options . text , value : this . options . value , lgap : a . lgap , rgap : a . rgap , hgap : a . hgap || 5 } ) } } ) , BI . shortcut ( "bi.preview_table_cell" , BI . PreviewTableCell ) , BI . PreviewTableHeaderCell = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . PreviewTableHeaderCell . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-preview-table-header-cell" , text : "" } ) } , _init : function ( ) { BI . PreviewTableHeaderCell . superclass . _init . apply ( this , arguments ) ; var a = this . options ; BI . createWidget ( { type : "bi.label" , element : this , textAlign : a . textAlign || "left" , whiteSpace : a . whiteSpace || "normal" , height : this . options . height , text : this . options . text , value : this . options . value , lgap : a . lgap , rgap : a . rgap , hgap : a . hgap || 5 } ) } } ) , BI . shortcut ( "bi.preview_table_header_cell" , BI . PreviewTableHeaderCell ) , BI . PreviewTable = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . PreviewTable . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-preview-table" , isNeedFreeze : ! 1 , freezeCols : [ ] , rowSize : null , columnSize : [ ] , headerRowSize : 30 , header : [ ] , items : [ ] } ) } , _init : function ( ) { BI . PreviewTable . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . table = BI . createWidget ( { type : "bi.table_view" , element : this , isNeedResize : ! 1 , isResizeAdapt : ! 1 , isNeedFreeze : b . isNeedFreeze , freezeCols : b . freezeCols , rowSize : b . rowSize , columnSize : b . columnSize , headerRowSize : b . headerRowSize , header : BI . map ( b . header , function ( a , b ) { return BI . map ( b , function ( a , b ) { return BI . extend ( { type : "bi.preview_table_header_cell" } , b ) } ) } ) , items : BI . map ( b . items , function ( a , b ) { return BI . map ( b , function ( a , b ) { return BI . extend ( { type : "bi.preview_table_cell" } , b ) } ) } ) } ) , this . table . on ( BI . Table . EVENT _TABLE _AFTER _INIT , function ( ) { a . fireEvent ( BI . Table . EVENT _TABLE _AFTER _INIT , arguments ) } ) , this . table . on ( BI . Table . EVENT _TABLE _RESIZE , function ( ) { a . _adjustColumns ( ) } ) , this . _adjustColumns ( ) } , _hasAdaptCol : function ( a ) { return BI . any ( a , function ( a , b ) { return "" === b } ) } , _isPercentage : function ( a ) { return a [ 0 ] <= 1 } , _adjustColumns : function ( ) { var a = this . options ; if ( a . isNeedFreeze === ! 0 ) { if ( this . _isPercentage ( a . columnSize ) ) { if ( this . _hasAdaptCol ( a . columnSize ) ) { var b = [ ] , c = 0 ; BI . each ( a . columnSize , function ( a , d ) { "" === d ? b . push ( a ) : c += d } ) , c = 1 - c ; var d = c / b . length ; BI . each ( b , function ( b , c ) { a . columnSize [ c ] = d } ) } var e = 0 !== BI . first ( a . freezeCols ) , f = [ ] , g = [ ] ; BI . each ( a . columnSize , function ( b , c ) { a . freezeCols . contains ( b ) ? f . push ( c ) : g . push ( c ) } ) ; var h = BI . sum ( f ) , i = BI . sum ( g ) ; BI . each ( f , function ( a , b ) { f [ a ] = b / h } ) , BI . each ( g , function ( a , b ) { g [ a ] = b / i } ) , this . table . setRegionColumnSize ( e ? [ "fill" , h ] : [ h , "fill" ] ) , this . table . setColumnSize ( e ? g . concat ( f ) : f . concat ( g ) ) } } else ( this . _hasAdaptCol ( a . columnSize ) || this . _isPercentage ( a . columnSize ) ) && this . table . setRegionColumnSize ( [ "100%" ] ) } , setColumnSize : function ( a ) { return this . table . setColumnSize ( a ) } , getColumnSize : function ( ) { return this . table . getColumnSize ( ) } , getCalculateColumnSize : function ( ) { return this . table . getCalculateColumnSize ( ) } , setHeaderColumnSize : function ( a ) { return this . table . setHeaderColumnSize ( 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 . SearchMultiSelectLoader . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.search_multi_select_loader" , BI . SearchMultiSelectLoader ) , BI . SearchMultiSelectPopupView = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SearchMultiSelectPopupView . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-popup-view" , maxWidth : "auto" , minWidth : 135 , maxHeight : 400 , valueFormatter : BI . emptyFn , itemsCreator : BI . emptyFn , onLoaded : BI . emptyFn } ) } , _init : function ( ) { BI . SearchMultiSelectPopupView . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . loader = BI . createWidget ( { type : "bi.search_multi_select_loader" , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , onLoaded : b . onLoaded , value : b . value } ) , this . popupView = BI . createWidget ( { type : "bi.multi_popup_view" , stopPropagation : ! 1 , maxWidth : b . maxWidth , minWidth : b . minWidth , maxHeight : b . maxHeight , element : this , buttons : [ BI . i18nText ( "BI-Basic_Clears" ) , BI . i18nText ( "BI-Basic_Sure" ) ] , el : this . loader , value : b . value } ) , this . popupView . on ( BI . MultiPopupView . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SearchMultiSelectPopupView . EVENT _CHANGE ) } ) , this . popupView . on ( BI . MultiPopupView . EVENT _CLICK _TOOLBAR _BUTTON , function ( b ) { switch ( b ) { case 0 : a . fireEvent ( BI . SearchMultiSelectPopupView . EVENT _CLICK _CLEAR ) ; break ; case 1 : a . fireEvent ( BI . SearchMultiSelectPopupView . EVENT _CLICK _CONFIRM ) } } ) } , isAllSelected : function ( ) { return this . loader . isAllSelected ( ) } , setStartValue : function ( a ) { this . loader . setStartValue ( a ) } , setValue : function ( a ) { this . popupView . setValue ( a ) } , getValue : function ( ) { return this . popupView . getValue ( ) } , populate : function ( a ) { this . popupView . populate . apply ( this . popupView , arguments ) } , resetHeight : function ( a ) { this . popupView . resetHeight ( a ) } , resetWidth : function ( a ) { this . popupView . resetWidth ( a ) } } ) , BI . SearchMultiSelectPopupView . EVENT _CHANGE = "EVENT_CHANGE" , BI . SearchMultiSelectPopupView . EVENT _CLICK _CONFIRM = "EVENT_CLICK_CONFIRM" , BI . SearchMultiSelectPopupView . EVENT _CLICK _CLEAR = "EVENT_CLICK_CLEAR" , BI . shortcut ( "bi.search_multi_select_popup_view" , BI . SearchMultiSelectPopupView ) , BI . SearchMultiSelectSearcher = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SearchMultiSelectSearcher . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-searcher" , itemsCreator : BI . emptyFn , el : { } , popup : { } , valueFormatter : BI . emptyFn , adapter : null , masker : { } } ) } , _init : function ( ) { BI . SearchMultiSelectSearcher . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options ; this . editor = BI . createWidget ( b . el , { type : "bi.multi_select_editor" , height : b . height , text : b . text } ) , 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.multi_select_search_pane" , valueFormatter : b . valueFormatter , keywordGetter : function ( ) { return a . editor . getValue ( ) } , itemsCreator : function ( c , d ) { var e = a . editor . getValue ( ) ; c . keywords = [ e ] , this . setKeyword ( e ) , b . itemsCreator ( c , d ) } , value : b . value } , b . popup ) , adapter : b . adapter , masker : b . masker } ) , this . searcher . on ( BI . Searcher . EVENT _START , function ( ) { a . fireEvent ( BI . SearchMultiSelectSearcher . EVENT _START ) } ) , this . searcher . on ( BI . Searcher . EVENT _PAUSE , function ( ) { this . hasMatched ( ) , a . fireEvent ( BI . SearchMultiSelectSearcher . EVENT _PAUSE ) } ) , this . searcher . on ( BI . Searcher . EVENT _STOP , function ( ) { a . fireEvent ( BI . SearchMultiSelectSearcher . EVENT _STOP ) } ) , this . searcher . on ( BI . Searcher . EVENT _CHANGE , function ( ) { a . fireEvent ( BI . SearchMultiSelectSearcher . EVENT _CHANGE , arguments ) } ) , this . searcher . on ( BI . Searcher . EVENT _SEARCHING , function ( ) { var b = this . getKeywords ( ) ; a . fireEvent ( BI . SearchMultiSelectSearcher . EVENT _SEARCHING , b ) } ) , BI . isNotNull ( b . value ) && this . setState ( b . value ) } , adjustView : function ( ) { this . searcher . adjustView ( ) } , isSearching : function ( ) { return this . searcher . isSearching ( ) } , stopSearch : function ( ) { this . searcher . stopSearch ( ) } , getKeyword : function ( ) { return this . editor . getValue ( ) } , hasMatched : function ( ) { return this . searcher . hasMatched ( ) } , hasChecked : function
} , _assertValue : function ( a ) { } , _makeMap : function ( a ) { return BI . makeObject ( a || [ ] ) } , _joinKeywords : function ( a , b ) { function c ( c ) { var e = d . _makeMap ( c ) ; BI . each ( a , function ( a , b ) { BI . isNotNull ( e [ b ] ) && d . storeValue . value . remove ( b ) } ) , d . _adjust ( b ) } var d = this , e = this . options ; this . _assertValue ( this . storeValue ) , this . requesting = ! 0 , e . itemsCreator ( { type : BI . SingleSelectCombo . REQ _GET _ALL _DATA , keywords : a } , function ( a ) { var b = BI . map ( a . items , "value" ) ; c ( b ) } ) } , _adjust : function ( a ) { function b ( ) { c . wants2Quit === ! 0 && ( c . fireEvent ( BI . SingleSelectCombo . EVENT _CONFIRM ) , c . wants2Quit = ! 1 ) , c . requesting = ! 1 } var c = this , d = this . options ; this . _count ? ( b ( ) , a ( ) ) : d . itemsCreator ( { type : BI . SingleSelectCombo . REQ _GET _DATA _LENGTH } , function ( d ) { c . _count = d . count , b ( ) , a ( ) } ) } , _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_combo" , BI . SingleSelectCombo ) , BI . SingleSelectInsertCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectInsertCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-combo" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 24 , attributes : { tabIndex : 0 } } ) } , _init : function ( ) { BI . SingleSelectInsertCombo . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = function ( ) { BI . isKey ( a . _startValue ) && ( a . storeValue = a . _startValue ) , a . trigger . getSearcher ( ) . setState ( a . storeValue ) } ; this . storeValue = b . value , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.single_select_trigger" , height : b . height , valueFormatter : b . valueFormatter , itemsCreator : function ( c , d ) { b . itemsCreator ( c , function ( b ) { 1 === c . times && BI . isNotNull ( c . keywords ) && a . trigger . setValue ( a . getValue ( ) ) , d . apply ( a , arguments ) } ) } , value : this . storeValue } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _START , function ( ) { a . _setStartValue ( ) , this . getSearcher ( ) . setValue ( a . storeValue ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _STOP , function ( ) { a . _setStartValue ( ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _PAUSE , function ( ) { var b = this . getSearcher ( ) . getKeyword ( ) ; a . storeValue = b , a . combo . setValue ( a . storeValue ) , a . _setStartValue ( b ) , c ( ) , a . populate ( ) , a . _setStartValue ( ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _SEARCHING , function ( b ) { var d = BI . last ( b ) ; b = BI . initial ( b || [ ] ) , b . length > 0 && a . _joinKeywords ( b , function ( ) { BI . isEndWithBlank ( d ) ? ( a . combo . setValue ( a . storeValue ) , c ( ) , a . combo . populate ( ) , a . _setStartValue ( ) ) : ( a . combo . setValue ( a . storeValue ) , c ( ) ) } ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _CHANGE , function ( b , d ) { a . storeValue = this . getValue ( ) , c ( ) , a . _defaultState ( ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _COUNTER _CLICK , function ( ) { a . combo . isViewVisible ( ) || a . combo . showView ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , container : b . container , toggle : ! 1 , el : this . trigger , adjustLength : 1 , popup : { type : "bi.single_select_popup_view" , ref : function ( ) { a . popup = this , a . trigger . setAdapter ( this ) } , listeners : [ { eventName : BI . SingleSelectPopupView . EVENT _CHANGE , action : function ( ) { a . storeValue = this . getValue ( ) , a . _adjust ( function ( ) { c ( ) , a . _defaultState ( ) } ) } } ] , itemsCreator : b . itemsCreator , valueFormatter : b . valueFormatter , onLoaded : function ( ) { BI . nextTick ( function ( ) { a . combo . adjustWidth ( ) , a . combo . adjustHeight ( ) , a . trigger . getSearcher ( ) . adjustView ( ) } ) } } , hideChecker : function ( a ) { return 0 === d . element . find ( a . target ) . length } , value : b . value } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { this . setValue ( a . storeValue ) , BI . nextTick ( function ( ) { a . populate ( ) } ) } ) , this . wants2Quit = ! 1 , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { a . trigger . stopEditing ( ) , a . requesting === ! 0 ? a . wants2Quit = ! 0 : a . fireEvent ( BI . SingleSelectInsertCombo . EVENT _CONFIRM ) } ) ; var d = BI . createWidget ( { type : "bi.trigger_icon_button" , width : b . height , height : b . height , cls : "single-select-trigger-icon-button" } ) ; d . on ( BI . TriggerIconButton . EVENT _CH
BI . isNumeric ( this . value ) || BI . isNotEmptyString ( this . value ) ? ( this . label . setValue ( this . value ) , this . _setAllPosition ( this . _getPercentByValue ( this . value ) ) ) : ( this . label . setValue ( this . max ) , this . _setAllPosition ( 100 ) ) ) } } ) , BI . SingleSlider . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_slider" , BI . SingleSlider ) , BI . SingleSliderLabel = BI . inherit ( BI . Widget , { _constant : { EDITOR _WIDTH : 90 , EDITOR _HEIGHT : 20 , HEIGHT : 20 , SLIDER _WIDTH _HALF : 15 , SLIDER _WIDTH : 30 , SLIDER _HEIGHT : 30 , TRACK _HEIGHT : 24 } , _defaultConfig : function ( ) { return BI . extend ( BI . SingleSliderLabel . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-slider-label bi-slider-track" , digit : ! 1 , unit : "" } ) } , _init : function ( ) { BI . SingleSliderLabel . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = this . _constant ; this . enable = ! 1 , this . value = "" , this . grayTrack = BI . createWidget ( { type : "bi.layout" , cls : "gray-track" , height : 6 } ) , this . blueTrack = BI . createWidget ( { type : "bi.layout" , cls : "blue-track bi-high-light-background" , height : 6 } ) , this . track = this . _createTrackWrapper ( ) , this . slider = BI . createWidget ( { type : "bi.single_slider_button" } ) , this . _draggable ( this . slider ) ; var d = BI . createWidget ( { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ this . slider ] } ] , hgap : c . SLIDER _WIDTH _HALF , height : c . SLIDER _HEIGHT } ) ; d . element . click ( function ( d ) { if ( a . enable && a . isEnabled ( ) ) { var e = d . clientX - a . element . offset ( ) . left - c . SLIDER _WIDTH _HALF , f = a . track . element [ 0 ] . scrollWidth , g = 0 ; e < 0 && ( g = 0 ) , e > 0 && e < f - c . SLIDER _WIDTH && ( g = 100 * e / a . _getGrayTrackLength ( ) ) , e > f - c . SLIDER _WIDTH && ( g = 100 ) ; var h = BI . parseFloat ( g . toFixed ( 1 ) ) ; a . _setAllPosition ( h ) ; var i = a . _getValueByPercent ( h ) ; i = b . digit === ! 1 ? i : i . toFixed ( b . digit ) , a . label . setText ( i + b . unit ) , a . value = i , a . fireEvent ( BI . SingleSliderLabel . EVENT _CHANGE ) } } ) , this . label = BI . createWidget ( { type : "bi.label" , height : c . HEIGHT , width : c . EDITOR _WIDTH - 2 } ) , this . _setVisible ( ! 1 ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . track , width : "100%" , height : c . TRACK _HEIGHT } ] } ] , hgap : 7 , height : c . TRACK _HEIGHT } , top : 13 , left : 0 , width : "100%" } , { el : d , top : 10 , left : 0 , width : "100%" } , { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ this . label ] } ] , rgap : c . EDITOR _WIDTH , height : c . EDITOR _HEIGHT } , top : 0 , left : 0 , width : "100%" } ] } ) } , _draggable : function ( a ) { function b ( a ) { return BI . clamp ( a , 0 , c . _getGrayTrackLength ( ) ) } var c = this , d = this . options , e = ! 1 , f = 0 , g = 0 , h = 0 , i = new BI . MouseMoveTracker ( function ( j ) { if ( i . isDragging ( ) ) { e = ! 0 , g += j , f = b ( h + g ) , a . element . addClass ( "dragging" ) ; var k = 100 * f / c . _getGrayTrackLength ( ) , l = BI . parseFloat ( k . toFixed ( 1 ) ) ; c . _setBlueTrack ( l ) , c . _setLabelPosition ( l ) , c . _setSliderPosition ( l ) ; var m = c . _getValueByPercent ( l ) ; m = d . digit === ! 1 ? m : m . toFixed ( d . digit ) , c . label . setValue ( m ) , c . value = m , c . fireEvent ( BI . SingleSliderLabel . EVENT _CHANGE ) } } , function ( ) { if ( e === ! 0 ) { f = b ( f ) ; var d = 100 * f / c . _getGrayTrackLength ( ) , j = BI . parseFloat ( d . toFixed ( 1 ) ) ; c . _setSliderPosition ( j ) , f = 0 , g = 0 , h = f , e = ! 1 } a . element . removeClass ( "dragging" ) , i . releaseMouseMoves ( ) , c . fireEvent ( BI . SingleSliderLabel . EVENT _CHANGE ) } , window ) ; a . element . on ( "mousedown" , function ( c ) { a . isEnabled ( ) && ( h = this . offsetLeft , b ( h ) , i . captureMouseMoves ( c ) ) } ) } , _createTrackWrapper : function ( ) { return BI . createWidget ( { type : "bi.absolute" , items : [ { el : { type : "bi.vertical" , items : [ { type : "bi.absolute" , items : [ { el : this . grayTrack , top : 0 , left : 0 , width : "100%" } , { el : this . blueTrack , top : 0 , left : 0 , width : "0%" } ] } ] , hgap : 8 , height : 8 } , top : 8 , left : 0 , width : "100%" } ] } ) } , _checkValidation : function ( a ) { return BI . isNumeric ( a ) && ! ( BI . isNull ( a ) || a < this . min || a > this . max ) } , _setBlueTrack : function ( a ) { this . blueTrack . element . css ( { width : a + "%" } ) } , _setLabelPosition : function ( a ) { this . label . element . css ( { left : a + "%" } ) } , _setSliderPosition : function ( a ) { this . slider . element . css ( { left : a + "%" } ) } , _setAllPosition : function ( a ) { this . _setSliderPosition ( a ) , this . _setLabelPosition ( a ) , this . _setBlueTrack ( a ) } , _setVisible : function ( a ) { this . slider . setVisible ( a ) , this . label . setVisible ( a ) } , _getGrayTrackLength : function ( ) { return this . grayTrack . element [ 0 ] . scrollWidth } , _getValueByPercent : function ( a ) { var b = BI . parseInt ( 10 * a ) ; return ( this . max - this . min ) * b / 1e3 + this . min } , _getPercentByValue : function ( a ) { return 100 * ( a - this . min ) / ( this . max - this . min ) } , _
value : BI . DynamicYearCombo . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicYearCombo . Dynamic } ] , { textAlign : "center" } ) } , cardCreator : function ( c ) { switch ( c ) { case BI . DynamicYearCombo . Dynamic : return { type : "bi.dynamic_year_card" , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { a . _setInnerValue ( a . year , c ) } } ] , ref : function ( ) { a . dynamicPane = this } } ; case BI . DynamicYearCombo . Static : default : return { type : "bi.static_year_card" , behaviors : b . behaviors , min : a . options . min , max : a . options . max , listeners : [ { eventName : BI . StaticYearCard . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearPopup . EVENT _CHANGE ) } } ] , ref : function ( ) { a . year = this } } } } , listeners : [ { eventName : BI . Tab . EVENT _CHANGE , action : function ( ) { var b = a . dateTab . getSelect ( ) ; switch ( b ) { case BI . DynamicYearCombo . Static : var c = BI . DynamicDateHelper . getCalculation ( a . dynamicPane . getValue ( ) ) ; a . year . setValue ( { year : c . getFullYear ( ) } ) , a . _setInnerValue ( ) ; break ; case BI . DynamicYearCombo . Dynamic : default : a . storeValue && a . storeValue . type === BI . DynamicYearCombo . Dynamic ? a . dynamicPane . setValue ( a . storeValue . value ) : a . dynamicPane . setValue ( { year : 0 } ) , a . _setInnerValue ( ) } } } ] } } , setValue : function ( a ) { this . storeValue = a ; var b , c , d = this ; switch ( a = a || { } , b = a . type || BI . DynamicDateCombo . Static , c = a . value || a , this . dateTab . setSelect ( b ) , b ) { case BI . DynamicDateCombo . Dynamic : this . dynamicPane . setValue ( c ) , d . _setInnerValue ( ) ; break ; case BI . DynamicDateCombo . Static : default : this . year . setValue ( c ) , this . textButton . setValue ( BI . i18nText ( "BI-Basic_Current_Year" ) ) , this . textButton . setEnable ( ! 0 ) } } , getValue : function ( ) { return { type : this . dateTab . getSelect ( ) , value : this . dateTab . getValue ( ) } } } ) , BI . DynamicYearPopup . BUTTON _CLEAR _EVENT _CHANGE = "BUTTON_CLEAR_EVENT_CHANGE" , BI . DynamicYearPopup . BUTTON _lABEL _EVENT _CHANGE = "BUTTON_lABEL_EVENT_CHANGE" , BI . DynamicYearPopup . BUTTON _OK _EVENT _CHANGE = "BUTTON_OK_EVENT_CHANGE" , BI . DynamicYearPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.dynamic_year_popup" , BI . DynamicYearPopup ) , BI . DynamicYearTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 , vgap : 2 } , _defaultConfig : function ( ) { return BI . extend ( BI . DynamicYearTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-year-trigger" , min : "1900-01-01" , max : "2099-12-31" , height : 24 } ) } , beforeInit : function ( a ) { var b = this . options ; b . title = BI . bind ( this . _titleCreator , this ) , a ( ) } , _init : function ( ) { BI . DynamicYearTrigger . superclass . _init . apply ( this , arguments ) ; var a = this , b = this . options , c = this . _const ; this . editor = BI . createWidget ( { type : "bi.sign_editor" , height : b . height , validationChecker : function ( a ) { return "" === a || BI . isPositiveInteger ( a ) && ! BI . checkDateVoid ( a , 1 , 1 , b . min , b . max ) [ 0 ] } , quitChecker : function ( a ) { return ! 1 } , hgap : c . hgap , vgap : c . vgap , watermark : BI . i18nText ( "BI-Basic_Unrestricted" ) , allowBlank : ! 0 , errorText : function ( ) { return BI . i18nText ( "BI-Year_Trigger_Invalid_Text" ) } } ) , this . editor . on ( BI . SignEditor . EVENT _FOCUS , function ( ) { a . fireEvent ( BI . DynamicYearTrigger . EVENT _FOCUS ) } ) , this . editor . on ( BI . SignEditor . EVENT _STOP , function ( ) { a . fireEvent ( BI . DynamicYearTrigger . EVENT _STOP ) } ) , this . editor . on ( BI . SignEditor . EVENT _CONFIRM , function ( ) { var b = a . editor . getValue ( ) ; BI . isNotNull ( b ) && a . editor . setValue ( b ) , BI . isNotEmptyString ( b ) && ( a . storeValue = { type : BI . DynamicDateCombo . Static , value : { year : b } } ) , a . fireEvent ( BI . DynamicYearTrigger . EVENT _CONFIRM ) } ) , this . editor . on ( BI . SignEditor . EVENT _SPACE , function ( ) { a . editor . isValid ( ) && a . editor . blur ( ) } ) , this . editor . on ( BI . SignEditor . EVENT _START , function ( ) { a . fireEvent ( BI . DynamicYearTrigger . EVENT _START ) } ) , this . editor . on ( BI . SignEditor . EVENT _ERROR , function ( ) { a . fireEvent ( BI . DynamicYearTrigger . EVENT _ERROR ) } ) , BI . createWidget ( { element : this , type : "bi.htape" , items : [ { el : this . editor } , { el : { type : "bi.text_button" , baseCls : "bi-trigger-year-text" , text : BI . i18nText ( "BI-Multi_Date_Year" ) , width : b . height } , width : b . height } , { el : { type : "bi.trigger_icon_button" , width : b . height } , width : b . height } ] } ) , this . setValue ( b . value ) } , _getText : function ( a ) { var b = "" ; return BI . isNotNull ( a . year ) && 0 !== BI . parseInt ( a . year ) && ( b += Math . abs ( a . year ) + BI . i18nText ( "BI-Basic_Year" ) + ( a . year < 0 ? BI . i18nText ( "BI-Basic_Front" ) : BI . i18nText ( "BI-Basic_Behind" ) ) ) , b } , _setInnerValue : function ( a , b ) { var c = a . print ( "%Y" ) ; this . editor . setState ( c ) , this . editor . setValue ( c )
Static : 1 , Dynamic : 2 } ) , BI . DynamicYearQuarterPopup = BI . inherit ( BI . Widget , { constants : { tabHeight : 30 , buttonHeight : 24 } , props : { baseCls : "bi-year-quarter-popup" , behaviors : { } , min : "1900-01-01" , max : "2099-12-31" , width : 180 , height : 240 } , render : function ( ) { var a = this , b = ( this . options , this . constants ) ; return this . storeValue = { type : BI . DynamicYearQuarterCombo . Static } , { type : "bi.vtape" , items : [ { el : this . _getTabJson ( ) } , { el : { type : "bi.grid" , items : [ [ { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-border-top bi-high-light" , shadow : ! 0 , textHeight : b . buttonHeight - 1 , text : BI . i18nText ( "BI-Basic_Clear" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearQuarterPopup . BUTTON _CLEAR _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-border-left bi-border-right bi-high-light bi-border-top" , textHeight : b . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Current_Quarter" ) , ref : function ( ) { a . textButton = this } , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearQuarterPopup . BUTTON _lABEL _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , forceCenter : ! 0 , cls : "bi-border-top bi-high-light" , shadow : ! 0 , textHeight : b . buttonHeight - 1 , text : BI . i18nText ( "BI-Basic_OK" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearQuarterPopup . BUTTON _OK _EVENT _CHANGE ) } } ] } ] ] } , height : 24 } ] } } , _setInnerValue : function ( ) { if ( this . dateTab . getSelect ( ) === BI . DynamicYearQuarterCombo . Static ) this . textButton . setValue ( BI . i18nText ( "BI-Basic_Current_Quarter" ) ) , this . textButton . setEnable ( ! 0 ) ; else { var a = BI . DynamicDateHelper . getCalculation ( this . dynamicPane . getValue ( ) ) ; a = a . print ( "%Y-%Q" ) , this . textButton . setValue ( a ) , this . textButton . setEnable ( ! 1 ) } } , _getTabJson : function ( ) { var a = this , b = this . options ; return { type : "bi.tab" , ref : function ( ) { a . dateTab = this } , tab : { type : "bi.linear_segment" , cls : "bi-border-bottom" , height : this . constants . tabHeight , items : BI . createItems ( [ { text : BI . i18nText ( "BI-Basic_Year_Quarter" ) , value : BI . DynamicYearQuarterCombo . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicYearQuarterCombo . Dynamic } ] , { textAlign : "center" } ) } , cardCreator : function ( c ) { switch ( c ) { case BI . DynamicYearQuarterCombo . Dynamic : return { type : "bi.dynamic_year_quarter_card" , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { a . _setInnerValue ( a . year , c ) } } ] , ref : function ( ) { a . dynamicPane = this } } ; case BI . DynamicYearQuarterCombo . Static : default : return { type : "bi.static_year_quarter_card" , behaviors : b . behaviors , min : a . options . min , max : a . options . max , listeners : [ { eventName : BI . DynamicYearCard . EVENT _CHANGE , action : function ( ) { a . fireEvent ( BI . DynamicYearQuarterPopup . EVENT _CHANGE ) } } ] , ref : function ( ) { a . year = this } } } } , listeners : [ { eventName : BI . Tab . EVENT _CHANGE , action : function ( ) { var b = a . dateTab . getSelect ( ) ; switch ( b ) { case BI . DynamicYearQuarterCombo . Static : var c = BI . DynamicDateHelper . getCalculation ( a . dynamicPane . getValue ( ) ) ; a . year . setValue ( { year : c . getFullYear ( ) , quarter : c . getQuarter ( ) } ) , a . _setInnerValue ( ) ; break ; case BI . DynamicYearQuarterCombo . Dynamic : default : a . storeValue && a . storeValue . type === BI . DynamicYearQuarterCombo . Dynamic ? a . dynamicPane . setValue ( a . storeValue . value ) : a . dynamicPane . setValue ( { year : 0 } ) , a . _setInnerValue ( ) } } } ] } } , setValue : function ( a ) { this . storeValue = a ; var b , c , d = this ; switch ( a = a || { } , b = a . type || BI . DynamicDateCombo . Static , c = a . value || a , this . dateTab . setSelect ( b ) , b ) { case BI . DynamicDateCombo . Dynamic : this . dynamicPane . setValue ( c ) , d . _setInnerValue ( ) ; break ; case BI . DynamicDateCombo . Static : default : this . year . setValue ( c ) , this . textButton . setValue ( BI . i18nText ( "BI-Basic_Current_Quarter" ) ) , this . textButton . setEnable ( ! 0 ) } } , getValue : function ( ) { return { type : this . dateTab . getSelect ( ) , value : this . dateTab . getValue ( ) } } } ) , BI . DynamicYearQuarterPopup . BUTTON _CLEAR _EVENT _CHANGE = "BUTTON_CLEAR_EVENT_CHANGE" , BI . DynamicYearQuarterPopup . BUTTON _lABEL _EVENT _CHANGE = "BUTTON_lABEL_EVENT_CHANGE" , BI . DynamicYearQuarterPopup . BUTTON _OK _EVENT _CHANGE = "BUTTON_OK_EVENT_CHANGE" , BI . DynamicYearQuarterPopup . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.dynamic_year_quarter_popup" , BI . DynamicYearQuarterPopup ) , BI . DynamicYearQuarterTrigger = BI . inherit ( BI . Trigger , { _const : { hgap : 4 , vgap : 2 } , props : { extraCls : " bi -
route : function ( a , b , c ) { _ . isRegExp ( a ) || ( a = this . _routeToRegExp ( a ) ) , _ . isFunction ( b ) && ( c = b , b = "" ) , c || ( c = this [ b ] ) ; var d = this ; return BI . history . route ( a , function ( e ) { var f = d . _extractParameters ( a , e ) ; d . execute ( c , f , b ) !== ! 1 && ( d . trigger . apply ( d , [ "route:" + b ] . concat ( f ) ) , d . trigger ( "route" , b , f ) , BI . history . trigger ( "route" , d , b , f ) ) } ) , this } , execute : function ( a , b , c ) { a && a . apply ( this , b ) } , navigate : function ( a , b ) { return BI . history . navigate ( a , b ) , this } , _bindRoutes : function ( ) { if ( this . routes ) { this . routes = _ . result ( this , "routes" ) ; for ( var a , b = _ . keys ( this . routes ) ; null != ( a = b . pop ( ) ) ; ) this . route ( a , this . routes [ a ] ) } } , _routeToRegExp : function ( a ) { return a = a . replace ( i , "\\$&" ) . replace ( f , "(?:$1)?" ) . replace ( g , function ( a , b ) { return b ? a : "([^/?]+)" } ) . replace ( h , "([^?]*?)" ) , new RegExp ( "^" + a + "(?:\\?([\\s\\S]*))?$" ) } , _extractParameters : function ( a , b ) { var c = a . exec ( b ) . slice ( 1 ) ; return _ . map ( c , function ( a , b ) { return b === c . length - 1 ? a || null : a ? decodeURIComponent ( a ) : null } ) } } ) ; var j = function ( ) { this . handlers = [ ] , this . checkUrl = _ . bind ( this . checkUrl , this ) , "undefined" != typeof window && ( this . location = window . location , this . history = window . history ) } , k = /^[#\/]|\s+$/g , l = /^\/+|\/+$/g , m = /#.*$/ ; j . started = ! 1 , _ . extend ( j . prototype , a , { interval : 50 , atRoot : function ( ) { var a = this . location . pathname . replace ( /[^\/]$/ , "$&/" ) ; return a === this . root && ! this . getSearch ( ) } , getSearch : function ( ) { var a = this . location . href . replace ( /#.*/ , "" ) . match ( /\?.+/ ) ; return a ? a [ 0 ] : "" } , getHash : function ( a ) { var b = ( a || this ) . location . href . match ( /#(.*)$/ ) ; return b ? b [ 1 ] : "" } , getPath : function ( ) { var a = decodeURI ( this . location . pathname + this . getSearch ( ) ) , b = this . root . slice ( 0 , - 1 ) ; return a . indexOf ( b ) || ( a = a . slice ( b . length ) ) , "/" === a . charAt ( 0 ) ? a . slice ( 1 ) : a } , getFragment : function ( a ) { return null == a && ( a = this . _hasPushState || ! this . _wantsHashChange ? this . getPath ( ) : this . getHash ( ) ) , a . replace ( k , "" ) } , start : function ( a ) { if ( j . started ) throw new Error ( "BI.history has already been started" ) ; if ( j . started = ! 0 , this . options = _ . extend ( { root : "/" } , this . options , a ) , this . root = this . options . root , this . _wantsHashChange = this . options . hashChange !== ! 1 , this . _hasHashChange = "onhashchange" in window , this . _wantsPushState = ! ! this . options . pushState , this . _hasPushState = ! ! ( this . options . pushState && this . history && this . history . pushState ) , this . fragment = this . getFragment ( ) , this . root = ( "/" + this . root + "/" ) . replace ( l , "/" ) , this . _wantsHashChange && this . _wantsPushState ) { if ( ! this . _hasPushState && ! this . atRoot ( ) ) { var b = this . root . slice ( 0 , - 1 ) || "/" ; return this . location . replace ( b + "#" + this . getPath ( ) ) , ! 0 } this . _hasPushState && this . atRoot ( ) && this . navigate ( this . getHash ( ) , { replace : ! 0 } ) } if ( ! this . _hasHashChange && this . _wantsHashChange && ( ! this . _wantsPushState || ! this . _hasPushState ) ) { var c = document . createElement ( "iframe" ) ; c . src = "javascript:0" , c . style . display = "none" , c . tabIndex = - 1 ; var d = document . body ; this . iframe = d . insertBefore ( c , d . firstChild ) . contentWindow , this . iframe . document . open ( ) . close ( ) , this . iframe . location . hash = "#" + this . fragment } var e = window . addEventListener || function ( a , b ) { return attachEvent ( "on" + a , b ) } ; if ( this . _hasPushState ? e ( "popstate" , this . checkUrl , ! 1 ) : this . _wantsHashChange && this . _hasHashChange && ! this . iframe ? e ( "hashchange" , this . checkUrl , ! 1 ) : this . _wantsHashChange && ( this . _checkUrlInterval = setInterval ( this . checkUrl , this . interval ) ) , ! this . options . silent ) return this . loadUrl ( ) } , stop : function ( ) { var a = window . removeEventListener || function ( a , b ) { return detachEvent ( "on" + a , b ) } ; this . _hasPushState ? a ( "popstate" , this . checkUrl , ! 1 ) : this . _wantsHashChange && this . _hasHashChange && ! this . iframe && a ( "hashchange" , this . checkUrl , ! 1 ) , this . iframe && ( document . body . removeChild ( this . iframe . frameElement ) , this . iframe = null ) , this . _checkUrlInterval && clearInterval ( this . _checkUrlInterval ) , j . started = ! 1 } , route : function ( a , b ) { this . handlers . unshift ( { route : a , callback : b } ) } , checkUrl : function ( a ) { var b = this . getFragment ( ) ; return b === this . fragment && this . iframe && ( b = this . getHash ( this . iframe ) ) , b !== this . fragment && ( this . iframe && this . navigate ( b ) , void this . loadUrl ( ) ) } , loadUrl : function ( a ) { return a = this . fragment = this . getFragment ( a ) , _ . some ( 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 || "