2021-04-14 06:42:32 +00:00
/ * !
* ZUI : 文件上传 - v1 . 9.2 - 2020 - 07 - 09
* http : //openzui.com
* GitHub : https : //github.com/easysoft/zui.git
* Copyright ( c ) 2020 cnezsoft . com ; Licensed MIT
* /
! function ( e , t ) { var i = function ( ) { var e = { } ; return t . apply ( e , arguments ) , e . moxie } ; "function" == typeof define && define . amd ? define ( "moxie" , [ ] , i ) : "object" == typeof module && module . exports ? module . exports = i ( ) : e . moxie = i ( ) } ( this || window , function ( ) { ! function ( e , t ) { "use strict" ; function i ( e , t ) { for ( var i , n = [ ] , r = 0 ; r < e . length ; ++ r ) { if ( i = s [ e [ r ] ] || o ( e [ r ] ) , ! i ) throw "module definition dependecy not found: " + e [ r ] ; n . push ( i ) } t . apply ( null , n ) } function n ( e , n , r ) { if ( "string" != typeof e ) throw "invalid module definition, module id must be defined and be a string" ; if ( n === t ) throw "invalid module definition, dependencies must be specified" ; if ( r === t ) throw "invalid module definition, definition function must be specified" ; i ( n , function ( ) { s [ e ] = r . apply ( null , arguments ) } ) } function r ( e ) { return ! ! s [ e ] } function o ( t ) { for ( var i = e , n = t . split ( /[.\/]/ ) , r = 0 ; r < n . length ; ++ r ) { if ( ! i [ n [ r ] ] ) return ; i = i [ n [ r ] ] } return i } function a ( i ) { for ( var n = 0 ; n < i . length ; n ++ ) { for ( var r = e , o = i [ n ] , a = o . split ( /[.\/]/ ) , l = 0 ; l < a . length - 1 ; ++ l ) r [ a [ l ] ] === t && ( r [ a [ l ] ] = { } ) , r = r [ a [ l ] ] ; r [ a [ a . length - 1 ] ] = s [ o ] } } var s = { } ; n ( "moxie/core/utils/Basic" , [ ] , function ( ) { function e ( e ) { var t ; return e === t ? "undefined" : null === e ? "null" : e . nodeType ? "node" : { } . toString . call ( e ) . match ( /\s([a-z|A-Z]+)/ ) [ 1 ] . toLowerCase ( ) } function t ( ) { return s ( ! 1 , ! 1 , arguments ) } function i ( ) { return s ( ! 0 , ! 1 , arguments ) } function n ( ) { return s ( ! 1 , ! 0 , arguments ) } function r ( ) { return s ( ! 0 , ! 0 , arguments ) } function o ( t ) { switch ( e ( t ) ) { case "array" : return s ( ! 1 , ! 0 , [ [ ] , t ] ) ; case "object" : return s ( ! 1 , ! 0 , [ { } , t ] ) ; default : return t } } function a ( i ) { switch ( e ( i ) ) { case "array" : return Array . prototype . slice . call ( i ) ; case "object" : return t ( { } , i ) } return i } function s ( t , i , n ) { var r , o = n [ 0 ] ; return u ( n , function ( n , l ) { l > 0 && u ( n , function ( n , l ) { var u = - 1 !== f ( e ( n ) , [ "array" , "object" ] ) ; return ! ! ( n === r || t && o [ l ] === r ) || ( u && i && ( n = a ( n ) ) , void ( e ( o [ l ] ) === e ( n ) && u ? s ( t , i , [ o [ l ] , n ] ) : o [ l ] = n ) ) } ) } ) , o } function l ( e , t ) { function i ( ) { this . constructor = e } for ( var n in t ) ( { } ) . hasOwnProperty . call ( t , n ) && ( e [ n ] = t [ n ] ) ; return i . prototype = t . prototype , e . prototype = new i , e . parent = t . prototype , e } function u ( e , t ) { var i , n , r , o ; if ( e ) { try { i = e . length } catch ( a ) { i = o } if ( i === o || "number" != typeof i ) { for ( n in e ) if ( e . hasOwnProperty ( n ) && t ( e [ n ] , n ) === ! 1 ) return } else for ( r = 0 ; i > r ; r ++ ) if ( t ( e [ r ] , r ) === ! 1 ) return } } function c ( t ) { var i ; if ( ! t || "object" !== e ( t ) ) return ! 0 ; for ( i in t ) return ! 1 ; return ! 0 } function d ( t , i ) { function n ( r ) { "function" === e ( t [ r ] ) && t [ r ] ( function ( e ) { ++ r < o && ! e ? n ( r ) : i ( e ) } ) } var r = 0 , o = t . length ; "function" !== e ( i ) && ( i = function ( ) { } ) , t && t . length || i ( ) , n ( r ) } function p ( e , t ) { var i = 0 , n = e . length , r = new Array ( n ) ; u ( e , function ( e , o ) { e ( function ( e ) { if ( e ) return t ( e ) ; var a = [ ] . slice . call ( arguments ) ; a . shift ( ) , r [ o ] = a , i ++ , i === n && ( r . unshift ( null ) , t . apply ( this , r ) ) } ) } ) } function f ( e , t ) { if ( t ) { if ( Array . prototype . indexOf ) return Array . prototype . indexOf . call ( t , e ) ; for ( var i = 0 , n = t . length ; n > i ; i ++ ) if ( t [ i ] === e ) return i } return - 1 } function m ( t , i ) { var n = [ ] ; "array" !== e ( t ) && ( t = [ t ] ) , "array" !== e ( i ) && ( i = [ i ] ) ; for ( var r in t ) - 1 === f ( t [ r ] , i ) && n . push ( t [ r ] ) ; return ! ! n . length && n } function h ( e , t ) { var i = [ ] ; return u ( e , function ( e ) { - 1 !== f ( e , t ) && i . push ( e ) } ) , i . length ? i : null } function g ( e ) { var t , i = [ ] ; for ( t = 0 ; t < e . length ; t ++ ) i [ t ] = e [ t ] ; return i } function v ( e ) { return e ? String . prototype . trim ? String . prototype . trim . call ( e ) : e . toString ( ) . replace ( /^\s*/ , "" ) . replace ( /\s*$/ , "" ) : e } function x ( e ) { if ( "string" != typeof e ) return e ; var t , i = { t : 1099511627776 , g : 1073741824 , m : 1048576 , k : 1024 } ; return e = /^([0-9\.]+)([tmgk]?)$/ . exec ( e . toLowerCase ( ) . replace ( /[^0-9\.tmkg]/g , "" ) ) , t = e [ 2 ] , e = + e [ 1 ] , i . hasOwnProperty ( t ) && ( e *= i [ t ] ) , Math . floor ( e ) } function E ( e ) { var t = [ ] . slice . call ( arguments , 1 ) ; return e . replace ( /%([a-z])/g , function ( e , i ) { var n = t . shift ( ) ; switch ( i ) { case "s" : return n + "" ; case "d" : return parseInt ( n , 10 ) ; case "f" : return parseFloat ( n ) ; case "c" : return "" ; default : return n } } ) } function y ( e , t ) { var i = this ; setTimeout ( function ( ) { e . call ( i ) } , t || 1 ) } var b = function ( ) { var e = 0 ; return function ( t ) { var i , n = ( new Date ) . getTime ( ) . toString ( 32 ) ; for ( i = 0 ; 5 > i ; i ++ ) n += Math . floor ( 65535 * Math . random ( ) ) . toString ( 32 ) ; return ( t || "o_" ) + n + ( e ++ ) . toString ( 32 ) } } ( ) ; return { guid : b , typeOf : e , extend : t , extendIf : i , extendImmutable : n , extendImmutableIf : r , clone : o , inherit : l , each : u , isEmptyObj : c , inSeries : d , inParallel : p , inArray : f , arra
i . container = t . get ( i . drop _zone ) || document . body , "static" === t . getStyle ( i . container , "position" ) && ( i . container . style . position = "relative" ) , "string" == typeof i . accept && ( i . accept = l . mimes2extList ( i . accept ) ) , a . call ( o ) , n . extend ( o , { uid : n . guid ( "uid_" ) , ruid : null , files : null , init : function ( ) { o . bind ( "RuntimeInit" , function ( e , t ) { o . ruid = t . uid , t . exec . call ( o , "FileDrop" , "init" , i ) , o . dispatchEvent ( "ready" ) } ) , o . connectRuntime ( i ) } , destroy : function ( ) { var e = this . getRuntime ( ) ; e && ( e . exec . call ( this , "FileDrop" , "destroy" ) , this . disconnectRuntime ( ) ) , this . files = null , this . unbindAll ( ) } } ) , this . handleEventProps ( c ) } var c = [ "ready" , "dragenter" , "dragleave" , "drop" , "error" ] ; return u . prototype = s . instance , u } ) , n ( "moxie/file/FileReader" , [ "moxie/core/utils/Basic" , "moxie/core/utils/Encode" , "moxie/core/Exceptions" , "moxie/core/EventTarget" , "moxie/file/Blob" , "moxie/runtime/RuntimeClient" ] , function ( e , t , i , n , r , o ) { function a ( ) { function n ( e , n ) { if ( this . trigger ( "loadstart" ) , this . readyState === a . LOADING ) return this . trigger ( "error" , new i . DOMException ( i . DOMException . INVALID _STATE _ERR ) ) , void this . trigger ( "loadend" ) ; if ( ! ( n instanceof r ) ) return this . trigger ( "error" , new i . DOMException ( i . DOMException . NOT _FOUND _ERR ) ) , void this . trigger ( "loadend" ) ; if ( this . result = null , this . readyState = a . LOADING , n . isDetached ( ) ) { var o = n . getSource ( ) ; switch ( e ) { case "readAsText" : case "readAsBinaryString" : this . result = o ; break ; case "readAsDataURL" : this . result = "data:" + n . type + ";base64," + t . btoa ( o ) } this . readyState = a . DONE , this . trigger ( "load" ) , this . trigger ( "loadend" ) } else this . connectRuntime ( n . ruid ) , this . exec ( "FileReader" , "read" , e , n ) } o . call ( this ) , e . extend ( this , { uid : e . guid ( "uid_" ) , readyState : a . EMPTY , result : null , error : null , readAsBinaryString : function ( e ) { n . call ( this , "readAsBinaryString" , e ) } , readAsDataURL : function ( e ) { n . call ( this , "readAsDataURL" , e ) } , readAsText : function ( e ) { n . call ( this , "readAsText" , e ) } , abort : function ( ) { this . result = null , - 1 === e . inArray ( this . readyState , [ a . EMPTY , a . DONE ] ) && ( this . readyState === a . LOADING && ( this . readyState = a . DONE ) , this . exec ( "FileReader" , "abort" ) , this . trigger ( "abort" ) , this . trigger ( "loadend" ) ) } , destroy : function ( ) { this . abort ( ) , this . exec ( "FileReader" , "destroy" ) , this . disconnectRuntime ( ) , this . unbindAll ( ) } } ) , this . handleEventProps ( s ) , this . bind ( "Error" , function ( e , t ) { this . readyState = a . DONE , this . error = t } , 999 ) , this . bind ( "Load" , function ( ) { this . readyState = a . DONE } , 999 ) } var s = [ "loadstart" , "progress" , "load" , "abort" , "error" , "loadend" ] ; return a . EMPTY = 0 , a . LOADING = 1 , a . DONE = 2 , a . prototype = n . instance , a } ) , n ( "moxie/core/utils/Url" , [ "moxie/core/utils/Basic" ] , function ( e ) { var t = function ( i , n ) { var r , o = [ "source" , "scheme" , "authority" , "userInfo" , "user" , "pass" , "host" , "port" , "relative" , "path" , "directory" , "file" , "query" , "fragment" ] , a = o . length , s = { http : 80 , https : 443 } , l = { } , u = /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@\/]*):?([^:@\/]*))?@)?(\[[\da-fA-F:]+\]|[^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/ , c = u . exec ( i || "" ) , d = /^\/\/\w/ . test ( i ) ; switch ( e . typeOf ( n ) ) { case "undefined" : n = t ( document . location . href , ! 1 ) ; break ; case "string" : n = t ( n , ! 1 ) } for ( ; a -- ; ) c [ a ] && ( l [ o [ a ] ] = c [ a ] ) ; if ( r = ! d && ! l . scheme , ( d || r ) && ( l . scheme = n . scheme ) , r ) { l . host = n . host , l . port = n . port ; var p = "" ; /^[^\/]/ . test ( l . path ) && ( p = n . path , p = /\/[^\/]*\.[^\/]*$/ . test ( p ) ? p . replace ( /\/[^\/]+$/ , "/" ) : p . replace ( /\/?$/ , "/" ) ) , l . path = p + ( l . path || "" ) } return l . port || ( l . port = s [ l . scheme ] || 80 ) , l . port = parseInt ( l . port , 10 ) , l . path || ( l . path = "/" ) , delete l . source , l } , i = function ( e ) { var i = { http : 80 , https : 443 } , n = "object" == typeof e ? e : t ( e ) ; return n . scheme + "://" + n . host + ( n . port !== i [ n . scheme ] ? ":" + n . port : "" ) + n . path + ( n . query ? n . query : "" ) } , n = function ( e ) { function i ( e ) { return [ e . scheme , e . host , e . port ] . join ( "/" ) } return "string" == typeof e && ( e = t ( e ) ) , i ( t ( ) ) === i ( e ) } ; return { parseUrl : t , resolveUrl : i , hasSameOrigin : n } } ) , n ( "moxie/runtime/RuntimeTarget" , [ "moxie/core/utils/Basic" , "moxie/runtime/RuntimeClient" , "moxie/core/EventTarget" ] , function ( e , t , i ) { function n ( ) { this . uid = e . guid ( "uid_" ) , t . call ( this ) , this . destroy = function ( ) { this . disconnectRuntime ( ) , this . unbindAll ( ) } } return n . prototype = i . instance , n } ) , n ( "moxie/file/FileReaderSync" , [ "moxie/core/utils/Basic" , "moxie/runtime/RuntimeClient" , "moxie/core/utils/Encode" ] , function ( e ,
for ( var e = [ "Msxml2.XMLHTTP.6.0" , "Microsoft.XMLHTTP" ] , t = 0 ; t < e . length ; t ++ ) try { return new ActiveXObject ( e [ t ] ) } catch ( i ) { } } ( ) : new window . XMLHttpRequest } function c ( e ) { var t = e . responseXML , i = e . responseText ; return "IE" === l . browser && i && t && ! t . documentElement && /[^\/]+\/[^\+]+\+xml/ . test ( e . getResponseHeader ( "Content-Type" ) ) && ( t = new window . ActiveXObject ( "Microsoft.XMLDOM" ) , t . async = ! 1 , t . validateOnParse = ! 1 , t . loadXML ( i ) ) , t && ( "IE" === l . browser && 0 !== t . parseError || ! t . documentElement || "parsererror" === t . documentElement . tagName ) ? null : t } function d ( e ) { var t = "----moxieboundary" + ( new Date ) . getTime ( ) , i = "--" , n = "\r\n" , r = "" , a = this . getRuntime ( ) ; if ( ! a . can ( "send_binary_string" ) ) throw new s . RuntimeError ( s . RuntimeError . NOT _SUPPORTED _ERR ) ; return p . setRequestHeader ( "Content-Type" , "multipart/form-data; boundary=" + t ) , e . each ( function ( e , a ) { r += e instanceof o ? i + t + n + 'Content-Disposition: form-data; name="' + a + '"; filename="' + unescape ( encodeURIComponent ( e . name || "blob" ) ) + '"' + n + "Content-Type: " + ( e . type || "application/octet-stream" ) + n + n + e . getSource ( ) + n : i + t + n + 'Content-Disposition: form-data; name="' + a + '"' + n + n + unescape ( encodeURIComponent ( e ) ) + n } ) , r += i + t + i + n } var p , f , m = this ; t . extend ( this , { send : function ( i , r ) { var s = this , c = "Mozilla" === l . browser && l . verComp ( l . version , 4 , ">=" ) && l . verComp ( l . version , 7 , "<" ) , m = "Android Browser" === l . browser , h = ! 1 ; if ( f = i . url . replace ( /^.+?\/([\w\-\.]+)$/ , "$1" ) . toLowerCase ( ) , p = u ( ) , p . open ( i . method , i . url , i . async , i . user , i . password ) , r instanceof o ) r . isDetached ( ) && ( h = ! 0 ) , r = r . getSource ( ) ; else if ( r instanceof a ) { if ( r . hasBlob ( ) ) if ( r . getBlob ( ) . isDetached ( ) ) r = d . call ( s , r ) , h = ! 0 ; else if ( ( c || m ) && "blob" === t . typeOf ( r . getBlob ( ) . getSource ( ) ) && window . FileReader ) return void e . call ( s , i , r ) ; if ( r instanceof a ) { var g = new window . FormData ; r . each ( function ( e , t ) { e instanceof o ? g . append ( t , e . getSource ( ) ) : g . append ( t , e ) } ) , r = g } } p . upload ? ( i . withCredentials && ( p . withCredentials = ! 0 ) , p . addEventListener ( "load" , function ( e ) { s . trigger ( e ) } ) , p . addEventListener ( "error" , function ( e ) { s . trigger ( e ) } ) , p . addEventListener ( "progress" , function ( e ) { s . trigger ( e ) } ) , p . upload . addEventListener ( "progress" , function ( e ) { s . trigger ( { type : "UploadProgress" , loaded : e . loaded , total : e . total } ) } ) ) : p . onreadystatechange = function ( ) { switch ( p . readyState ) { case 1 : break ; case 2 : break ; case 3 : var e , t ; try { n . hasSameOrigin ( i . url ) && ( e = p . getResponseHeader ( "Content-Length" ) || 0 ) , p . responseText && ( t = p . responseText . length ) } catch ( r ) { e = t = 0 } s . trigger ( { type : "progress" , lengthComputable : ! ! e , total : parseInt ( e , 10 ) , loaded : t } ) ; break ; case 4 : p . onreadystatechange = function ( ) { } ; try { if ( p . status >= 200 && p . status < 400 ) { s . trigger ( "load" ) ; break } } catch ( r ) { } s . trigger ( "error" ) } } , t . isEmptyObj ( i . headers ) || t . each ( i . headers , function ( e , t ) { p . setRequestHeader ( t , e ) } ) , "" !== i . responseType && "responseType" in p && ( p . responseType = "json" !== i . responseType || l . can ( "return_response_type" , "json" ) ? i . responseType : "text" ) , h ? p . sendAsBinary ? p . sendAsBinary ( r ) : function ( ) { for ( var e = new Uint8Array ( r . length ) , t = 0 ; t < r . length ; t ++ ) e [ t ] = 255 & r . charCodeAt ( t ) ; p . send ( e . buffer ) } ( ) : p . send ( r ) , s . trigger ( "loadstart" ) } , getStatus : function ( ) { try { if ( p ) return p . status } catch ( e ) { } return 0 } , getResponse : function ( e ) { var t = this . getRuntime ( ) ; try { switch ( e ) { case "blob" : var n = new r ( t . uid , p . response ) , o = p . getResponseHeader ( "Content-Disposition" ) ; if ( o ) { var a = o . match ( /filename=([\'\"'])([^\1]+)\1/ ) ; a && ( f = a [ 2 ] ) } return n . name = f , n . type || ( n . type = i . getFileMime ( f ) ) , n ; case "json" : return l . can ( "return_response_type" , "json" ) ? p . response : 200 === p . status && window . JSON ? JSON . parse ( p . responseText ) : null ; case "document" : return c ( p ) ; default : return "" !== p . responseText ? p . responseText : null } } catch ( s ) { return null } } , getAllResponseHeaders : function ( ) { try { return p . getAllResponseHeaders ( ) } catch ( e ) { } return "" } , abort : function ( ) { p && p . abort ( ) } , destroy : function ( ) { m = f = null , this . getRuntime ( ) . getShim ( ) . removeInstance ( this . uid ) } } ) } return e . XMLHttpRequest = u } ) , n ( "moxie/runtime/html5/utils/BinaryReader" , [ "moxie/core/utils/Basic" ] , function ( e ) { function t ( e ) { e instanceof ArrayBuffer ? i . apply ( this , arguments ) : n . apply ( this , arguments ) } function i ( t ) { var i = new DataView ( t ) ; e . extend ( this , { readByteAt : function ( e ) { return i . getUint8 ( e ) } , writeByteAt : function ( e , t ) { i . setUint8 ( e , t ) } , SEGMENT : function ( e , n , r ) { switc
return e . Blob = t . extend ( { } , i ) } ) , n ( "moxie/runtime/silverlight/file/FileInput" , [ "moxie/runtime/silverlight/Runtime" , "moxie/file/File" , "moxie/core/utils/Dom" , "moxie/core/utils/Basic" ] , function ( e , t , i , n ) { function r ( e ) { for ( var t = "" , i = 0 ; i < e . length ; i ++ ) t += ( "" !== t ? "|" : "" ) + e [ i ] . title + " | *." + e [ i ] . extensions . replace ( /,/g , ";*." ) ; return t } var o = { init : function ( e ) { var o = this , a = this . getRuntime ( ) , s = i . get ( e . browse _button ) ; s && ( s . setAttribute ( "tabindex" , - 1 ) , s = null ) , this . bind ( "Change" , function ( ) { var e = a . shimExec . call ( o , "FileInput" , "getFiles" ) ; o . files = [ ] , n . each ( e , function ( e ) { o . files . push ( new t ( a . uid , e ) ) } ) } , 999 ) , a . shimExec . call ( this , "FileInput" , "init" , r ( e . accept ) , e . multiple ) , this . trigger ( "ready" ) } , setOption : function ( e , t ) { "accept" == e && ( t = r ( t ) ) , this . getRuntime ( ) . shimExec . call ( this , "FileInput" , "setOption" , e , t ) } } ; return e . FileInput = o } ) , n ( "moxie/runtime/silverlight/file/FileDrop" , [ "moxie/runtime/silverlight/Runtime" , "moxie/core/utils/Dom" , "moxie/core/utils/Events" ] , function ( e , t , i ) { var n = { init : function ( ) { var e , n = this , r = n . getRuntime ( ) ; return e = r . getShimContainer ( ) , i . addEvent ( e , "dragover" , function ( e ) { e . preventDefault ( ) , e . stopPropagation ( ) , e . dataTransfer . dropEffect = "copy" } , n . uid ) , i . addEvent ( e , "dragenter" , function ( e ) { e . preventDefault ( ) ; var i = t . get ( r . uid ) . dragEnter ( e ) ; i && e . stopPropagation ( ) } , n . uid ) , i . addEvent ( e , "drop" , function ( e ) { e . preventDefault ( ) ; var i = t . get ( r . uid ) . dragDrop ( e ) ; i && e . stopPropagation ( ) } , n . uid ) , r . shimExec . call ( this , "FileDrop" , "init" ) } } ; return e . FileDrop = n } ) , n ( "moxie/runtime/silverlight/file/FileReader" , [ "moxie/runtime/silverlight/Runtime" , "moxie/core/utils/Basic" , "moxie/runtime/flash/file/FileReader" ] , function ( e , t , i ) { return e . FileReader = t . extend ( { } , i ) } ) , n ( "moxie/runtime/silverlight/file/FileReaderSync" , [ "moxie/runtime/silverlight/Runtime" , "moxie/core/utils/Basic" , "moxie/runtime/flash/file/FileReaderSync" ] , function ( e , t , i ) { return e . FileReaderSync = t . extend ( { } , i ) } ) , n ( "moxie/runtime/silverlight/runtime/Transporter" , [ "moxie/runtime/silverlight/Runtime" , "moxie/core/utils/Basic" , "moxie/runtime/flash/runtime/Transporter" ] , function ( e , t , i ) { return e . Transporter = t . extend ( { } , i ) } ) , n ( "moxie/runtime/silverlight/xhr/XMLHttpRequest" , [ "moxie/runtime/silverlight/Runtime" , "moxie/core/utils/Basic" , "moxie/runtime/flash/xhr/XMLHttpRequest" , "moxie/runtime/silverlight/file/FileReaderSync" , "moxie/runtime/silverlight/runtime/Transporter" ] , function ( e , t , i ) { return e . XMLHttpRequest = t . extend ( { } , i ) } ) , n ( "moxie/runtime/silverlight/image/Image" , [ "moxie/runtime/silverlight/Runtime" , "moxie/core/utils/Basic" , "moxie/file/Blob" , "moxie/runtime/flash/image/Image" ] , function ( e , t , i , n ) { return e . Image = t . extend ( { } , n , { getInfo : function ( ) { var e = this . getRuntime ( ) , n = [ "tiff" , "exif" , "gps" , "thumb" ] , r = { meta : { } } , o = e . shimExec . call ( this , "Image" , "getInfo" ) ; return o . meta && ( t . each ( n , function ( e ) { var t , i , n , a , s = o . meta [ e ] ; if ( s && s . keys ) for ( r . meta [ e ] = { } , i = 0 , n = s . keys . length ; n > i ; i ++ ) t = s . keys [ i ] , a = s [ t ] , a && ( /^(\d|[1-9]\d+)$/ . test ( a ) ? a = parseInt ( a , 10 ) : /^\d*\.\d+$/ . test ( a ) && ( a = parseFloat ( a ) ) , r . meta [ e ] [ t ] = a ) } ) , r . meta && r . meta . thumb && r . meta . thumb . data && ! ( e . meta . thumb . data instanceof i ) && ( r . meta . thumb . data = new i ( e . uid , r . meta . thumb . data ) ) ) , r . width = parseInt ( o . width , 10 ) , r . height = parseInt ( o . height , 10 ) , r . size = parseInt ( o . size , 10 ) , r . type = o . type , r . name = o . name , r } , resize : function ( e , t , i ) { this . getRuntime ( ) . shimExec . call ( this , "Image" , "resize" , e . x , e . y , e . width , e . height , t , i . preserveHeaders , i . resample ) } } ) } ) , n ( "moxie/runtime/html4/Runtime" , [ "moxie/core/utils/Basic" , "moxie/core/Exceptions" , "moxie/runtime/Runtime" , "moxie/core/utils/Env" ] , function ( e , t , i , n ) { function o ( t ) { var o = this , l = i . capTest , u = i . capTrue ; i . call ( this , t , a , { access _binary : l ( window . FileReader || window . File && File . getAsDataURL ) , access _image _binary : ! 1 , display _media : l ( ( n . can ( "create_canvas" ) || n . can ( "use_data_uri_over32kb" ) ) && r ( "moxie/image/Image" ) ) , do _cors : ! 1 , drag _and _drop : ! 1 , filter _by _extension : l ( function ( ) { return ! ( "Chrome" === n . browser && n . verComp ( n . version , 28 , "<" ) || "IE" === n . browser && n . verComp ( n . version , 10 , "<" ) || "Safari" === n . browser && n . verComp ( n . version , 7 , "<" ) || "Firefox" === n . browser && n . verComp ( n . version , 37 , "<" ) ) } ( ) ) , resize _image : function ( ) { return s . Image && o . can ( "access_binary" ) && n . can
g || ( g = s ) } "string" == typeof g && ( g = e ( g ) , g . parent ( ) && ( g = g . clone ( ) . removeClass ( "template" ) ) ) , u . template = g ; var x = l . browse _button , E = null ; x && ( 0 === x . indexOf ( ">" ) ? E = m . find ( x . substr ( 1 ) ) : "hidden" !== x && ( E = e ( x ) ) ) , E && E . length || ( E = e ( '<div class="uploader-btn-browse uploader-btn-hidden"></div>' ) . appendTo ( m ) ) , u . $button = E . first ( ) ; var y = l . drop _element , b = ( "fileList" == y ? u . $list : "self" == y ? u . $ : e ( y ) ) . first ( ) . addClass ( "file-drag-area" ) ; if ( o ) b . attr ( "data-drop-placeholder" , "" ) ; else { var w = l . dropPlaceholder ; w === ! 0 && ( w = p . dropPlaceholder ) , w && b . attr ( "data-drop-placeholder" , w ) } u . $dropElement = b , u . $message = m . find ( ".uploader-message" ) . on ( "click" , ".close" , function ( ) { u . hideMessage ( ) } ) , u . $status = m . find ( ".uploader-status" ) , m . toggleClass ( "uploader-rename" , ! ! l . rename ) , u . initPlupload ( ) , m . on ( "click." + a , ".uploader-btn-start" , function ( e ) { u . start ( ) } ) . on ( "click." + a , ".uploader-btn-browse" , function ( t ) { e ( this ) . is ( u . $button ) || u . $button . trigger ( "click" ) } ) . on ( "click." + a , ".uploader-btn-stop" , function ( e ) { u . stop ( ) } ) , e ( "body" ) . on ( "dragleave." + a + " drop." + a , function ( e ) { m . removeClass ( "file-dragable" ) , e . preventDefault ( ) , e . stopPropagation ( ) } ) . on ( "dragover." + a + " dragenter." + a , function ( e ) { m . addClass ( "file-dragable" ) } ) , b . on ( "dragleave." + a + " drop." + a , function ( e ) { m . removeClass ( "file-drag-enter" ) . removeClass ( "file-dragable" ) , e . preventDefault ( ) , e . stopPropagation ( ) } ) . on ( "dragover." + a + " dragenter." + a , function ( e ) { m . addClass ( "file-drag-enter" ) } ) . on ( "dragdrop." + a + " dragenter." + a , function ( e ) { m . removeClass ( "file-drag-enter" ) . removeClass ( "file-dragable" ) , e . preventDefault ( ) , e . stopPropagation ( ) } ) , f . on ( "click." + a , ".btn-delete-file" , function ( ) { var n = e ( this ) . closest ( ".file" ) , r = n . data ( "file" ) , o = l . deleteActionOnDone , a = r . status === i . DONE && e . isFunction ( o ) ; if ( r . status === i . QUEUED || r . status === i . FAILED || a ) { var s = function ( ) { u . removeFile ( r ) } , c = function ( ) { if ( a ) { var e = o . call ( u , r , s ) ; e === ! 0 && s ( ) } else s ( ) } , d = l . deleteConfirm ; if ( d ) { var f = e . isFunction ( d ) ? d ( r ) : d === ! 0 ? p . deleteConfirm : d ; f = f . format ( r ) , t . bootbox ? t . bootbox . confirm ( f , function ( e ) { e && c ( ) } ) : t . confirm ( f ) && c ( ) } else c ( ) } } ) . on ( "click." + a , ".btn-reset-file" , function ( ) { var t = e ( this ) . closest ( ".file" ) , n = u . plupload . getFile ( t . data ( "id" ) ) || t . data ( "file" ) ; n . status === i . FAILED && ( n . status = i . QUEUED , u . showFile ( n ) , l . autoUpload && u . start ( ) ) } ) , l . rename && ( f . toggleClass ( "file-rename-by-click" , ! ! l . renameByClick ) . toggleClass ( "file-show-rename-action-on-done" , ! ! l . renameActionOnDone ) , f . on ( "click." + a , ".btn-rename-file" + ( l . renameByClick ? ",.file-name" : "" ) , function ( ) { var t = e ( this ) . closest ( ".file" ) ; if ( ! t . hasClass ( "file-renaming" ) ) { var n = u . plupload . getFile ( t . data ( "id" ) ) || t . data ( "file" ) , o = l . renameActionOnDone , s = n . status === i . DONE && e . isFunction ( o ) ; if ( s || n . status === i . QUEUED ) { var c = t . find ( ".file-name" ) . first ( ) ; t . addClass ( "file-renaming" ) , u . showFile ( n ) , ! l . renameExtension && n . ext && c . text ( n . name . substr ( 0 , n . name . length - n . ext . length - 1 ) ) , c . attr ( "contenteditable" , "true" ) . one ( "blur" , function ( ) { var i = e . trim ( c . text ( ) ) , d = function ( ) { if ( i !== r && null !== i && "" !== i ) { var e = n . ext ; e . length && ! l . renameExtension && i . lastIndexOf ( "." + e ) !== i . length - e . length - 1 && ( i += "." + e ) , n . name = i } u . showFile ( n ) } ; if ( s ) { var p = o . call ( u , n , i , d ) ; p === ! 0 ? d ( ) : p === ! 1 && u . showFile ( n ) } else d ( ) ; t . removeClass ( "file-renaming" ) , c . off ( "keydown." + a ) . attr ( "contenteditable" , null ) } ) . on ( "keydown." + a , function ( e ) { 13 === e . keyCode && ( c . blur ( ) , e . preventDefault ( ) ) } ) . focus ( ) } } } ) ) , f . toggleClass ( "file-show-delete-action-on-done" , ! ! l . deleteActionOnDone ) , u . staticFilesSize = 0 , u . staticFilesCount = 0 , l . staticFiles && e . each ( l . staticFiles , function ( t , n ) { n = e . extend ( { status : i . DONE } , n ) , n [ "static" ] = ! 0 , n . id || ( n . id = e . zui . uuid ( ) ) , u . showFile ( n ) , n . size && ( u . staticFilesSize += n . size , u . staticFilesCount ++ ) } ) , u . callEvent ( "onInit" ) } ; d . DEFAULTS = l , d . prototype . showMessage = function ( e , t , i ) { var n = this , o = n . $message ; e ? clearTimeout ( n . lastDismissMessage ) : n . hideMessage ( ) , t = t || "danger" , i === r && ( i = "danger" === t ? 10 : 6 ) , i < 20 && ( i *= 1e3 ) ; var a = o . find ( ".content" ) ; a . length ? a . empty ( ) . append ( e ) : o . empty ( ) . append ( e ) , o . attr ( "data-type" , t ) . slideDown ( "fast" ) , i && ( n . lastDismissMessage = setTimeout ( function ( ) { n . hideMessage ( ) } , i ) ) } , d . prototype . hideMessage = function ( ) { clearTimeout ( this . lastDismissMessage ) , this . $message . slideUp ( "fast" ) } , d . prototyp