/*! fineui 2019-10-21 20:32:16 */
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) throw new TypeError ( "Cannot call a class as a function" ) } var _global ; _global = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , null == _global . BI && ( _global . BI = { prepares : [ ] } ) , null == _global . BI . prepares && ( _global . BI . prepares = [ ] ) , Array . prototype . indexOf || ( Array . prototype . indexOf = function ( searchElement , fromIndex ) { var k ; if ( null == this ) throw new TypeError ( '"this" is null or not defined' ) ; var o = Object ( this ) , len = o . length >>> 0 ; if ( 0 === len ) return - 1 ; var n = 0 | fromIndex ; if ( n >= len ) return - 1 ; for ( k = Math . max ( n >= 0 ? n : len - Math . abs ( n ) , 0 ) ; k < len ; ) { if ( k in o && o [ k ] === searchElement ) return k ; k ++ } return - 1 } ) , Array . prototype . lastIndexOf || ( Array . prototype . lastIndexOf = function ( searchElement ) { "use strict" ; if ( void 0 === this || null === this ) throw new TypeError ; var n , k , t = Object ( this ) , len = t . length >>> 0 ; if ( 0 === len ) return - 1 ; for ( n = len - 1 , arguments . length > 1 && ( n = Number ( arguments [ 1 ] ) , n != n ? n = 0 : 0 != n && n != 1 / 0 && n != - ( 1 / 0 ) && ( n = ( n > 0 || - 1 ) * Math . floor ( Math . abs ( n ) ) ) ) , k = n >= 0 ? Math . min ( n , len - 1 ) : len - Math . abs ( n ) ; k >= 0 ; k -- ) if ( k in t && t [ k ] === searchElement ) return k ; return - 1 } ) , _global . console = _global . console || function ( ) { var c = { } ; return c . log = c . warn = c . debug = c . info = c . error = c . time = c . dir = c . profile = c . clear = c . exception = c . trace = c . assert = function ( ) { } , c } ( ) , _global . localStorage || ( _global . localStorage = { items : { } , setItem : function ( k , v ) { BI . Cache . addCookie ( k , v ) } , getItem : function ( k ) { return BI . Cache . getCookie ( k ) } , removeItem : function ( k ) { BI . Cache . deleteCookie ( k ) } , key : function ( ) { } , clear : function ( ) { this . items = { } } } ) , Object . keys || ( Object . keys = function ( o ) { if ( o !== Object ( o ) ) throw new TypeError ( "Object.keys called on a non-object" ) ; var falsy , skipArray = { _ _ob _ _ : falsy , $accessors : falsy , $vbthis : falsy , $vbsetter : falsy } , k = [ ] , p ; for ( p in o ) p in skipArray || Object . prototype . hasOwnProperty . call ( o , p ) && k . push ( p ) ; return k } ) , Array . isArray || ( Array . isArray = function ( arg ) { return "[object Array]" === Object . prototype . toString . call ( arg ) } ) , "function" != typeof Object . getPrototypeOf && ( Object . getPrototypeOf = "" . _ _proto _ _ === String . prototype ? function ( object ) { return object . _ _proto _ _ } : function ( object ) { return object . constructor . prototype } ) , Date . now || ( Date . now = function ( ) { return ( new Date ) . valueOf ( ) } ) , "undefined" != typeof Set && Set . toString ( ) . match ( /native code/ ) || ( Set = function ( ) { this . set = { } } , Set . prototype . has = function ( key ) { return void 0 !== this . set [ key ] } , Set . prototype . add = function ( key ) { this . set [ key ] = 1 } , Set . prototype . clear = function ( ) { this . set = { } } ) , ! function ( window ) { var ua = window . navigator . userAgent . toLowerCase ( ) , reg = /msie/ ; if ( reg . test ( ua ) ) { var _sort = Array . prototype . sort ; Array . prototype . sort = function ( fn ) { if ( fn && "function" == typeof fn ) { if ( this . length < 2 ) return this ; for ( var i = 0 , j = i + 1 , l = this . length , tmp , r = ! 1 , t = 0 ; i < l ; i ++ ) for ( j = i + 1 ; j < l ; j ++ ) t = fn . call ( this , this [ i ] , this [ j ] ) , r = ( "number" == typeof t ? t : t ? 1 : 0 ) > 0 , r === ! 0 && ( tmp = this [ i ] , this [ i ] = this [ j ] , this [ j ] = tmp ) ; return this } return _sort . call ( this ) } } } ( window ) ; var _global ; _global = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this , null == _global . BI && ( _global . BI = { prepares : [ ] } ) , null == _global . BI . prepares && ( _global . BI . prepares = [ ] ) , function ( ) { function apply ( func , thisArg , args ) { switch ( args . length ) { case 0 : return func . call ( thisArg ) ; case 1 : return func . call ( thisArg , args [ 0 ] ) ; case 2 : return func . call ( thisArg , args [ 0 ] , args [ 1 ] ) ; case 3 : return func . call ( thisArg , args [ 0 ] , args [ 1 ] , args [ 2 ] ) } return func . apply ( thisArg , args ) } function arrayAggregator ( array , setter , iteratee , accumulator ) { for ( var index = - 1 , length = null == array ? 0 : array . length ; ++ index < length ; ) { var value = array [ index ] ; setter ( accumulator , value , iteratee ( value ) , array ) } return accumulator } function arrayEach ( array , iteratee ) { for ( var index = - 1 , length = null == array ? 0 : array . length ; ++ index < length && iteratee ( array [ index ] , index , array ) !== ! 1 ; ) ; return array } function arrayEvery ( array , predicate ) { for ( var index = - 1 , length = null == array ? 0 : array . length ; ++ index < length ; ) if ( ! predicate ( array [ index ] , index , array ) ) return ! 1 ; return ! 0 } function arrayFilter ( array , predicate ) { for ( var index = - 1 , length = null == array ? 0 : array . length , resIndex = 0 , result = [ ] ; ++ index < length ; ) { var
result } function cloneDataView ( dataView , isDeep ) { var buffer = isDeep ? cloneArrayBuffer ( dataView . buffer ) : dataView . buffer ; return new dataView . constructor ( buffer , dataView . byteOffset , dataView . byteLength ) } function cloneRegExp ( regexp ) { var result = new regexp . constructor ( regexp . source , reFlags . exec ( regexp ) ) ; return result . lastIndex = regexp . lastIndex , result } function cloneSymbol ( symbol ) { return symbolValueOf ? Object ( symbolValueOf . call ( symbol ) ) : { } } function cloneTypedArray ( typedArray , isDeep ) { var buffer = isDeep ? cloneArrayBuffer ( typedArray . buffer ) : typedArray . buffer ; return new typedArray . constructor ( buffer , typedArray . byteOffset , typedArray . length ) } function compareAscending ( value , other ) { if ( value !== other ) { var valIsDefined = value !== undefined , valIsNull = null === value , valIsReflexive = value === value , valIsSymbol = isSymbol ( value ) , othIsDefined = other !== undefined , othIsNull = null === other , othIsReflexive = other === other , othIsSymbol = isSymbol ( other ) ; if ( ! othIsNull && ! othIsSymbol && ! valIsSymbol && value > other || valIsSymbol && othIsDefined && othIsReflexive && ! othIsNull && ! othIsSymbol || valIsNull && othIsDefined && othIsReflexive || ! valIsDefined && othIsReflexive || ! valIsReflexive ) return 1 ; if ( ! valIsNull && ! valIsSymbol && ! othIsSymbol && value < other || othIsSymbol && valIsDefined && valIsReflexive && ! valIsNull && ! valIsSymbol || othIsNull && valIsDefined && valIsReflexive || ! othIsDefined && valIsReflexive || ! othIsReflexive ) return - 1 } return 0 } function compareMultiple ( object , other , orders ) { for ( var index = - 1 , objCriteria = object . criteria , othCriteria = other . criteria , length = objCriteria . length , ordersLength = orders . length ; ++ index < length ; ) { var result = compareAscending ( objCriteria [ index ] , othCriteria [ index ] ) ; if ( result ) { if ( index >= ordersLength ) return result ; var order = orders [ index ] ; return result * ( "desc" == order ? - 1 : 1 ) } } return object . index - other . index } function composeArgs ( args , partials , holders , isCurried ) { for ( var argsIndex = - 1 , argsLength = args . length , holdersLength = holders . length , leftIndex = - 1 , leftLength = partials . length , rangeLength = nativeMax ( argsLength - holdersLength , 0 ) , result = Array ( leftLength + rangeLength ) , isUncurried = ! isCurried ; ++ leftIndex < leftLength ; ) result [ leftIndex ] = partials [ leftIndex ] ; for ( ; ++ argsIndex < holdersLength ; ) ( isUncurried || argsIndex < argsLength ) && ( result [ holders [ argsIndex ] ] = args [ argsIndex ] ) ; for ( ; rangeLength -- ; ) result [ leftIndex ++ ] = args [ argsIndex ++ ] ; return result } function composeArgsRight ( args , partials , holders , isCurried ) { for ( var argsIndex = - 1 , argsLength = args . length , holdersIndex = - 1 , holdersLength = holders . length , rightIndex = - 1 , rightLength = partials . length , rangeLength = nativeMax ( argsLength - holdersLength , 0 ) , result = Array ( rangeLength + rightLength ) , isUncurried = ! isCurried ; ++ argsIndex < rangeLength ; ) result [ argsIndex ] = args [ argsIndex ] ; for ( var offset = argsIndex ; ++ rightIndex < rightLength ; ) result [ offset + rightIndex ] = partials [ rightIndex ] ; for ( ; ++ holdersIndex < holdersLength ; ) ( isUncurried || argsIndex < argsLength ) && ( result [ offset + holders [ holdersIndex ] ] = args [ argsIndex ++ ] ) ; return result } function copyArray ( source , array ) { var index = - 1 , length = source . length ; for ( array || ( array = Array ( length ) ) ; ++ index < length ; ) array [ index ] = source [ index ] ; return array } function copyObject ( source , props , object , customizer ) { var isNew = ! object ; object || ( object = { } ) ; for ( var index = - 1 , length = props . length ; ++ index < length ; ) { var key = props [ index ] , newValue = customizer ? customizer ( object [ key ] , source [ key ] , key , object , source ) : undefined ; newValue === undefined && ( newValue = source [ key ] ) , isNew ? baseAssignValue ( object , key , newValue ) : assignValue ( object , key , newValue ) } return object } function copySymbols ( source , object ) { return copyObject ( source , getSymbols ( source ) , object ) } function copySymbolsIn ( source , object ) { return copyObject ( source , getSymbolsIn ( source ) , object ) } function createAggregator ( setter , initializer ) { return function ( collection , iteratee ) { var func = isArray ( collection ) ? arrayAggregator : baseAggregator , accumulator = initializer ? initializer ( ) : { } ; return func ( collection , setter , baseIteratee ( iteratee , 2 ) , accumulator ) } } function createAssigner ( assigner ) { return baseRest ( function ( object , sources ) { var index = - 1 , length = sources . length , customizer = length > 1 ? sources [ length - 1 ] : undefined , guard = length > 2 ? sources [ 2 ] : undefined ; for ( customizer = assigner . length > 3 && " function
memoized } function negate ( predicate ) { if ( "function" != typeof predicate ) throw new TypeError ( FUNC _ERROR _TEXT ) ; return function ( ) { var args = arguments ; switch ( args . length ) { case 0 : return ! predicate . call ( this ) ; case 1 : return ! predicate . call ( this , args [ 0 ] ) ; case 2 : return ! predicate . call ( this , args [ 0 ] , args [ 1 ] ) ; case 3 : return ! predicate . call ( this , args [ 0 ] , args [ 1 ] , args [ 2 ] ) } return ! predicate . apply ( this , args ) } } function once ( func ) { return before ( 2 , func ) } function rest ( func , start ) { if ( "function" != typeof func ) throw new TypeError ( FUNC _ERROR _TEXT ) ; return start = start === undefined ? start : toInteger ( start ) , baseRest ( func , start ) } function throttle ( func , wait , options ) { var leading = ! 0 , trailing = ! 0 ; if ( "function" != typeof func ) throw new TypeError ( FUNC _ERROR _TEXT ) ; return isObject ( options ) && ( leading = "leading" in options ? ! ! options . leading : leading , trailing = "trailing" in options ? ! ! options . trailing : trailing ) , debounce ( func , wait , { leading : leading , maxWait : wait , trailing : trailing } ) } function clone ( value ) { return baseClone ( value , CLONE _SYMBOLS _FLAG ) } function cloneDeep ( value ) { return baseClone ( value , CLONE _DEEP _FLAG | CLONE _SYMBOLS _FLAG ) } function eq ( value , other ) { return value === other || value !== value && other !== other } function isArrayLike ( value ) { return null != value && isLength ( value . length ) && ! isFunction ( value ) } function isArrayLikeObject ( value ) { return isObjectLike ( value ) && isArrayLike ( value ) } function isBoolean ( value ) { return value === ! 0 || value === ! 1 || isObjectLike ( value ) && baseGetTag ( value ) == boolTag } function isEmpty ( value ) { if ( null == value ) return ! 0 ; if ( isArrayLike ( value ) && ( isArray ( value ) || "string" == typeof value || "function" == typeof value . splice || isBuffer ( value ) || isTypedArray ( value ) || isArguments ( value ) ) ) return ! value . length ; var tag = getTag ( value ) ; if ( tag == mapTag || tag == setTag ) return ! value . size ; if ( isPrototype ( value ) ) return ! baseKeys ( value ) . length ; for ( var key in value ) if ( hasOwnProperty . call ( value , key ) ) return ! 1 ; return ! 0 } function isEqual ( value , other ) { return baseIsEqual ( value , other ) } function isFinite ( value ) { return "number" == typeof value && nativeIsFinite ( value ) } function isFunction ( value ) { if ( ! isObject ( value ) ) return ! 1 ; var tag = baseGetTag ( value ) ; return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag } function isLength ( value ) { return "number" == typeof value && value > - 1 && value % 1 == 0 && value <= MAX _SAFE _INTEGER } function isObject ( value ) { var type = typeof value ; return null != value && ( "object" == type || "function" == type ) } function isObjectLike ( value ) { return null != value && "object" == typeof value } function isNaN ( value ) { return isNumber ( value ) && value != + value } function isNull ( value ) { return null === value } function isNumber ( value ) { return "number" == typeof value || isObjectLike ( value ) && baseGetTag ( value ) == numberTag } function isPlainObject ( value ) { if ( ! isObjectLike ( value ) || baseGetTag ( value ) != objectTag ) return ! 1 ; var proto = getPrototype ( value ) ; if ( null === proto ) return ! 0 ; var Ctor = hasOwnProperty . call ( proto , "constructor" ) && proto . constructor ; return "function" == typeof Ctor && Ctor instanceof Ctor && funcToString . call ( Ctor ) == objectCtorString } function isString ( value ) { return "string" == typeof value || ! isArray ( value ) && isObjectLike ( value ) && baseGetTag ( value ) == stringTag } function isSymbol ( value ) { return "symbol" == typeof value || isObjectLike ( value ) && baseGetTag ( value ) == symbolTag } function isUndefined ( value ) { return value === undefined } function toArray ( value ) { if ( ! value ) return [ ] ; if ( isArrayLike ( value ) ) return isString ( value ) ? stringToArray ( value ) : copyArray ( value ) ; if ( symIterator && value [ symIterator ] ) return iteratorToArray ( value [ symIterator ] ( ) ) ; var tag = getTag ( value ) , func = tag == mapTag ? mapToArray : tag == setTag ? setToArray : values ; return func ( value ) } function toFinite ( value ) { if ( ! value ) return 0 === value ? value : 0 ; if ( value = toNumber ( value ) , value === INFINITY || value === - INFINITY ) { var sign = value < 0 ? - 1 : 1 ; return sign * MAX _INTEGER } return value === value ? value : 0 } function toInteger ( value ) { var result = toFinite ( value ) , remainder = result % 1 ; return result === result ? remainder ? result - remainder : result : 0 } function toNumber ( value ) { if ( "number" == typeof value ) return value ; if ( isSymbol ( value ) ) return NAN ; if ( isObject ( value ) ) { var other = "function" == typeof value . valueOf ? value . valueOf ( ) : value ; value = isObject ( other ) ? other + "" : other } if ( "string" != typeof value ) return 0 === va
} } , _apply = function ( name ) { return function ( ) { return _ [ name ] . apply ( _ , arguments ) } } , _applyFunc = function ( name ) { return function ( ) { var args = Array . prototype . slice . call ( arguments , 0 ) ; return args [ 1 ] = _ . isFunction ( args [ 1 ] ) ? traverse ( args [ 1 ] , args [ 2 ] ) : args [ 1 ] , _ [ name ] . apply ( _ , args ) } } ; _ . extend ( BI , { assert : function ( v , is ) { if ( this . isFunction ( is ) ) { if ( is ( v ) ) return ! 0 ; throw new Error ( v + " error" ) } if ( this . isArray ( is ) || ( is = [ is ] ) , ! this . deepContains ( is , v ) ) throw new Error ( v + " error" ) } , warn : function ( message ) { console . warn ( message ) } , UUID : function ( ) { for ( var f = [ "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "9" , "a" , "b" , "c" , "d" , "e" , "f" ] , str = "" , i = 0 ; i < 16 ; i ++ ) { var r = parseInt ( f . length * Math . random ( ) , 10 ) ; str += f [ r ] } return str } , isWidget : function ( widget ) { return widget instanceof BI . Widget || BI . View && widget instanceof BI . View } , createWidgets : function ( items , options , context ) { if ( ! BI . isArray ( items ) ) throw new Error ( "cannot create Widgets" ) ; return BI . isWidget ( options ) ? ( context = options , options = { } ) : options || ( options = { } ) , BI . map ( BI . flatten ( items ) , function ( i , item ) { return BI . createWidget ( item , BI . deepClone ( options ) ) } ) } , createItems : function ( data , innerAttr , outerAttr ) { return innerAttr = BI . isArray ( innerAttr ) ? innerAttr : BI . makeArray ( BI . flatten ( data ) . length , innerAttr || { } ) , outerAttr = BI . isArray ( outerAttr ) ? outerAttr : BI . makeArray ( BI . flatten ( data ) . length , outerAttr || { } ) , BI . map ( data , function ( i , item ) { return BI . isArray ( item ) ? BI . createItems ( item , innerAttr , outerAttr ) : item instanceof BI . Widget ? BI . extend ( { } , innerAttr . shift ( ) , outerAttr . shift ( ) , { type : null , el : item } ) : innerAttr [ 0 ] instanceof BI . Widget ? ( outerAttr . shift ( ) , BI . extend ( { } , item , { el : innerAttr . shift ( ) } ) ) : item . el instanceof BI . Widget || BI . View && item . el instanceof BI . View ? ( innerAttr . shift ( ) , BI . extend ( { } , outerAttr . shift ( ) , { type : null } , item ) ) : item . el ? BI . extend ( { } , outerAttr . shift ( ) , item , { el : BI . extend ( { } , innerAttr . shift ( ) , item . el ) } ) : BI . extend ( { } , outerAttr . shift ( ) , { el : BI . extend ( { } , innerAttr . shift ( ) , item ) } ) } ) } , packageItems : function ( items , layouts ) { for ( var i = layouts . length - 1 ; i >= 0 ; i -- ) items = BI . map ( items , function ( k , it ) { return BI . extend ( { } , layouts [ i ] , { items : [ BI . extend ( { } , layouts [ i ] . el , { el : it } ) ] } ) } ) ; return items } , formatEL : function ( obj ) { return obj && ! obj . type && obj . el ? obj : { el : obj } } , stripEL : function ( obj ) { return obj . type && obj || obj . el || obj } , trans2Element : function ( widgets ) { return BI . map ( widgets , function ( i , wi ) { return wi . element } ) } } ) , _ . each ( [ "where" , "findWhere" , "invoke" , "pluck" , "shuffle" , "sample" , "toArray" , "size" ] , function ( name ) { BI [ name ] = _apply ( name ) } ) , _ . each ( [ "get" , "each" , "map" , "reduce" , "reduceRight" , "find" , "filter" , "reject" , "every" , "all" , "some" , "any" , "max" , "min" , "sortBy" , "groupBy" , "indexBy" , "countBy" , "partition" , "clamp" ] , function ( name ) { "any" === name ? BI [ name ] = _applyFunc ( "some" ) : BI [ name ] = _applyFunc ( name ) } ) , _ . extend ( BI , { count : function ( from , to , predicate ) { var t ; if ( predicate ) for ( t = from ; t < to ; t ++ ) predicate ( t ) ; return to - from } , inverse : function ( from , to , predicate ) { return BI . count ( to , from , predicate ) } , firstKey : function ( obj ) { var res = undefined ; return BI . any ( obj , function ( key , value ) { return res = key , ! 0 } ) , res } , lastKey : function ( obj ) { var res = undefined ; return BI . each ( obj , function ( key , value ) { return res = key , ! 0 } ) , res } , firstObject : function ( obj ) { var res = undefined ; return BI . any ( obj , function ( key , value ) { return res = value , ! 0 } ) , res } , lastObject : function ( obj ) { var res = undefined ; return BI . each ( obj , function ( key , value ) { return res = value , ! 0 } ) , res } , concat : function ( obj1 , obj2 ) { return BI . isKey ( obj1 ) ? obj1 + "" + obj2 : BI . isArray ( obj1 ) ? obj1 . concat ( obj2 ) : BI . isObject ( obj1 ) ? _ . extend ( { } , obj1 , obj2 ) : void 0 } , backEach : function ( obj , predicate , context ) { predicate = BI . iteratee ( predicate , context ) ; for ( var index = obj . length - 1 ; index >= 0 ; index -- ) predicate ( index , obj [ index ] , obj ) ; return ! 1 } , backAny : function ( obj , predicate , context ) { predicate = BI . iteratee ( predicate , context ) ; for ( var index = obj . length - 1 ; index >= 0 ; index -- ) if ( predicate ( index , obj [ index ] , obj ) ) return ! 0 ; return ! 1 } , backEvery : function ( obj , predicate , context ) { predicate = BI . iteratee ( predicate , context ) ; for ( var index = obj . length - 1 ; index >= 0 ; index -- ) if ( ! predicate ( index , obj [ index ] , obj ) ) return ! 1 ; return ! 0 } , backFindKey : function ( obj , predicate , context ) { predicate = BI . iteratee ( predicate , context ) ; for ( var keys = _ . keys ( obj ) , key , i = keys
} , clone : function ( ) { var clone = Base . clone . call ( this ) ; return clone . words = this . words . slice ( 0 ) , clone } , random : function ( nBytes ) { for ( var words = [ ] , i = 0 ; i < nBytes ; i += 4 ) words . push ( 4294967296 * Math . random ( ) | 0 ) ; return new WordArray . init ( words , nBytes ) } } ) , C _enc = C . enc = { } , Hex = C _enc . Hex = { stringify : function ( wordArray ) { for ( var words = wordArray . words , sigBytes = wordArray . sigBytes , hexChars = [ ] , i = 0 ; i < sigBytes ; i ++ ) { var bite = words [ i >>> 2 ] >>> 24 - i % 4 * 8 & 255 ; hexChars . push ( ( bite >>> 4 ) . toString ( 16 ) ) , hexChars . push ( ( 15 & bite ) . toString ( 16 ) ) } return hexChars . join ( "" ) } , parse : function ( hexStr ) { for ( var hexStrLength = hexStr . length , words = [ ] , i = 0 ; i < hexStrLength ; i += 2 ) words [ i >>> 3 ] |= parseInt ( hexStr . substr ( i , 2 ) , 16 ) << 24 - i % 8 * 4 ; return new WordArray . init ( words , hexStrLength / 2 ) } } , Latin1 = C _enc . Latin1 = { stringify : function ( wordArray ) { for ( var words = wordArray . words , sigBytes = wordArray . sigBytes , latin1Chars = [ ] , i = 0 ; i < sigBytes ; i ++ ) { var bite = words [ i >>> 2 ] >>> 24 - i % 4 * 8 & 255 ; latin1Chars . push ( String . fromCharCode ( bite ) ) } return latin1Chars . join ( "" ) } , parse : function ( latin1Str ) { for ( var latin1StrLength = latin1Str . length , words = [ ] , i = 0 ; i < latin1StrLength ; i ++ ) words [ i >>> 2 ] |= ( 255 & latin1Str . charCodeAt ( i ) ) << 24 - i % 4 * 8 ; return new WordArray . init ( words , latin1StrLength ) } } , Utf8 = C _enc . Utf8 = { stringify : function ( wordArray ) { try { return decodeURIComponent ( escape ( Latin1 . stringify ( wordArray ) ) ) } catch ( e ) { throw new Error ( "Malformed UTF-8 data" ) } } , parse : function ( utf8Str ) { return Latin1 . parse ( unescape ( encodeURIComponent ( utf8Str ) ) ) } } , BufferedBlockAlgorithm = C _lib . BufferedBlockAlgorithm = Base . extend ( { reset : function ( ) { this . _data = new WordArray . init , this . _nDataBytes = 0 } , _append : function ( data ) { "string" == typeof data && ( data = Utf8 . parse ( data ) ) , this . _data . concat ( data ) , this . _nDataBytes += data . sigBytes } , _process : function ( doFlush ) { var data = this . _data , dataWords = data . words , dataSigBytes = data . sigBytes , blockSize = this . blockSize , blockSizeBytes = 4 * blockSize , nBlocksReady = dataSigBytes / blockSizeBytes ; nBlocksReady = doFlush ? Math . ceil ( nBlocksReady ) : Math . max ( ( 0 | nBlocksReady ) - this . _minBufferSize , 0 ) ; var nWordsReady = nBlocksReady * blockSize , nBytesReady = Math . min ( 4 * nWordsReady , dataSigBytes ) ; if ( nWordsReady ) { for ( var offset = 0 ; offset < nWordsReady ; offset += blockSize ) this . _doProcessBlock ( dataWords , offset ) ; var processedWords = dataWords . splice ( 0 , nWordsReady ) ; data . sigBytes -= nBytesReady } return new WordArray . init ( processedWords , nBytesReady ) } , clone : function ( ) { var clone = Base . clone . call ( this ) ; return clone . _data = this . _data . clone ( ) , clone } , _minBufferSize : 0 } ) , Hasher = C _lib . Hasher = BufferedBlockAlgorithm . extend ( { cfg : Base . extend ( ) , init : function ( cfg ) { this . cfg = this . cfg . extend ( cfg ) , this . reset ( ) } , reset : function ( ) { BufferedBlockAlgorithm . reset . call ( this ) , this . _doReset ( ) } , update : function ( messageUpdate ) { return this . _append ( messageUpdate ) , this . _process ( ) , this } , finalize : function ( messageUpdate ) { messageUpdate && this . _append ( messageUpdate ) ; var hash = this . _doFinalize ( ) ; return hash } , blockSize : 16 , _createHelper : function ( hasher ) { return function ( message , cfg ) { return new hasher . init ( cfg ) . finalize ( message ) } } , _createHmacHelper : function ( hasher ) { return function ( message , key ) { return new C _algo . HMAC . init ( hasher , key ) . finalize ( message ) } } } ) , C _algo = C . algo = { } ; return C } ( Math ) ; ! function ( ) { var C = CryptoJS , C _lib = C . lib , WordArray = C _lib . WordArray , C _enc = C . enc , Base64 = C _enc . Base64 = { stringify : function ( wordArray ) { var words = wordArray . words , sigBytes = wordArray . sigBytes , map = this . _map ; wordArray . clamp ( ) ; for ( var base64Chars = [ ] , i = 0 ; i < sigBytes ; i += 3 ) for ( var byte1 = words [ i >>> 2 ] >>> 24 - i % 4 * 8 & 255 , byte2 = words [ i + 1 >>> 2 ] >>> 24 - ( i + 1 ) % 4 * 8 & 255 , byte3 = words [ i + 2 >>> 2 ] >>> 24 - ( i + 2 ) % 4 * 8 & 255 , triplet = byte1 << 16 | byte2 << 8 | byte3 , j = 0 ; j < 4 && i + . 75 * j < sigBytes ; j ++ ) base64Chars . push ( map . charAt ( triplet >>> 6 * ( 3 - j ) & 63 ) ) ; var paddingChar = map . charAt ( 64 ) ; if ( paddingChar ) for ( ; base64Chars . length % 4 ; ) base64Chars . push ( paddingChar ) ; return base64Chars . join ( "" ) } , parse : function ( base64Str ) { var base64StrLength = base64Str . length , map = this . _map , paddingChar = map . charAt ( 64 ) ; if ( paddingChar ) { var paddingIndex = base64Str . indexOf ( paddingChar ) ; paddingIndex != - 1 && ( base64StrLength = paddingIndex ) } for ( var words = [ ] , nBytes = 0 , i = 0 ; i < base64StrLength ; i ++ ) if ( i % 4 ) { var bits1 = map . indexOf ( base64Str . charAt ( i - 1 ) ) << i % 4 * 2 , bits2 = map . indexOf ( base64Str . ch
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" } , _checkPYCh =
var child = this . _children [ this . _getChildName ( index ) ] , updated ; if ( updated = child . update ( this . _getOptions ( item ) ) ) return updated ; var del = this . _children [ this . _getChildName ( index ) ] ; delete this . _children [ this . _getChildName ( index ) ] , this . options . items . splice ( index , 1 ) ; var w = this . _addElement ( index , item ) ; this . options . items . splice ( index , 0 , item ) , this . _children [ this . _getChildName ( index ) ] = w , index > 0 ? this . _children [ this . _getChildName ( index - 1 ) ] . element . after ( w . element ) : w . element . prependTo ( this . _getWrapper ( ) ) , del . _destroy ( ) , w . _mount ( ) } } , addItems : function ( items , context ) { var self = this , o = this . options , fragment = BI . Widget . _renderEngine . createFragment ( ) , added = [ ] ; BI . each ( items , function ( i , item ) { var w = self . _addElement ( o . items . length , item , context ) ; self . _children [ self . _getChildName ( o . items . length ) ] = w , o . items . push ( item ) , added . push ( w ) , fragment . appendChild ( w . element [ 0 ] ) } ) , this . _isMounted && ( this . _getWrapper ( ) . append ( fragment ) , BI . each ( added , function ( i , w ) { w . _mount ( ) } ) ) } , prependItems : function ( items , context ) { var self = this ; items = items || [ ] ; for ( var fragment = BI . Widget . _renderEngine . createFragment ( ) , added = [ ] , i = items . length - 1 ; i >= 0 ; i -- ) { this . _addItemAt ( 0 , items [ i ] ) ; var w = this . _addElement ( 0 , items [ i ] , context ) ; self . _children [ self . _getChildName ( 0 ) ] = w , this . options . items . unshift ( items [ i ] ) , added . push ( w ) , fragment . appendChild ( w . element [ 0 ] ) } this . _isMounted && ( this . _getWrapper ( ) . prepend ( fragment ) , BI . each ( added , function ( i , w ) { w . _mount ( ) } ) ) } , getValue : function ( ) { var self = this , value = [ ] , child ; return BI . each ( this . options . items , function ( i ) { if ( child = self . _children [ self . _getChildName ( i ) ] ) { var v = child . getValue ( ) ; v = BI . isArray ( v ) ? v : [ v ] , value = value . concat ( v ) } } ) , value } , setValue : function ( v ) { var self = this , child ; BI . each ( this . options . items , function ( i ) { ( child = self . _children [ self . _getChildName ( i ) ] ) && child . setValue ( v ) } ) } , setText : function ( v ) { var self = this , child ; BI . each ( this . options . items , function ( i ) { ( child = self . _children [ self . _getChildName ( i ) ] ) && child . setText ( v ) } ) } , patchItem : function ( oldVnode , vnode , index ) { var shouldUpdate = this . shouldUpdateItem ( index , vnode ) ; if ( shouldUpdate === ! 0 || null === shouldUpdate && ! this . _compare ( oldVnode , vnode ) ) return this . updateItemAt ( index , vnode ) } , updateChildren : function ( oldCh , newCh ) { function sameVnode ( vnode1 , vnode2 , oldIndex , newIndex ) { return vnode1 = self . _getOptions ( vnode1 ) , vnode2 = self . _getOptions ( vnode2 ) , BI . isKey ( vnode1 . key ) ? vnode1 . key === vnode2 . key : oldIndex >= 0 ? oldIndex === newIndex : void 0 } function addNode ( vnode , index ) { var opt = self . _getOptions ( vnode ) , key = null == opt . key ? self . _getChildName ( index ) : opt . key ; return children [ key ] = self . _addElement ( key , vnode ) } function addVnodes ( before , vnodes , startIdx , endIdx ) { for ( ; startIdx <= endIdx ; ++ startIdx ) { var node = addNode ( vnodes [ startIdx ] , startIdx ) ; insertBefore ( node , before , ! 1 , startIdx ) } } function removeVnodes ( vnodes , startIdx , endIdx ) { for ( ; startIdx <= endIdx ; ++ startIdx ) { var ch = vnodes [ startIdx ] ; if ( BI . isNotNull ( ch ) ) { var node = self . _getOptions ( ch ) , key = null == node . key ? self . _getChildName ( startIdx ) : node . key ; delete self . _children [ self . _getChildName ( key ) ] , children [ key ] . _destroy ( ) } } } function insertBefore ( insert , before , isNext , index ) { insert = self . _getOptions ( insert ) , before = before && self . _getOptions ( before ) ; var insertKey = BI . isKey ( insert . key ) ? insert . key : self . _getChildName ( index ) ; if ( before && children [ before . key ] ) { var beforeKey = BI . isKey ( before . key ) ? before . key : self . _getChildName ( index ) , next ; next = isNext ? children [ beforeKey ] . element . next ( ) : children [ beforeKey ] . element , next . length > 0 ? next . before ( children [ insertKey ] . element ) : self . _getWrapper ( ) . append ( children [ insertKey ] . element ) } else self . _getWrapper ( ) . append ( children [ insertKey ] . element ) } function findOldVnode ( vnodes , vNode , beginIdx , endIdx ) { var i , found ; for ( i = beginIdx ; i <= endIdx ; ++ i ) vnodes [ i ] && sameVnode ( vnodes [ i ] , vNode ) && ( found = vnodes [ i ] ) ; return found } var self = this , oldStartIdx = 0 , newStartIdx = 0 , oldEndIdx = oldCh . length - 1 , oldStartVnode = oldCh [ 0 ] , oldEndVnode = oldCh [ oldEndIdx ] , newEndIdx = newCh . length - 1 , newStartVnode = newCh [ 0 ] , newEndVnode = newCh [ newEndIdx ] , before , updated , children = { } ; for ( BI . each ( oldCh , function ( i , child ) { child = self . _getOptions ( child ) ; var key = null == child . key ? i : child . key ; BI . isKey ( key ) && ( children [ key ] = self . _children [ self . _getChildName ( i ) ] ) } ) ; oldSta
this . layouts = { } , this } } ) , BI . MaskersController = BI . inherit ( BI . LayerController , { _defaultConfig : function ( ) { return BI . extend ( BI . MaskersController . superclass . _defaultConfig . apply ( this , arguments ) , { } ) } , _init : function ( ) { BI . MaskersController . superclass . _init . apply ( this , arguments ) , this . zindex = BI . zIndex _masker } } ) , BI . PopoverController = BI . inherit ( BI . Controller , { _defaultConfig : function ( ) { return BI . extend ( BI . PopoverController . superclass . _defaultConfig . apply ( this , arguments ) , { modal : ! 0 , render : "body" } ) } , _init : function ( ) { BI . PopoverController . superclass . _init . apply ( this , arguments ) , this . modal = this . options . modal , this . floatManager = { } , this . floatLayer = { } , this . floatContainer = { } , this . floatOpened = { } , this . zindex = BI . zIndex _popover , this . zindexMap = { } } , _check : function ( name ) { return BI . isNotNull ( this . floatManager [ name ] ) } , create : function ( name , options , context ) { if ( this . _check ( name ) ) return this ; var popover = BI . createWidget ( options || { } , { type : "bi.popover" } , context ) ; return this . add ( name , popover , options , context ) , this } , add : function ( name , popover , options , context ) { var self = this ; return options || ( options = { } ) , this . _check ( name ) ? this : ( this . floatContainer [ name ] = BI . createWidget ( { type : "bi.absolute" , cls : "bi-popup-view" , items : [ { el : this . floatLayer [ name ] = BI . createWidget ( { type : "bi.absolute" , items : [ popover ] } , context ) , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . floatManager [ name ] = popover , function ( key ) { popover . on ( BI . Popover . EVENT _CLOSE , function ( ) { self . close ( key ) } ) } ( name ) , BI . createWidget ( { type : "bi.absolute" , element : options . container || this . options . render , items : [ { el : this . floatContainer [ name ] , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this ) } , open : function ( name ) { if ( ! this . _check ( name ) ) return this ; if ( ! this . floatOpened [ name ] ) { this . floatOpened [ name ] = ! 0 ; var container = this . floatContainer [ name ] ; container . element . css ( "zIndex" , this . zindex ++ ) , this . modal && container . element . _ _hasZIndexMask _ _ ( this . zindexMap [ name ] ) && container . element . _ _releaseZIndexMask _ _ ( this . zindexMap [ name ] ) , this . zindexMap [ name ] = this . zindex , this . modal && container . element . _ _buildZIndexMask _ _ ( this . zindex ++ ) , this . get ( name ) . setZindex ( this . zindex ++ ) , this . floatContainer [ name ] . visible ( ) ; var popover = this . get ( name ) ; popover . show && popover . show ( ) ; var W = BI . Widget . _renderEngine . createElement ( this . options . render ) . width ( ) , H = BI . Widget . _renderEngine . createElement ( this . options . render ) . height ( ) , w = popover . element . width ( ) , h = popover . element . height ( ) , left = ( W - w ) / 2 , top = ( H - h ) / 2 ; left < 0 && ( left = 0 ) , top < 0 && ( top = 0 ) , popover . element . css ( { left : left + "px" , top : top + "px" } ) } return this } , close : function ( name ) { return this . _check ( name ) ? ( this . floatOpened [ name ] && ( delete this . floatOpened [ name ] , this . floatContainer [ name ] . invisible ( ) , this . modal && this . floatContainer [ name ] . element . _ _releaseZIndexMask _ _ ( this . zindexMap [ name ] ) ) , this ) : this } , get : function ( name ) { return this . floatManager [ name ] } , remove : function ( name ) { return this . _check ( name ) ? ( this . floatContainer [ name ] . destroy ( ) , this . modal && this . floatContainer [ name ] . element . _ _releaseZIndexMask _ _ ( this . zindexMap [ name ] ) , delete this . floatManager [ name ] , delete this . floatLayer [ name ] , delete this . zindexMap [ name ] , delete this . floatContainer [ name ] , delete this . floatOpened [ name ] , this ) : this } , removeAll : function ( ) { var self = this ; return BI . each ( this . floatContainer , function ( name , container ) { container . destroy ( ) , self . modal && self . floatContainer [ name ] . element . _ _releaseZIndexMask _ _ ( self . zindexMap [ name ] ) } ) , this . floatManager = { } , this . floatLayer = { } , this . floatContainer = { } , this . floatOpened = { } , this . zindexMap = { } , 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 self = this ; this . resizerManger = { } ; var fn = BI . debounce ( function ( ev ) { self . _resize ( ev ) } , 30 ) ; BI . Widget . _renderEngine . createElement ( _global ) . resize ( fn ) } , _resize : function ( ev ) { BI . each ( this . resizerManger , function ( key , resizer ) { return resizer instanceof BI . $ ? void ( resizer . is ( ":visible" ) && resizer . trigger ( "__resize__" ) ) : resizer instanceof BI . Layout ? void resizer . resize ( ) : BI . isFunction ( resizer ) ? void resizer ( ev ) : void 0 } ) } , add : function ( name , resizer ) { var self = this
var isIE = BI . isIE ( ) , supportFlex = isSupportFlex ( ) ; return ! isIE && supportFlex ? ob . scrollable === ! 0 || ob . scrollx === ! 0 || ob . scrolly === ! 0 ? BI . extend ( { } , ob , { type : "bi.flex_scrollable_vertical_center_adapt" } ) : BI . extend ( ob , { type : "bi.flex_vertical_center_adapt" } ) : BI . extend ( ob , { type : "bi.inline_vertical_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.horizontal_adapt" , function ( ob ) { return ob . items && ob . items . length <= 1 ? BI . extend ( ob , { type : "bi.horizontal_auto" } ) : ob } ) , BI . Plugin . registerWidget ( "bi.float_center_adapt" , function ( ob ) { return ! BI . isIE ( ) && isSupportFlex ( ) ? ob . scrollable === ! 0 || ob . scrollx === ! 0 || ob . scrolly === ! 0 ? BI . extend ( { } , ob , { type : "bi.flex_scrollable_center_adapt" } ) : BI . extend ( ob , { type : "bi.flex_center_adapt" } ) : BI . extend ( ob , { type : "bi.inline_center_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_horizontal" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrolly === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_horizontal" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_vertical" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrollx === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_vertical" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_horizontal_adapt" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrollx === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_horizontal_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_vertical_adapt" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrolly === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_vertical_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_horizontal_center_adapt" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrollx === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_horizontal_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_vertical_center_adapt" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrolly === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_vertical_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.flex_center_adapt" , function ( ob ) { if ( ob . scrollable === ! 0 || ob . scrolly === ! 0 || ob . scrollx === ! 0 ) return BI . extend ( { } , ob , { type : "bi.flex_scrollable_center_adapt" } ) } ) , BI . Plugin . registerWidget ( "bi.radio" , function ( ob ) { return BI . isIE ( ) && BI . getIEVersion ( ) < 9 ? BI . extend ( ob , { type : "bi.image_radio" } ) : ob } ) , BI . Plugin . registerWidget ( "bi.checkbox" , function ( ob ) { return BI . isIE ( ) && BI . getIEVersion ( ) < 9 ? BI . extend ( ob , { type : "bi.image_checkbox" } ) : ob } ) , BI . Plugin . registerWidget ( "bi.half_icon_button" , function ( ob ) { return BI . isIE ( ) && BI . getIEVersion ( ) < 9 ? ob : BI . extend ( ob , { type : "bi.half_button" } ) } ) } ) , ! function ( ) { var attachEvent = _global . document && _global . document . attachEvent , stylesCreated = ! 1 ; if ( _global . document && ! attachEvent ) { var requestFrame = function ( ) { var raf = _global . requestAnimationFrame || _global . mozRequestAnimationFrame || _global . webkitRequestAnimationFrame || function ( fn ) { return _global . setTimeout ( fn , 20 ) } ; return function ( fn ) { return raf ( fn ) } } ( ) , cancelFrame = function ( ) { var cancel = _global . cancelAnimationFrame || _global . mozCancelAnimationFrame || _global . webkitCancelAnimationFrame || _global . clearTimeout ; return function ( id ) { return cancel ( id ) } } ( ) , resetTriggers = function ( element ) { var triggers = element . _ _resizeTriggers _ _ , expand = triggers . firstElementChild , contract = triggers . lastElementChild , expandChild = expand . firstElementChild ; contract . scrollLeft = contract . scrollWidth , contract . scrollTop = contract . scrollHeight , expandChild . style . width = expand . offsetWidth + 1 + "px" , expandChild . style . height = expand . offsetHeight + 1 + "px" , expand . scrollLeft = expand . scrollWidth , expand . scrollTop = expand . scrollHeight } , checkTriggers = function ( element ) { return element . offsetWidth !== element . _ _resizeLast _ _ . width || element . offsetHeight !== element . _ _resizeLast _ _ . height } , scrollListener = function ( e ) { var element = this ; resetTriggers ( this ) , this . _ _resizeRAF _ _ && cancelFrame ( this . _ _resizeRAF _ _ ) , this . _ _resizeRAF _ _ = requestFrame ( function ( ) { checkTriggers ( element ) && ( element . _ _resizeLast _ _ . width = element . offsetWidth , element . _ _resizeLast _ _ . height = element . offsetHeight , element . _ _resizeListeners _ _ . forEach ( function ( fn ) { fn . call ( element , e ) } ) ) } ) } , animation = ! 1 , animationstring = "animation" , keyframeprefix = "" , animationstartevent = "animationstart" , domPrefixes = "Webkit Moz O ms" . split ( " " ) , startEvents = "webkitAnimationStart animationstart oAnimationStart MSAnimationStart" . split ( " " ) , pfx = "" , elm = document
data = jQuery . _data ( dest ) ; for ( e in data . events ) jQuery . removeEvent ( dest , e , data . handle ) ; dest . removeAttribute ( jQuery . expando ) } "script" === nodeName && dest . text !== src . text ? ( disableScript ( dest ) . text = src . text , restoreScript ( dest ) ) : "object" === nodeName ? ( dest . parentNode && ( dest . outerHTML = src . outerHTML ) , jQuery . support . html5Clone && src . innerHTML && ! jQuery . trim ( dest . innerHTML ) && ( dest . innerHTML = src . innerHTML ) ) : "input" === nodeName && manipulation _rcheckableType . test ( src . type ) ? ( dest . defaultChecked = dest . checked = src . checked , dest . value !== src . value && ( dest . value = src . value ) ) : "option" === nodeName ? dest . defaultSelected = dest . selected = src . defaultSelected : "input" !== nodeName && "textarea" !== nodeName || ( dest . defaultValue = src . defaultValue ) } } function getAll ( context , tag ) { var elems , elem , i = 0 , found = typeof context . getElementsByTagName !== core _strundefined ? context . getElementsByTagName ( tag || "*" ) : typeof context . querySelectorAll !== core _strundefined ? context . querySelectorAll ( tag || "*" ) : undefined ; if ( ! found ) for ( found = [ ] , elems = context . childNodes || context ; null != ( elem = elems [ i ] ) ; i ++ ) ! tag || jQuery . nodeName ( elem , tag ) ? found . push ( elem ) : jQuery . merge ( found , getAll ( elem , tag ) ) ; return tag === undefined || tag && jQuery . nodeName ( context , tag ) ? jQuery . merge ( [ context ] , found ) : found } function fixDefaultChecked ( elem ) { manipulation _rcheckableType . test ( elem . type ) && ( elem . defaultChecked = elem . checked ) } function vendorPropName ( style , name ) { if ( name in style ) return name ; for ( var capName = name . charAt ( 0 ) . toUpperCase ( ) + name . slice ( 1 ) , origName = name , i = cssPrefixes . length ; i -- ; ) if ( name = cssPrefixes [ i ] + capName , name in style ) return name ; return origName } function isHidden ( elem , el ) { return elem = el || elem , "none" === jQuery . css ( elem , "display" ) || ! jQuery . contains ( elem . ownerDocument , elem ) } function showHide ( elements , show ) { for ( var display , elem , hidden , values = [ ] , index = 0 , length = elements . length ; index < length ; index ++ ) elem = elements [ index ] , elem . style && ( values [ index ] = jQuery . _data ( elem , "olddisplay" ) , display = elem . style . display , show ? ( values [ index ] || "none" !== display || ( elem . style . display = "" ) , "" === elem . style . display && isHidden ( elem ) && ( values [ index ] = jQuery . _data ( elem , "olddisplay" , css _defaultDisplay ( elem . nodeName ) ) ) ) : values [ index ] || ( hidden = isHidden ( elem ) , ( display && "none" !== display || ! hidden ) && jQuery . _data ( elem , "olddisplay" , hidden ? display : jQuery . css ( elem , "display" ) ) ) ) ; for ( index = 0 ; index < length ; index ++ ) elem = elements [ index ] , elem . style && ( show && "none" !== elem . style . display && "" !== elem . style . display || ( elem . style . display = show ? values [ index ] || "" : "none" ) ) ; return elements } function setPositiveNumber ( elem , value , subtract ) { var matches = rnumsplit . exec ( value ) ; return matches ? Math . max ( 0 , matches [ 1 ] - ( subtract || 0 ) ) + ( matches [ 2 ] || "px" ) : value } function augmentWidthOrHeight ( elem , name , extra , isBorderBox , styles ) { for ( var i = extra === ( isBorderBox ? "border" : "content" ) ? 4 : "width" === name ? 1 : 0 , val = 0 ; i < 4 ; i += 2 ) "margin" === extra && ( val += jQuery . css ( elem , extra + cssExpand [ i ] , ! 0 , styles ) ) , isBorderBox ? ( "content" === extra && ( val -= jQuery . css ( elem , "padding" + cssExpand [ i ] , ! 0 , styles ) ) , "margin" !== extra && ( val -= jQuery . css ( elem , "border" + cssExpand [ i ] + "Width" , ! 0 , styles ) ) ) : ( val += jQuery . css ( elem , "padding" + cssExpand [ i ] , ! 0 , styles ) , "padding" !== extra && ( val += jQuery . css ( elem , "border" + cssExpand [ i ] + "Width" , ! 0 , styles ) ) ) ; return val } function getWidthOrHeight ( elem , name , extra ) { var valueIsBorderBox = ! 0 , val = "width" === name ? elem . offsetWidth : elem . offsetHeight , styles = getStyles ( elem ) , isBorderBox = jQuery . support . boxSizing && "border-box" === jQuery . css ( elem , "boxSizing" , ! 1 , styles ) ; if ( val <= 0 || null == val ) { if ( val = curCSS ( elem , name , styles ) , ( val < 0 || null == val ) && ( val = elem . style [ name ] ) , rnumnonpx . test ( val ) ) return val ; valueIsBorderBox = isBorderBox && ( jQuery . support . boxSizingReliable || val === elem . style [ name ] ) , val = parseFloat ( val ) || 0 } return val + augmentWidthOrHeight ( elem , name , extra || ( isBorderBox ? "border" : "content" ) , valueIsBorderBox , styles ) + "px" } function css _defaultDisplay ( nodeName ) { var doc = document , display = elemdisplay [ nodeName ] ; return display || ( display = actualDisplay ( nodeName , doc ) , "none" !== display && display || ( iframe = ( iframe || jQuery ( "<iframe frameborder='0' width='0' height='0'/>" ) . css ( "cssText" , "display:block !important" ) ) . appendTo ( doc . documentElement ) , doc = ( iframe [ 0 ] . contentWindow || ifra
support . shrinkWrapBlocks = 3 !== div . offsetWidth , support . inlineBlockNeedsLayout && ( body . style . zoom = 1 ) ) , body . removeChild ( container ) , container = div = tds = marginDiv = null ) } ) , all = select = fragment = opt = a = input = null , support } ( ) ; var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/ , rmultiDash = /([A-Z])/g ; jQuery . extend ( { cache : { } , expando : "jQuery" + ( core _version + Math . random ( ) ) . replace ( /\D/g , "" ) , noData : { embed : ! 0 , object : "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" , applet : ! 0 } , hasData : function ( elem ) { return elem = elem . nodeType ? jQuery . cache [ elem [ jQuery . expando ] ] : elem [ jQuery . expando ] , ! ! elem && ! isEmptyDataObject ( elem ) } , data : function ( elem , name , data ) { return internalData ( elem , name , data ) } , removeData : function ( elem , name ) { return internalRemoveData ( elem , name ) } , _data : function ( elem , name , data ) { return internalData ( elem , name , data , ! 0 ) } , _removeData : function ( elem , name ) { return internalRemoveData ( elem , name , ! 0 ) } , acceptData : function ( elem ) { if ( elem . nodeType && 1 !== elem . nodeType && 9 !== elem . nodeType ) return ! 1 ; var noData = elem . nodeName && jQuery . noData [ elem . nodeName . toLowerCase ( ) ] ; return ! noData || noData !== ! 0 && elem . getAttribute ( "classid" ) === noData } } ) , jQuery . fn . extend ( { data : function ( key , value ) { var attrs , name , elem = this [ 0 ] , i = 0 , data = null ; if ( key === undefined ) { if ( this . length && ( data = jQuery . data ( elem ) , 1 === elem . nodeType && ! jQuery . _data ( elem , "parsedAttrs" ) ) ) { for ( attrs = elem . attributes ; i < attrs . length ; i ++ ) name = attrs [ i ] . name , name . indexOf ( "data-" ) || ( name = jQuery . camelCase ( name . slice ( 5 ) ) , dataAttr ( elem , name , data [ name ] ) ) ; jQuery . _data ( elem , "parsedAttrs" , ! 0 ) } return data } return "object" == typeof key ? this . each ( function ( ) { jQuery . data ( this , key ) } ) : jQuery . access ( this , function ( value ) { return value === undefined ? elem ? dataAttr ( elem , key , jQuery . data ( elem , key ) ) : null : void this . each ( function ( ) { jQuery . data ( this , key , value ) } ) } , null , value , arguments . length > 1 , null , ! 0 ) } , removeData : function ( key ) { return this . each ( function ( ) { jQuery . removeData ( this , key ) } ) } } ) , jQuery . extend ( { queue : function ( elem , type , data ) { var queue ; if ( elem ) return type = ( type || "fx" ) + "queue" , queue = jQuery . _data ( elem , type ) , data && ( ! queue || jQuery . isArray ( data ) ? queue = jQuery . _data ( elem , type , jQuery . makeArray ( data ) ) : queue . push ( data ) ) , queue || [ ] } , dequeue : function ( elem , type ) { type = type || "fx" ; var queue = jQuery . queue ( elem , type ) , startLength = queue . length , fn = queue . shift ( ) , hooks = jQuery . _queueHooks ( elem , type ) , next = function ( ) { jQuery . dequeue ( elem , type ) } ; "inprogress" === fn && ( fn = queue . shift ( ) , startLength -- ) , hooks . cur = fn , fn && ( "fx" === type && queue . unshift ( "inprogress" ) , delete hooks . stop , fn . call ( elem , next , hooks ) ) , ! startLength && hooks && hooks . empty . fire ( ) } , _queueHooks : function ( elem , type ) { var key = type + "queueHooks" ; return jQuery . _data ( elem , key ) || jQuery . _data ( elem , key , { empty : jQuery . Callbacks ( "once memory" ) . add ( function ( ) { jQuery . _removeData ( elem , type + "queue" ) , jQuery . _removeData ( elem , key ) } ) } ) } } ) , jQuery . fn . extend ( { queue : function ( type , data ) { var setter = 2 ; return "string" != typeof type && ( data = type , type = "fx" , setter -- ) , arguments . length < setter ? jQuery . queue ( this [ 0 ] , type ) : data === undefined ? this : this . each ( function ( ) { var queue = jQuery . queue ( this , type , data ) ; jQuery . _queueHooks ( this , type ) , "fx" === type && "inprogress" !== queue [ 0 ] && jQuery . dequeue ( this , type ) } ) } , dequeue : function ( type ) { return this . each ( function ( ) { jQuery . dequeue ( this , type ) } ) } , delay : function ( time , type ) { return time = jQuery . fx ? jQuery . fx . speeds [ time ] || time : time , type = type || "fx" , this . queue ( type , function ( next , hooks ) { var timeout = setTimeout ( next , time ) ; hooks . stop = function ( ) { clearTimeout ( timeout ) } } ) } , clearQueue : function ( type ) { return this . queue ( type || "fx" , [ ] ) } , promise : function ( type , obj ) { var tmp , count = 1 , defer = jQuery . Deferred ( ) , elements = this , i = this . length , resolve = function ( ) { -- count || defer . resolveWith ( elements , [ elements ] ) } ; for ( "string" != typeof type && ( obj = type , type = undefined ) , type = type || "fx" ; i -- ; ) tmp = jQuery . _data ( elements [ i ] , type + "queueHooks" ) , tmp && tmp . empty && ( count ++ , tmp . empty . add ( resolve ) ) ; return resolve ( ) , defer . promise ( obj ) } } ) ; var nodeHook , boolHook , rclass = /[\t\r\n]/g , rreturn = /\r/g , rfocusable = /^(?:input|select|textarea|button|object)$/i , rclickable = /^(?:a|area)$/i , rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i , ruseDe
matched && ! ( match = rcomma . exec ( soFar ) ) || ( match && ( soFar = soFar . slice ( match [ 0 ] . length ) || soFar ) , groups . push ( tokens = [ ] ) ) , matched = ! 1 , ( match = rcombinators . exec ( soFar ) ) && ( matched = match . shift ( ) , tokens . push ( { value : matched , type : match [ 0 ] . replace ( rtrim , " " ) } ) , soFar = soFar . slice ( matched . length ) ) ; for ( type in Expr . filter ) ! ( match = matchExpr [ type ] . exec ( soFar ) ) || preFilters [ type ] && ! ( match = preFilters [ type ] ( match ) ) || ( matched = match . shift ( ) , tokens . push ( { value : matched , type : type , matches : match } ) , soFar = soFar . slice ( matched . length ) ) ; if ( ! matched ) break } return parseOnly ? soFar . length : soFar ? Sizzle . error ( selector ) : tokenCache ( selector , groups ) . slice ( 0 ) } function toSelector ( tokens ) { for ( var i = 0 , len = tokens . length , selector = "" ; i < len ; i ++ ) selector += tokens [ i ] . value ; return selector } function addCombinator ( matcher , combinator , base ) { var dir = combinator . dir , checkNonElements = base && "parentNode" === dir , doneName = done ++ ; return combinator . first ? function ( elem , context , xml ) { for ( ; elem = elem [ dir ] ; ) if ( 1 === elem . nodeType || checkNonElements ) return matcher ( elem , context , xml ) } : function ( elem , context , xml ) { var data , cache , outerCache , dirkey = dirruns + " " + doneName ; if ( xml ) { for ( ; elem = elem [ dir ] ; ) if ( ( 1 === elem . nodeType || checkNonElements ) && matcher ( elem , context , xml ) ) return ! 0 } else for ( ; elem = elem [ dir ] ; ) if ( 1 === elem . nodeType || checkNonElements ) if ( outerCache = elem [ expando ] || ( elem [ expando ] = { } ) , ( cache = outerCache [ dir ] ) && cache [ 0 ] === dirkey ) { if ( ( data = cache [ 1 ] ) === ! 0 || data === cachedruns ) return data === ! 0 } else if ( cache = outerCache [ dir ] = [ dirkey ] , cache [ 1 ] = matcher ( elem , context , xml ) || cachedruns , cache [ 1 ] === ! 0 ) return ! 0 } } function elementMatcher ( matchers ) { return matchers . length > 1 ? function ( elem , context , xml ) { for ( var i = matchers . length ; i -- ; ) if ( ! matchers [ i ] ( elem , context , xml ) ) return ! 1 ; return ! 0 } : matchers [ 0 ] } function condense ( unmatched , map , filter , context , xml ) { for ( var elem , newUnmatched = [ ] , i = 0 , len = unmatched . length , mapped = null != map ; i < len ; i ++ ) ( elem = unmatched [ i ] ) && ( filter && ! filter ( elem , context , xml ) || ( newUnmatched . push ( elem ) , mapped && map . push ( i ) ) ) ; return newUnmatched } function setMatcher ( preFilter , selector , matcher , postFilter , postFinder , postSelector ) { return postFilter && ! postFilter [ expando ] && ( postFilter = setMatcher ( postFilter ) ) , postFinder && ! postFinder [ expando ] && ( postFinder = setMatcher ( postFinder , postSelector ) ) , markFunction ( function ( seed , results , context , xml ) { var temp , i , elem , preMap = [ ] , postMap = [ ] , preexisting = results . length , elems = seed || multipleContexts ( selector || "*" , context . nodeType ? [ context ] : context , [ ] ) , matcherIn = ! preFilter || ! seed && selector ? elems : condense ( elems , preMap , preFilter , context , xml ) , matcherOut = matcher ? postFinder || ( seed ? preFilter : preexisting || postFilter ) ? [ ] : results : matcherIn ; if ( matcher && matcher ( matcherIn , matcherOut , context , xml ) , postFilter ) for ( temp = condense ( matcherOut , postMap ) , postFilter ( temp , [ ] , context , xml ) , i = temp . length ; i -- ; ) ( elem = temp [ i ] ) && ( matcherOut [ postMap [ i ] ] = ! ( matcherIn [ postMap [ i ] ] = elem ) ) ; if ( seed ) { if ( postFinder || preFilter ) { if ( postFinder ) { for ( temp = [ ] , i = matcherOut . length ; i -- ; ) ( elem = matcherOut [ i ] ) && temp . push ( matcherIn [ i ] = elem ) ; postFinder ( null , matcherOut = [ ] , temp , xml ) } for ( i = matcherOut . length ; i -- ; ) ( elem = matcherOut [ i ] ) && ( temp = postFinder ? indexOf . call ( seed , elem ) : preMap [ i ] ) > - 1 && ( seed [ temp ] = ! ( results [ temp ] = elem ) ) } } else matcherOut = condense ( matcherOut === results ? matcherOut . splice ( preexisting , matcherOut . length ) : matcherOut ) , postFinder ? postFinder ( null , results , matcherOut , xml ) : push . apply ( results , matcherOut ) } ) } function matcherFromTokens ( tokens ) { for ( var checkContext , matcher , j , len = tokens . length , leadingRelative = Expr . relative [ tokens [ 0 ] . type ] , implicitRelative = leadingRelative || Expr . relative [ " " ] , i = leadingRelative ? 1 : 0 , matchContext = addCombinator ( function ( elem ) { return elem === checkContext } , implicitRelative , ! 0 ) , matchAnyContext = addCombinator ( function ( elem ) { return indexOf . call ( checkContext , elem ) > - 1 } , implicitRelative , ! 0 ) , matchers = [ function ( elem , context , xml ) { return ! leadingRelative && ( xml || context !== outermostContext ) || ( ( checkContext = context ) . nodeType ? matchContext ( elem , context , xml ) : matchAnyContext ( elem , context , xml ) ) } ] ; i < len ; i ++ ) if ( matcher = Expr . relative [ tokens [ i ] . type ] ) matchers = [ addCombinator ( elementMatcher ( matchers ) , matcher ) ] ; else { if ( matcher = Expr . filter [ tokens [ i ] . type ] . apply ( null , token
elem . parentNode && ( keepData && jQuery . contains ( elem . ownerDocument , elem ) && setGlobalEval ( getAll ( elem , "script" ) ) , elem . parentNode . removeChild ( elem ) ) ) ; return this } , empty : function ( ) { for ( var elem , i = 0 ; null != ( elem = this [ i ] ) ; i ++ ) { for ( 1 === elem . nodeType && jQuery . cleanData ( getAll ( elem , ! 1 ) ) ; elem . firstChild ; ) elem . removeChild ( elem . firstChild ) ; elem . options && jQuery . nodeName ( elem , "select" ) && ( elem . options . length = 0 ) } return this } , clone : function ( dataAndEvents , deepDataAndEvents ) { return dataAndEvents = null != dataAndEvents && dataAndEvents , deepDataAndEvents = null == deepDataAndEvents ? dataAndEvents : deepDataAndEvents , this . map ( function ( ) { return jQuery . clone ( this , dataAndEvents , deepDataAndEvents ) } ) } , html : function ( value ) { return jQuery . access ( this , function ( value ) { var elem = this [ 0 ] || { } , i = 0 , l = this . length ; if ( value === undefined ) return 1 === elem . nodeType ? elem . innerHTML . replace ( rinlinejQuery , "" ) : undefined ; if ( "string" == typeof value && ! rnoInnerhtml . test ( value ) && ( jQuery . support . htmlSerialize || ! rnoshimcache . test ( value ) ) && ( jQuery . support . leadingWhitespace || ! rleadingWhitespace . test ( value ) ) && ! wrapMap [ ( rtagName . exec ( value ) || [ "" , "" ] ) [ 1 ] . toLowerCase ( ) ] ) { value = value . replace ( rxhtmlTag , "<$1></$2>" ) ; try { for ( ; i < l ; i ++ ) elem = this [ i ] || { } , 1 === elem . nodeType && ( jQuery . cleanData ( getAll ( elem , ! 1 ) ) , elem . innerHTML = value ) ; elem = 0 } catch ( e ) { } } elem && this . empty ( ) . append ( value ) } , null , value , arguments . length ) } , replaceWith : function ( value ) { var isFunc = jQuery . isFunction ( value ) ; return isFunc || "string" == typeof value || ( value = jQuery ( value ) . not ( this ) . detach ( ) ) , this . domManip ( [ value ] , ! 0 , function ( elem ) { var next = this . nextSibling , parent = this . parentNode ; parent && ( jQuery ( this ) . remove ( ) , parent . insertBefore ( elem , next ) ) } ) } , detach : function ( selector ) { return this . remove ( selector , ! 0 ) } , domManip : function ( args , table , callback ) { args = core _concat . apply ( [ ] , args ) ; var first , node , hasScripts , scripts , doc , fragment , i = 0 , l = this . length , set = this , iNoClone = l - 1 , value = args [ 0 ] , isFunction = jQuery . isFunction ( value ) ; if ( isFunction || ! ( l <= 1 || "string" != typeof value || jQuery . support . checkClone ) && rchecked . test ( value ) ) return this . each ( function ( index ) { var self = set . eq ( index ) ; isFunction && ( args [ 0 ] = value . call ( this , index , table ? self . html ( ) : undefined ) ) , self . domManip ( args , table , callback ) } ) ; if ( l && ( fragment = jQuery . buildFragment ( args , this [ 0 ] . ownerDocument , ! 1 , this ) , first = fragment . firstChild , 1 === fragment . childNodes . length && ( fragment = first ) , first ) ) { for ( table = table && jQuery . nodeName ( first , "tr" ) , scripts = jQuery . map ( getAll ( fragment , "script" ) , disableScript ) , hasScripts = scripts . length ; i < l ; i ++ ) node = fragment , i !== iNoClone && ( node = jQuery . clone ( node , ! 0 , ! 0 ) , hasScripts && jQuery . merge ( scripts , getAll ( node , "script" ) ) ) , callback . call ( table && jQuery . nodeName ( this [ i ] , "table" ) ? findOrAppend ( this [ i ] , "tbody" ) : this [ i ] , node , i ) ; if ( hasScripts ) for ( doc = scripts [ scripts . length - 1 ] . ownerDocument , jQuery . map ( scripts , restoreScript ) , i = 0 ; i < hasScripts ; i ++ ) node = scripts [ i ] , rscriptType . test ( node . type || "" ) && ! jQuery . _data ( node , "globalEval" ) && jQuery . contains ( doc , node ) && ( node . src ? jQuery . ajax ( { url : node . src , type : "GET" , dataType : "script" , async : ! 1 , global : ! 1 , "throws" : ! 0 } ) : jQuery . globalEval ( ( node . text || node . textContent || node . innerHTML || "" ) . replace ( rcleanScript , "" ) ) ) ; fragment = first = null } return this } } ) , jQuery . each ( { appendTo : "append" , prependTo : "prepend" , insertBefore : "before" , insertAfter : "after" , replaceAll : "replaceWith" } , function ( name , original ) { jQuery . fn [ name ] = function ( selector ) { for ( var elems , i = 0 , ret = [ ] , insert = jQuery ( selector ) , last = insert . length - 1 ; i <= last ; i ++ ) elems = i === last ? this : this . clone ( ! 0 ) , jQuery ( insert [ i ] ) [ original ] ( elems ) , core _push . apply ( ret , elems . get ( ) ) ; return this . pushStack ( ret ) } } ) , jQuery . extend ( { clone : function ( elem , dataAndEvents , deepDataAndEvents ) { var destElements , node , clone , i , srcElements , inPage = jQuery . contains ( elem . ownerDocument , elem ) ; if ( jQuery . support . html5Clone || jQuery . isXMLDoc ( elem ) || ! rnoshimcache . test ( "<" + elem . nodeName + ">" ) ? clone = elem . cloneNode ( ! 0 ) : ( fragmentDiv . innerHTML = elem . outerHTML , fragmentDiv . removeChild ( clone = fragmentDiv . firstChild ) ) , ! ( jQuery . support . noCloneEvent && jQuery . support . noCloneChecked || 1 !== elem . nodeType && 11 !== elem . nodeType || jQuery . isXMLDoc ( elem ) ) ) for ( destElements = getAll ( clone ) , srcElements = getAll ( elem ) , i = 0 ; null != ( node
for ( data . finish = ! 0 , jQuery . queue ( this , type , [ ] ) , hooks && hooks . cur && hooks . cur . finish && hooks . cur . finish . call ( this ) , index = timers . length ; index -- ; ) timers [ index ] . elem === this && timers [ index ] . queue === type && ( timers [ index ] . anim . stop ( ! 0 ) , timers . splice ( index , 1 ) ) ; for ( index = 0 ; index < length ; index ++ ) queue [ index ] && queue [ index ] . finish && queue [ index ] . finish . call ( this ) ; delete data . finish } ) } } ) , jQuery . each ( { slideDown : genFx ( "show" ) , slideUp : genFx ( "hide" ) , slideToggle : genFx ( "toggle" ) , fadeIn : { opacity : "show" } , fadeOut : { opacity : "hide" } , fadeToggle : { opacity : "toggle" } } , function ( name , props ) { jQuery . fn [ name ] = function ( speed , easing , callback ) { return this . animate ( props , speed , easing , callback ) } } ) , jQuery . speed = function ( speed , easing , fn ) { var opt = speed && "object" == typeof speed ? jQuery . extend ( { } , speed ) : { complete : fn || ! fn && easing || jQuery . isFunction ( speed ) && speed , duration : speed , easing : fn && easing || easing && ! jQuery . isFunction ( easing ) && easing } ; return opt . duration = jQuery . fx . off ? 0 : "number" == typeof opt . duration ? opt . duration : opt . duration in jQuery . fx . speeds ? jQuery . fx . speeds [ opt . duration ] : jQuery . fx . speeds . _default , null != opt . queue && opt . queue !== ! 0 || ( opt . queue = "fx" ) , opt . old = opt . complete , opt . complete = function ( ) { jQuery . isFunction ( opt . old ) && opt . old . call ( this ) , opt . queue && jQuery . dequeue ( this , opt . queue ) } , opt } , jQuery . easing = { linear : function ( p ) { return p } , swing : function ( p ) { return . 5 - Math . cos ( p * Math . PI ) / 2 } } , jQuery . timers = [ ] , jQuery . fx = Tween . prototype . init , jQuery . fx . tick = function ( ) { var timer , timers = jQuery . timers , i = 0 ; for ( fxNow = jQuery . now ( ) ; i < timers . length ; i ++ ) timer = timers [ i ] , timer ( ) || timers [ i ] !== timer || timers . splice ( i -- , 1 ) ; timers . length || jQuery . fx . stop ( ) , fxNow = undefined } , jQuery . fx . timer = function ( timer ) { timer ( ) && jQuery . timers . push ( timer ) && jQuery . fx . start ( ) } , jQuery . fx . interval = 13 , jQuery . fx . start = function ( ) { timerId || ( timerId = setInterval ( jQuery . fx . tick , jQuery . fx . interval ) ) } , jQuery . fx . stop = function ( ) { clearInterval ( timerId ) , timerId = null } , jQuery . fx . speeds = { slow : 600 , fast : 200 , _default : 400 } , jQuery . fx . step = { } , jQuery . expr && jQuery . expr . filters && ( jQuery . expr . filters . animated = function ( elem ) { return jQuery . grep ( jQuery . timers , function ( fn ) { return elem === fn . elem } ) . length } ) , jQuery . fn . offset = function ( options ) { if ( arguments . length ) return options === undefined ? this : this . each ( function ( i ) { jQuery . offset . setOffset ( this , options , i ) } ) ; var docElem , win , box = { top : 0 , left : 0 } , elem = this [ 0 ] , doc = elem && elem . ownerDocument ; if ( doc ) return docElem = doc . documentElement , jQuery . contains ( docElem , elem ) ? ( typeof elem . getBoundingClientRect !== core _strundefined && ( box = elem . getBoundingClientRect ( ) ) , win = getWindow ( doc ) , { top : box . top + ( win . pageYOffset || docElem . scrollTop ) - ( docElem . clientTop || 0 ) , left : box . left + ( win . pageXOffset || docElem . scrollLeft ) - ( docElem . clientLeft || 0 ) } ) : box } , jQuery . offset = { setOffset : function ( elem , options , i ) { var position = jQuery . css ( elem , "position" ) ; "static" === position && ( elem . style . position = "relative" ) ; var curElem = jQuery ( elem ) , curOffset = curElem . offset ( ) , curCSSTop = jQuery . css ( elem , "top" ) , curCSSLeft = jQuery . css ( elem , "left" ) , calculatePosition = ( "absolute" === position || "fixed" === position ) && jQuery . inArray ( "auto" , [ curCSSTop , curCSSLeft ] ) > - 1 , props = { } , curPosition = { } , curTop , curLeft ; calculatePosition ? ( curPosition = curElem . position ( ) , curTop = curPosition . top , curLeft = curPosition . left ) : ( curTop = parseFloat ( curCSSTop ) || 0 , curLeft = parseFloat ( curCSSLeft ) || 0 ) , jQuery . isFunction ( options ) && ( options = options . call ( elem , i , curOffset ) ) , null != options . top && ( props . top = options . top - curOffset . top + curTop ) , null != options . left && ( props . left = options . left - curOffset . left + curLeft ) , "using" in options ? options . using . call ( elem , props ) : curElem . css ( props ) } } , jQuery . fn . extend ( { position : function ( ) { if ( this [ 0 ] ) { var offsetParent , offset , parentOffset = { top : 0 , left : 0 } , elem = this [ 0 ] ; return "fixed" === jQuery . css ( elem , "position" ) ? offset = elem . getBoundingClientRect ( ) : ( offsetParent = this . offsetParent ( ) , offset = this . offset ( ) , jQuery . nodeName ( offsetParent [ 0 ] , "html" ) || ( parentOffset = offsetParent . offset ( ) ) , parentOffset . top += jQuery . css ( offsetParent [ 0 ] , "borderTopWidth" , ! 0 ) , parentOffset . left += jQuery . css ( offsetParent [ 0 ] , "borderLeftWidth" , ! 0 ) ) , { top : offset . top - parentOffset . top - jQuery . css ( elem , "marginTop" , ! 0 ) , left : offset . left - parentOffset . left - jQu
"margin-right" : o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-bottom" : o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , w } , resize : function ( ) { } , populate : function ( items ) { BI . FlexHorizontalLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_horizontal" , BI . FlexHorizontalLayout ) , BI . FlexVerticalCenter = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexVerticalCenter . superclass . props . apply ( this , arguments ) , { baseCls : "bi-flex-vertical-center-adapt-layout" , horizontalAlign : BI . HorizontalAlign . Left , columnSize : [ ] , scrollx : ! 1 , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.flex_horizontal" , ref : function ( _ref ) { self . wrapper = _ref } , verticalAlign : BI . VerticalAlign . Middle , horizontalAlign : o . horizontalAlign , columnSize : o . columnSize , scrollx : o . scrollx , scrolly : o . scrolly , scrollable : o . scrollable , vgap : o . vgap , lgap : o . lgap , rgap : o . rgap , hgap : o . hgap , items : o . items } } , resize : function ( ) { } , update : function ( opt ) { return this . wrapper . update ( opt ) } , populate : function ( items ) { this . wrapper . populate ( items ) } } ) , BI . shortcut ( "bi.flex_vertical_adapt" , BI . FlexVerticalCenter ) , BI . shortcut ( "bi.flex_vertical_center_adapt" , BI . FlexVerticalCenter ) , BI . FlexVerticalLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexVerticalLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-flex-vertical-layout" , horizontalAlign : BI . HorizontalAlign . Left , verticalAlign : BI . VerticalAlign . Top , rowSize : [ ] , scrolly : ! 0 , hgap : 0 , vgap : 0 , lgap : 0 , rgap : 0 , tgap : 0 , bgap : 0 } ) } , render : function ( ) { BI . FlexVerticalLayout . superclass . render . apply ( this , arguments ) ; var o = this . options ; this . element . addClass ( "h-" + o . horizontalAlign ) . addClass ( "v-" + o . verticalAlign ) , this . populate ( this . options . items ) } , _addElement : function ( i , item ) { var w = BI . FlexVerticalLayout . superclass . _addElement . apply ( this , arguments ) , o = this . options ; return w . element . css ( { position : "relative" , "flex-shrink" : "0" } ) , o . rowSize [ i ] > 0 && w . element . height ( o . rowSize [ i ] ) , "fill" === o . rowSize [ i ] && w . element . css ( "flex" , "1" ) , o . vgap + o . tgap + ( item . tgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-top" : ( 0 === i ? o . vgap : 0 ) + o . tgap + ( item . tgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , o . hgap + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-left" : o . hgap + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-right" : o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-bottom" : o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , w } , resize : function ( ) { } , populate : function ( items ) { BI . FlexVerticalLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_vertical" , BI . FlexVerticalLayout ) , BI . FlexWrapperCenterLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexWrapperCenterLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-flex-scrollable-center-adapt-layout clearfix" , scrollable : ! 0 } ) } , render : function ( ) { BI . FlexWrapperCenterLayout . superclass . render . apply ( this , arguments ) , this . $wrapper = BI . Widget . _renderEngine . createElement ( "<div>" ) . addClass ( "flex-scrollable-center-adapt-layout-wrapper" ) , this . populate ( this . options . items ) } , _addElement : function ( i , item ) { var o = this . options , w = BI . FlexWrapperCenterLayout . superclass . _addElement . apply ( this , arguments ) ; return w . element . css ( { position : "relative" , "margin-left" : ( 0 === i ? o . hgap : 0 ) + "px" , "margin-right" : o . hgap + "px" , "margin-top" : o . vgap + "px" , "margin-bottom" : o . vgap + "px" } ) , w } , appendFragment : function ( frag ) { this . $wrapper . append ( frag ) , this . element . append ( this . $wrapper ) } , _getWrapper : function ( ) { return this . $wrapper } , resize : function ( ) { } , populate : function ( items ) { BI . FlexWrapperCenterLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.flex_scrollable_center_adapt" , BI . FlexWrapperCenterLayout ) , BI . FlexWrapperHorizontalCenter = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . FlexWrapperHorizontalCenter . superclass . props . apply ( this , arguments ) , { baseCls : " bi - flex - scrollable - vertical - center - adapt - layou
} ) , o . hgap + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-left" : ( 0 === i ? o . hgap : 0 ) + o . lgap + ( item . lgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) !== 0 && w . element . css ( { "margin-right" : o . hgap + o . rgap + ( item . rgap || 0 ) + ( item . hgap || 0 ) + "px" } ) , o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) !== 0 && w . element . css ( { "margin-bottom" : o . vgap + o . bgap + ( item . bgap || 0 ) + ( item . vgap || 0 ) + "px" } ) , w } , resize : function ( ) { this . stroke ( this . options . items ) } , populate : function ( items ) { BI . InlineLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.inline" , BI . InlineLayout ) , BI . LatticeLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . LatticeLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-lattice-layout clearfix" } ) } , render : function ( ) { BI . LatticeLayout . superclass . render . apply ( this , arguments ) , this . populate ( this . options . items ) } , _addElement : function ( i , item ) { var o = this . options , w = BI . LatticeLayout . superclass . _addElement . apply ( this , arguments ) ; if ( o . columnSize && o . columnSize [ i ] ) var width = o . columnSize [ i ] / BI . sum ( o . columnSize ) * 100 + "%" ; else var width = 1 / this . options . items . length * 100 + "%" ; return w . element . css ( { position : "relative" , "float" : "left" , width : width } ) , w } , addItem : function ( item ) { var w = BI . LatticeLayout . superclass . addItem . apply ( this , arguments ) ; return this . resize ( ) , w } , addItemAt : function ( item ) { var w = BI . LatticeLayout . superclass . addItemAt . apply ( this , arguments ) ; return this . resize ( ) , w } , resize : function ( ) { this . stroke ( this . options . items ) } , populate : function ( items ) { BI . LatticeLayout . superclass . populate . apply ( this , arguments ) , this . _mount ( ) } } ) , BI . shortcut ( "bi.lattice" , BI . LatticeLayout ) , BI . TableLayout = BI . inherit ( BI . Layout , { props : function ( ) { return BI . extend ( BI . TableLayout . superclass . props . apply ( this , arguments ) , { baseCls : "bi-table-layout" , scrolly : ! 0 , columnSize : [ 200 , 200 , "fill" ] , rowSize : 30 , hgap : 0 , vgap : 0 , items : [ [ { el : { text : "label1" } } , { el : { text : "label2" } } , { el : { text : "label3" } } ] ] } ) } , render : function ( ) { BI . TableLayout . superclass . render . apply ( this , arguments ) , this . rows = 0 , this . populate ( this . options . items ) } , _addElement : function ( idx , arr ) { function firstElement ( item , row , col ) { 0 === row && item . addClass ( "first-row" ) , 0 === col && item . addClass ( "first-col" ) , item . addClass ( BI . isOdd ( row + 1 ) ? "odd-row" : "even-row" ) , item . addClass ( BI . isOdd ( col + 1 ) ? "odd-col" : "even-col" ) , item . addClass ( "center-element" ) } function firstObject ( item , row , col ) { var cls = "" ; 0 === row && ( cls += " first-row" ) , 0 === col && ( cls += " first-col" ) , cls += BI . isOdd ( row + 1 ) ? " odd-row" : " even-row" , cls += BI . isOdd ( col + 1 ) ? " odd-col" : " even-col" , item . cls = ( item . cls || "" ) + cls + " center-element" } function first ( item , row , col ) { item instanceof BI . Widget ? firstElement ( item . element , row , col ) : item . el instanceof BI . Widget ? firstElement ( item . el . element , row , col ) : item . el ? firstObject ( item . el , row , col ) : firstObject ( item , row , col ) } var o = this . options , abs = [ ] , left = 0 , right = 0 , i , j ; for ( i = 0 ; i < arr . length && BI . isNumber ( o . columnSize [ i ] ) ; i ++ ) first ( arr [ i ] , this . rows , i ) , abs . push ( BI . extend ( { top : 0 , bottom : 0 , left : o . columnSize [ i ] <= 1 ? 100 * left + "%" : left , width : o . columnSize [ i ] <= 1 ? 100 * o . columnSize [ i ] + "%" : o . columnSize [ i ] } , arr [ i ] ) ) , left += o . columnSize [ i ] + ( o . columnSize [ i ] < 1 ? 0 : o . hgap ) ; for ( j = arr . length - 1 ; j > i ; j -- ) { if ( ! BI . isNumber ( o . columnSize [ j ] ) ) throw new Error ( "item with fill can only be one" ) ; first ( arr [ j ] , this . rows , j ) , abs . push ( BI . extend ( { top : 0 , bottom : 0 , right : o . columnSize [ j ] <= 1 ? 100 * right + "%" : right , width : o . columnSize [ j ] <= 1 ? 100 * o . columnSize [ j ] + "%" : o . columnSize [ j ] } , arr [ j ] ) ) , right += o . columnSize [ j ] + ( o . columnSize [ j ] < 1 ? 0 : o . hgap ) } i >= 0 && i < arr . length && ( first ( arr [ i ] , this . rows , i ) , abs . push ( BI . extend ( { top : 0 , bottom : 0 , left : left <= 1 ? 100 * left + "%" : left , right : right <= 1 ? 100 * right + "%" : right } , arr [ i ] ) ) ) ; var w = BI . createWidget ( { type : "bi.absolute" , height : BI . isArray ( o . rowSize ) ? o . rowSize [ this . rows ] : o . rowSize , items : abs } ) ; return this . rows > 0 && this . getWidgetByName ( this . getName ( ) + ( this . rows - 1 ) ) . element . css ( { "margin-bottom" : o . vgap } ) , w . element . css ( { position : "relative" } ) , this . addWidget ( this . getName ( ) + this . rows ++ , w ) , w } , resize : function ( ) { } , addItem : function ( arr ) { if ( ! BI . isArray ( arr ) ) throw new Error ( "item must be array" ) ; return BI . TableLayout . superclass . addItem . apply ( this , arguments ) } , update : function ( ) { } , pop
_$1 . each ( [ "slice" , "splice" ] , function ( method ) { originalMethods [ method ] = Array . prototype [ method ] } ) , Array . prototype . splice = function ( ) { this . _ _ref _ _ = makeHashCode ( ) ; for ( var _len = arguments . length , args = Array ( _len ) , _key = 0 ; _key < _len ; _key ++ ) args [ _key ] = arguments [ _key ] ; return originalMethods . splice . apply ( this , args ) } ; var rhashcode = /\d\.\d{4}/ , isIE9Below = isIE ( ) && getIEVersion ( ) < 9 , _toString = Object . prototype . toString , bailRE = /[^\w.$]/ , nextTick = function ( ) { function nextTickHandler ( ) { pending = ! 1 ; var copies = callbacks . slice ( 0 ) ; callbacks . length = 0 ; for ( var i = 0 ; i < copies . length ; i ++ ) copies [ i ] ( ) } var callbacks = [ ] , pending = ! 1 , timerFunc = void 0 ; if ( "undefined" != typeof setImmediate && isNative ( setImmediate ) ) timerFunc = function timerFunc ( ) { setImmediate ( nextTickHandler ) } ; else if ( "undefined" == typeof MessageChannel || ! isNative ( MessageChannel ) && "[object MessageChannelConstructor]" !== MessageChannel . toString ( ) ) if ( "undefined" != typeof Promise && isNative ( Promise ) ) { var p = Promise . resolve ( ) ; timerFunc = function timerFunc ( ) { p . then ( nextTickHandler ) } } else timerFunc = function timerFunc ( ) { setTimeout ( nextTickHandler , 0 ) } ; else { var channel = new MessageChannel , port = channel . port2 ; channel . port1 . onmessage = nextTickHandler , timerFunc = function timerFunc ( ) { port . postMessage ( 1 ) } } return function queueNextTick ( cb , ctx ) { var _resolve = void 0 ; if ( callbacks . push ( function ( ) { if ( cb ) try { cb . call ( ctx ) } catch ( e ) { console . error ( e ) } else _resolve && _resolve ( ctx ) } ) , pending || ( pending = ! 0 , timerFunc ( ) ) , ! cb && "undefined" != typeof Promise ) return new Promise ( function ( resolve , reject ) { _resolve = resolve } ) } } ( ) , SymbolProto = "undefined" != typeof Symbol ? Symbol . prototype : null , ObjProto = Object . prototype , toString = ObjProto . toString , deepEq = function deepEq ( a , b , aStack , bStack ) { a instanceof _$1 && ( a = a . _wrapped ) , b instanceof _$1 && ( b = b . _wrapped ) ; var className = toString . call ( a ) ; if ( className !== toString . call ( b ) ) return ! 1 ; switch ( className ) { case "[object RegExp]" : case "[object String]" : return "" + a == "" + b ; case "[object Number]" : return + a !== + a ? + b !== + b : 0 === + a ? 1 / + a === 1 / b : + a === + b ; case "[object Date]" : case "[object Boolean]" : return + a === + b ; case "[object Symbol]" : return SymbolProto . valueOf . call ( a ) === SymbolProto . valueOf . call ( b ) } var areArrays = "[object Array]" === className ; if ( ! areArrays ) { if ( "object" != typeof a || "object" != typeof b ) return ! 1 ; var aCtor = a . constructor , bCtor = b . constructor ; if ( aCtor !== bCtor && ! ( _$1 . isFunction ( aCtor ) && aCtor instanceof aCtor && _$1 . isFunction ( bCtor ) && bCtor instanceof bCtor ) && "constructor" in a && "constructor" in b ) return ! 1 } aStack = aStack || [ ] , bStack = bStack || [ ] ; for ( var length = aStack . length ; length -- ; ) if ( aStack [ length ] === a ) return bStack [ length ] === b ; if ( aStack . push ( a ) , bStack . push ( b ) , areArrays ) { if ( length = a . length , length !== b . length ) return ! 1 ; for ( ; length -- ; ) if ( ! eq ( a [ length ] , b [ length ] , aStack , bStack ) ) return ! 1 } else { var keys = _$1 . keys ( a ) , key = void 0 ; if ( length = keys . length , _$1 . keys ( b ) . length !== length ) return ! 1 ; for ( ; length -- ; ) { if ( key = keys [ length ] , $$skips . indexOf ( key ) !== - 1 ) return ! 0 ; if ( Object . keys ( b ) . indexOf ( key ) === - 1 || ! eq ( a [ key ] , b [ key ] , aStack , bStack ) ) return ! 1 } } return aStack . pop ( ) , bStack . pop ( ) , ! 0 } , eq = function eq ( a , b , aStack , bStack ) { if ( a === b ) return 0 !== a || 1 / a === 1 / b ; if ( null == a || null == b ) return ! 1 ; if ( a !== a ) return b !== b ; var type = typeof a ; return ( "function" === type || "object" === type || "object" == typeof b ) && ( "function" === type || deepEq ( a , b , aStack , bStack ) ) } , mixinInjection = { } , falsy$1 = void 0 , operators = { "||" : falsy$1 , "&&" : falsy$1 , "(" : falsy$1 , ")" : falsy$1 } , allModelInstances = { } , allDefineModelInstances = { } , emptyFn = function emptyFn ( ) { } , TTL = 10 , Watcher = function ( ) { function Watcher ( _ref ) { var get = _ref . get , last = _ref . last , listener = _ref . listener , sync = _ref . sync , deep = _ref . deep , id = _ref . id ; return _classCallCheck ( this , Watcher ) , this . id = id , this . get = get , this . last = cloneShadow ( last ) , this . listener = listener || emptyFn , this . sync = sync || ! 1 , { id : this . id , get : this . get , last : this . last , listener : this . listener } } return Watcher . prototype . getInstance = function getInstance ( ) { return this } , Watcher } ( ) , nextListener = function ( ) { var callbackMap = { } ; return function queueNextListener ( listener , ctx ) { var id = listener . id , cb = listener . cb ; id && callbackMap [ id ] || ( nextTick ( function ( ) { cb ( ) , callbackMap [ id ] = ! 1 } , ctx ) , callbackMap [ id ] = ! 0 ) } } ( ) , Model = function ( ) { function Model ( ) { _clas
} ) , v } , getValue : function ( ) { var v = [ ] ; return BI . each ( this . buttons , function ( i , item ) { return item . isEnabled ( ) && ! BI . isFunction ( item . setSelected ) ? void ( v = BI . concat ( v , item . getValue ( ) ) ) : void ( item . isEnabled ( ) && item . isSelected && item . isSelected ( ) && v . push ( item . getValue ( ) ) ) } ) , v } , getSelectedButtons : function ( ) { var btns = [ ] ; return BI . each ( this . buttons , function ( i , item ) { return item . isEnabled ( ) && ! BI . isFunction ( item . setSelected ) ? void ( btns = btns . concat ( item . getSelectedButtons ( ) ) ) : void ( item . isSelected && item . isSelected ( ) && btns . push ( item ) ) } ) , btns } , getNotSelectedButtons : function ( ) { var btns = [ ] ; return BI . each ( this . buttons , function ( i , item ) { return item . isEnabled ( ) && ! BI . isFunction ( item . setSelected ) ? void ( btns = btns . concat ( item . getNotSelectedButtons ( ) ) ) : void ( item . isSelected && ! item . isSelected ( ) && btns . push ( item ) ) } ) , btns } , getAllLeaves : function ( ) { var leaves = [ ] ; return BI . each ( this . buttons , function ( i , item ) { return item . isEnabled ( ) && ! BI . isFunction ( item . setSelected ) ? void ( leaves = leaves . concat ( item . getAllLeaves ( ) ) ) : void ( item . isEnabled ( ) && leaves . push ( item ) ) } ) , leaves } , getIndexByValue : function ( value ) { var index = - 1 ; return BI . any ( this . buttons , function ( i , item ) { var vs = item . getValue ( ) ; if ( item . isEnabled ( ) && ( vs === value || BI . contains ( vs , value ) ) ) return index = i , ! 0 } ) , index } , getNodeById : function ( id ) { var node ; return BI . any ( this . buttons , function ( i , item ) { if ( item . isEnabled ( ) ) { if ( item . attr ( "id" ) === id ) return node = item , ! 0 ; if ( BI . isFunction ( item . getNodeById ) && ( node = item . getNodeById ( id ) ) ) return ! 0 } } ) , node } , getNodeByValue : function ( value ) { var node ; return BI . any ( this . buttons , function ( i , item ) { if ( item . isEnabled ( ) ) if ( BI . isFunction ( item . getNodeByValue ) ) { if ( node = item . getNodeByValue ( value ) ) return ! 0 } else if ( item . attr ( "value" ) === value ) return node = item , ! 0 } ) , node } } ) , BI . ButtonTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.button_tree" , BI . ButtonTree ) , BI . TreeView = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . TreeView . superclass . _defaultConfig . apply ( this , arguments ) , { _baseCls : "bi-tree" , paras : { selectedValues : { } } , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . TreeView . superclass . _init . apply ( this , arguments ) ; var o = this . options ; this . _stop = ! 1 , this . _createTree ( ) , this . tip = BI . createWidget ( { type : "bi.loading_bar" , invisible : ! 0 , handler : BI . bind ( this . _loadMore , this ) } ) , BI . createWidget ( { type : "bi.vertical" , scrollable : ! 0 , scrolly : ! 1 , element : this , items : [ this . tip ] } ) , BI . isNotNull ( o . value ) && this . setSelectedValue ( o . value ) , BI . isIE9Below && BI . isIE9Below ( ) && this . element . addClass ( "hack" ) } , _createTree : function ( ) { this . id = "bi-tree" + BI . UUID ( ) , this . nodes && this . nodes . destroy ( ) , this . tree && this . tree . destroy ( ) , this . tree = BI . createWidget ( { type : "bi.layout" , element : "<ul id='" + this . id + "' class='ztree'></ul>" } ) , BI . createWidget ( { type : "bi.default" , element : this . element , items : [ this . tree ] } ) } , _selectTreeNode : function ( treeId , treeNode ) { this . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . CLICK , treeNode , this ) , this . fireEvent ( BI . TreeView . EVENT _CHANGE , treeNode , this ) } , _configSetting : function ( ) { function onClick ( event , treeId , treeNode ) { var checked = treeNode . checked , status = treeNode . getCheckStatus ( ) ; status . half === ! 0 && status . checked === ! 0 && ( checked = ! 1 ) , self . nodes . checkNode ( treeNode , ! checked , ! 0 , ! 0 ) } function getUrl ( treeId , treeNode ) { var parentNode = self . _getParentValues ( treeNode ) ; treeNode . times = treeNode . times || 1 ; var param = "id=" + treeNode . id + "×=" + treeNode . times ++ + "&parentValues= " + _global . encodeURIComponent ( BI . jsonEncode ( parentNode ) ) + "&checkState=" + _global . encodeURIComponent ( BI . jsonEncode ( treeNode . getCheckStatus ( ) ) ) ; return "&" + param } function beforeExpand ( treeId , treeNode ) { return treeNode . isAjaxing ? ( BI . Msg . toast ( "Please Wait。" , "warning" ) , ! 1 ) : ( treeNode . children || ( treeNode . times = 1 , ajaxGetNodes ( treeNode , "refresh" ) ) , ! 0 ) } function onAsyncSuccess ( event , treeId , treeNode , msg ) { if ( treeNode . halfCheck = ! 1 , msg && 0 !== msg . length && ! /^<html>[\s,\S]*<\/html>$/gi . test ( msg ) && ! self . _stop ) { var zTree = self . nodes , totalCount = treeNode . count || 0 ; treeNode . children . length > totalCount ? ( treeNode . count = treeNode . children . length , BI . delay ( function ( ) { ajaxGetNodes ( treeNode ) } , perTime ) ) : ( zTree . updateNode ( treeNode ) , zTree . selectNode ( treeNode . children [ 0 ] ) ) } } function onAsyncError ( event , treeId , treeNode , XMLHt
BI . Combo = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var conf = BI . Combo . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-combo" , trigger : "click" , toggle : ! 0 , direction : "bottom" , logic : { dynamic : ! 0 } , container : null , isDefaultInit : ! 1 , destroyWhenHide : ! 1 , isNeedAdjustHeight : ! 0 , isNeedAdjustWidth : ! 0 , stopEvent : ! 1 , stopPropagation : ! 1 , adjustLength : 0 , adjustXOffset : 0 , adjustYOffset : 0 , hideChecker : BI . emptyFn , offsetStyle : "left" , el : { } , popup : { } , comboClass : "bi-combo-popup" , hoverClass : "bi-combo-hover" } ) } , _init : function ( ) { BI . Combo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . _initCombo ( ) , this . _initPullDownAction ( ) , this . combo . on ( BI . Controller . EVENT _CHANGE , function ( type , value , obj ) { self . isEnabled ( ) && self . isValid ( ) && ( type === BI . Events . EXPAND && self . _popupView ( ) , type === BI . Events . COLLAPSE && self . _hideView ( ) , type === BI . Events . EXPAND && ( self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , self . fireEvent ( BI . Combo . EVENT _EXPAND ) ) , type === BI . Events . COLLAPSE && ( self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , self . isViewVisible ( ) && self . fireEvent ( BI . Combo . EVENT _COLLAPSE ) ) , type === BI . Events . CLICK && self . fireEvent ( BI . Combo . EVENT _TRIGGER _CHANGE , obj ) ) } ) , self . element . on ( "mouseenter." + self . getName ( ) , function ( e ) { self . isEnabled ( ) && self . isValid ( ) && self . combo . isEnabled ( ) && self . combo . isValid ( ) && self . element . addClass ( o . hoverClass ) } ) , self . element . on ( "mouseleave." + self . getName ( ) , function ( e ) { self . isEnabled ( ) && self . isValid ( ) && self . combo . isEnabled ( ) && self . combo . isValid ( ) && self . element . removeClass ( o . hoverClass ) } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "vertical" , BI . extend ( o . logic , { items : [ { el : this . combo } ] } ) ) ) ) , o . isDefaultInit && this . _assertPopupView ( ) , BI . Resizers . add ( this . getName ( ) , BI . bind ( function ( ) { this . isViewVisible ( ) && this . _hideView ( ) } , this ) ) } , _toggle : function ( ) { this . _assertPopupViewRender ( ) , this . popupView . isVisible ( ) ? this . _hideView ( ) : this . isEnabled ( ) && this . _popupView ( ) } , _initPullDownAction : function ( ) { function hide ( ) { self . isEnabled ( ) && self . isValid ( ) && self . combo . isEnabled ( ) && self . combo . isValid ( ) && o . toggle === ! 0 && ( self . _hideView ( ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . COLLAPSE , "" , self . combo ) , self . fireEvent ( BI . Combo . EVENT _COLLAPSE ) ) , self . popupView && self . popupView . element . off ( "mouseenter." + self . getName ( ) ) . off ( "mouseleave." + self . getName ( ) ) , enterPopup = ! 1 } var self = this , o = this . options , evs = ( this . options . trigger || "" ) . split ( "," ) , st = function ( e ) { o . stopEvent && e . stopEvent ( ) , o . stopPropagation && e . stopPropagation ( ) } , enterPopup = ! 1 ; BI . each ( evs , function ( i , ev ) { switch ( ev ) { case "hover" : self . element . on ( "mouseenter." + self . getName ( ) , function ( e ) { self . isEnabled ( ) && self . isValid ( ) && self . combo . isEnabled ( ) && self . combo . isValid ( ) && ( self . _popupView ( ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , self . combo ) , self . fireEvent ( BI . Combo . EVENT _EXPAND ) ) } ) , self . element . on ( "mouseleave." + self . getName ( ) , function ( e ) { self . popupView && ( self . popupView . element . on ( "mouseenter." + self . getName ( ) , function ( e ) { enterPopup = ! 0 , self . popupView . element . on ( "mouseleave." + self . getName ( ) , function ( e ) { hide ( ) } ) , self . popupView . element . off ( "mouseenter." + self . getName ( ) ) } ) , BI . defer ( function ( ) { enterPopup || hide ( ) } , 50 ) ) } ) ; break ; case "click" : var debounce = BI . debounce ( function ( e ) { self . combo . element . _ _isMouseInBounds _ _ ( e ) && self . isEnabled ( ) && self . isValid ( ) && self . combo . isEnabled ( ) && self . combo . isValid ( ) && ( o . toggle ? self . _toggle ( ) : self . _popupView ( ) , self . isViewVisible ( ) ? ( self . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , self . combo ) , self . fireEvent ( BI . Combo . EVENT _EXPAND ) ) : ( self . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . COLLAPSE , "" , self . combo ) , self . fireEvent ( BI . Combo . EVENT _COLLAPSE ) ) ) } , BI . EVENT _RESPONSE _TIME , { leading : ! 0 , trailing : ! 1 } ) ; self . element . off ( ev + "." + self . getName ( ) ) . on ( ev + "." + self . getName ( ) , function ( e ) { debounce ( e ) , st ( e ) } ) ; break ; case "click-hover" : var debounce = BI . debounce ( function ( e ) { self . combo . element . _ _isMouseInBounds _ _ ( e ) && self . isEnabled ( ) && self . isValid ( ) && self . combo . isEnabled ( ) && self . combo . isValid ( ) && ( self . _popupView ( ) , self . isViewVisible ( ) && ( self . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . EXPAND , "" , self . com
container : this , render : this . popupView } , o . masker ) , this ) } , _startSearch : function ( ) { this . _assertPopupView ( ) , this . _stop = ! 1 , this . _isSearching = ! 0 , this . fireEvent ( BI . Searcher . EVENT _START ) , this . popupView . startSearch && this . popupView . startSearch ( ) , BI . nextTick ( function ( name ) { BI . Maskers . show ( name ) } , this . getName ( ) ) } , _pauseSearch : function ( ) { var o = this . options , name = this . getName ( ) ; this . _stop = ! 0 , BI . nextTick ( function ( name ) { BI . Maskers . hide ( name ) } , this . getName ( ) ) , this . _isSearching === ! 0 && ( this . popupView && this . popupView . pauseSearch && this . popupView . pauseSearch ( ) , this . fireEvent ( BI . Searcher . EVENT _PAUSE ) ) , this . _isSearching = ! 1 } , _stopSearch : function ( ) { var o = this . options , name = this . getName ( ) ; this . _stop = ! 0 , BI . Maskers . hide ( name ) , this . _isSearching === ! 0 && ( this . popupView && this . popupView . stopSearch && this . popupView . stopSearch ( ) , this . fireEvent ( BI . Searcher . EVENT _STOP ) ) , this . _isSearching = ! 1 } , _search : function ( ) { var self = this , o = this . options , keyword = this . editor . getValue ( ) ; if ( "" !== keyword && ! this . _stop ) { if ( o . isAutoSearch ) { var items = o . adapter && ( o . adapter . getItems && o . adapter . getItems ( ) || o . adapter . attr ( "items" ) ) || [ ] , finding = BI . Func . getSearchResult ( items , keyword ) , match = finding . match , find = finding . find ; return this . popupView . populate ( find , match , keyword ) , o . isAutoSync && o . adapter && o . adapter . getValue && this . popupView . setValue ( o . adapter . getValue ( ) ) , void self . fireEvent ( BI . Searcher . EVENT _SEARCHING ) } this . popupView . loading && this . popupView . loading ( ) , o . onSearch ( { times : 1 , keyword : keyword , selectedValues : o . adapter && o . adapter . getValue ( ) } , function ( searchResult , matchResult ) { if ( ! self . _stop ) { var args = [ ] . slice . call ( arguments ) ; args . length > 0 && args . push ( keyword ) , BI . Maskers . show ( self . getName ( ) ) , self . popupView . populate . apply ( self . popupView , args ) , o . isAutoSync && o . adapter && o . adapter . getValue && self . popupView . setValue ( o . adapter . getValue ( ) ) , self . popupView . loaded && self . popupView . loaded ( ) , self . fireEvent ( BI . Searcher . EVENT _SEARCHING ) } } ) } } , setAdapter : function ( adapter ) { this . options . adapter = adapter , BI . Maskers . remove ( this . getName ( ) ) } , doSearch : function ( ) { this . isSearching ( ) && this . _search ( ) } , stopSearch : function ( ) { this . _stopSearch ( ) ; try { this . editor . blur ( ) } catch ( e ) { if ( ! this . editor . blur ) throw new Error ( "editor没有实现blur方法" ) } finally { this . editor . setValue ( "" ) } } , isSearching : function ( ) { return this . _isSearching } , isViewVisible : function ( ) { return this . editor . isEnabled ( ) && BI . Maskers . isVisible ( this . getName ( ) ) } , getView : function ( ) { return this . popupView } , hasMatched : function ( ) { return this . _assertPopupView ( ) , this . popupView . hasMatched ( ) } , adjustHeight : function ( ) { BI . Maskers . has ( this . getName ( ) ) && BI . Maskers . get ( this . getName ( ) ) . isVisible ( ) && BI . Maskers . show ( this . getName ( ) ) } , adjustView : function ( ) { this . isViewVisible ( ) && BI . Maskers . show ( this . getName ( ) ) } , setValue : function ( v ) { BI . isNull ( this . popupView ) ? this . options . popup . value = v : this . popupView . setValue ( v ) } , getKeyword : function ( ) { return this . editor . getValue ( ) } , getKeywords : function ( ) { return this . editor . getKeywords ( ) } , getValue : function ( ) { var o = this . options ; return o . isAutoSync && o . adapter && o . adapter . getValue ? o . adapter . getValue ( ) : this . isSearching ( ) ? this . popupView . getValue ( ) : o . adapter && o . adapter . getValue ? o . adapter . getValue ( ) : BI . isNull ( this . popupView ) ? o . popup . value : this . popupView . getValue ( ) } , populate : function ( result , searchResult , keyword ) { var o = this . options ; this . _assertPopupView ( ) , this . popupView . populate . apply ( this . popupView , arguments ) , o . isAutoSync && o . adapter && o . adapter . getValue && this . popupView . setValue ( o . adapter . getValue ( ) ) } , empty : function ( ) { this . popupView && this . popupView . empty ( ) } , destroyed : function ( ) { BI . Maskers . remove ( this . getName ( ) ) } } ) , BI . Searcher . EVENT _CHANGE = "EVENT_CHANGE" , BI . Searcher . EVENT _START = "EVENT_START" , BI . Searcher . EVENT _STOP = "EVENT_STOP" , BI . Searcher . EVENT _PAUSE = "EVENT_PAUSE" , BI . Searcher . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . Searcher . EVENT _AFTER _INIT = "EVENT_AFTER_INIT" , BI . shortcut ( "bi.searcher" , BI . Searcher ) , BI . Switcher = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . Switcher . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-switcher" , direction : BI . Direction . Top , trigger : "click" , toggle : ! 0 , el : { } , popup : { } , adapter : null , masker : { } , switcherClass : "bi-switcher-popup" , h
} ) ) ) ) } ) ) ) ) } , _createView : function ( ) { var o = this . options ; return this . button _group = BI . createWidget ( o . el , { type : "bi.button_group" , value : o . value } ) , this . button _group . element . css ( { "min-height" : o . minHeight + "px" , "padding-top" : o . innerVGap + "px" , "padding-bottom" : o . innerVGap + "px" } ) , this . button _group } , _createTool : function ( ) { var o = this . options ; if ( ! 1 !== o . tool ) return BI . createWidget ( o . tool ) } , _createTab : function ( ) { var o = this . options ; if ( 0 !== o . tabs . length ) return BI . createWidget ( { type : "bi.center" , cls : "list-view-tab" , height : 25 , items : o . tabs , value : o . value } ) } , _createToolBar : function ( ) { var o = this . options ; if ( 0 !== o . buttons . length ) return BI . createWidget ( { type : "bi.center" , cls : "list-view-toolbar bi-high-light bi-split-top" , height : 24 , items : BI . createItems ( o . buttons , { once : ! 1 , shadow : ! 0 , isShadowShowingOnSelected : ! 0 } ) } ) } , getView : function ( ) { return this . view } , populate : function ( items ) { this . view . populate . apply ( this . view , arguments ) } , resetWidth : function ( w ) { this . options . width = w , this . element . width ( w ) } , resetHeight : function ( h ) { var tbHeight = this . toolbar ? this . toolbar . attr ( "height" ) || 24 : 0 , tabHeight = this . tab ? this . tab . attr ( "height" ) || 24 : 0 , toolHeight = ( this . tool && this . tool . attr ( "height" ) || 24 ) * ( this . tool && this . tool . isVisible ( ) ? 1 : 0 ) , resetHeight = h - tbHeight - tabHeight - toolHeight - 2 * this . options . innerVGap ; this . view . resetHeight ? this . view . resetHeight ( resetHeight ) : this . view . element . css ( { "max-height" : resetHeight + "px" } ) } , setValue : function ( selectedValues ) { this . tab && this . tab . setValue ( selectedValues ) , this . view . setValue ( selectedValues ) } , getValue : function ( ) { return this . view . getValue ( ) } } ) , BI . PopupView . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.popup_view" , BI . PopupView ) , BI . SearcherView = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { var conf = BI . SearcherView . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-searcher-view bi-card" , tipText : BI . i18nText ( "BI-No_Select" ) , chooseType : BI . Selection . Single , matcher : { type : "bi.button_group" , behaviors : { redmark : function ( ) { return ! 0 } } , items : [ ] , layouts : [ { type : "bi.vertical" } ] } , searcher : { type : "bi.button_group" , behaviors : { redmark : function ( ) { return ! 0 } } , items : [ ] , layouts : [ { type : "bi.vertical" } ] } } ) } , _init : function ( ) { BI . SearcherView . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . matcher = BI . createWidget ( o . matcher , { type : "bi.button_group" , chooseType : o . chooseType , behaviors : { redmark : function ( ) { return ! 0 } } , layouts : [ { type : "bi.vertical" } ] , value : o . value } ) , this . matcher . on ( BI . Controller . EVENT _CHANGE , function ( type , val , ob ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , type === BI . Events . CLICK && self . fireEvent ( BI . SearcherView . EVENT _CHANGE , val , ob ) } ) , this . spliter = BI . createWidget ( { type : "bi.vertical" , height : 1 , hgap : 10 , items : [ { type : "bi.layout" , height : 1 , cls : "searcher-view-spliter bi-background" } ] } ) , this . searcher = BI . createWidget ( o . searcher , { type : "bi.button_group" , chooseType : o . chooseType , behaviors : { redmark : function ( ) { return ! 0 } } , layouts : [ { type : "bi.vertical" } ] , value : o . value } ) , this . searcher . on ( BI . Controller . EVENT _CHANGE , function ( type , val , ob ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , type === BI . Events . CLICK && self . fireEvent ( BI . SearcherView . EVENT _CHANGE , val , ob ) } ) , BI . createWidget ( { type : "bi.vertical" , element : this , items : [ this . matcher , this . spliter , this . searcher ] } ) } , startSearch : function ( ) { } , stopSearch : function ( ) { } , setValue : function ( v ) { this . matcher . setValue ( v ) , this . searcher . setValue ( v ) } , getValue : function ( ) { return this . matcher . getValue ( ) . concat ( this . searcher . getValue ( ) ) } , populate : function ( searchResult , matchResult , keyword ) { searchResult || ( searchResult = [ ] ) , matchResult || ( matchResult = [ ] ) , this . setTipVisible ( searchResult . length + matchResult . length === 0 ) , this . spliter . setVisible ( BI . isNotEmptyArray ( matchResult ) && BI . isNotEmptyArray ( searchResult ) ) , this . matcher . populate ( matchResult , keyword ) , this . searcher . populate ( searchResult , keyword ) } , empty : function ( ) { this . searcher . empty ( ) , this . matcher . empty ( ) } , hasMatched : function ( ) { return this . matcher . getAllButtons ( ) . length > 0 } } ) , BI . SearcherView . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.searcher_view" , BI . SearcherView ) , BI . ListView = BI . inherit ( BI . Widget , { props : function ( ) { return { baseCls : " bi - list - view
} ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByDirection ( o . direction ) , BI . extend ( o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( o . direction , this . icon , this . text ) } ) ) ) ) } , setValue : function ( ) { this . isReadOnly ( ) || this . text . setValue . apply ( this . text , arguments ) } , getValue : function ( ) { return this . text . getValue ( ) } , setText : function ( ) { this . text . setText . apply ( this . text , arguments ) } , getText : function ( ) { return this . text . getText ( ) } , doClick : function ( ) { BI . IconTextItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . IconTextItem . EVENT _CHANGE , this . getValue ( ) , this ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doHighLight : function ( ) { this . text . doHighLight . apply ( this . text , arguments ) } , unHighLight : function ( ) { this . text . unHighLight . apply ( this . text , arguments ) } } ) , BI . IconTextItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.icon_text_item" , BI . IconTextItem ) , BI . TextIconItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var conf = BI . TextIconItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-text-icon-item" , logic : { dynamic : ! 1 } , cls : "close-ha-font" , iconHeight : null , iconWidth : null , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . TextIconItem . superclass . _init . apply ( this , arguments ) ; var o = this . options , c = this . _const ; this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , hgap : o . textHgap , vgap : o . textVgap , lgap : o . textLgap , rgap : o . textRgap , text : o . text , value : o . value , keyword : o . keyword , height : o . height } ) , this . icon = BI . createWidget ( { type : "bi.icon_label" , width : o . height , height : o . height , iconWidth : o . iconWidth , iconHeight : o . iconHeight } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , this . text , this . icon ) } ) ) ) ) } , doClick : function ( ) { BI . TextIconItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . TextIconItem . 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 . TextIconItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.text_icon_item" , BI . TextIconItem ) , BI . TextItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { var conf = BI . TextItem . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-text-item" , textAlign : "left" , whiteSpace : "nowrap" , textHgap : 0 , textVgap : 0 , textLgap : 0 , textRgap : 0 } ) } , _init : function ( ) { BI . TextItem . superclass . _init . apply ( this , arguments ) ; var o = this . options ; this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : o . textAlign , whiteSpace : o . whiteSpace , textHeight : "nowrap" == o . whiteSpace ? o . height : o . textHeight , height : o . height , hgap : o . textHgap , vgap : o . textVgap , lgap : o . textLgap , rgap : o . textRgap , text : o . text , value : o . value , keyword : o . keyword , py : o . py } ) } , doClick : function ( ) { BI . TextItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . TextItem . 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 .
clearInterval ( rpe . interval ) ; try { var responseText = ( iframe . contentWindow . document || iframe . contentWindow . contentDocument ) . body . innerHTML , attachO = BI . jsonDecode ( responseText ) ; handler . file . type . indexOf ( "image" ) != - 1 && ( attachO . attach _type = "image" ) , attachO . filename = _global . decodeURIComponent ( handler . file . fileName ) , 1 == handler . maxlength ? handler . attach _array [ 0 ] = attachO : handler . attach _array . push ( attachO ) } catch ( e ) { isFunction ( handler . onerror ) && handler . onerror ( rpe , event || _global . event ) } isFunction ( handler . onload ) && handler . onload ( rpe , { responseText : responseText } ) } , target = [ "AjaxUpload" , ( new Date ) . getTime ( ) , String ( Math . random ( ) ) . substring ( 2 ) ] . join ( "_" ) ; try { var form = document . createElement ( '<form enctype="multipart/form-data"></form>' ) , iframe = handler . iframe || ( handler . iframe = document . createElement ( '<iframe id="' + target + '" name="' + target + '" src="' + url + '"></iframe>' ) ) } catch ( e ) { var form = document . createElement ( "form" ) , iframe = handler . iframe || ( handler . iframe = document . createElement ( "iframe" ) ) ; form . setAttribute ( "enctype" , "multipart/form-data" ) , iframe . setAttribute ( "name" , iframe . id = target ) , iframe . setAttribute ( "src" , url ) } with ( iframe . style . position = "absolute" , iframe . style . left = iframe . style . top = "-10000px" , iframe . onload = onload , iframe . onerror = function ( event ) { isFunction ( handler . onerror ) && handler . onerror ( rpe , event || _global . event ) } , iframe . onreadystatechange = function ( ) { /loaded|complete/i . test ( iframe . readyState ) ? onload ( ) : isFunction ( handler . onloadprogress ) && ( rpe . loaded < rpe . total && ++ rpe . loaded , handler . onloadprogress ( rpe , { readyState : { loading : 2 , interactive : 3 , loaded : 4 , complete : 4 } [ iframe . readyState ] || 1 } ) ) } , form . setAttribute ( "action" , handler . url + "&filename=" + _global . encodeURIComponent ( handler . file . fileName ) ) , form . setAttribute ( "target" , iframe . id ) , form . setAttribute ( "method" , "post" ) , form . appendChild ( handler . file ) , form . style . display = "none" , isFunction ( handler . onloadstart ) && handler . onloadstart ( rpe , { } ) , document . body || document . documentElement ) appendChild ( iframe ) , appendChild ( form ) , form . submit ( ) ; return handler } , xhr = null , sendFile } ( Object . prototype . toString ) , sendFiles = function ( handler , maxSize , width , height ) { var length = handler . files . length , i = 0 , onload = handler . onload , onloadstart = handler . onloadstart ; for ( handler . current = 0 , handler . total = 0 , handler . sent = 0 ; handler . current < length ; ) handler . total += handler . files [ handler . current ] . fileSize || handler . files [ handler . current ] . size , handler . current ++ ; return handler . current = 0 , length && handler . files [ 0 ] . fileSize !== - 1 ? ( handler . file = handler . files [ handler . current ] , sendFile ( handler , maxSize , width , height ) . onload = function ( rpe , xhr ) { handler . onloadstart = null , handler . sent += handler . files [ handler . current ] . fileSize || handler . files [ handler . current ] . size , ++ handler . current < length ? ( handler . file = handler . files [ handler . current ] , sendFile ( handler , maxSize , width , height ) . onload = arguments . callee ) : onload && ( handler . onloadstart = onloadstart , handler . onload = onload , handler . onload ( rpe , xhr ) ) } ) : length && ( handler . total = 100 * length , handler . file = handler . files [ handler . current ] , sendFile ( handler , maxSize , width , height ) . onload = function ( rpe , xhr ) { var callee = arguments . callee ; handler . onloadstart = null , handler . sent += 100 , ++ handler . current < length ? ( /\b(chrome|safari)\b/i . test ( navigator . userAgent ) && ( handler . iframe . parentNode . removeChild ( handler . iframe ) , handler . iframe = null ) , setTimeout ( function ( ) { handler . file = handler . files [ handler . current ] , sendFile ( handler , maxSize , width , height ) . onload = callee } , 15 ) ) : onload && setTimeout ( function ( ) { handler . iframe . parentNode . removeChild ( handler . iframe ) , handler . iframe = null , handler . onloadstart = onloadstart , handler . onload = onload , handler . onload ( rpe , xhr ) } , 15 ) } ) , handler } ; BI . File = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { var conf = BI . File . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-file display-block" , tagName : "input" , attributes : { type : "file" } , name : "" , url : "" , multiple : ! 0 , accept : "" , maxSize : - 1 } ) } , _init : function ( ) { var self = this , o = this . options ; BI . File . superclass . _init . apply ( this , arguments ) , o . multiple === ! 0 && this . element . attr ( "multiple" , "multiple" ) , this . element . attr ( "name" , o . name || this . getName ( ) ) , this . element . attr ( "title" , o . title || "" ) } , created :
dataFilter : null } , callback : { beforeAsync : null , beforeClick : null , beforeDblClick : null , beforeRightClick : null , beforeMouseDown : null , beforeMouseUp : null , beforeExpand : null , beforeCollapse : null , beforeRemove : null , onAsyncError : null , onAsyncSuccess : null , onNodeCreated : null , onClick : null , onDblClick : null , onRightClick : null , onMouseDown : null , onMouseUp : null , onExpand : null , onCollapse : null , onRemove : null } } , _initRoot = function ( setting ) { var r = data . getRoot ( setting ) ; r || ( r = { } , data . setRoot ( setting , r ) ) , r [ setting . data . key . children ] = [ ] , r . expandTriggerFlag = ! 1 , r . curSelectedList = [ ] , r . noSelection = ! 0 , r . createdNodes = [ ] , r . zId = 0 , r . _ver = ( new Date ) . getTime ( ) } , _initCache = function ( setting ) { var c = data . getCache ( setting ) ; c || ( c = { } , data . setCache ( setting , c ) ) , c . nodes = [ ] , c . doms = [ ] } , _bindEvent = function ( setting ) { var o = setting . treeObj , c = consts . event ; o . bind ( c . NODECREATED , function ( event , treeId , node ) { tools . apply ( setting . callback . onNodeCreated , [ event , treeId , node ] ) } ) , o . bind ( c . CLICK , function ( event , srcEvent , treeId , node , clickFlag ) { tools . apply ( setting . callback . onClick , [ srcEvent , treeId , node , clickFlag ] ) } ) , o . bind ( c . EXPAND , function ( event , treeId , node ) { tools . apply ( setting . callback . onExpand , [ event , treeId , node ] ) } ) , o . bind ( c . COLLAPSE , function ( event , treeId , node ) { tools . apply ( setting . callback . onCollapse , [ event , treeId , node ] ) } ) , o . bind ( c . ASYNC _SUCCESS , function ( event , treeId , node , msg ) { tools . apply ( setting . callback . onAsyncSuccess , [ event , treeId , node , msg ] ) } ) , o . bind ( c . ASYNC _ERROR , function ( event , treeId , node , XMLHttpRequest , textStatus , errorThrown ) { tools . apply ( setting . callback . onAsyncError , [ event , treeId , node , XMLHttpRequest , textStatus , errorThrown ] ) } ) , o . bind ( c . REMOVE , function ( event , treeId , treeNode ) { tools . apply ( setting . callback . onRemove , [ event , treeId , treeNode ] ) } ) , o . bind ( c . SELECTED , function ( event , srcEvent , treeId , node ) { tools . apply ( setting . callback . onSelected , [ srcEvent , treeId , node ] ) } ) , o . bind ( c . UNSELECTED , function ( event , srcEvent , treeId , node ) { tools . apply ( setting . callback . onUnSelected , [ srcEvent , treeId , node ] ) } ) } , _unbindEvent = function ( setting ) { var o = setting . treeObj , c = consts . event ; o . unbind ( c . NODECREATED ) . unbind ( c . CLICK ) . unbind ( c . EXPAND ) . unbind ( c . COLLAPSE ) . unbind ( c . ASYNC _SUCCESS ) . unbind ( c . ASYNC _ERROR ) . unbind ( c . REMOVE ) . unbind ( c . SELECTED ) . unbind ( c . UNSELECTED ) } , _eventProxy = function ( event ) { var target = event . target , setting = data . getSetting ( event . data . treeId ) , tId = "" , node = null , nodeEventType = "" , treeEventType = "" , nodeEventCallback = null , treeEventCallback = null , tmp = null ; if ( tools . eqs ( event . type , "mousedown" ) ? treeEventType = "mousedown" : tools . eqs ( event . type , "mouseup" ) ? treeEventType = "mouseup" : tools . eqs ( event . type , "contextmenu" ) ? treeEventType = "contextmenu" : tools . eqs ( event . type , "click" ) ? tools . eqs ( target . tagName , "span" ) && null !== target . getAttribute ( "treeNode" + consts . id . SWITCH ) ? ( tId = tools . getNodeMainDom ( target ) . id , nodeEventType = "switchNode" ) : ( tmp = tools . getMDom ( setting , target , [ { tagName : "a" , attrName : "treeNode" + consts . id . A } ] ) , tmp && ( tId = tools . getNodeMainDom ( tmp ) . id , nodeEventType = "clickNode" ) ) : tools . eqs ( event . type , "dblclick" ) && ( treeEventType = "dblclick" , tmp = tools . getMDom ( setting , target , [ { tagName : "a" , attrName : "treeNode" + consts . id . A } ] ) , tmp && ( tId = tools . getNodeMainDom ( tmp ) . id , nodeEventType = "switchNode" ) ) , treeEventType . length > 0 && 0 == tId . length && ( tmp = tools . getMDom ( setting , target , [ { tagName : "a" , attrName : "treeNode" + consts . id . A } ] ) , tmp && ( tId = tools . getNodeMainDom ( tmp ) . id ) ) , tId . length > 0 ) switch ( node = data . getNodeCache ( setting , tId ) , nodeEventType ) { case "switchNode" : node . isParent && ( tools . eqs ( event . type , "click" ) || tools . eqs ( event . type , "dblclick" ) && tools . apply ( setting . view . dblClickExpand , [ setting . treeId , node ] , setting . view . dblClickExpand ) ) ? nodeEventCallback = handler . onSwitchNode : nodeEventType = "" ; break ; case "clickNode" : nodeEventCallback = handler . onClickNode } switch ( treeEventType ) { case "mousedown" : treeEventCallback = handler . onZTreeMousedown ; break ; case "mouseup" : treeEventCallback = handler . onZTreeMouseup ; break ; case "dblclick" : treeEventCallback = handler . onZTreeDblclick ; break ; case "contextmenu" : treeEventCallback = handler . onZTreeContextmenu } var proxyResult = { stop : ! 1 , node : node , nodeEventType : nodeEventType , nodeEventCallback : nodeEventCallback , treeEventType : treeEventType , treeEventCallback : treeEventCallback } ;
var newLast = parentNode [ childKey ] [ childLength - 1 ] ; if ( tmp _ulObj = $$ ( newLast , consts . id . UL , setting ) , tmp _switchObj = $$ ( newLast , consts . id . SWITCH , setting ) , tmp _icoObj = $$ ( newLast , consts . id . ICON , setting ) , parentNode == root ) if ( 1 == parentNode [ childKey ] . length ) view . replaceSwitchClass ( newLast , tmp _switchObj , consts . line . ROOT ) ; else { var tmp _first _switchObj = $$ ( parentNode [ childKey ] [ 0 ] , consts . id . SWITCH , setting ) ; view . replaceSwitchClass ( parentNode [ childKey ] [ 0 ] , tmp _first _switchObj , consts . line . ROOTS ) , view . replaceSwitchClass ( newLast , tmp _switchObj , consts . line . BOTTOM ) } else view . replaceSwitchClass ( newLast , tmp _switchObj , consts . line . BOTTOM ) ; tmp _ulObj . removeClass ( consts . line . LINE ) } } else parentNode . isParent = ! 1 , parentNode . open = ! 1 , tmp _ulObj = $$ ( parentNode , consts . id . UL , setting ) , tmp _switchObj = $$ ( parentNode , consts . id . SWITCH , setting ) , tmp _icoObj = $$ ( parentNode , consts . id . ICON , setting ) , view . replaceSwitchClass ( parentNode , tmp _switchObj , consts . folder . DOCU ) , view . replaceIcoClass ( parentNode , tmp _icoObj , consts . folder . DOCU ) , tmp _ulObj . css ( "display" , "none" ) } } , replaceIcoClass : function ( node , obj , newName ) { if ( obj && ! node . isAjaxing ) { var tmpName = obj . attr ( "class" ) ; if ( void 0 != tmpName ) { var tmpList = tmpName . split ( "_" ) ; switch ( newName ) { case consts . folder . OPEN : case consts . folder . CLOSE : case consts . folder . DOCU : tmpList [ tmpList . length - 1 ] = newName } obj . attr ( "class" , tmpList . join ( "_" ) ) } } } , replaceSwitchClass : function ( node , obj , newName ) { if ( obj ) { var tmpName = obj . attr ( "class" ) ; if ( void 0 != tmpName ) { var tmpList = tmpName . split ( "_" ) ; switch ( newName ) { case consts . line . ROOT : case consts . line . ROOTS : case consts . line . CENTER : case consts . line . BOTTOM : case consts . line . NOLINE : tmpList [ 0 ] = view . makeNodeLineClassEx ( node ) + newName ; break ; case consts . folder . OPEN : case consts . folder . CLOSE : case consts . folder . DOCU : tmpList [ 1 ] = newName } obj . attr ( "class" , tmpList . join ( "_" ) ) , newName !== consts . folder . DOCU ? obj . removeAttr ( "disabled" ) : obj . attr ( "disabled" , "disabled" ) } } } , selectNode : function ( setting , node , addFlag ) { addFlag || view . cancelPreSelectedNode ( setting , null , node ) , $$ ( node , consts . id . A , setting ) . addClass ( consts . node . CURSELECTED ) , data . addSelectedNode ( setting , node ) , setting . treeObj . trigger ( consts . event . SELECTED , [ event , setting . treeId , node ] ) } , setNodeFontCss : function ( setting , treeNode ) { var aObj = $$ ( treeNode , consts . id . A , setting ) , fontCss = view . makeNodeFontCss ( setting , treeNode ) ; fontCss && aObj . css ( fontCss ) } , setNodeLineIcos : function ( setting , node ) { if ( node ) { var switchObj = $$ ( node , consts . id . SWITCH , setting ) , ulObj = $$ ( node , consts . id . UL , setting ) , icoObj = $$ ( node , consts . id . ICON , setting ) , ulLine = view . makeUlLineClass ( setting , node ) ; 0 == ulLine . length ? ulObj . removeClass ( consts . line . LINE ) : ulObj . addClass ( ulLine ) , switchObj . attr ( "class" , view . makeNodeLineClass ( setting , node ) ) , node . isParent ? switchObj . removeAttr ( "disabled" ) : switchObj . attr ( "disabled" , "disabled" ) , icoObj . removeAttr ( "style" ) , icoObj . attr ( "style" , view . makeNodeIcoStyle ( setting , node ) ) , icoObj . attr ( "class" , view . makeNodeIcoClass ( setting , node ) ) } } , setNodeName : function ( setting , node ) { var title = data . getNodeTitle ( setting , node ) , nObj = $$ ( node , consts . id . SPAN , setting ) ; if ( nObj . empty ( ) , setting . view . nameIsHTML ? nObj . html ( data . getNodeName ( setting , node ) ) : nObj . text ( data . getNodeName ( setting , node ) ) , tools . apply ( setting . view . showTitle , [ setting . treeId , node ] , setting . view . showTitle ) ) { var aObj = $$ ( node , consts . id . A , setting ) ; aObj . attr ( "title" , title ? title : "" ) } } , setNodeTarget : function ( setting , node ) { var aObj = $$ ( node , consts . id . A , setting ) ; aObj . attr ( "target" , view . makeNodeTarget ( node ) ) } , setNodeUrl : function ( setting , node ) { var aObj = $$ ( node , consts . id . A , setting ) , url = view . makeNodeUrl ( setting , node ) ; null == url || 0 == url . length ? aObj . removeAttr ( "href" ) : aObj . attr ( "href" , url ) } , switchNode : function ( setting , node ) { if ( node . open || ! tools . canAsync ( setting , node ) ) view . expandCollapseNode ( setting , node , ! node . open ) ; else if ( setting . async . enable ) { if ( ! view . asyncNode ( setting , node ) ) return void view . expandCollapseNode ( setting , node , ! node . open ) } else node && view . expandCollapseNode ( setting , node , ! node . open ) } } ; $ . fn . zTree = { consts : _consts , _z : { tools : tools , view : view , event : event , data : data } , getZTreeObj : function ( treeId ) { var o = data . getZTreeTools ( treeId ) ; return o ? o : null } , destroy : function ( treeId ) { if ( treeId && treeId . length > 0 ) vie
this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . SingleSelectIconTextItem . superclass . doClick . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.single_select_icon_text_item" , BI . SingleSelectIconTextItem ) , BI . SingleSelectItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-single-select-item bi-list-item-active" , hgap : 10 , height : 24 , textAlign : "left" } ) } , _init : function ( ) { BI . SingleSelectItem . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . text = BI . createWidget ( { type : "bi.label" , element : this , textAlign : o . textAlign , whiteSpace : "nowrap" , textHeight : o . height , height : o . height , hgap : o . hgap , text : o . text , keyword : o . keyword , value : o . value , title : o . title || o . text , warningTitle : o . warningTitle , py : o . py } ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . SingleSelectItem . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . SingleSelectItem . EVENT _CHANGE , this . isSelected ( ) , this ) } , setSelected : function ( v ) { BI . SingleSelectItem . superclass . setSelected . apply ( this , arguments ) } } ) , BI . SingleSelectItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_item" , BI . SingleSelectItem ) , BI . SingleSelectRadioItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectRadioItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-single-select-radio-item" , logic : { dynamic : ! 1 } , hgap : 10 , height : 24 } ) } , _init : function ( ) { BI . SingleSelectRadioItem . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . radio = BI . createWidget ( { type : "bi.radio" } ) , this . text = BI . createWidget ( { type : "bi.label" , cls : "list-item-text" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : o . height , height : o . height , hgap : o . hgap , text : o . text , keyword : o . keyword , value : o . value , py : o . py } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "horizontal" , BI . extend ( o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "left" , { type : "bi.center_adapt" , items : [ this . radio ] , width : 16 } , this . text ) } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . SingleSelectRadioItem . superclass . doClick . apply ( this , arguments ) , this . radio . setSelected ( this . isSelected ( ) ) , this . isValid ( ) && this . fireEvent ( BI . SingleSelectRadioItem . EVENT _CHANGE , this . isSelected ( ) , this ) } , setSelected : function ( v ) { BI . SingleSelectRadioItem . superclass . setSelected . apply ( this , arguments ) , this . radio . setSelected ( v ) } } ) , BI . SingleSelectRadioItem . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_radio_item" , BI . SingleSelectRadioItem ) , BI . ArrowNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . ArrowNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-arrow-group-node bi-list-item" , logic : { dynamic : ! 1 } , id : "" , pId : "" , open : ! 1 , height : 24 } ) } , _init : function ( ) { var self = this , o = this . options ; BI . ArrowNode . superclass . _init . apply ( this , arguments ) , this . checkbox = BI . createWidget ( { type : "bi.arrow_group_node_checkbox" } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : o . height , height : o . height , hgap : o . hgap , text : o . text , value : o . value , py : o . py } ) , this . checkbox . on ( BI . Controller . EVENT _CHANGE , function ( type ) { type === BI . Events . CLICK && self . setSelected ( self . isSelected ( ) ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; var type = BI . LogicFactory . createLogicTypeByDirection ( BI . Direction . Left ) , items = BI . LogicFactory . createLogicItemsByDirection ( BI . Direction . Left , { width : 16 , el : this . checkbox } , this . text ) ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( type , BI . extend ( o . logic , { items : items } ) ) ) ) } , doRedMark : function ( ) { this . text . doRedMark . apply ( this . text , arguments ) } , unRedMark : function ( ) { this . text . unRedMark . apply ( this . text , arguments ) } , doClick : function ( ) { BI . ArrowNode . superclass . doClick . apply ( this , arguments ) , this . checkbox . setSelected ( this . isOpened ( ) ) } , setText : fu
INTERVAL : 12 , getStartYear : function ( year ) { var cur = BI . getDate ( ) . getFullYear ( ) ; return year - ( ( year - cur + 3 ) % BI . YearCalendar . INTERVAL + 12 ) % BI . YearCalendar . INTERVAL } , getEndYear : function ( year ) { return BI . YearCalendar . getStartYear ( year ) + BI . YearCalendar . INTERVAL - 1 } , getPageByYear : function ( year ) { var cur = BI . getDate ( ) . getFullYear ( ) ; return year = BI . YearCalendar . getStartYear ( year ) , ( year - cur + 3 ) / BI . YearCalendar . INTERVAL } } ) , BI . shortcut ( "bi.year_calendar" , BI . YearCalendar ) , BI . ArrowTreeGroupNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . ArrowTreeGroupNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-arrow-group-node-checkbox" } ) } , setSelected : function ( v ) { BI . ArrowTreeGroupNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , v ? this . element . removeClass ( "expander-right-font" ) . addClass ( "expander-down-font" ) : this . element . removeClass ( "expander-down-font" ) . addClass ( "expander-right-font" ) } } ) , BI . shortcut ( "bi.arrow_group_node_checkbox" , BI . ArrowTreeGroupNodeCheckbox ) , BI . CheckingMarkNode = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . CheckingMarkNode . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "check-mark-font" } ) } , _init : function ( ) { BI . CheckingMarkNode . superclass . _init . apply ( this , arguments ) , this . setSelected ( this . options . selected ) } , setSelected : function ( v ) { BI . CheckingMarkNode . superclass . setSelected . apply ( this , arguments ) , v === ! 0 ? this . element . addClass ( "check-mark-font" ) : this . element . removeClass ( "check-mark-font" ) } } ) , BI . shortcut ( "bi.checking_mark_node" , BI . CheckingMarkNode ) , BI . FirstTreeNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . FirstTreeNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "tree-collapse-icon-type2" , iconWidth : 24 , iconHeight : 24 } ) } , setSelected : function ( v ) { BI . FirstTreeNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , v === ! 0 ? this . element . addClass ( "tree-expand-icon-type2" ) : this . element . removeClass ( "tree-expand-icon-type2" ) } } ) , BI . shortcut ( "bi.first_tree_node_checkbox" , BI . FirstTreeNodeCheckbox ) , BI . LastTreeNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . LastTreeNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "tree-collapse-icon-type4" , iconWidth : 24 , iconHeight : 24 } ) } , setSelected : function ( v ) { BI . LastTreeNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , v === ! 0 ? this . element . addClass ( "tree-expand-icon-type4" ) : this . element . removeClass ( "tree-expand-icon-type4" ) } } ) , BI . shortcut ( "bi.last_tree_node_checkbox" , BI . LastTreeNodeCheckbox ) , BI . MidTreeNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . MidTreeNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "tree-collapse-icon-type3" , iconWidth : 24 , iconHeight : 24 } ) } , setSelected : function ( v ) { BI . MidTreeNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , v === ! 0 ? this . element . addClass ( "tree-expand-icon-type3" ) : this . element . removeClass ( "tree-expand-icon-type3" ) } } ) , BI . shortcut ( "bi.mid_tree_node_checkbox" , BI . MidTreeNodeCheckbox ) , BI . TreeNodeCheckbox = BI . inherit ( BI . IconButton , { _defaultConfig : function ( ) { return BI . extend ( BI . TreeNodeCheckbox . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "tree-collapse-icon-type1" , iconWidth : 24 , iconHeight : 24 } ) } , setSelected : function ( v ) { BI . TreeNodeCheckbox . superclass . setSelected . apply ( this , arguments ) , v ? this . element . addClass ( "tree-expand-icon-type1" ) : this . element . removeClass ( "tree-expand-icon-type1" ) } } ) , BI . shortcut ( "bi.tree_node_checkbox" , BI . TreeNodeCheckbox ) , 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 self = this , o = this . options ; this . editor = BI . createWidget ( o . editor , { type : "bi.simple_color_picker_editor" } ) , this . editor . on ( BI . ColorPickerEditor . EVENT _CHANGE , function ( ) { self . setValue ( this . getValue ( ) ) } ) , this . farbtastic = BI . createWidget ( { type : "bi.farbtastic" } ) , this . farbtastic . o
self . fireEvent ( BI . BubbleCombo . EVENT _BEFORE _POPUPVIEW , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _AFTER _POPUPVIEW , function ( ) { self . _showTriangle ( ) , self . fireEvent ( BI . BubbleCombo . EVENT _AFTER _POPUPVIEW , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _HIDEVIEW , function ( ) { self . _hideTriangle ( ) , self . fireEvent ( BI . BubbleCombo . EVENT _BEFORE _HIDEVIEW , arguments ) } ) , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { self . fireEvent ( BI . BubbleCombo . EVENT _AFTER _HIDEVIEW , arguments ) } ) } , _getAdjustLength : function ( ) { return this . _const . TRIANGLE _LENGTH + this . options . adjustLength } , _createTriangle : function ( direction ) { var pos = { } , op = { } , adjustLength = this . options . adjustLength , offset = this . element . offset ( ) , left = offset . left , right = offset . left + this . element . outerWidth ( ) , top = offset . top , bottom = offset . top + this . element . outerHeight ( ) ; switch ( direction ) { case "left" : pos = { top : top , height : this . element . outerHeight ( ) , left : left - adjustLength - this . _const . TRIANGLE _LENGTH } , op = { width : this . _const . TRIANGLE _LENGTH } ; break ; case "right" : pos = { top : top , height : this . element . outerHeight ( ) , left : right + adjustLength } , op = { width : this . _const . TRIANGLE _LENGTH } ; break ; case "top" : pos = { left : left , width : this . element . outerWidth ( ) , top : top - adjustLength - this . _const . TRIANGLE _LENGTH } , op = { height : this . _const . TRIANGLE _LENGTH } ; break ; case "bottom" : pos = { left : left , width : this . element . outerWidth ( ) , top : bottom + adjustLength } , op = { height : this . _const . TRIANGLE _LENGTH } } this . triangle && this . triangle . destroy ( ) , this . triangle = BI . createWidget ( op , { type : "bi.center_adapt" , cls : "button-combo-triangle-wrapper" , items : [ { type : "bi.layout" , cls : "bubble-combo-triangle-" + direction } ] } ) , pos . el = this . triangle , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ pos ] } ) } , _createLeftTriangle : function ( ) { this . _createTriangle ( "left" ) } , _createRightTriangle : function ( ) { this . _createTriangle ( "right" ) } , _createTopTriangle : function ( ) { this . _createTriangle ( "top" ) } , _createBottomTriangle : function ( ) { this . _createTriangle ( "bottom" ) } , _showTriangle : function ( ) { var pos = this . combo . getPopupPosition ( ) ; switch ( pos . dir ) { case "left,top" : case "left,bottom" : this . _createLeftTriangle ( ) ; break ; case "right,top" : case "right,bottom" : this . _createRightTriangle ( ) ; break ; case "top,left" : case "top,right" : this . _createTopTriangle ( ) ; break ; case "bottom,left" : case "bottom,right" : this . _createBottomTriangle ( ) } } , _hideTriangle : function ( ) { this . triangle && this . triangle . destroy ( ) , this . triangle = null } , hideView : function ( ) { this . _hideTriangle ( ) , this . combo && this . combo . hideView ( ) } , showView : function ( ) { this . combo && this . combo . showView ( ) } , isViewVisible : function ( ) { return this . combo . isViewVisible ( ) } } ) , BI . BubbleCombo . EVENT _TRIGGER _CHANGE = "EVENT_TRIGGER_CHANGE" , BI . BubbleCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . BubbleCombo . EVENT _EXPAND = "EVENT_EXPAND" , BI . BubbleCombo . EVENT _COLLAPSE = "EVENT_COLLAPSE" , BI . BubbleCombo . EVENT _AFTER _INIT = "EVENT_AFTER_INIT" , BI . BubbleCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . BubbleCombo . EVENT _AFTER _POPUPVIEW = "EVENT_AFTER_POPUPVIEW" , BI . BubbleCombo . EVENT _BEFORE _HIDEVIEW = "EVENT_BEFORE_HIDEVIEW" , BI . BubbleCombo . EVENT _AFTER _HIDEVIEW = "EVENT_AFTER_HIDEVIEW" , BI . shortcut ( "bi.bubble_combo" , BI . BubbleCombo ) , BI . BubblePopupView = BI . inherit ( BI . PopupView , { _defaultConfig : function ( ) { var config = BI . BubblePopupView . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( config , { baseCls : config . baseCls + " bi-bubble-popup-view" , minWidth : 220 , maxWidth : 300 , minHeight : 90 } ) } , _init : function ( ) { BI . BubblePopupView . superclass . _init . apply ( this , arguments ) } } ) , BI . shortcut ( "bi.bubble_popup_view" , BI . BubblePopupView ) , BI . BubblePopupBarView = BI . inherit ( BI . BubblePopupView , { _defaultConfig : function ( ) { return BI . extend ( BI . BubblePopupBarView . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-bubble-bar-popup-view" , buttons : [ { value : ! 1 , text : BI . i18nText ( "BI-Basic_Cancel" ) , ghost : ! 0 } , { text : BI . i18nText ( BI . i18nText ( "BI-Basic_Sure" ) ) , value : ! 0 } ] } ) } , _init : function ( ) { BI . BubblePopupBarView . superclass . _init . apply ( this , arguments ) } , _createToolBar : function ( ) { var o = this . options , self = this , items = [ ] ; return BI . each ( o . buttons , function ( i , buttonOpt ) { BI . isWidget ( buttonOpt ) ? items . push ( buttonOpt ) : items . push ( BI . extend ( { type : "bi.button" , height : 24 , handler : function
} ) , BI . isKey ( o . value ) ? this . clear . visible ( ) : this . clear . invisible ( ) } , _checkClear : function ( ) { this . getValue ( ) ? this . clear . visible ( ) : this . clear . invisible ( ) } , setWaterMark : function ( v ) { this . options . watermark = v , this . editor . setWaterMark ( v ) } , focus : function ( ) { this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) } , getValue : function ( ) { if ( this . isValid ( ) ) { var res = this . editor . getValue ( ) . match ( /[\S]+/g ) ; return BI . isNull ( res ) ? "" : res [ res . length - 1 ] } } , setValue : function ( v ) { this . editor . setValue ( v ) , BI . isKey ( v ) && 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 _CHANGE _CONFIRM = "EVENT_CHANGE_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 conf = BI . ShelterEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . 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 self = this , o = this . options ; this . editor = BI . createWidget ( { type : "bi.editor" , height : o . height , hgap : o . hgap , vgap : o . vgap , lgap : o . lgap , rgap : o . rgap , tgap : o . tgap , bgap : o . bgap , value : o . value , validationChecker : o . validationChecker , quitChecker : o . quitChecker , allowBlank : o . allowBlank , watermark : o . watermark , errorText : o . errorText } ) , this . text = BI . createWidget ( { type : "bi.text_button" , cls : "shelter-editor-text" , title : o . title , warningTitle : o . warningTitle , tipType : o . tipType , textAlign : o . textAlign , height : o . height , hgap : o . hgap } ) , 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 ] = self , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . text . on ( BI . TextButton . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _CLICK _LABEL ) } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _FOCUS , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _BLUR , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _BLUR , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CLICK , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _CLICK , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _KEY _DOWN , function ( v ) { self . fireEvent ( BI . ShelterEditor . EVENT _KEY _DOWN , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _VALID , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _VALID , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { self . _showHint ( ) , self . _checkText ( ) , self . fireEvent ( BI . ShelterEditor . EVENT _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE _CONFIRM , function ( ) { self . _showHint ( ) , self . _checkText ( ) , self . fireEvent ( BI . ShelterEditor . EVENT _CHANGE _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _START , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _START , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _PAUSE , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _PAUSE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _STOP , function ( ) { self . fireEvent ( BI . ShelterEditor . EVENT _STOP , arguments ) } ) , this . editor . on ( BI . Editor . E
var o = this . options ; BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( "vertical" , BI . extend ( o . logic , { items : BI . LogicFactory . createLogicItemsByDirection ( "top" , this . _createTitle ( ) , this . options . el ) } ) ) ) ) } , _createTitle : function ( ) { var self = this , o = this . options ; return this . text = BI . createWidget ( { type : "bi.label" , cls : "panel-title-text" , text : o . title , height : 30 } ) , this . button _group = BI . createWidget ( { type : "bi.button_group" , items : o . titleButtons , layouts : [ { type : "bi.center_adapt" , lgap : 10 } ] } ) , this . button _group . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . button _group . on ( BI . ButtonGroup . EVENT _CHANGE , function ( value , obj ) { self . fireEvent ( BI . Panel . EVENT _CHANGE , value , obj ) } ) , { el : { type : "bi.left_right_vertical_adapt" , cls : "panel-title bi-header-background bi-border-bottom" , height : 29 , items : { left : [ this . text ] , right : [ this . button _group ] } , lhgap : 10 , rhgap : 10 } , height : 29 } } , setTitle : function ( title ) { this . text . setValue ( title ) } } ) , BI . Panel . EVENT _CHANGE = "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 self = this , o = this . options ; return [ { type : "bi.label" , text : o . text , height : o . height , value : o . value , hgap : o . hgap , ref : function ( ) { self . text = this } } , { type : "bi.absolute" , items : [ { el : { type : "bi.layout" , cls : "line-segment-button-line" , height : 2 , ref : function ( ) { self . line = this } } , left : 0 , right : 0 , bottom : 0 } ] } ] } , setSelected : function ( v ) { BI . LinearSegmentButton . superclass . setSelected . apply ( this , arguments ) , v ? this . line . element . addClass ( "bi-high-light-background" ) : this . line . element . removeClass ( "bi-high-light-background" ) } , setText : function ( text ) { this . text . setText ( text ) } } ) , BI . shortcut ( "bi.linear_segment_button" , BI . LinearSegmentButton ) , BI . LinearSegment = BI . inherit ( BI . Widget , { props : { baseCls : "bi-linear-segment bi-split-bottom" , items : [ ] , height : 29 } , render : function ( ) { var self = this , o = this . options ; return { type : "bi.button_group" , items : BI . createItems ( o . items , { type : "bi.linear_segment_button" , height : o . height - 1 } ) , layout : [ { type : "bi.center" } ] , listeners : [ { eventName : "__EVENT_CHANGE__" , action : function ( ) { self . fireEvent ( "__EVENT_CHANGE__" , arguments ) } } , { eventName : "EVENT_CHANGE" , action : function ( ) { self . fireEvent ( "EVENT_CHANGE" ) } } ] , ref : function ( ) { self . buttonGroup = this } } } , setValue : function ( v ) { this . buttonGroup . setValue ( v ) } , setEnabledValue : function ( v ) { this . buttonGroup . setEnabledValue ( v ) } , getValue : function ( ) { return this . buttonGroup . getValue ( ) } } ) , BI . shortcut ( "bi.linear_segment" , BI . LinearSegment ) , BI . SelectList = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . SelectList . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-select-list" , direction : BI . Direction . Top , logic : { dynamic : ! 0 } , items : [ ] , itemsCreator : BI . emptyFn , hasNext : BI . emptyFn , onLoaded : BI . emptyFn , toolbar : { type : "bi.multi_select_bar" , iconWrapperWidth : 36 } , el : { type : "bi.list_pane" } } ) } , _init : function ( ) { BI . SelectList . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . toolbar = BI . createWidget ( o . toolbar ) , this . allSelected = ! 1 , this . toolbar . on ( BI . Controller . EVENT _CHANGE , function ( type , value , obj ) { self . allSelected = this . isSelected ( ) , type === BI . Events . CLICK && ( self . setAllSelected ( self . allSelected ) , self . fireEvent ( BI . SelectList . EVENT _CHANGE , value , obj ) ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . list = BI . createWidget ( o . el , { type : "bi.list_pane" , items : o . items , itemsCreator : function ( op , callback ) { 1 === op . times && self . toolbar . setVisible ( ! 1 ) , o . itemsCreator ( op , function ( items ) { callback . apply ( self , arguments ) , 1 === op . times && ( self . toolbar . setVisible ( items && items . length > 0 ) , self . toolbar . setEnable ( self . isEnabled ( ) && items && items . length > 0 ) ) , self . _checkAllSelected ( ) } ) } , onLoaded : o . onLoaded , hasNext : o . hasNext } ) , this . list . on ( BI . Controller . EVENT _CHANGE , function ( type , value , obj ) { type === BI . Events . CLICK && ( self . _checkAllSelected ( ) , self . fireEvent ( BI . SelectList . EVENT _CHANGE , value , obj ) ) , self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , BI . createWidget ( BI . extend ( { element : this } , BI . LogicFactory . createLogic ( BI . LogicFactory . createLogicTypeByD
self . fireEvent ( BI . Controller . EVENT _CHANGE , BI . Events . CLICK , self . isSelected ( ) , self ) } ) , this . half . on ( BI . HalfIconButton . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . MultiSelectBar . EVENT _CHANGE , self . isSelected ( ) , self ) } ) , this . text = BI . createWidget ( { type : "bi.label" , textAlign : "left" , whiteSpace : "nowrap" , textHeight : o . height , height : o . height , hgap : o . hgap , text : o . text , keyword : o . keyword , value : o . value , py : o . py } ) , BI . createWidget ( { type : "bi.htape" , element : this , items : [ { width : o . iconWrapperWidth , el : { type : "bi.center_adapt" , items : [ this . checkbox , this . half ] } } , { el : this . text } ] } ) } , _setSelected : function ( v ) { this . checkbox . setSelected ( ! ! v ) } , beforeClick : function ( ) { var isHalf = this . isHalfSelected ( ) , isSelected = this . isSelected ( ) ; isHalf === ! 0 ? this . setSelected ( ! 0 ) : this . setSelected ( ! isSelected ) } , setSelected : function ( v ) { this . checkbox . setSelected ( v ) , this . setHalfSelected ( ! 1 ) } , setHalfSelected : function ( b ) { this . halfSelected = ! ! b , b === ! 0 ? ( this . checkbox . setSelected ( ! 1 ) , this . half . visible ( ) , this . checkbox . invisible ( ) ) : ( this . half . invisible ( ) , this . checkbox . visible ( ) ) } , isHalfSelected : function ( ) { return ! this . isSelected ( ) && ! ! this . halfSelected } , isSelected : function ( ) { return this . checkbox . isSelected ( ) } , setValue : function ( selectedValues ) { BI . MultiSelectBar . superclass . setValue . apply ( this , arguments ) ; var isAllChecked = this . options . isAllCheckedBySelectedValue . apply ( this , arguments ) ; this . _setSelected ( isAllChecked ) , ! isAllChecked && this . setHalfSelected ( this . options . isHalfCheckedBySelectedValue . apply ( this , arguments ) ) } , doClick : function ( ) { BI . MultiSelectBar . superclass . doClick . apply ( this , arguments ) , this . isValid ( ) && this . fireEvent ( BI . MultiSelectBar . EVENT _CHANGE , this . isSelected ( ) , this ) } } ) , BI . MultiSelectBar . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_bar" , BI . MultiSelectBar ) , 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 ( nodes , layer , pNode ) { var self = this ; return BI . each ( nodes , function ( i , node ) { var extend = { layer : layer } ; BI . isKey ( node . id ) || ( node . id = BI . UUID ( ) ) , extend . pNode = pNode , node . isParent === ! 0 || node . parent === ! 0 || BI . isNotEmptyArray ( node . children ) ? ( extend . type = "bi.mid_plus_group_node" , i === nodes . length - 1 && ( extend . type = "bi.last_plus_group_node" , extend . isLastNode = ! 0 ) , 0 !== i || pNode || ( extend . type = "bi.first_plus_group_node" ) , 0 === i && i === nodes . length - 1 && ( extend . type = "bi.plus_group_node" ) , BI . defaults ( node , extend ) , self . _formatItems ( node . children , layer + 1 , node ) ) : ( extend . type = "bi.mid_tree_leaf_item" , 0 !== i || pNode || ( extend . type = "bi.first_tree_leaf_item" ) , i === nodes . length - 1 && ( extend . type = "bi.last_tree_leaf_item" ) , BI . defaults ( node , extend ) ) } ) , nodes } , _assertId : function ( sNodes ) { BI . each ( sNodes , function ( i , node ) { BI . isKey ( node . id ) || ( node . id = BI . UUID ( ) ) } ) } , initTree : function ( nodes ) { var self = this , o = this . options ; this . empty ( ) , this . _assertId ( nodes ) , this . tree = BI . createWidget ( { type : "bi.custom_tree" , element : this , expander : BI . extend ( { el : { } , popup : { type : "bi.custom_tree" } } , o . expander ) , items : this . _formatItems ( BI . Tree . transformToTreeFormat ( nodes ) , 0 ) , value : o . value , el : BI . extend ( { type : "bi.button_tree" , chooseType : 0 , layouts : [ { type : "bi.vertical" } ] } , o . el ) } ) , this . tree . on ( BI . Controller . EVENT _CHANGE , function ( type , value , ob ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) , type === BI . Events . CLICK && self . fireEvent ( BI . LevelTree . EVENT _CHANGE , value , ob ) } ) } , stroke : function ( nodes ) { this . tree . stroke . apply ( this . tree , arguments ) } , populate : function ( items , keyword ) { items = this . _formatItems ( BI . Tree . transformToTreeFormat ( items ) , 0 ) , this . tree . populate ( items , keyword ) } , setValue : function ( v ) { this . tree . setValue ( v ) } , getValue : function ( ) { return this . tree . getValue ( ) } , getAllLeaves : function ( ) { return this . tree . getAllLeaves ( ) } , getNodeById : function ( id ) { return this . tree . getNodeById ( id ) } , getNodeByValue : function ( id ) { return this . tree . getNodeByValue ( id ) } } ) , BI . LevelTree . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.level_tree" , BI . LevelTree ) , BI . DisplayTree = BI . inherit ( BI . TreeView , { _defaultConfig : function ( ) { ret
min : "1900-01-01" , max : "2099-12-31" , selectedTime : null } ) } , _init : function ( ) { BI . StaticDatePaneCard . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . today = BI . getDate ( ) , this . _year = this . today . getFullYear ( ) , this . _month = this . today . getMonth ( ) + 1 , this . selectedTime = o . selectedTime || { year : this . _year , month : this . _month } , this . datePicker = BI . createWidget ( { type : "bi.date_picker" , behaviors : o . behaviors , min : o . min , max : o . max } ) , this . datePicker . on ( BI . DatePicker . EVENT _CHANGE , function ( ) { var value = self . datePicker . getValue ( ) , monthDay = BI . getMonthDays ( BI . getDate ( value . year , value . month - 1 , 1 ) ) , day = self . selectedTime . day || 0 ; day > monthDay && ( day = monthDay ) , self . selectedTime = { year : value . year , month : value . month } , 0 !== day && ( self . selectedTime . day = day ) , self . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( self . selectedTime ) ) , self . calendar . setValue ( self . selectedTime ) , 0 !== day && self . 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 ( ) { self . selectedTime = self . calendar . getValue ( ) , self . calendar . empty ( ) , self . setValue ( self . selectedTime ) , self . fireEvent ( BI . DateCalendarPopup . EVENT _CHANGE ) } ) , this . setValue ( o . 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-split-top" } , height : 1 , top : 40 , left : 0 , right : 0 } ] } ) } , _createNav : function ( v ) { var date = BI . Calendar . getDateJSONByPage ( v ) , calendar = BI . createWidget ( { type : "bi.calendar" , logic : { dynamic : ! 1 } , min : this . options . min , max : this . options . max , year : date . year , month : date . month , day : this . selectedTime . day } ) ; return calendar } , _getNewCurrentDate : function ( ) { var today = BI . getDate ( ) ; return { year : today . getFullYear ( ) , month : today . getMonth ( ) + 1 } } , _setCalenderValue : function ( date ) { this . calendar . setSelect ( BI . Calendar . getPageByDateJSON ( date ) ) , this . calendar . setValue ( date ) , this . selectedTime = date } , _setDatePicker : function ( timeOb ) { BI . isNull ( timeOb ) || BI . isNull ( timeOb . year ) || BI . isNull ( timeOb . month ) ? this . datePicker . setValue ( this . _getNewCurrentDate ( ) ) : this . datePicker . setValue ( timeOb ) } , _setCalendar : function ( timeOb ) { BI . isNull ( timeOb ) || BI . isNull ( timeOb . day ) ? ( this . calendar . empty ( ) , this . _setCalenderValue ( this . _getNewCurrentDate ( ) ) ) : this . _setCalenderValue ( timeOb ) } , setValue : function ( timeOb ) { this . _setDatePicker ( timeOb ) , this . _setCalendar ( timeOb ) } , 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 self = this , o = this . options ; return { type : "bi.vtape" , items : [ { el : { type : "bi.linear_segment" , cls : "bi-split-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 value = this . getValue ( ) [ 0 ] ; switch ( self . dateTab . setSelect ( value ) , value ) { case BI . DynamicDatePane . Static : var date = BI . DynamicDateHelper . getCalculation ( self . dynamicPane . getValue ( ) ) ; self . ymd . setValue ( { year : date . getFullYear ( ) , month : date . getMonth ( ) + 1 , day : date . getDate ( ) } ) ; break ; case BI . DynamicDatePane . Dynamic : self . dynamicPane . setValue ( { year : 0 } ) } self . fireEvent ( "EVENT_CHANGE" ) } } ] , ref : function ( ) { self . switcher = this } } , height : 30 } , { type : "bi.tab" , ref : function ( ) { self . dateTab = this } , showIndex : BI . DynamicDatePane . Static , cardCreator : function ( v ) { switch ( v ) { case BI . DynamicDatePane . Static : return { type : "bi.static_date_pane_card" , behaviors : o . behaviors , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . fireEvent ( "EVENT_CHANGE" ) } } ] , ref : function ( ) { self . ymd = this } } ; case BI . DynamicDatePane . Dynamic : default : return { type : "bi.dynamic_date_card" , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . _checkValue ( self . getValue ( ) ) && self . fireEvent ( "EVENT_CHANGE" ) } } ] , ref : function ( ) { self . dynamicPane = this } } } } } ] } } , mounted : function ( ) { this . setValue
BI . isNotNull ( value . dateType ) && ( plainValue [ value . dateType ] = { value : value . value , offset : value . offset } ) } ) , self . resultPane . populate ( self . _getParamJson ( BI . map ( self . checkgroup . getValue ( ) , function ( idx , v ) { var obj = { dateType : v } ; return BI . has ( plainValue , v ) && ( obj . value = plainValue [ v ] . value , obj . offset = plainValue [ v ] . offset ) , obj } ) ) ) , self . position = BI . DynamicDateCard . OFFSET . CURRENT , self . fireEvent ( "EVENT_CHANGE" ) } } ] } , { type : "bi.vertical_adapt" , lgap : 2 , items : [ { el : { type : "bi.multi_select_item" , ref : function ( ) { self . 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 ( ) && self . checkgroup . setValue ( ) , self . resultPane . populate ( this . isSelected ( ) ? self . _getParamJson ( [ { dateType : BI . DynamicDateCard . TYPE . WORK _DAY } ] ) : [ ] ) , self . position = BI . DynamicDateCard . OFFSET . CURRENT , self . fireEvent ( "EVENT_CHANGE" ) } } ] } } ] , ref : function ( ) { self . workDay = this } } , { type : "bi.button_group" , items : this . _getParamJson ( [ { dateType : BI . DynamicDateCard . TYPE . YEAR } ] ) , ref : function ( ) { self . resultPane = this } , layouts : [ { type : "bi.vertical" , bgap : 10 , hgap : 10 } ] } ] } } , _getParamJson : function ( values , positionValue ) { var self = this , items = BI . map ( values , function ( idx , value ) { return { el : { type : "bi.dynamic_date_param_item" , dateType : value . dateType , value : value . value , offset : value . offset , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . fireEvent ( "EVENT_CHANGE" ) } } ] } , tgap : 0 === idx ? 5 : 0 } } ) ; if ( 1 === values . length && values [ 0 ] . dateType === BI . DynamicDateCard . TYPE . DAY ) { var comboItems = this . _getText ( BI . DynamicDateCard . TYPE . MONTH ) ; comboItems [ 0 ] . text = BI . i18nText ( "BI-Basic_Empty" ) , items . push ( { type : "bi.text_value_combo" , height : 24 , items : comboItems , container : null , value : positionValue || BI . DynamicDateCard . OFFSET . CURRENT , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . position = this . getValue ( ) [ 0 ] , self . fireEvent ( "EVENT_CHANGE" ) } } ] } ) } else 0 !== values . length && BI . last ( values ) . dateType !== BI . DynamicDateCard . TYPE . DAY && BI . last ( values ) . dateType !== BI . DynamicDateCard . TYPE . WORK _DAY && items . push ( { type : "bi.text_value_combo" , height : 24 , container : null , items : this . _getText ( BI . last ( values ) . dateType ) , value : positionValue || BI . DynamicDateCard . OFFSET . CURRENT , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . position = this . getValue ( ) [ 0 ] , self . fireEvent ( "EVENT_CHANGE" ) } } ] } ) ; return items } , _getText : function ( lastValue ) { switch ( lastValue ) { 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 ( type , v ) { return { dateType : type , value : Math . abs ( v ) , offset : v > 0 ? 1 : 0 } } , setValue : function ( v ) { v = v || { } , this . position = v . position || BI . DynamicDateCard . OFFSET . CURRENT ; var values = [ ] , valuesItems = [ ] ; BI . isNotNull ( v . year ) && ( values . push ( BI . DynamicDateCard . TYPE . YEAR ) , valuesItems . push ( this . _createValue ( BI . DynamicDateCard . TYPE . YEAR , v . year ) ) ) , BI . isNotNull ( v . quarter ) && ( values . push ( BI . DynamicDateCard . TYPE . QUARTER ) , valuesItems . push ( this . _createValue ( BI . DynamicDateCard . TYPE . QUARTER , v . quarter ) ) ) , BI . isNotNull ( v . month ) && ( values . push ( BI . DynamicDateCard . TYPE . MONTH ) , val
BI . DynamicDateTimeCombo . EVENT _BLUR = "EVENT_BLUR" , BI . DynamicDateTimeCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . DynamicDateTimeCombo . EVENT _VALID = "EVENT_VALID" , BI . DynamicDateTimeCombo . EVENT _ERROR = "EVENT_ERROR" , BI . DynamicDateTimeCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.dynamic_date_time_combo" , BI . DynamicDateTimeCombo ) , BI . extend ( BI . DynamicDateTimeCombo , { Static : 1 , Dynamic : 2 } ) , BI . DynamicDateTimePopup = BI . inherit ( BI . Widget , { constants : { tabHeight : 30 , buttonHeight : 24 } , props : { baseCls : "bi-dynamic-date-time-popup" , width : 248 , height : 385 } , _init : function ( ) { BI . DynamicDateTimePopup . superclass . _init . apply ( this , arguments ) ; var self = this , opts = this . options , c = this . constants ; this . storeValue = { type : BI . DynamicDateCombo . Static } , BI . createWidget ( { element : this , type : "bi.vtape" , items : [ { el : this . _getTabJson ( ) } , { el : { type : "bi.grid" , items : [ [ { type : "bi.text_button" , cls : "bi-high-light bi-split-top" , textHeight : c . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_Clear" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . DynamicDateTimePopup . BUTTON _CLEAR _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , cls : "bi-split-left bi-split-right bi-high-light bi-split-top" , textHeight : c . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Multi_Date_Today" ) , ref : function ( ) { self . textButton = this } , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . DynamicDateTimePopup . BUTTON _lABEL _EVENT _CHANGE ) } } ] } , { type : "bi.text_button" , cls : "bi-high-light bi-split-top" , textHeight : c . buttonHeight - 1 , shadow : ! 0 , text : BI . i18nText ( "BI-Basic_OK" ) , listeners : [ { eventName : BI . TextButton . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . DynamicDateTimePopup . BUTTON _OK _EVENT _CHANGE ) } } ] } ] ] } , height : 24 } ] } ) , this . setValue ( opts . value ) } , _getTabJson : function ( ) { var self = this , o = this . options ; return { type : "bi.tab" , ref : function ( ) { self . dateTab = this } , tab : { type : "bi.linear_segment" , cls : "bi-split-bottom" , height : this . constants . tabHeight , items : BI . createItems ( [ { text : BI . i18nText ( "BI-Multi_Date_YMD" ) , value : BI . DynamicDateCombo . Static } , { text : BI . i18nText ( "BI-Basic_Dynamic_Title" ) , value : BI . DynamicDateCombo . Dynamic } ] , { textAlign : "center" } ) } , cardCreator : function ( v ) { switch ( v ) { case BI . DynamicDateCombo . Dynamic : return { type : "bi.dynamic_date_card" , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . _setInnerValue ( self . year , v ) } } ] , ref : function ( ) { self . dynamicPane = this } } ; case BI . DynamicDateCombo . Static : default : return { type : "bi.vtape" , items : [ { type : "bi.date_calendar_popup" , behaviors : o . behaviors , min : self . options . min , max : self . options . max , ref : function ( ) { self . ymd = this } } , { el : { type : "bi.dynamic_date_time_select" , cls : "bi-split-top" , ref : function ( ) { self . timeSelect = this } } , height : 40 } ] } } } , listeners : [ { eventName : BI . Tab . EVENT _CHANGE , action : function ( ) { var v = self . dateTab . getSelect ( ) ; switch ( v ) { case BI . DynamicDateCombo . Static : var date = BI . DynamicDateHelper . getCalculation ( self . dynamicPane . getValue ( ) ) ; self . ymd . setValue ( { year : date . getFullYear ( ) , month : date . getMonth ( ) + 1 , day : date . getDate ( ) } ) , self . timeSelect . setValue ( ) , self . _setInnerValue ( ) ; break ; case BI . DynamicDateCombo . Dynamic : default : self . storeValue && self . storeValue . type === BI . DynamicDateCombo . Dynamic ? self . dynamicPane . setValue ( self . storeValue . value ) : self . dynamicPane . setValue ( { year : 0 } ) , self . _setInnerValue ( ) } } } ] } } , _setInnerValue : function ( ) { if ( this . dateTab . getSelect ( ) === BI . DynamicDateCombo . Static ) this . textButton . setValue ( BI . i18nText ( "BI-Multi_Date_Today" ) ) , this . textButton . setEnable ( ! 0 ) ; else { var date = BI . DynamicDateHelper . getCalculation ( this . dynamicPane . getValue ( ) ) ; date = BI . print ( date , "%Y-%X-%d" ) , this . textButton . setValue ( date ) , this . textButton . setEnable ( ! 1 ) } } , _checkValueValid : function ( value ) { return BI . isNull ( value ) || BI . isEmptyObject ( value ) || BI . isEmptyString ( value ) } , setValue : function ( v ) { this . storeValue = v ; var self = this , type , value ; switch ( v = v || { } , type = v . type || BI . DynamicDateCombo . Static , value = v . value || v , this . dateTab . setSelect ( type ) , type ) { case BI . DynamicDateCombo . Dynamic : this . dynamicPane . setValue ( value ) , self . _setInnerValue ( ) ; break ; case BI . DynamicDateCombo . Static : default : if ( this . _checkValueValid ( value ) ) { var date = BI . getDate ( ) ; this . ymd . setValue ( { year : date . getFullYear (
} , function ( ) { startDrag === ! 0 && ( size = optimizeSize ( size ) , self . _rePosBySizeAfterStop ( size , isLeft ) , size = 0 , offset = 0 , defaultSize = size , startDrag = ! 1 ) , widget . element . removeClass ( "dragging" ) , mouseMoveTracker . releaseMouseMoves ( ) , self . fireEvent ( BI . IntervalSlider . EVENT _CHANGE ) } , window ) ; widget . element . on ( "mousedown" , function ( event ) { widget . isEnabled ( ) && ( defaultSize = this . offsetLeft , optimizeSize ( defaultSize ) , mouseMoveTracker . captureMouseMoves ( event ) ) } ) } , _createLabelWrapper : function ( ) { var c = 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 : c . EDITOR _R _GAP , height : c . SLIDER _HEIGHT } , top : 0 , left : 0 , width : "100%" } } , _createSliderWrapper : function ( ) { var c = 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 : c . SLIDER _WIDTH _HALF , height : c . 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 . blueTrack , top : 0 , left : 0 , width : "0%" } ] } ] , hgap : 8 , height : 8 } , top : 8 , left : 0 , width : "100%" } ] } ) } , _checkValidation : function ( v ) { var o = this . options , valid = ! 1 , dotText = ( v + "" ) . split ( "." ) [ 1 ] ; return BI . isEmptyString ( dotText ) || BI . isNumeric ( v ) && ! ( BI . isNull ( v ) || v < this . min || v > this . max ) && ( o . digit === ! 1 ? valid = ! 0 : ( dotText = dotText || "" , valid = dotText . length === o . digit ) ) , valid } , _checkOverlap : function ( ) { var labelOneLeft = this . labelOne . element [ 0 ] . offsetLeft , labelTwoLeft = this . labelTwo . element [ 0 ] . offsetLeft ; labelOneLeft <= labelTwoLeft ? labelTwoLeft - labelOneLeft < 90 ? this . labelTwo . element . css ( { top : 40 } ) : this . labelTwo . element . css ( { top : 0 } ) : labelOneLeft - labelTwoLeft < 90 ? this . labelTwo . element . css ( { top : 40 } ) : this . labelTwo . element . css ( { top : 0 } ) } , _checkLabelPosition : function ( oldValueOne , oldValueTwo , valueOne , valueTwo , isLeft ) { if ( oldValueOne = BI . parseFloat ( oldValueOne ) , oldValueTwo = BI . parseFloat ( oldValueTwo ) , valueOne = BI . parseFloat ( valueOne ) , valueTwo = BI . parseFloat ( valueTwo ) , oldValueOne <= oldValueTwo && valueOne > valueTwo || oldValueOne >= oldValueTwo && valueOne < valueTwo ) { var isSliderOneLeft = BI . parseFloat ( this . sliderOne . element [ 0 ] . style . left ) < BI . parseFloat ( this . sliderTwo . element [ 0 ] . style . left ) ; this . labelOne . element . css ( { left : isSliderOneLeft ? "0%" : "100%" } ) , this . labelTwo . element . css ( { left : isSliderOneLeft ? "100%" : "0%" } ) } } , _setSliderOnePosition : function ( percent ) { this . sliderOne . element . css ( { left : percent + "%" } ) } , _setSliderTwoPosition : function ( percent ) { this . sliderTwo . element . css ( { left : percent + "%" } ) } , _setBlueTrackLeft : function ( percent ) { this . blueTrack . element . css ( { left : percent + "%" } ) } , _setBlueTrackWidth : function ( percent ) { this . blueTrack . element . css ( { width : percent + "%" } ) } , _setBlueTrack : function ( ) { var percentOne = this . _getPercentByValue ( this . labelOne . getValue ( ) ) , percentTwo = this . _getPercentByValue ( this . labelTwo . getValue ( ) ) ; percentOne <= percentTwo ? ( this . _setBlueTrackLeft ( percentOne ) , this . _setBlueTrackWidth ( percentTwo - percentOne ) ) : ( this . _setBlueTrackLeft ( percentTwo ) , this . _setBlueTrackWidth ( percentOne - percentTwo ) ) } , _setAllPosition : function ( one , two ) { this . _setSliderOnePosition ( one ) , this . _setSliderTwoPosition ( two ) , this . _setBlueTrack ( ) } , _setVisible : function ( visible ) { this . sliderOne . setVisible ( visible ) , this . sliderTwo . setVisible ( visible ) , this . labelOne . setVisible ( visible ) , this . labelTwo . setVisible ( visible ) } , _setErrorText : function ( ) { var errorText = BI . i18nText ( "BI-Basic_Please_Enter_Number_Between" , this . min , this . max ) ; this . labelOne . setErrorText ( errorText ) , this . labelTwo . setErrorText ( errorText ) } , _getGrayTrackLength : function ( ) { return this . grayTrack . element [ 0 ] . scrollWidth } , _getValueByPercent : function ( percent ) { var sub = this . calculation . accurateSubtraction ( this . max , this . min ) , mul = this . calculation . accurateMultiplication ( sub , percent ) , div = this . calculation . accurateDivisionTenExponent ( mul , 2 ) ; if ( this . precision < 0 ) { var value = BI . parseFloat ( this . calculation . accurateAddition ( div , this . min ) ) , reduceValue = Math . round ( this . calculation . accurateDi
allowSearchValue : ! 1 } } , render : function ( ) { var self = this , o = this . options ; o . itemsCreator === BI . emptyFn && this . _initData ( ) ; var content = { type : "bi.htape" , items : [ { el : { type : "bi.searcher" , ref : function ( ) { self . searcher = this } , isAutoSearch : ! 1 , el : { type : "bi.state_editor" , ref : function ( ) { self . editor = this } , defaultText : o . text , text : this . _digest ( o . value ) , value : o . value , height : o . height , tipText : "" , watermark : o . watermark , listeners : [ { eventName : BI . StateEditor . EVENT _FOCUS , action : function ( ) { self . fireEvent ( BI . MultiLayerSelectTreeTrigger . EVENT _FOCUS ) } } , { eventName : BI . StateEditor . EVENT _BLUR , action : function ( ) { self . fireEvent ( BI . MultiLayerSelectTreeTrigger . EVENT _BLUR ) } } , { eventName : BI . StateEditor . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . MultiLayerSelectTreeTrigger . EVENT _SEARCHING ) } } ] } , popup : { type : o . allowInsertValue ? "bi.multilayer_select_tree_insert_search_pane" : "bi.multilayer_select_tree_popup" , itemsCreator : o . itemsCreator === BI . emptyFn ? BI . emptyFn : function ( op , callback ) { op . keyword = self . editor . getValue ( ) , o . itemsCreator ( op , callback ) } , keywordGetter : function ( ) { return self . editor . getValue ( ) } , cls : "bi-card" , listeners : [ { eventName : BI . MultiLayerSelectTreeInsertSearchPane . EVENT _ADD _ITEM , action : function ( ) { self . options . text = self . getSearcher ( ) . getKeyword ( ) , self . fireEvent ( BI . MultiLayerSelectTreeTrigger . EVENT _ADD _ITEM ) } } ] , ref : function ( _ref ) { self . popup = _ref } } , onSearch : function ( obj , callback ) { var keyword = obj . keyword ; o . itemsCreator === BI . emptyFn ? ( callback ( self . _getSearchItems ( keyword ) ) , o . allowInsertValue && self . popup . setKeyword ( keyword ) ) : callback ( ) } , listeners : [ { eventName : BI . Searcher . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . MultiLayerSelectTreeTrigger . EVENT _CHANGE ) } } ] } } , { el : { type : "bi.layout" , width : 24 } , width : 24 } ] } ; return o . allowEdit ? content : { type : "bi.absolute" , items : [ { el : content , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : { type : "bi.layout" } , left : 0 , right : 24 , top : 0 , bottom : 0 } ] } } , _initData : function ( ) { var o = this . options ; this . tree = new BI . Tree , this . nodes = BI . Tree . treeFormat ( BI . deepClone ( o . items ) ) , this . tree . initTree ( this . nodes ) } , _getSearchItems : function ( keyword ) { var self = this , o = this . options , items = [ ] ; return this . tree . traverse ( function ( node ) { var find = BI . Func . getSearchResult ( self . tree . isRoot ( node ) ? [ ] : BI . concat ( [ node . text ] , o . allowSearchValue ? [ node . value ] : [ ] ) , keyword ) ; if ( find . find . length > 0 || find . match . length > 0 ) return items . push ( node ) , ! 0 } ) , this . _fillTreeStructure4Search ( items , "id" ) } , _createJson : function ( node , open ) { return { id : node . id , pId : node . pId , text : node . text , value : node . value , isParent : BI . isNotEmptyArray ( node . children ) , open : open } } , _getChildren : function ( node ) { var self = this ; node . children = node . children || [ ] ; var nodes = [ ] ; return BI . each ( node . children , function ( idx , child ) { var children = self . _getChildren ( child ) ; nodes = nodes . concat ( children ) } ) , node . children . concat ( nodes ) } , _fillTreeStructure4Search : function ( leaves ) { var self = this , result = [ ] , queue = [ ] ; for ( BI . each ( leaves , function ( idx , node ) { queue . push ( { pId : node . pId } ) , result . push ( node ) , result = result . concat ( self . _getChildren ( node ) ) } ) ; BI . isNotEmptyArray ( queue ) ; ) { var node = queue . pop ( ) , pNode = this . tree . search ( this . tree . getRoot ( ) , node . pId , "id" ) ; null != pNode && ( pNode . open = ! 0 , queue . push ( { pId : pNode . pId } ) , result . push ( pNode ) ) } return BI . uniqBy ( BI . map ( result , function ( idx , node ) { return self . _createJson ( node , node . open ) } ) , "id" ) } , _digest : function ( v ) { var o = this . options ; if ( o . itemsCreator === BI . emptyFn ) { var result = BI . find ( o . items , function ( i , item ) { return item . value === v } ) ; return BI . isNotNull ( result ) ? result . text : o . text } return o . valueFormatter ( v ) } , stopEditing : function ( ) { this . searcher . stopSearch ( ) } , getSearcher : function ( ) { return this . searcher } , populate : function ( items ) { this . options . items = items , this . _initData ( items ) } , setValue : function ( v ) { this . editor . setState ( this . _digest ( v [ 0 ] ) ) } , getValue : function ( ) { return this . searcher . getValue ( ) } } ) , BI . MultiLayerSelectTreeTrigger . EVENT _FOCUS = "EVENT_FOCUS" , BI . MultiLayerSelectTreeTrigger . EVENT _BLUR = "EVENT_BLUR" , BI . MultiLayerSelectTreeTrigger . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . MultiLayerSelectTreeTrigger . EVENT _STOP = "EVENT_STOP" , BI . MultiLayerSelectTreeTrigger . EVENT _START = "EVENT_START" , BI . MultiLayerSelectTreeTrigger . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiLayerSelectTreeTr
BI . isNotNull ( this . node ) && this . node . setOpened ( v ) } , _createNode : function ( ) { var self = this , o = this . options ; return BI . createWidget ( { type : "bi.mid_plus_group_node" , cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : o . id , pId : o . pId , open : o . open , height : o . height , hgap : o . hgap , text : o . text , value : o . value , py : o . py , keyword : o . keyword , listeners : [ { eventName : BI . Controller . EVENT _CHANGE , action : function ( type ) { type !== BI . Events . CLICK && self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } } ] } ) } } ) , BI . shortcut ( "bi.multilayer_single_tree_mid_plus_group_node" , BI . MultiLayerSingleTreeMidPlusGroupNode ) , BI . MultiLayerSingleTreePlusGroupNode = BI . inherit ( BI . NodeButton , { _defaultConfig : function ( ) { var conf = BI . MultiLayerSingleTreePlusGroupNode . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { extraCls : "bi-multilayer-single-tree-plus-group-node bi-list-item" , layer : 0 , id : "" , pId : "" , open : ! 1 , height : 24 } ) } , _init : function ( ) { BI . MultiLayerSingleTreePlusGroupNode . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . node = this . _createNode ( ) ; for ( var needBlankLayers = [ ] , pNode = o . pNode ; pNode ; ) pNode . isLastNode && needBlankLayers . push ( pNode . layer ) , pNode = pNode . pNode ; var items = [ ] ; BI . count ( 0 , o . layer , function ( index ) { items . push ( { type : "bi.layout" , cls : BI . contains ( needBlankLayers , index ) ? "" : "base-line-conn-background" , width : 12 , height : o . height } ) } ) , items . push ( this . node ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( o . layer , 12 ) , items : [ items ] } ) } , doRedMark : function ( ) { this . node . doRedMark . apply ( this . node , arguments ) } , unRedMark : function ( ) { this . node . unRedMark . apply ( this . node , arguments ) } , doClick : function ( ) { BI . MultiLayerSingleTreePlusGroupNode . superclass . doClick . apply ( this , arguments ) , this . node . setSelected ( this . isSelected ( ) ) } , setOpened : function ( v ) { BI . MultiLayerSingleTreePlusGroupNode . superclass . setOpened . apply ( this , arguments ) , BI . isNotNull ( this . node ) && this . node . setOpened ( v ) } , _createNode : function ( ) { var self = this , o = this . options ; return BI . createWidget ( { type : "bi.plus_group_node" , cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : o . id , pId : o . pId , open : o . open , isLastNode : o . isLastNode , height : o . height , hgap : o . hgap , text : o . text , value : o . value , py : o . py , keyword : o . keyword , listeners : [ { eventName : BI . Controller . EVENT _CHANGE , action : function ( type ) { type !== BI . Events . CLICK && self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } } ] } ) } } ) , BI . shortcut ( "bi.multilayer_single_tree_plus_group_node" , BI . MultiLayerSingleTreePlusGroupNode ) , BI . MultiLayerSingleTreeFirstTreeLeafItem = BI . inherit ( BI . BasicButton , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiLayerSingleTreeFirstTreeLeafItem . superclass . _defaultConfig . apply ( this , arguments ) , { extraCls : "bi-multilayer-single-tree-first-tree-leaf-item bi-list-item-active" , logic : { dynamic : ! 1 } , layer : 0 , id : "" , pId : "" , height : 24 } ) } , _init : function ( ) { BI . MultiLayerSingleTreeFirstTreeLeafItem . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . item = BI . createWidget ( { type : "bi.first_tree_leaf_item" , cls : "bi-list-item-none" , logic : { dynamic : ! 0 } , id : o . id , pId : o . pId , height : o . height , hgap : o . hgap , text : o . text , value : o . value , py : o . py , keyword : o . keyword } ) , this . item . on ( BI . Controller . EVENT _CHANGE , function ( type ) { type !== BI . Events . CLICK && self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) ; for ( var needBlankLayers = [ ] , pNode = o . pNode ; pNode ; ) pNode . isLastNode && needBlankLayers . push ( pNode . layer ) , pNode = pNode . pNode ; var items = [ ] ; BI . count ( 0 , o . layer , function ( index ) { items . push ( { type : "bi.layout" , cls : BI . contains ( needBlankLayers , index ) ? "" : "base-line-conn-background" , width : 12 , height : o . height } ) } ) , items . push ( this . item ) , BI . createWidget ( { type : "bi.td" , element : this , columnSize : BI . makeArray ( o . layer , 12 ) , items : [ items ] } ) } , 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 . MultiLayerSingleTreeFirstTreeLeafItem . superclass . doClick . apply ( this , arguments ) , this . item . setSelected ( this . isSelected ( ) ) } , setSelected : function ( v ) { BI . MultiLayerSingleTreeFirstTreeLeafItem . superclass . setSelected . apply ( this , arguments ) , this . ite
} ) : self . _join ( this . getValue ( ) , function ( ) { assertShowValue ( ) } ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _BEFORE _COUNTER _POPUPVIEW , function ( ) { self . numberCounter . updateSelectedValue ( self . storeValue ) } ) , this . trigger . on ( BI . MultiSelectInsertTrigger . EVENT _COUNTER _CLICK , function ( ) { self . combo . isViewVisible ( ) || self . combo . showView ( ) } ) , this . combo = BI . createWidget ( { type : "bi.combo" , toggle : ! 1 , container : o . container , el : this . trigger , adjustLength : 1 , popup : { type : "bi.multi_select_no_bar_popup_view" , ref : function ( ) { self . popup = this , self . trigger . setAdapter ( this ) , self . numberCounter . setAdapter ( this ) } , listeners : [ { eventName : BI . MultiSelectPopupView . EVENT _CHANGE , action : function ( ) { self . storeValue = this . getValue ( ) , self . _adjust ( function ( ) { assertShowValue ( ) } ) } } , { eventName : BI . MultiSelectPopupView . EVENT _CLICK _CONFIRM , action : function ( ) { self . _defaultState ( ) } } , { eventName : BI . MultiSelectPopupView . EVENT _CLICK _CLEAR , action : function ( ) { self . setValue ( ) , self . _defaultState ( ) } } ] , itemsCreator : o . itemsCreator , valueFormatter : o . valueFormatter , onLoaded : function ( ) { BI . nextTick ( function ( ) { self . combo . adjustWidth ( ) , self . combo . adjustHeight ( ) , self . numberCounter . adjustView ( ) , self . trigger . getSearcher ( ) . adjustView ( ) } ) } } , value : { type : BI . Selection . Multi , value : o . value } , hideChecker : function ( e ) { return 0 === triggerBtn . element . find ( e . target ) . length && 0 === self . numberCounter . element . find ( e . target ) . length } } ) , this . combo . on ( BI . Combo . EVENT _BEFORE _POPUPVIEW , function ( ) { this . setValue ( self . storeValue ) , BI . nextTick ( function ( ) { self . populate ( ) } ) } ) , this . wants2Quit = ! 1 , this . combo . on ( BI . Combo . EVENT _AFTER _HIDEVIEW , function ( ) { self . _stopEditing ( ) , self . requesting === ! 0 ? self . wants2Quit = ! 0 : self . fireEvent ( BI . MultiSelectInsertNoBarCombo . EVENT _CONFIRM ) } ) ; var triggerBtn = BI . createWidget ( { type : "bi.trigger_icon_button" , width : o . height , height : o . height , cls : "multi-select-trigger-icon-button" } ) ; triggerBtn . on ( BI . TriggerIconButton . EVENT _CHANGE , function ( ) { self . numberCounter . hideView ( ) , self . combo . isViewVisible ( ) ? self . combo . hideView ( ) : self . combo . showView ( ) } ) , this . numberCounter = BI . createWidget ( { type : "bi.multi_select_check_selected_switcher" , masker : { offset : { left : 0 , top : 0 , right : 0 , bottom : 25 } } , valueFormatter : o . valueFormatter , itemsCreator : BI . bind ( this . _itemsCreator4Trigger , this ) , value : { type : BI . Selection . Multi , value : o . value } } ) , this . numberCounter . on ( BI . MultiSelectCheckSelectedSwitcher . EVENT _TRIGGER _CHANGE , function ( ) { self . combo . isViewVisible ( ) || self . combo . showView ( ) } ) , this . numberCounter . on ( BI . MultiSelectCheckSelectedSwitcher . EVENT _BEFORE _POPUPVIEW , function ( ) { this . updateSelectedValue ( self . storeValue ) } ) , this . numberCounter . on ( BI . Events . VIEW , function ( b ) { BI . nextTick ( function ( ) { self . trigger . refreshPlaceHolderWidth ( b === ! 0 ? self . numberCounter . element . outerWidth ( ) + 8 : 0 ) } ) } ) , this . trigger . element . click ( function ( e ) { self . trigger . element . find ( e . target ) . length > 0 && self . numberCounter . hideView ( ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . combo , left : 0 , right : 0 , top : 0 , bottom : 0 } , { el : triggerBtn , right : 0 , top : 0 , bottom : 0 } , { el : { type : "bi.vertical_adapt" , items : [ this . numberCounter ] } , right : o . height , top : 0 , height : o . height } ] } ) } , _itemsCreator4Trigger : function ( op , callback ) { var self = this , o = this . options ; o . itemsCreator ( op , function ( res ) { 1 === op . times && BI . isNotNull ( op . keywords ) && self . trigger . setValue ( BI . deepClone ( self . getValue ( ) ) ) , callback . apply ( self , arguments ) } ) } , _addItem : function ( assertShowValue ) { var self = this , keyword = this . trigger . getSearcher ( ) . getKeyword ( ) ; this . _join ( { type : BI . Selection . Multi , value : [ keyword ] } , function ( ) { self . storeValue . type === BI . Selection . Multi && BI . pushDistinct ( self . storeValue . value , keyword ) , self . combo . setValue ( self . storeValue ) , self . _setStartValue ( keyword ) , assertShowValue ( ) , self . populate ( ) , self . _setStartValue ( "" ) } ) } , _stopEditing : function ( ) { this . trigger . stopEditing ( ) , this . numberCounter . hideView ( ) } , _defaultState : function ( ) { this . _stopEditing ( ) , this . combo . hideView ( ) } , _assertValue : function ( val ) { val || ( val = { } ) , val . type || ( val . type = BI . Selection . Multi ) , val . value || ( val . value = [ ] ) } , _makeMap : function ( values ) { return BI . makeObject ( values || [ ] ) } , _joinKeywords : function ( keywords , callback ) { function digest ( items ) { var selectedMap = self . _makeMap ( items ) ; BI . each ( keyword
self . fireEvent ( BI . MultiSelectCheckSelectedButton . EVENT _CHANGE , arguments ) } ) , this . numberCounter . element . hover ( function ( ) { self . numberCounter . setTag ( self . numberCounter . getText ( ) ) , self . numberCounter . setText ( BI . i18nText ( "BI-Check_Selected" ) ) } , function ( ) { self . numberCounter . setText ( self . numberCounter . getTag ( ) ) } ) , this . setVisible ( ! 1 ) , BI . isNotNull ( o . value ) && this . setValue ( o . value ) } , setValue : function ( ob ) { var self = this , o = this . options ; return ob || ( ob = { } ) , ob . type || ( ob . type = BI . Selection . Multi ) , ob . value || ( ob . value = [ ] ) , ob . type === BI . Selection . All ? void o . itemsCreator ( { type : BI . MultiSelectCombo . REQ _GET _DATA _LENGTH } , function ( res ) { var length = res . count - ob . value . length ; BI . nextTick ( function ( ) { self . numberCounter . setText ( length ) , self . setVisible ( length > 0 ) } ) } ) : void BI . nextTick ( function ( ) { self . numberCounter . setText ( ob . value . length ) , self . setVisible ( ob . 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 : { } , watermark : BI . i18nText ( "BI-Basic_Search" ) } ) } , _init : function ( ) { BI . MultiSelectEditor . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . editor = BI . createWidget ( o . el , { type : "bi.state_editor" , element : this , height : o . height , watermark : o . watermark , allowBlank : ! 0 , value : o . value , defaultText : o . text , text : o . text , tipType : o . tipType , warningTitle : o . warningTitle } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . StateEditor . EVENT _PAUSE , function ( ) { self . fireEvent ( BI . MultiSelectEditor . EVENT _PAUSE ) } ) , this . editor . on ( BI . StateEditor . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . MultiSelectEditor . EVENT _FOCUS ) } ) , this . editor . on ( BI . StateEditor . EVENT _BLUR , function ( ) { self . fireEvent ( BI . MultiSelectEditor . EVENT _BLUR ) } ) } , focus : function ( ) { this . editor . focus ( ) } , blur : function ( ) { this . editor . blur ( ) } , setState : function ( state ) { this . editor . setState ( state ) } , setValue : function ( v ) { this . editor . setValue ( v ) } , setTipType : function ( v ) { this . editor . setTipType ( v ) } , getValue : function ( ) { var v = this . editor . getState ( ) ; return BI . isArray ( v ) && v . length > 0 ? v [ v . length - 1 ] : "" } , getKeywords : function ( ) { var val = this . editor . getLastChangedValue ( ) , keywords = val . match ( /[\S]+/g ) ; return BI . isEndWithBlank ( val ) ? keywords . concat ( [ " " ] ) : keywords } , populate : function ( items ) { } } ) , BI . MultiSelectEditor . EVENT _FOCUS = "EVENT_FOCUS" , BI . MultiSelectEditor . EVENT _BLUR = "EVENT_BLUR" , BI . MultiSelectEditor . EVENT _PAUSE = "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 self = this , o = this . options ; this . editor = BI . createWidget ( o . el , { type : "bi.multi_select_editor" , watermark : o . watermark , height : o . height , text : o . text , listeners : [ { eventName : BI . MultiSelectEditor . EVENT _FOCUS , action : function ( ) { self . fireEvent ( BI . MultiSelectInsertSearcher . EVENT _FOCUS ) } } , { eventName : BI . MultiSelectEditor . EVENT _BLUR , action : function ( ) { self . fireEvent ( BI . MultiSelectInsertSearcher . EVENT _BLUR ) } } ] } ) , this . searcher = BI . createWidget ( { type : "bi.searcher" , element : this , height : o . height , isAutoSearch : ! 1 , isAutoSync : ! 1 , onSearch : function ( op , callback ) { callback ( ) } , el : this . editor , popup : BI . extend ( { type : "bi.multi_select_search_insert_pane" , valueFormatter : o . valueFormatter , keywordGetter : function ( ) { return self . editor . getValue ( ) } , itemsCreator : function ( op , callback ) { var keyword = self . editor . getValue ( ) ; op . keywords = [ keyword ] , this . setKeyword ( keyword ) , o . itemsCreator ( op , callback ) } , value : o . value , listeners : [ { eventName : BI . MultiSelectSearchInsertPane . EVENT _ADD _ITEM , action : function ( ) { self
} , _join : function ( res , callback ) { var self = this , o = this . options ; if ( this . _assertValue ( res ) , this . _assertValue ( this . storeValue ) , this . storeValue . type === res . type ) { var map = this . _makeMap ( this . storeValue . value ) ; BI . each ( res . value , function ( i , v ) { map [ v ] || ( self . storeValue . value . push ( v ) , map [ v ] = v ) } ) ; var change = ! 1 ; return BI . each ( res . assist , function ( i , v ) { BI . isNotNull ( map [ v ] ) && ( change = ! 0 , delete map [ v ] ) } ) , change && ( this . storeValue . value = BI . values ( map ) ) , void self . _adjust ( callback ) } this . _joinAll ( res , callback ) } , _setStartValue : function ( value ) { this . _startValue = value , this . adapter . setStartValue ( value ) } , isAllSelected : function ( ) { return this . adapter . isAllSelected ( ) } , resize : function ( ) { } , setValue : function ( v ) { this . storeValue = v || { } , this . _assertValue ( this . storeValue ) , this . adapter . setValue ( this . storeValue ) , this . trigger . setValue ( this . storeValue ) } , getValue : function ( ) { return BI . deepClone ( this . storeValue ) } , populate : function ( ) { this . adapter . populate . apply ( this . adapter , arguments ) , this . trigger . populate . apply ( this . trigger , arguments ) } } ) , BI . extend ( BI . MultiSelectList , { REQ _GET _DATA _LENGTH : 1 , REQ _GET _ALL _DATA : - 1 } ) , BI . MultiSelectList . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_list" , BI . MultiSelectList ) , BI . MultiSelectTree = BI . inherit ( BI . Single , { _constant : { EDITOR _HEIGHT : 24 } , _defaultConfig : function ( ) { return BI . extend ( BI . MultiSelectTree . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-tree" , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . MultiSelectTree . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . storeValue = { value : { } } , this . adapter = BI . createWidget ( { type : "bi.multi_select_tree_popup" , itemsCreator : o . itemsCreator } ) , this . adapter . on ( BI . MultiSelectTreePopup . EVENT _CHANGE , function ( ) { self . searcher . isSearching ( ) ? self . storeValue = { value : self . searcherPane . getValue ( ) } : self . storeValue = { value : self . adapter . getValue ( ) } , self . setSelectedValue ( self . storeValue . value ) , self . fireEvent ( BI . MultiSelectTree . EVENT _CHANGE ) } ) , this . searcherPane = BI . createWidget ( { type : "bi.multi_tree_search_pane" , cls : "bi-border-left bi-border-right bi-border-bottom" , keywordGetter : function ( ) { return self . searcher . getKeyword ( ) } , itemsCreator : function ( op , callback ) { op . keyword = self . searcher . getKeyword ( ) , o . itemsCreator ( op , callback ) } } ) , this . searcherPane . setVisible ( ! 1 ) , this . searcher = BI . createWidget ( { type : "bi.searcher" , isAutoSearch : ! 1 , isAutoSync : ! 1 , onSearch : function ( op , callback ) { callback ( { keyword : self . searcher . getKeyword ( ) } ) } , adapter : this . adapter , popup : this . searcherPane , masker : ! 1 , listeners : [ { eventName : BI . Searcher . EVENT _START , action : function ( ) { self . _showSearcherPane ( ) } } , { eventName : BI . Searcher . EVENT _STOP , action : function ( ) { self . _showAdapter ( ) , BI . nextTick ( function ( ) { self . adapter . populate ( ) } ) } } , { eventName : BI . Searcher . EVENT _CHANGE , action : function ( ) { self . searcher . isSearching ( ) ? self . storeValue = { value : self . searcherPane . getValue ( ) } : self . storeValue = { value : self . adapter . getValue ( ) } , self . setSelectedValue ( self . storeValue . value ) , self . fireEvent ( BI . MultiSelectTree . EVENT _CHANGE ) } } , { eventName : BI . Searcher . EVENT _PAUSE , action : function ( ) { self . _showAdapter ( ) } } ] } ) , BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . searcher , height : this . _constant . EDITOR _HEIGHT } , { el : this . adapter , height : "fill" } ] } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . searcherPane , top : this . _constant . EDITOR _HEIGHT , bottom : 0 , left : 0 , right : 0 } ] } ) } , _showAdapter : function ( ) { this . adapter . setVisible ( ! 0 ) , this . searcherPane . setVisible ( ! 1 ) } , _showSearcherPane : function ( ) { this . searcherPane . setVisible ( ! 0 ) , this . adapter . setVisible ( ! 1 ) } , resize : function ( ) { } , setSelectedValue : function ( v ) { this . storeValue . value = v || { } , this . adapter . setSelectedValue ( v ) , this . searcherPane . setSelectedValue ( v ) , this . searcher . setValue ( { value : v || { } } ) } , setValue : function ( v ) { this . adapter . setValue ( v ) } , stopSearch : function ( ) { this . searcher . stopSearch ( ) } , updateValue : function ( v ) { this . adapter . updateValue ( v ) } , 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 = "EVENT_CHANGE" , BI . shortcut ( "bi.multi_select_tree" , BI .
callback ( res ) , self . setKeyword ( opts . keywordGetter ( ) , res . items ) } ) } , ref : function ( _ref ) { self . partTree = _ref } , value : opts . value , listeners : [ { eventName : BI . Controller . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } } , { eventName : BI . TreeView . EVENT _CHANGE , action : function ( ) { self . fireEvent ( BI . MultiTreeSearchInsertPane . EVENT _CHANGE ) } } ] } , opts . el ) , left : 0 , top : 0 , bottom : 0 , right : 0 } ] } } , setKeyword : function ( keyword , nodes ) { var isAddTipVisible = BI . isEmptyArray ( nodes ) ; this . addTip . setVisible ( isAddTipVisible ) , this . partTree . setVisible ( ! isAddTipVisible ) , isAddTipVisible && this . addTip . setText ( BI . i18nText ( "BI-Basic_Click_To_Add_Text" , keyword ) ) } , hasChecked : function ( ) { return this . partTree . hasChecked ( ) } , setValue : function ( v ) { this . setSelectedValue ( v . value ) } , setSelectedValue : function ( v ) { v || ( v = { } ) , this . partTree . setSelectedValue ( v ) } , getValue : function ( ) { return this . partTree . getValue ( ) } , empty : function ( ) { this . partTree . empty ( ) } , populate : function ( op ) { this . partTree . stroke . apply ( this . partTree , arguments ) } } ) , BI . MultiTreeSearchInsertPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiTreeSearchInsertPane . EVENT _CLICK _CONFIRM = "EVENT_CLICK_CONFIRM" , BI . MultiTreeSearchInsertPane . EVENT _CLICK _CLEAR = "EVENT_CLICK_CLEAR" , BI . MultiTreeSearchInsertPane . EVENT _ADD _ITEM = "EVENT_ADD_ITEM" , BI . shortcut ( "bi.multi_tree_search_insert_pane" , BI . MultiTreeSearchInsertPane ) , BI . MultiTreeSearchPane = BI . inherit ( BI . Pane , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiTreeSearchPane . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-search-pane bi-card" , itemsCreator : BI . emptyFn , keywordGetter : BI . emptyFn } ) } , _init : function ( ) { BI . MultiTreeSearchPane . superclass . _init . apply ( this , arguments ) ; var self = this , opts = this . options ; this . partTree = BI . createWidget ( { type : "bi.part_tree" , element : this , tipText : BI . i18nText ( "BI-No_Select" ) , itemsCreator : function ( op , callback ) { op . keyword = opts . keywordGetter ( ) , opts . itemsCreator ( op , callback ) } , value : opts . value } ) , this . partTree . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . partTree . on ( BI . TreeView . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . MultiTreeSearchPane . EVENT _CHANGE ) } ) } , hasChecked : function ( ) { return this . partTree . hasChecked ( ) } , setValue : function ( v ) { this . setSelectedValue ( v . value ) } , setSelectedValue : function ( v ) { v || ( v = { } ) , this . partTree . setSelectedValue ( v ) } , getValue : function ( ) { return this . partTree . getValue ( ) } , empty : function ( ) { this . partTree . empty ( ) } , populate : function ( op ) { this . partTree . stroke . apply ( this . partTree , arguments ) } } ) , BI . MultiTreeSearchPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . MultiTreeSearchPane . EVENT _CLICK _CONFIRM = "EVENT_CLICK_CONFIRM" , BI . MultiTreeSearchPane . EVENT _CLICK _CLEAR = "EVENT_CLICK_CLEAR" , BI . shortcut ( "bi.multi_tree_search_pane" , BI . MultiTreeSearchPane ) , BI . MultiListTreeSearcher = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { return BI . extend ( BI . MultiListTreeSearcher . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-tree-searcher" , itemsCreator : BI . emptyFn , valueFormatter : function ( v ) { return v } , popup : { } , adapter : null , masker : { } } ) } , _init : function ( ) { BI . MultiListTreeSearcher . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . editor = BI . createWidget ( { type : "bi.multi_select_editor" , height : o . height , el : { type : "bi.simple_state_editor" , height : o . height } } ) , this . searcher = BI . createWidget ( { type : "bi.searcher" , element : this , isAutoSearch : ! 1 , isAutoSync : ! 1 , onSearch : function ( op , callback ) { callback ( { keyword : self . editor . getValue ( ) } ) } , el : this . editor , popup : BI . extend ( { type : "bi.multi_tree_search_pane" , keywordGetter : function ( ) { return self . editor . getValue ( ) } , itemsCreator : function ( op , callback ) { op . keyword = self . editor . getValue ( ) , o . itemsCreator ( op , callback ) } , value : o . value } , o . popup ) , adapter : o . adapter , masker : o . masker } ) , this . searcher . on ( BI . Searcher . EVENT _START , function ( ) { self . fireEvent ( BI . MultiListTreeSearcher . EVENT _START ) } ) , this . searcher . on ( BI . Searcher . EVENT _PAUSE , function ( ) { this . hasMatched ( ) , self . fireEvent ( BI . MultiListTreeSearcher . EVENT _PAUSE ) } ) , this . searcher . on ( BI . Searcher . EVENT _STOP , function ( ) { self . fireEvent ( BI . MultiListTreeSearcher . EVENT _STOP ) } ) , this . searcher . on ( BI . Searcher . EVENT _CHANGE , fun
if ( this . _assertValue ( res ) , this . _assertValue ( this . storeValue ) , this . storeValue . type === res . type ) { var map = this . _makeMap ( this . storeValue . value ) ; BI . each ( res . value , function ( i , v ) { map [ v ] || ( self . storeValue . value . push ( v ) , BI . remove ( self . storeValue . assist , v ) , map [ v ] = v ) } ) ; var change = ! 1 ; return BI . each ( res . assist , function ( i , v ) { BI . isNotNull ( map [ v ] ) && ( change = ! 0 , self . storeValue . assist && self . storeValue . assist . push ( map [ v ] ) , delete map [ v ] ) } ) , change && ( this . storeValue . value = BI . values ( map ) ) , void self . _adjust ( callback ) } this . _joinAll ( res , callback ) } , _setStartValue : function ( value ) { this . _startValue = value , this . popup . setStartValue ( value ) } , _getItemsByTimes : function ( items , times ) { for ( var res = [ ] , i = 100 * ( times - 1 ) ; items [ i ] && i < 100 * times ; i ++ ) res . push ( items [ i ] ) ; return res } , _hasNextByTimes : function ( items , times ) { return 100 * times < items . length } , _itemsCreator : function ( options , callback ) { var self = this , o = this . options , items = o . items , keywords = ( options . keywords || [ ] ) . slice ( ) ; if ( options . keyword && keywords . push ( options . keyword ) , BI . each ( keywords , function ( i , kw ) { var search = BI . Func . getSearchResult ( items , kw ) ; items = search . match . concat ( search . find ) } ) , options . selectedValues ) { var filter = BI . makeObject ( options . selectedValues , ! 0 ) ; items = BI . filter ( items , function ( i , ob ) { return ! filter [ ob . value ] } ) } return options . type == BI . MultiSelectCombo . REQ _GET _ALL _DATA ? void callback ( { items : items } ) : options . type == BI . MultiSelectCombo . REQ _GET _DATA _LENGTH ? void callback ( { count : items . length } ) : void callback ( { items : self . _getItemsByTimes ( items , options . times ) , hasNext : self . _hasNextByTimes ( items , options . times ) } ) } , _checkError : function ( ) { var v = this . storeValue . value || [ ] ; if ( BI . isNotEmptyArray ( v ) ) { v = BI . isArray ( v ) ? v : [ v ] ; var result = BI . find ( this . allValue , function ( idx , value ) { return ! BI . contains ( v , value ) } ) ; BI . isNull ( result ) ? ( BI . isNotNull ( this . trigger ) && this . trigger . setTipType ( "success" ) , this . element . removeClass ( "combo-error" ) ) : ( BI . isNotNull ( this . trigger ) && this . trigger . setTipType ( "warning" ) , this . element . addClass ( "combo-error" ) ) } else v . length === this . allValue . length ? ( BI . isNotNull ( this . trigger ) && this . trigger . setTipType ( "success" ) , this . element . removeClass ( "combo-error" ) ) : ( BI . isNotNull ( this . trigger ) && this . trigger . setTipType ( "warning" ) , this . element . addClass ( "combo-error" ) ) } , _updateAllValue : function ( ) { this . storeValue = this . storeValue || { } , this . allValue = BI . deepClone ( this . storeValue . value || [ ] ) } , setValue : function ( v ) { this . storeValue = BI . deepClone ( v || { } ) , this . _updateAllValue ( ) , this . _assertValue ( this . storeValue ) , this . combo . setValue ( this . storeValue ) , this . _checkError ( ) } , getValue : function ( ) { return BI . deepClone ( this . storeValue ) } , _populate : function ( ) { this . _count = null , this . combo . populate ( ) } , populate : function ( items ) { this . options . items = items , this . _populate ( ) } } ) , BI . extend ( BI . SearchMultiTextValueCombo , { REQ _GET _DATA _LENGTH : 1 , REQ _GET _ALL _DATA : - 1 } ) , BI . SearchMultiTextValueCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.search_multi_text_value_combo" , BI . SearchMultiTextValueCombo ) , BI . SearchMultiSelectTrigger = BI . inherit ( BI . Trigger , { constants : { height : 14 , rgap : 4 , lgap : 4 } , _defaultConfig : function ( ) { return BI . extend ( BI . SearchMultiSelectTrigger . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-multi-select-trigger bi-border" , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , searcher : { } , switcher : { } , adapter : null , masker : { } } ) } , _init : function ( ) { BI . SearchMultiSelectTrigger . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; o . height && this . setHeight ( o . height - 2 ) , this . searcher = BI . createWidget ( o . searcher , { type : "bi.search_multi_select_searcher" , height : o . height , itemsCreator : o . itemsCreator , valueFormatter : o . valueFormatter , allValueGetter : o . allValueGetter , popup : { } , adapter : o . adapter , masker : o . masker , value : o . value , text : o . text , tipType : o . tipType , warningTitle : o . warningTitle } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _START , function ( ) { self . fireEvent ( BI . SearchMultiSelectTrigger . EVENT _START ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _PAUSE , function ( ) { self . fireEvent ( BI . SearchMultiSelectTrigger . EVENT _PAUSE ) } ) , this . searcher . on ( BI . MultiSelectSearcher . EVENT _SEARCHING , function ( ) { self . fireEvent ( BI . SearchMultiSelectTrigger . EVENT _SEARCHING , arguments ) } ) , this . searcher . on (
allowNoSelect : ! 1 , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , keywordGetter : BI . emptyFn } ) } , _init : function ( ) { BI . SingleSelectSearchPane . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . tooltipClick = BI . createWidget ( { type : "bi.label" , invisible : ! 0 , text : BI . i18nText ( "BI-Click_Blank_To_Select" ) , cls : "multi-select-toolbar" , height : this . constants . height } ) , this . loader = BI . createWidget ( { type : "bi.single_select_search_loader" , allowNoSelect : o . allowNoSelect , keywordGetter : o . keywordGetter , valueFormatter : o . valueFormatter , itemsCreator : function ( op , callback ) { o . itemsCreator . apply ( self , [ op , function ( res ) { callback ( res ) , self . setKeyword ( o . keywordGetter ( ) ) } ] ) } , value : o . value } ) , this . loader . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . resizer = BI . createWidget ( { type : "bi.vtape" , element : this , items : [ { el : this . tooltipClick , height : 0 } , { el : this . loader } ] } ) , this . tooltipClick . setVisible ( ! 1 ) } , setKeyword : function ( keyword ) { var btn , isVisible = this . loader . getAllButtons ( ) . length > 0 && ( btn = this . loader . getAllButtons ( ) [ 0 ] ) && keyword === btn . getValue ( ) ; isVisible !== this . tooltipClick . isVisible ( ) && ( this . tooltipClick . setVisible ( isVisible ) , this . resizer . attr ( "items" ) [ 0 ] . height = isVisible ? this . constants . height : 0 , this . resizer . resize ( ) ) } , hasMatched : function ( ) { return this . tooltipClick . isVisible ( ) } , setValue : function ( v ) { this . loader . setValue ( v ) } , getValue : function ( ) { return this . loader . getValue ( ) } , empty : function ( ) { this . loader . empty ( ) } , populate : function ( items ) { this . loader . populate . apply ( this . loader , arguments ) } } ) , BI . SingleSelectSearchPane . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.single_select_search_pane" , BI . SingleSelectSearchPane ) , BI . SingleSelectCombo = BI . inherit ( BI . Single , { _defaultConfig : function ( ) { return BI . extend ( BI . SingleSelectCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-single-select-combo" , allowNoSelect : ! 1 , itemsCreator : BI . emptyFn , valueFormatter : BI . emptyFn , height : 24 , attributes : { tabIndex : 0 } , allowEdit : ! 0 } ) } , _init : function ( ) { BI . SingleSelectCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options , assertShowValue = function ( ) { BI . isKey ( self . _startValue ) && ( self . storeValue = self . _startValue ) , self . trigger . getSearcher ( ) . setState ( self . storeValue ) } ; this . storeValue = o . value , this . requesting = ! 1 , this . trigger = BI . createWidget ( { type : "bi.single_select_trigger" , height : o . height , allowNoSelect : o . allowNoSelect , allowEdit : o . allowEdit , valueFormatter : o . valueFormatter , itemsCreator : function ( op , callback ) { o . itemsCreator ( op , function ( res ) { 1 === op . times && BI . isNotNull ( op . keywords ) && self . trigger . setValue ( self . getValue ( ) ) , callback . apply ( self , arguments ) } ) } , text : o . text , value : this . storeValue } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . SingleSelectCombo . EVENT _FOCUS ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _BLUR , function ( ) { self . fireEvent ( BI . SingleSelectCombo . EVENT _BLUR ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _START , function ( ) { self . _setStartValue ( ) , this . getSearcher ( ) . setValue ( self . storeValue ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _STOP , function ( ) { self . _setStartValue ( ) , self . fireEvent ( BI . SingleSelectCombo . EVENT _STOP ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _PAUSE , function ( ) { if ( this . getSearcher ( ) . hasMatched ( ) ) { var keyword = this . getSearcher ( ) . getKeyword ( ) ; self . combo . setValue ( self . storeValue ) , self . _setStartValue ( keyword ) , assertShowValue ( ) , self . populate ( ) , self . _setStartValue ( ) } } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _SEARCHING , function ( keywords ) { var last = BI . last ( keywords ) ; keywords = BI . initial ( keywords || [ ] ) , keywords . length > 0 && self . _joinKeywords ( keywords , function ( ) { BI . isEndWithBlank ( last ) ? ( self . combo . setValue ( self . storeValue ) , assertShowValue ( ) , self . combo . populate ( ) , self . _setStartValue ( ) ) : ( self . combo . setValue ( self . storeValue ) , assertShowValue ( ) ) } ) , self . fireEvent ( BI . SingleSelectCombo . EVENT _SEARCHING ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _CHANGE , function ( value , obj ) { self . storeValue = this . getValue ( ) , assertShowValue ( ) , self . _defaultState ( ) } ) , this . trigger . on ( BI . SingleSelectTrigger . EVENT _COUNTER _CLICK , function ( ) { self . combo . isViewVisible ( ) || self . combo . showView ( ) } )
allowNoSelect : o . allowNoSelect , valueFormatter : o . valueFormatter , keywordGetter : function ( ) { return self . editor . getValue ( ) } , itemsCreator : function ( op , callback ) { var keyword = self . editor . getValue ( ) ; op . keywords = [ keyword ] , this . setKeyword ( keyword ) , o . itemsCreator ( op , callback ) } , value : o . value } , o . popup ) , adapter : o . adapter , masker : o . masker } ) , this . searcher . on ( BI . Searcher . EVENT _START , function ( ) { self . fireEvent ( BI . SingleSelectSearcher . EVENT _START ) } ) , this . searcher . on ( BI . Searcher . EVENT _PAUSE , function ( ) { this . hasMatched ( ) , self . fireEvent ( BI . SingleSelectSearcher . EVENT _PAUSE ) } ) , this . searcher . on ( BI . Searcher . EVENT _STOP , function ( ) { self . fireEvent ( BI . SingleSelectSearcher . EVENT _STOP ) } ) , this . searcher . on ( BI . Searcher . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . SingleSelectSearcher . EVENT _CHANGE , arguments ) } ) , this . searcher . on ( BI . Searcher . EVENT _SEARCHING , function ( ) { var keywords = this . getKeywords ( ) ; self . fireEvent ( BI . SingleSelectSearcher . EVENT _SEARCHING , keywords ) } ) , BI . isNotNull ( o . value ) && this . setState ( o . 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 ( ) { return this . searcher . getView ( ) && this . searcher . getView ( ) . hasChecked ( ) } , setAdapter : function ( adapter ) { this . searcher . setAdapter ( adapter ) } , setState : function ( v ) { var o = this . options ; BI . isNull ( v ) ? this . editor . setState ( BI . Selection . None ) : this . editor . setState ( o . valueFormatter ( v + "" ) || v + "" ) } , setValue : function ( ob ) { this . setState ( ob ) , this . searcher . setValue ( ob ) } , getKey : function ( ) { return this . editor . getValue ( ) } , getValue : function ( ) { return this . searcher . getValue ( ) } , populate : function ( items ) { this . searcher . populate . apply ( this . searcher , arguments ) } } ) , BI . SingleSelectSearcher . EVENT _FOCUS = "EVENT_FOCUS" , BI . SingleSelectSearcher . EVENT _BLUR = "EVENT_BLUR" , BI . SingleSelectSearcher . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . SingleSelectSearcher . EVENT _CHANGE = "EVENT_CHANGE" , BI . SingleSelectSearcher . EVENT _START = "EVENT_START" , BI . SingleSelectSearcher . EVENT _STOP = "EVENT_STOP" , BI . SingleSelectSearcher . EVENT _PAUSE = "EVENT_PAUSE" , BI . SingleSelectSearcher . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . shortcut ( "bi.single_select_searcher" , BI . SingleSelectSearcher ) , BI . SignTextEditor = BI . inherit ( BI . Widget , { _defaultConfig : function ( ) { var conf = BI . SignTextEditor . superclass . _defaultConfig . apply ( this , arguments ) ; return BI . extend ( conf , { baseCls : ( conf . baseCls || "" ) + " bi-sign-initial-editor" , validationChecker : BI . emptyFn , text : "" , height : 24 } ) } , _init : function ( ) { BI . SignTextEditor . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; this . editor = BI . createWidget ( { type : "bi.editor" , height : o . height , hgap : 4 , vgap : 2 , value : o . value , validationChecker : o . validationChecker , allowBlank : ! 1 } ) , this . text = BI . createWidget ( { type : "bi.text_button" , cls : "sign-editor-text" , title : function ( ) { return self . getValue ( ) } , textAlign : o . textAlign , height : o . height , hgap : 4 , handler : function ( ) { self . _showInput ( ) , self . editor . focus ( ) , self . editor . selectAll ( ) } } ) , this . text . on ( BI . TextButton . EVENT _CHANGE , function ( ) { BI . nextTick ( function ( ) { self . fireEvent ( BI . SignTextEditor . EVENT _CLICK _LABEL ) } ) } ) , BI . createWidget ( { type : "bi.absolute" , element : this , items : [ { el : this . text , left : 0 , right : 0 , top : 0 , bottom : 0 } ] } ) , this . editor . on ( BI . Controller . EVENT _CHANGE , function ( ) { self . fireEvent ( BI . Controller . EVENT _CHANGE , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CONFIRM , function ( ) { self . _showHint ( ) , self . _checkText ( ) , self . fireEvent ( BI . SignTextEditor . EVENT _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _CHANGE _CONFIRM , function ( ) { self . _showHint ( ) , self . _checkText ( ) , self . fireEvent ( BI . SignTextEditor . EVENT _CHANGE _CONFIRM , arguments ) } ) , this . editor . on ( BI . Editor . EVENT _ERROR , function ( ) { self . _checkText ( ) } ) , BI . createWidget ( { type : "bi.vertical" , scrolly : ! 1 , element : this , items : [ this . editor ] } ) , this . _showHint ( ) , self . _checkText ( ) } , _checkText : function ( ) { var o = this . options ; BI . nextTick ( BI . bind ( function ( ) { if ( "" === this . editor . getValue ( ) ) this . text . setValue ( o . watermark || "" ) , this . text . element . addClass ( "bi-water-mark" ) ; else { var v = this . editor . getValue
this . storeTriggerValue = "" , this . storeValue = opts . value ; var popup = { type : "bi.time_popup" , value : opts . value , listeners : [ { eventName : BI . TimePopup . BUTTON _CLEAR _EVENT _CHANGE , action : function ( ) { self . setValue ( ) , self . hidePopupView ( ) , self . fireEvent ( BI . TimeCombo . EVENT _CONFIRM ) } } , { eventName : BI . TimePopup . BUTTON _OK _EVENT _CHANGE , action : function ( ) { self . setValue ( self . popup . getValue ( ) ) , self . hidePopupView ( ) , self . fireEvent ( BI . TimeCombo . EVENT _CONFIRM ) } } , { eventName : BI . TimePopup . BUTTON _NOW _EVENT _CHANGE , action : function ( ) { self . _setNowTime ( ) } } ] , ref : function ( _ref ) { self . popup = _ref } } ; return { type : "bi.htape" , items : [ { type : "bi.absolute" , items : [ { el : { type : "bi.combo" , container : opts . container , toggle : ! 1 , isNeedAdjustHeight : ! 1 , isNeedAdjustWidth : ! 1 , el : { type : "bi.time_trigger" , height : opts . height , allowEdit : opts . allowEdit , watermark : opts . watermark , format : opts . format , value : opts . value , ref : function ( _ref ) { self . trigger = _ref } , listeners : [ { eventName : "EVENT_KEY_DOWN" , action : function ( ) { self . combo . isViewVisible ( ) && self . combo . hideView ( ) , self . fireEvent ( BI . TimeCombo . EVENT _KEY _DOWN , arguments ) } } , { eventName : "EVENT_STOP" , action : function ( ) { self . combo . isViewVisible ( ) || self . combo . showView ( ) } } , { eventName : "EVENT_FOCUS" , action : function ( ) { self . storeTriggerValue = self . trigger . getKey ( ) , self . combo . isViewVisible ( ) || self . combo . showView ( ) , self . fireEvent ( "EVENT_FOCUS" ) } } , { eventName : "EVENT_BLUR" , action : function ( ) { self . fireEvent ( "EVENT_BLUR" ) } } , { eventName : "EVENT_ERROR" , action : function ( ) { var date = BI . getDate ( ) ; self . storeValue = { hour : date . getHours ( ) , minute : date . getMinutes ( ) , second : date . getSeconds ( ) } , self . fireEvent ( "EVENT_ERROR" ) } } , { eventName : "EVENT_VALID" , action : function ( ) { self . fireEvent ( "EVENT_VALID" ) } } , { eventName : "EVENT_CHANGE" , action : function ( ) { self . fireEvent ( "EVENT_CHANGE" ) } } , { eventName : "EVENT_CONFIRM" , action : function ( ) { if ( ! self . combo . isViewVisible ( ) ) { var dateStore = self . storeTriggerValue , dateObj = self . trigger . getKey ( ) ; BI . isNotEmptyString ( dateObj ) && ! BI . isEqual ( dateObj , dateStore ) ? ( self . storeValue = self . trigger . getValue ( ) , self . setValue ( self . trigger . getValue ( ) ) ) : BI . isEmptyString ( dateObj ) && ( self . storeValue = null , self . trigger . setValue ( ) ) , self . fireEvent ( "EVENT_CONFIRM" ) } } } ] } , adjustLength : this . constants . comboAdjustHeight , popup : { el : popup , width : this . constants . popupWidth , stopPropagation : ! 1 } , hideChecker : function ( e ) { return 0 === self . triggerBtn . element . find ( e . target ) . length } , listeners : [ { eventName : BI . Combo . EVENT _BEFORE _POPUPVIEW , action : function ( ) { self . popup . setValue ( self . storeValue ) , self . fireEvent ( BI . TimeCombo . EVENT _BEFORE _POPUPVIEW ) } } ] , ref : function ( _ref ) { self . combo = _ref } } , top : 0 , left : 0 , right : 22 , bottom : 0 } , { el : { type : "bi.icon_button" , cls : "bi-trigger-icon-button time-font icon-size-16" , width : 22 , height : 22 , listeners : [ { eventName : BI . IconButton . EVENT _CHANGE , action : function ( ) { self . combo . isViewVisible ( ) || self . combo . showView ( ) } } ] , ref : function ( _ref ) { self . triggerBtn = _ref } } , top : 0 , right : 0 } ] } ] } } , setValue : function ( v ) { this . storeValue = v , this . trigger . setValue ( v ) } , getValue : function ( ) { return this . storeValue } , hidePopupView : function ( ) { this . combo . hideView ( ) } , _setNowTime : function ( ) { var date = BI . getDate ( ) , nowTome = { hour : date . getHours ( ) , minute : date . getMinutes ( ) , second : date . getSeconds ( ) } ; this . setValue ( nowTome ) , this . hidePopupView ( ) , this . fireEvent ( BI . TimeCombo . EVENT _CONFIRM ) } } ) , BI . TimeCombo . EVENT _KEY _DOWN = "EVENT_KEY_DOWN" , BI . TimeCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . TimeCombo . EVENT _CHANGE = "EVENT_CHANGE" , BI . TimeCombo . EVENT _VALID = "EVENT_VALID" , BI . TimeCombo . EVENT _ERROR = "EVENT_ERROR" , BI . TimeCombo . EVENT _BEFORE _POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" , BI . shortcut ( "bi.time_combo" , BI . TimeCombo ) } ( ) , ! function ( ) { BI . TimeTrigger = BI . inherit ( BI . Trigger , { _const : { COMPARE _FORMAT : "%H:%M:%S" , COMPLETE _COMPARE _FORMAT : "%Y-%M-%d %H:%M:%S %P" , FORMAT _ARRAY : [ "%H:%M:%S" , "%I:%M:%S" , "%l:%M:%S" , "%k:%M:%S" , "%l:%M:%S %p" , "%l:%M:%S %P" , "%H:%M:%S %p" , "%H:%M:%S %P" , "%l:%M" , "%k:%M" , "%I:%M" , "%H:%M" , "%M:%S" ] , DEFAULT _DATE _STRING : "2000-01-01" } , props : { extraCls : "bi-time-trigger" , value : { } , format : "" , allowEdit : ! 1 } , render : function ( ) { var self = this , o = this . options ; return this . storeTriggerValue = "" , this . storeValue = o . value , { type : "bi.absolute" , items : [ { el : { type : "bi.sign_editor" , height : o . height , validationChecker : func
props : { baseCls : "bi-year-month-card" } , render : function ( ) { var self = this ; return { type : "bi.vertical" , items : [ { type : "bi.label" , text : BI . i18nText ( "BI-Multi_Date_Relative_Current_Time" ) , textAlign : "left" , height : 24 } , { type : "bi.dynamic_date_param_item" , ref : function ( ) { self . year = this } , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . fireEvent ( "EVENT_CHANGE" ) } } ] } , { type : "bi.dynamic_date_param_item" , dateType : BI . DynamicDateCard . TYPE . MONTH , ref : function ( ) { self . month = this } , listeners : [ { eventName : "EVENT_CHANGE" , action : function ( ) { self . fireEvent ( "EVENT_CHANGE" ) } } ] } ] , vgap : 10 , hgap : 10 } } , _createValue : function ( type , v ) { return { dateType : type , value : Math . abs ( v ) , offset : v > 0 ? 1 : 0 } } , setValue : function ( v ) { v = v || { year : 0 , month : 0 } , this . year . setValue ( this . _createValue ( BI . DynamicDateCard . TYPE . YEAR , v . year ) ) , this . month . setValue ( this . _createValue ( BI . DynamicDateCard . TYPE . MONTH , v . month ) ) } , getValue : function ( ) { var year = this . year . getValue ( ) , month = this . month . getValue ( ) ; return { year : 0 === year . offset ? - year . value : year . value , month : 0 === month . offset ? - month . value : month . value } } } ) , BI . DynamicYearMonthCard . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.dynamic_year_month_card" , BI . DynamicYearMonthCard ) , BI . StaticYearMonthCard = BI . inherit ( BI . Widget , { props : { baseCls : "bi-static-year-month-card" , behaviors : { } } , _createMonths : function ( ) { var self = this , month = [ 1 , 7 , 2 , 8 , 3 , 9 , 4 , 10 , 5 , 11 , 6 , 12 ] , items = [ ] ; return items . push ( month . slice ( 0 , 2 ) ) , items . push ( month . slice ( 2 , 4 ) ) , items . push ( month . slice ( 4 , 6 ) ) , items . push ( month . slice ( 6 , 8 ) ) , items . push ( month . slice ( 8 , 10 ) ) , items . push ( month . slice ( 10 , 12 ) ) , BI . map ( items , function ( i , item ) { return BI . map ( item , function ( j , td ) { return { type : "bi.text_item" , cls : "bi-list-item-select" , textAlign : "center" , whiteSpace : "nowrap" , once : ! 1 , forceSelected : ! 0 , height : 23 , width : 38 , value : td , text : td , ref : function ( _ref ) { self . monthMap [ 0 === j ? i : i + 6 ] = _ref } } } ) } ) } , render : function ( ) { var self = this , o = this . options ; return this . monthMap = { } , { type : "bi.vertical" , items : [ { type : "bi.year_picker" , min : o . min , max : o . max , ref : function ( ) { self . yearPicker = this } , behaviors : o . behaviors , height : 30 , listeners : [ { eventName : BI . YearPicker . EVENT _CHANGE , action : function ( ) { var value = this . getValue ( ) ; self . _checkMonthStatus ( value ) , self . setValue ( { year : value , month : self . selectedMonth } ) } } ] } , { type : "bi.button_group" , cls : "bi-split-top" , behaviors : o . behaviors , ref : function ( ) { self . month = this } , items : this . _createMonths ( ) , layouts : [ BI . LogicFactory . createLogic ( "table" , BI . extend ( { dynamic : ! 0 } , { columns : 2 , rows : 6 , columnSize : [ . 5 , . 5 ] , rowSize : 25 } ) ) , { type : "bi.center_adapt" , vgap : 1 , hgap : 2 } ] , value : o . value , listeners : [ { eventName : BI . ButtonGroup . EVENT _CHANGE , action : function ( ) { self . selectedYear = self . yearPicker . getValue ( ) , self . selectedMonth = this . getValue ( ) [ 0 ] , self . fireEvent ( BI . StaticYearMonthCard . EVENT _CHANGE ) } } ] } ] } } , mounted : function ( ) { this . _checkMonthStatus ( this . selectedYear ) } , _checkMonthStatus : function ( year ) { var o = this . options , minDate = BI . parseDateTime ( o . min , "%Y-%X-%d" ) , maxDate = BI . parseDateTime ( o . max , "%Y-%X-%d" ) , minYear = minDate . getFullYear ( ) , maxYear = maxDate . getFullYear ( ) , minMonth = 0 , maxMonth = 11 ; minYear === year && ( minMonth = minDate . getMonth ( ) ) , maxYear === year && ( maxMonth = maxDate . getMonth ( ) ) ; var yearInvalid = year < minYear || year > maxYear ; BI . each ( this . monthMap , function ( month , obj ) { var monthInvalid = month < minMonth || month > maxMonth ; obj . setEnable ( ! yearInvalid && ! monthInvalid ) } ) } , getValue : function ( ) { return { year : this . selectedYear , month : this . selectedMonth } } , setValue : function ( obj ) { var o = this . options , newObj = { } ; if ( newObj . year = obj . year || 0 , newObj . month = obj . month || 0 , 0 === newObj . year || 0 === newObj . month || BI . checkDateVoid ( newObj . year , newObj . month , 1 , o . min , o . max ) [ 0 ] ) { var year = newObj . year || BI . getDate ( ) . getFullYear ( ) ; this . selectedYear = year , this . selectedMonth = "" , this . yearPicker . setValue ( year ) , this . month . setValue ( ) } else this . selectedYear = BI . parseInt ( newObj . year ) , this . selectedMonth = BI . parseInt ( newObj . month ) , this . yearPicker . setValue ( this . selectedYear ) , this . month . setValue ( this . selectedMonth ) } } ) , BI . StaticYearMonthCard . EVENT _CHANGE = "EVENT_CHANGE" , BI . shortcut ( "bi.static_year_month_card" , BI . StaticYearMonthCard ) , BI . DynamicYearMonthCombo = BI . inherit ( BI . Single , { props : { baseCls : "bi-year-month-combo bi-border bi-focus-shadow" , behaviors : { } , m
} } ] , ref : function ( ) { self . year = this } } } } , listeners : [ { eventName : BI . Tab . EVENT _CHANGE , action : function ( ) { var v = self . dateTab . getSelect ( ) ; switch ( v ) { case BI . DynamicYearQuarterCombo . Static : var date = BI . DynamicDateHelper . getCalculation ( self . dynamicPane . getValue ( ) ) ; self . year . setValue ( { year : date . getFullYear ( ) , quarter : BI . getQuarter ( date ) } ) , self . _setInnerValue ( ) ; break ; case BI . DynamicYearQuarterCombo . Dynamic : default : self . storeValue && self . storeValue . type === BI . DynamicYearQuarterCombo . Dynamic ? self . dynamicPane . setValue ( self . storeValue . value ) : self . dynamicPane . setValue ( { year : 0 } ) , self . _setInnerValue ( ) } } } ] } } , setValue : function ( v ) { this . storeValue = v ; var self = this , type , value ; switch ( v = v || { } , type = v . type || BI . DynamicDateCombo . Static , value = v . value || v , this . dateTab . setSelect ( type ) , type ) { case BI . DynamicDateCombo . Dynamic : this . dynamicPane . setValue ( value ) , self . _setInnerValue ( ) ; break ; case BI . DynamicDateCombo . Static : default : this . year . setValue ( value ) , 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-year-quarter-trigger" , min : "1900-01-01" , max : "2099-12-31" , height : 22 } , _init : function ( ) { BI . DynamicYearQuarterTrigger . superclass . _init . apply ( this , arguments ) ; var o = this . options ; this . yearEditor = this . _createEditor ( ! 0 ) , this . quarterEditor = this . _createEditor ( ! 1 ) , BI . createWidget ( { element : this , type : "bi.htape" , items : [ { type : "bi.center" , items : [ { type : "bi.htape" , items : [ this . yearEditor , { el : { type : "bi.text_button" , text : BI . i18nText ( "BI-Multi_Date_Year" ) , width : o . height } , width : o . height } ] } , { type : "bi.htape" , items : [ this . quarterEditor , { el : { type : "bi.text_button" , text : BI . i18nText ( "BI-Multi_Date_Quarter" ) , width : 24 } , width : 24 } ] } ] } , { el : { type : "bi.trigger_icon_button" , width : o . height } , width : o . height } ] } ) , this . setValue ( o . value ) } , _createEditor : function ( isYear ) { var self = this , o = this . options , c = this . _const , editor = BI . createWidget ( { type : "bi.sign_editor" , height : o . height , validationChecker : function ( v ) { return isYear ? "" === v || BI . isPositiveInteger ( v ) && ! BI . checkDateVoid ( v , 1 , 1 , o . min , o . max ) [ 0 ] : "" === v || BI . isPositiveInteger ( v ) && v >= 1 && v <= 4 && ! BI . checkDateVoid ( BI . getDate ( ) . getFullYear ( ) , v , 1 , o . min , o . max ) [ 0 ] } , quitChecker : function ( ) { return ! 1 } , errorText : function ( v ) { return BI . i18nText ( "BI-Year_Trigger_Invalid_Text" ) } , watermark : BI . i18nText ( "BI-Basic_Unrestricted" ) , hgap : c . hgap , vgap : c . vgap , title : "" , allowBlank : ! 0 } ) ; return editor . on ( BI . SignEditor . EVENT _KEY _DOWN , function ( ) { self . fireEvent ( BI . DynamicYearQuarterTrigger . EVENT _KEY _DOWN ) } ) , editor . on ( BI . SignEditor . EVENT _FOCUS , function ( ) { self . fireEvent ( BI . DynamicYearQuarterTrigger . EVENT _FOCUS ) } ) , editor . on ( BI . SignEditor . EVENT _STOP , function ( ) { self . fireEvent ( BI . DynamicYearQuarterTrigger . EVENT _STOP ) } ) , editor . on ( BI . SignEditor . EVENT _CONFIRM , function ( ) { self . _doEditorConfirm ( editor ) , self . fireEvent ( BI . DynamicYearQuarterTrigger . EVENT _CONFIRM ) } ) , editor . on ( BI . SignEditor . EVENT _SPACE , function ( ) { editor . isValid ( ) && editor . blur ( ) } ) , editor . on ( BI . SignEditor . EVENT _START , function ( ) { self . fireEvent ( BI . DynamicYearQuarterTrigger . EVENT _START ) } ) , editor . on ( BI . SignEditor . EVENT _ERROR , function ( ) { self . fireEvent ( BI . DynamicYearQuarterTrigger . EVENT _ERROR ) } ) , editor . on ( BI . SignEditor . EVENT _CHANGE , function ( ) { isYear && self . _autoSwitch ( editor ) } ) , editor } , _doEditorConfirm : function ( editor ) { var value = editor . getValue ( ) ; BI . isNotNull ( value ) && editor . setValue ( value ) ; var quarterValue = this . quarterEditor . getValue ( ) ; this . storeValue = { type : BI . DynamicYearQuarterCombo . Static , value : { year : this . yearEditor . getValue ( ) , quarter : BI . isEmptyString ( this . quarterEditor . getValue ( ) ) ? "" : quarterValue } } , this . setTitle ( this . _getStaticTitle ( this . storeValue . value ) ) } , _yearCheck : function ( v ) { v
action : function ( ) { self . fireEvent ( BI . ListTreeValueChooserInsertCombo . EVENT _CLICK _ITEM ) } } , { eventName : BI . MultiTreeListCombo . EVENT _SEARCHING , action : function ( ) { self . fireEvent ( BI . ListTreeValueChooserInsertCombo . EVENT _SEARCHING ) } } , { eventName : BI . MultiTreeListCombo . EVENT _CONFIRM , action : function ( ) { self . fireEvent ( BI . ListTreeValueChooserInsertCombo . EVENT _CONFIRM ) } } ] } ) } , setValue : function ( v ) { this . combo . setValue ( v ) } , getValue : function ( ) { return this . combo . getValue ( ) } , populate : function ( items ) { this . _initData ( items ) , this . combo . populate . apply ( this . combo , arguments ) } } ) , BI . ListTreeValueChooserInsertCombo . EVENT _FOCUS = "EVENT_FOCUS" , BI . ListTreeValueChooserInsertCombo . EVENT _BLUR = "EVENT_BLUR" , BI . ListTreeValueChooserInsertCombo . EVENT _STOP = "EVENT_STOP" , BI . ListTreeValueChooserInsertCombo . EVENT _CLICK _ITEM = "EVENT_CLICK_ITEM" , BI . ListTreeValueChooserInsertCombo . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . ListTreeValueChooserInsertCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.list_tree_value_chooser_insert_combo" , BI . ListTreeValueChooserInsertCombo ) , BI . TreeValueChooserInsertCombo = BI . inherit ( BI . AbstractTreeValueChooser , { _defaultConfig : function ( ) { return BI . extend ( BI . TreeValueChooserInsertCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-tree-value-chooser-insert-combo" , width : 200 , height : 24 , items : null , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . TreeValueChooserInsertCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; BI . isNotNull ( o . items ) && this . _initData ( o . items ) , this . combo = BI . createWidget ( { type : "bi.multi_tree_insert_combo" , text : o . text , value : o . value , watermark : o . watermark , element : this , itemsCreator : BI . bind ( this . _itemsCreator , this ) , valueFormatter : BI . bind ( this . _valueFormatter , this ) , width : o . width , height : o . height , listeners : [ { eventName : BI . MultiTreeInsertCombo . EVENT _FOCUS , action : function ( ) { self . fireEvent ( BI . TreeValueChooserCombo . EVENT _FOCUS ) } } , { eventName : BI . MultiTreeInsertCombo . EVENT _BLUR , action : function ( ) { self . fireEvent ( BI . TreeValueChooserCombo . EVENT _BLUR ) } } , { eventName : BI . MultiTreeInsertCombo . EVENT _STOP , action : function ( ) { self . fireEvent ( BI . TreeValueChooserInsertCombo . EVENT _STOP ) } } , { eventName : BI . MultiTreeInsertCombo . EVENT _CLICK _ITEM , action : function ( ) { self . fireEvent ( BI . TreeValueChooserInsertCombo . EVENT _CLICK _ITEM ) } } , { eventName : BI . MultiTreeInsertCombo . EVENT _SEARCHING , action : function ( ) { self . fireEvent ( BI . TreeValueChooserInsertCombo . EVENT _SEARCHING ) } } , { eventName : BI . MultiTreeInsertCombo . EVENT _CONFIRM , action : function ( ) { self . fireEvent ( BI . TreeValueChooserInsertCombo . EVENT _CONFIRM ) } } ] } ) } , setValue : function ( v ) { this . combo . setValue ( v ) } , getValue : function ( ) { return this . combo . getValue ( ) } , populate : function ( items ) { this . _initData ( items ) , this . combo . populate . apply ( this . combo , arguments ) } } ) , BI . TreeValueChooserInsertCombo . EVENT _FOCUS = "EVENT_FOCUS" , BI . TreeValueChooserInsertCombo . EVENT _BLUR = "EVENT_BLUR" , BI . TreeValueChooserInsertCombo . EVENT _STOP = "EVENT_STOP" , BI . TreeValueChooserInsertCombo . EVENT _CLICK _ITEM = "EVENT_CLICK_ITEM" , BI . TreeValueChooserInsertCombo . EVENT _SEARCHING = "EVENT_SEARCHING" , BI . TreeValueChooserInsertCombo . EVENT _CONFIRM = "EVENT_CONFIRM" , BI . shortcut ( "bi.tree_value_chooser_insert_combo" , BI . TreeValueChooserInsertCombo ) , BI . TreeValueChooserCombo = BI . inherit ( BI . AbstractTreeValueChooser , { _defaultConfig : function ( ) { return BI . extend ( BI . TreeValueChooserCombo . superclass . _defaultConfig . apply ( this , arguments ) , { baseCls : "bi-tree-value-chooser-combo" , width : 200 , height : 24 , items : null , itemsCreator : BI . emptyFn } ) } , _init : function ( ) { BI . TreeValueChooserCombo . superclass . _init . apply ( this , arguments ) ; var self = this , o = this . options ; BI . isNotNull ( o . items ) && this . _initData ( o . items ) , this . combo = BI . createWidget ( { type : "bi.multi_tree_combo" , text : o . text , value : o . value , watermark : o . watermark , element : this , itemsCreator : BI . bind ( this . _itemsCreator , this ) , valueFormatter : BI . bind ( this . _valueFormatter , this ) , width : o . width , height : o . height , listeners : [ { eventName : BI . MultiTreeCombo . EVENT _FOCUS , action : function ( ) { self . fireEvent ( BI . TreeValueChooserCombo . EVENT _FOCUS ) } } , { eventName : BI . MultiTreeCombo . EVENT _BLUR , action : function ( ) { self . fireEvent ( BI . TreeValueChooserCombo . EVENT _BLUR ) } } , { eventName : BI . MultiTreeCombo . EVENT
//# sourceMappingURL=fineui.ie.min.js.map
! function ( e ) { var r = { } ; function o ( t ) { if ( r [ t ] ) return r [ t ] . exports ; var n = r [ t ] = { i : t , l : ! 1 , exports : { } } ; return e [ t ] . call ( n . exports , n , n . exports , o ) , n . l = ! 0 , n . exports } o . m = e , o . c = r , o . d = function ( t , n , e ) { o . o ( t , n ) || Object . defineProperty ( t , n , { enumerable : ! 0 , get : e } ) } , o . r = function ( t ) { "undefined" != typeof Symbol && Symbol . toStringTag && Object . defineProperty ( t , Symbol . toStringTag , { value : "Module" } ) , Object . defineProperty ( t , "__esModule" , { value : ! 0 } ) } , o . t = function ( n , t ) { if ( 1 & t && ( n = o ( n ) ) , 8 & t ) return n ; if ( 4 & t && "object" == typeof n && n && n . _ _esModule ) return n ; var e = Object . create ( null ) ; if ( o . r ( e ) , Object . defineProperty ( e , "default" , { enumerable : ! 0 , value : n } ) , 2 & t && "string" != typeof n ) for ( var r in n ) o . d ( e , r , function ( t ) { return n [ t ] } . bind ( null , r ) ) ; return e } , o . n = function ( t ) { var n = t && t . _ _esModule ? function ( ) { return t [ "default" ] } : function ( ) { return t } ; return o . d ( n , "a" , n ) , n } , o . o = function ( t , n ) { return Object . prototype . hasOwnProperty . call ( t , n ) } , o . p = "" , o ( o . s = 69 ) } ( [ function ( r , t , n ) { "use strict" ; ( function ( t ) { function n ( t ) { return ( n = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( t ) { return typeof t } : function ( t ) { return t && "function" == typeof Symbol && t . constructor === Symbol && t !== Symbol . prototype ? "symbol" : typeof t } ) ( t ) } var e = function e ( t ) { return t && t . Math == Math && t } ; r . exports = e ( "object" == ( "undefined" == typeof globalThis ? "undefined" : n ( globalThis ) ) && globalThis ) || e ( "object" == ( "undefined" == typeof window ? "undefined" : n ( window ) ) && window ) || e ( "object" == ( "undefined" == typeof self ? "undefined" : n ( self ) ) && self ) || e ( "object" == ( void 0 === t ? "undefined" : n ( t ) ) && t ) || Function ( "return this" ) ( ) } ) . call ( this , n ( 73 ) ) } , function ( t , n , e ) { "use strict" ; var r = e ( 0 ) , o = e ( 19 ) , i = e ( 40 ) , u = e ( 55 ) , c = r . Symbol , s = o ( "wks" ) ; t . exports = function ( t ) { return s [ t ] || ( s [ t ] = u && c [ t ] || ( u ? c : i ) ( "Symbol." + t ) ) } } , function ( t , n , e ) { "use strict" ; function a ( t ) { return ( a = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( t ) { return typeof t } : function ( t ) { return t && "function" == typeof Symbol && t . constructor === Symbol && t !== Symbol . prototype ? "symbol" : typeof t } ) ( t ) } var l = e ( 0 ) , p = e ( 24 ) . f , d = e ( 6 ) , y = e ( 10 ) , v = e ( 39 ) , h = e ( 76 ) , g = e ( 51 ) ; t . exports = function ( t , n ) { var e , r , o , i , u , c = t . target , s = t . global , f = t . stat ; if ( e = s ? l : f ? l [ c ] || v ( c , { } ) : ( l [ c ] || { } ) . prototype ) for ( r in n ) { if ( i = n [ r ] , o = t . noTargetGet ? ( u = p ( e , r ) ) && u . value : e [ r ] , ! g ( s ? r : c + ( f ? "." : "#" ) + r , t . forced ) && o !== undefined ) { if ( a ( i ) === a ( o ) ) continue ; h ( i , o ) } ( t . sham || o && o . sham ) && d ( i , "sham" , ! 0 ) , y ( e , r , i , t ) } } } , function ( t , n , e ) { "use strict" ; var r = e ( 7 ) ; t . exports = function ( t ) { if ( ! r ( t ) ) throw TypeError ( String ( t ) + " is not an object" ) ; return t } } , function ( t , n , e ) { "use strict" ; var r = e ( 5 ) ; t . exports = ! r ( function ( ) { return 7 != Object . defineProperty ( { } , "a" , { get : function ( ) { return 7 } } ) . a } ) } , function ( t , n , e ) { "use strict" ; t . exports = function ( t ) { try { return ! ! t ( ) } catch ( n ) { return ! 0 } } } , function ( t , n , e ) { "use strict" ; var r = e ( 4 ) , o = e ( 9 ) , i = e ( 18 ) ; t . exports = r ? function ( t , n , e ) { return o . f ( t , n , i ( 1 , e ) ) } : function ( t , n , e ) { return t [ n ] = e , t } } , function ( t , n , e ) { "use strict" ; function r ( t ) { return ( r = "function" == typeof Symbol && "symbol" == typeof Symbol . iterator ? function ( t ) { return typeof t } : function ( t ) { return t && "function" == typeof Symbol && t . constructor === Symbol && t !== Symbol . prototype ? "symbol" : typeof t } ) ( t ) } t . exports = function ( t ) { return "object" === r ( t ) ? null !== t : "function" == typeof t } } , function ( t , n , e ) { "use strict" ; var r = { } . hasOwnProperty ; t . exports = function ( t , n ) { return r . call ( t , n ) } } , function ( t , n , e ) { "use strict" ; var r = e ( 4 ) , o = e ( 47 ) , i = e ( 3 ) , u = e ( 37 ) , c = Object . defineProperty ; n . f = r ? c : function ( t , n , e ) { if ( i ( t ) , n = u ( n , ! 0 ) , i ( e ) , o ) try { return c ( t , n , e ) } catch ( r ) { } if ( "get" in e || "set" in e ) throw TypeError ( "Accessors not supported" ) ; return "value" in e && ( t [ n ] = e . value ) , t } } , function ( t , n , e ) { "use strict" ; var c = e ( 0 ) , r = e ( 19 ) , s = e ( 6 ) , f = e ( 8 ) , a = e ( 39 ) , o = e ( 48 ) , i = e ( 16 ) , u = i . get , l = i . enforce , p = String ( o ) . split ( "toString" ) ; r ( "inspectSource" , function ( t ) { return o . call ( t ) } ) , ( t . exports = function ( t , n , e , r ) { var o = ! ! r && ! ! r . unsafe , i = ! ! r && ! ! r . enumerable , u = ! ! r && ! ! r . noTargetGet ; "function" == typeof e && ( "string" != typeof n || f ( e , "name" ) || s ( e , "name" , n ) , l ( e ) . source = p . join ( "string" == typeof n ? n : "" ) ) , t !== c ? ( o ? ! u && t [ n ] && ( i = ! 0 ) : delete t [ n ] , i ? t [ n ] = e : s ( t , n , e ) ) : i ? t [ n ] = e : a ( n , e ) } ) ( Function . prototype , "toString" , function ( ) { return "function" == typeof this && u ( this )
//# sourceMappingURL=fineui.ie.min.js.map