12 |
- /*! WebUploader 0.1.2 */
- (function(o,q){var s={},t=function(e,d){var b,c,a;if(typeof e==="string"){return p(e)}else{b=[];for(c=e.length,a=0;a<c;a++){b.push(p(e[a]))}return d.apply(null,b)}},k=function(a,b,c){if(arguments.length===2){c=b;b=null}t(b||[],function(){l(a,c,arguments)})},l=function(d,c,b){var a={exports:c},e;if(typeof c==="function"){b.length||(b=[t,a.exports,a]);e=c.apply(null,b);e!==undefined&&(a.exports=e)}s[d]=a.exports},p=function(a){var b=s[a]||o[a];if(!b){throw new Error("`"+a+"` is undefined")}return b},m=function(d){var b,f,e,c,g,a;a=function(h){return h&&(h.charAt(0).toUpperCase()+h.substr(1))};for(b in s){f=d;if(!s.hasOwnProperty(b)){continue}e=b.split("/");g=a(e.pop());while((c=a(e.shift()))){f[c]=f[c]||{};f=f[c]}f[g]=s[b]}},r=q(o,k,t),n;m(r);if(typeof module==="object"&&typeof module.exports==="object"){module.exports=r}else{if(typeof define==="function"&&define.amd){define([],r)}else{n=o.WebUploader;o.WebUploader=r;o.WebUploader.noConflict=function(){o.WebUploader=n}}}})(this,function(d,f,e){f("dollar-third",[],function(){return d.jQuery||d.Zepto});f("dollar",["dollar-third"],function(a){return a});f("promise-third",["dollar"],function(a){return{Deferred:a.Deferred,when:a.when,isPromise:function(b){return b&&typeof b.then==="function"}}});f("promise",["promise-third"],function(a){return a});f("base",["dollar","promise"],function(c,a){var k=function(){},l=Function.call;function m(g){return function(){return l.apply(g,arguments)}}function b(g,h){return function(){return g.apply(h,arguments)}}function n(h){var g;if(Object.create){return Object.create(h)}else{g=function(){};g.prototype=h;return new g()}}return{version:"0.1.2",$:c,Deferred:a.Deferred,isPromise:a.isPromise,when:a.when,browser:(function(u){var v={},g=u.match(/WebKit\/([\d.]+)/),i=u.match(/Chrome\/([\d.]+)/)||u.match(/CriOS\/([\d.]+)/),j=u.match(/MSIE\s([\d\.]+)/)||u.match(/(?:trident)(?:.*rv:([\w.]+))?/i),t=u.match(/Firefox\/([\d.]+)/),s=u.match(/Safari\/([\d.]+)/),h=u.match(/OPR\/([\d.]+)/);g&&(v.webkit=parseFloat(g[1]));i&&(v.chrome=parseFloat(i[1]));j&&(v.ie=parseFloat(j[1]));t&&(v.firefox=parseFloat(t[1]));s&&(v.safari=parseFloat(s[1]));h&&(v.opera=parseFloat(h[1]));return v})(navigator.userAgent),os:(function(g){var h={},i=g.match(/(?:Android);?[\s\/]+([\d.]+)?/),j=g.match(/(?:iPad|iPod|iPhone).*OS\s([\d_]+)/);i&&(h.android=parseFloat(i[1]));j&&(h.ios=parseFloat(j[1].replace(/_/g,".")));return h})(navigator.userAgent),inherits:function(g,h,i){var j;if(typeof h==="function"){j=h;h=null}else{if(h&&h.hasOwnProperty("constructor")){j=h.constructor}else{j=function(){return g.apply(this,arguments)}}}c.extend(true,j,g,i||{});j.__super__=g.prototype;j.prototype=n(g.prototype);h&&c.extend(true,j.prototype,h);return j},noop:k,bindFn:b,log:(function(){if(d.console){return b(console.log,console)}return k})(),nextTick:(function(){return function(g){setTimeout(g,1)}})(),slice:m([].slice),guid:(function(){var g=0;return function(j){var i=(+new Date()).toString(32),h=0;for(;h<5;h++){i+=Math.floor(Math.random()*65535).toString(32)}return(j||"wu_")+i+(g++).toString(32)}})(),formatSize:function(g,i,h){var j;h=h||["B","K","M","G","TB"];while((j=h.shift())&&g>1024){g=g/1024}return(j==="B"?g:g.toFixed(i||2))+j}}});f("mediator",["base"],function(n){var m=n.$,a=[].slice,b=/\s+/,o;function p(h,g,i,j){return m.grep(h,function(k){return k&&(!g||k.e===g)&&(!i||k.cb===i||k.cb._cb===i)&&(!j||k.ctx===j)})}function c(h,i,g){m.each((h||"").split(b),function(k,j){g(j,i)})}function l(j,r){var g=false,k=-1,h=j.length,i;while(++k<h){i=j[k];if(i.cb.apply(i.ctx2,r)===false){g=true;break}}return !g}o={on:function(h,i,g){var k=this,j;if(!i){return this}j=this._events||(this._events=[]);c(h,i,function(v,t){var u={e:v};u.cb=t;u.ctx=g;u.ctx2=g||k;u.id=j.length;j.push(u)});return this},once:function(h,i,g){var j=this;if(!i){return j}c(h,i,function(t,k){var s=function(){j.off(t,s);return k.apply(g||j,arguments)};s._cb=k;j.on(t,s,g)});return j},off:function(j,h,g){var i=this._events;if(!i){return this}if(!j&&!h&&!g){this._events=[];return this}c(j,h,function(k,r){m.each(p(i,k,r,g),function(){delete i[this.id]})});return this},trigger:function(i){var g,j,h;if(!this._events||!i){return this}g=a.call(arguments,1);j=p(this._events,i);h=p(this._events,"all");return l(j,g)&&l(h,arguments)}};return m.extend({installTo:function(g){return m.extend(g,o)}},o)});f("uploader",["base","mediator"],function(h,b){var c=h.$;function a(g){this.options=c.extend(true,{},a.options,g);this._init(this.options)}a.options={};b.installTo(a.prototype);c.each({upload:"start-upload",stop:"stop-upload",getFile:"get-file",getFiles:"get-files",addFile:"add-file",addFiles:"add-file",sort:"sort-files",removeFile:"remove-file",skipFile:"skip-file",retry:"retry",isInProgress:"is-in-progress",makeThumb:"make-thumb",getDimension:"get-dimension",addButton:"add-btn",getRuntimeType:"get-runtime-type",refresh:"refresh",disable:"disable",enable:"enable",reset:"reset"},function(j,g){a.prototype[j]=function(){return this.request(g,arguments)}});c.extend(a.prototype,{state:"pending",_init:function(g){var j=this;j.request("init",g,function(){j.state="ready";j.trigger("ready")})},option:function(l,g){var k=this.options;if(arguments.length>1){if(c.isPlainObject(g)&&c.isPlainObject(k[l])){c.extend(k[l],g)}else{k[l]=g}}else{return l?k[l]:k}},getStats:function(){var g=this.request("get-stats");return{successNum:g.numOfSuccess,cancelNum:g.numOfCancel,invalidNum:g.numOfInvalid,uploadFailNum:g.numOfUploadFailed,queueNum:g.numOfQueue}},trigger:function(l){var m=[].slice.call(arguments,1),g=this.options,n="on"+l.substring(0,1).toUpperCase()+l.substring(1);if(b.trigger.apply(this,arguments)===false||c.isFunction(g[n])&&g[n].apply(this,m)===false||c.isFunction(this[n])&&this[n].apply(this,m)===false||b.trigger.apply(b,[this,l].concat(m))===false){return false}return true},request:h.noop});h.create=a.create=function(g){return new a(g)};h.Uploader=a;return a});f("runtime/runtime",["base","mediator"],function(k,b){var c=k.$,j={},a=function(g){for(var h in g){if(g.hasOwnProperty(h)){return h}}return null};function l(g){this.options=c.extend({container:document.body},g);this.uid=k.guid("rt_")}c.extend(l.prototype,{getContainer:function(){var g=this.options,h,i;if(this._container){return this._container}h=c(g.container||document.body);i=c(document.createElement("div"));i.attr("id","rt_"+this.uid);i.css({position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"});h.append(i);h.addClass("webuploader-container");this._container=i;return i},init:k.noop,exec:k.noop,destroy:function(){if(this._container){this._container.parentNode.removeChild(this.__container)}this.off()}});l.orders="html5,flash";l.addRuntime=function(g,h){j[g]=h};l.hasRuntime=function(g){return !!(g?j[g]:a(j))};l.create=function(g,i){var n,h;i=i||l.orders;c.each(i.split(/\s*,\s*/g),function(){if(j[this]){n=this;return false}});n=n||a(j);if(!n){throw new Error("Runtime Error")}h=new j[n](g);return h};b.installTo(l.prototype);return l});f("runtime/client",["base","mediator","runtime/runtime"],function(b,a,c){var j;j=(function(){var g={};return{add:function(h){g[h.uid]=h},get:function(m,n){var h;if(m){return g[m]}for(h in g){if(n&&g[h].__standalone){continue}return g[h]}return null},remove:function(h){delete g[h.uid]}}})();function i(h,m){var n=b.Deferred(),g;this.uid=b.guid("client_");this.runtimeReady=function(k){return n.done(k)};this.connectRuntime=function(l,k){if(g){throw new Error("already connected!")}n.done(k);if(typeof l==="string"&&j.get(l)){g=j.get(l)}g=g||j.get(null,m);if(!g){g=c.create(l,l.runtimeOrder);g.__promise=n.promise();g.once("ready",n.resolve);g.init();j.add(g);g.__client=1}else{b.$.extend(g.options,l);g.__promise.then(n.resolve);g.__client++}m&&(g.__standalone=m);return g};this.getRuntime=function(){return g};this.disconnectRuntime=function(){if(!g){return}g.__client--;if(g.__client<=0){j.remove(g);delete g.__promise;g.destroy()}g=null};this.exec=function(){if(!g){return}var k=b.slice(arguments);h&&k.unshift(h);return g.exec.apply(this,k)};this.getRuid=function(){return g&&g.uid};this.destroy=(function(k){return function(){k&&k.apply(this,arguments);this.trigger("destroy");this.off();this.exec("destroy");this.disconnectRuntime()}})(this.destroy)}a.installTo(i.prototype);return i});f("lib/blob",["base","runtime/client"],function(b,c){function a(l,j){var k=this;k.source=j;k.ruid=l;c.call(k,"Blob");this.uid=j.uid||this.uid;this.type=j.type||"";this.size=j.size||0;if(l){k.connectRuntime(l)}}b.inherits(c,{constructor:a,slice:function(i,j){return this.exec("slice",i,j)},getSource:function(){return this.source}});return a});f("lib/file",["base","lib/blob"],function(b,a){var c=1,j=/\.([^.]+)$/;function i(l,h){var g;a.apply(this,arguments);this.name=h.name||("untitled"+c++);g=j.exec(h.name)?RegExp.$1.toLowerCase():"";if(!g&&this.type){g=/\/(jpg|jpeg|png|gif|bmp)$/i.exec(this.type)?RegExp.$1.toLowerCase():"";this.name+="."+g}if(!this.type&&~"jpg,jpeg,png,gif,bmp".indexOf(g)){this.type="image/"+(g==="jpg"?"jpeg":g)}this.ext=g;this.lastModifiedDate=h.lastModifiedDate||(new Date()).toLocaleString()}return b.inherits(a,i)});f("lib/filepicker",["base","runtime/client","lib/file"],function(b,c,i){var a=b.$;function j(g){g=this.options=a.extend({},j.options,g);g.container=a(g.id);if(!g.container.length){throw new Error("按钮指定错误")}g.innerHTML=g.innerHTML||g.label||g.container.html()||"";g.button=a(g.button||document.createElement("div"));g.button.html(g.innerHTML);g.container.html(g.button);c.call(this,"FilePicker",true)}j.options={button:null,container:null,label:null,innerHTML:null,multiple:true,accept:null,name:"file"};b.inherits(c,{constructor:j,init:function(){var g=this,h=g.options,l=h.button;l.addClass("webuploader-pick");g.on("all",function(n){var k;switch(n){case"mouseenter":l.addClass("webuploader-pick-hover");break;case"mouseleave":l.removeClass("webuploader-pick-hover");break;case"change":k=g.exec("getFiles");g.trigger("select",a.map(k,function(m){m=new i(g.getRuid(),m);m._refer=h.container;return m}),h.container);break}});g.connectRuntime(h,function(){g.refresh();g.exec("init",h);g.trigger("ready")});a(d).on("resize",function(){g.refresh()})},refresh:function(){var o=this.getRuntime().getContainer(),n=this.options.button,h=n.outerWidth?n.outerWidth():n.width(),p=n.outerHeight?n.outerHeight():n.height(),g=n.offset();h&&p&&o.css({bottom:"auto",right:"auto",width:h+"px",height:p+"px"}).offset(g)},enable:function(){var g=this.options.button;g.removeClass("webuploader-pick-disable");this.refresh()},disable:function(){var g=this.options.button;this.getRuntime().getContainer().css({top:"-99999px"});g.addClass("webuploader-pick-disable")},destroy:function(){if(this.runtime){this.exec("destroy");this.disconnectRuntime()}}});return j});f("widgets/widget",["base","uploader"],function(o,a){var l=o.$,m=a.prototype._init,b={},c=[];function p(i){if(!i){return false}var g=i.length,h=l.type(i);if(i.nodeType===1&&g){return true}return h==="array"||h!=="function"&&h!=="string"&&(g===0||typeof g==="number"&&g>0&&(g-1) in i)}function n(g){this.owner=g;this.options=g.options}l.extend(n.prototype,{init:o.noop,invoke:function(h,g){var i=this.responseMap;if(!i||!(h in i)||!(i[h] in this)||!l.isFunction(this[i[h]])){return b}return this[i[h]].apply(this,g)},request:function(){return this.owner.request.apply(this.owner,arguments)}});l.extend(a.prototype,{_init:function(){var g=this,h=g._widgets=[];l.each(c,function(i,j){h.push(new j(g))});return m.apply(g,arguments)},request:function(x,D,A){var i=0,C=this._widgets,g=C.length,j=[],k=[],h,y,z,B;D=p(D)?D:[D];for(;i<g;i++){h=C[i];y=h.invoke(x,D);if(y!==b){if(o.isPromise(y)){k.push(y)}else{j.push(y)}}}if(A||k.length){z=o.when.apply(o,k);B=z.pipe?"pipe":"then";return z[B](function(){var q=o.Deferred(),r=arguments;setTimeout(function(){q.resolve.apply(q,r)},1);return q.promise()})[B](A||o.noop)}else{return j[0]}}});a.register=n.register=function(g,i){var j={init:"init"},h;if(arguments.length===1){i=g;i.responseMap=j}else{i.responseMap=l.extend(j,g)}h=o.inherits(n,i);c.push(h);return h};return n});f("widgets/filepicker",["base","uploader","lib/filepicker","widgets/widget"],function(c,a,h){var b=c.$;b.extend(a.options,{pick:null,accept:null});return a.register({"add-btn":"addButton",refresh:"refresh",disable:"disable",enable:"enable"},{init:function(g){this.pickers=[];return g.pick&&this.addButton(g.pick)},refresh:function(){b.each(this.pickers,function(){this.refresh()})},addButton:function(o){var t=this,g=t.options,p=g.accept,q,r,s;if(!o){return}s=c.Deferred();b.isPlainObject(o)||(o={id:o});q=b.extend({},o,{accept:b.isPlainObject(p)?[p]:p,swf:g.swf,runtimeOrder:g.runtimeOrder});r=new h(q);r.once("ready",s.resolve);r.on("select",function(i){t.owner.request("add-file",[i])});r.init();this.pickers.push(r);return s.promise()},disable:function(){b.each(this.pickers,function(){this.disable()})},enable:function(){b.each(this.pickers,function(){this.enable()})}})});f("lib/image",["base","runtime/client","lib/blob"],function(c,i,a){var b=c.$;function j(g){this.options=b.extend({},j.options,g);i.call(this,"Image");this.on("load",function(){this._info=this.exec("info");this._meta=this.exec("meta")})}j.options={quality:90,crop:false,preserveHeaders:true,allowMagnify:true};c.inherits(i,{constructor:j,info:function(g){if(g){this._info=g;return this}return this._info},meta:function(g){if(g){this._meta=g;return this}return this._meta},loadFromBlob:function(l){var g=this,h=l.getRuid();this.connectRuntime(h,function(){g.exec("init",g.options);g.exec("loadFromBlob",l)})},resize:function(){var g=c.slice(arguments);return this.exec.apply(this,["resize"].concat(g))},getAsDataUrl:function(g){return this.exec("getAsDataUrl",g)},getAsBlob:function(g){var h=this.exec("getAsBlob",g);return new a(this.getRuid(),h)}});return j});f("widgets/image",["base","uploader","lib/image","widgets/widget"],function(i,a,j){var b=i.$,c;c=(function(n){var m=0,g=[],h=function(){var k;while(g.length&&m<n){k=g.shift();m+=k[0];k[1]()}};return function(l,p,k){g.push([p,k]);l.once("destroy",function(){m-=p;setTimeout(h,1)});setTimeout(h,1)}})(5*1024*1024);b.extend(a.options,{thumb:{width:110,height:110,quality:70,allowMagnify:true,crop:true,preserveHeaders:false,type:"image/jpeg"},compress:{width:1600,height:1600,quality:90,allowMagnify:false,crop:false,preserveHeaders:true}});return a.register({"make-thumb":"makeThumb","before-send-file":"compressImage"},{makeThumb:function(o,p,h,q){var g,r;o=this.request("get-file",o);if(!o.type.match(/^image/)){p(true);return}g=b.extend({},this.options.thumb);if(b.isPlainObject(h)){g=b.extend(g,h);h=null}h=h||g.width;q=q||g.height;r=new j(g);r.once("load",function(){o._info=o._info||r.info();o._meta=o._meta||r.meta();r.resize(h,q)});r.once("complete",function(){p(false,r.getAsDataUrl(g.type));r.destroy()});r.once("error",function(){p(true);r.destroy()});c(r,o.source.size,function(){o._info&&r.info(o._info);o._meta&&r.meta(o._meta);r.loadFromBlob(o.source)})},compressImage:function(n){var h=this.options.compress||this.options.resize,o=h&&h.compressSize||300*1024,g,p;n=this.request("get-file",n);if(!h||!~"image/jpeg,image/jpg".indexOf(n.type)||n.size<o||n._compressed){return}h=b.extend({},h);p=i.Deferred();g=new j(h);p.always(function(){g.destroy();g=null});g.once("error",p.reject);g.once("load",function(){n._info=n._info||g.info();n._meta=n._meta||g.meta();g.resize(h.width,h.height)});g.once("complete",function(){var m,l;try{m=g.getAsBlob(h.type);l=n.size;if(m.size<l){n.source=m;n.size=m.size;n.trigger("resize",m.size,l)}n._compressed=true;p.resolve()}catch(k){p.resolve()}});n._info&&g.info(n._info);n._meta&&g.meta(n._meta);g.loadFromBlob(n.source);return p.promise()}})});f("file",["base","mediator"],function(n,b){var p=n.$,r="WU_FILE_",o=0,m=/\.([^.]+)$/,q={};function c(){return r+o++}function a(g){this.name=g.name||"Untitled";this.size=g.size||0;this.type=g.type||"application";this.lastModifiedDate=g.lastModifiedDate||(new Date()*1);this.id=c();this.ext=m.exec(this.name)?RegExp.$1:"";this.statusText="";q[this.id]=a.Status.INITED;this.source=g;this.loaded=0;this.on("error",function(h){this.setStatus(a.Status.ERROR,h)})}p.extend(a.prototype,{setStatus:function(i,h){var g=q[this.id];typeof h!=="undefined"&&(this.statusText=h);if(i!==g){q[this.id]=i;this.trigger("statuschange",i,g)}},getStatus:function(){return q[this.id]},getSource:function(){return this.source},destory:function(){delete q[this.id]}});b.installTo(a.prototype);a.Status={INITED:"inited",QUEUED:"queued",PROGRESS:"progress",ERROR:"error",COMPLETE:"complete",CANCELLED:"cancelled",INTERRUPT:"interrupt",INVALID:"invalid"};return a});f("queue",["base","mediator","file"],function(k,a,b){var c=k.$,l=b.Status;function j(){this.stats={numOfQueue:0,numOfSuccess:0,numOfCancel:0,numOfProgress:0,numOfUploadFailed:0,numOfInvalid:0};this._queue=[];this._map={}}c.extend(j.prototype,{append:function(g){this._queue.push(g);this._fileAdded(g);return this},prepend:function(g){this._queue.unshift(g);this._fileAdded(g);return this},getFile:function(g){if(typeof g!=="string"){return g}return this._map[g]},fetch:function(i){var n=this._queue.length,g,h;i=i||l.QUEUED;for(g=0;g<n;g++){h=this._queue[g];if(i===h.getStatus()){return h}}return null},sort:function(g){if(typeof g==="function"){this._queue.sort(g)}},getFiles:function(){var p=[].slice.call(arguments,0),i=[],g=0,o=this._queue.length,h;for(;g<o;g++){h=this._queue[g];if(p.length&&!~c.inArray(h.getStatus(),p)){continue}i.push(h)}return i},_fileAdded:function(i){var g=this,h=this._map[i.id];if(!h){this._map[i.id]=i;i.on("statuschange",function(p,o){g._onFileStatusChange(p,o)})}i.setStatus(l.QUEUED)},_onFileStatusChange:function(i,h){var g=this.stats;switch(h){case l.PROGRESS:g.numOfProgress--;break;case l.QUEUED:g.numOfQueue--;break;case l.ERROR:g.numOfUploadFailed--;break;case l.INVALID:g.numOfInvalid--;break}switch(i){case l.QUEUED:g.numOfQueue++;break;case l.PROGRESS:g.numOfProgress++;break;case l.ERROR:g.numOfUploadFailed++;break;case l.COMPLETE:g.numOfSuccess++;break;case l.CANCELLED:g.numOfCancel++;break;case l.INVALID:g.numOfInvalid++;break}}});a.installTo(j.prototype);return j});f("widgets/queue",["base","uploader","queue","file","lib/file","runtime/client","widgets/widget"],function(o,r,q,a,m,b){var p=o.$,n=/\.\w+$/,c=a.Status;return r.register({"sort-files":"sortFiles","add-file":"addFiles","get-file":"getFile","fetch-file":"fetchFile","get-stats":"getStats","get-files":"getFiles","remove-file":"removeFile",retry:"retry",reset:"reset","accept-file":"acceptFile"},{init:function(l){var x=this,v,g,i,w,h,k,j;if(p.isPlainObject(l.accept)){l.accept=[l.accept]}if(l.accept){h=[];for(i=0,g=l.accept.length;i<g;i++){w=l.accept[i].extensions;w&&h.push(w)}if(h.length){k="\\."+h.join(",").replace(/,/g,"$|\\.").replace(/\*/g,".*")+"$"}x.accept=new RegExp(k,"i")}x.queue=new q();x.stats=x.queue.stats;if(this.request("predict-runtime-type")!=="html5"){return}v=o.Deferred();j=new b("Placeholder");j.connectRuntime({runtimeOrder:"html5"},function(){x._ruid=j.getRuid();v.resolve()});return v.promise()},_wrapFile:function(g){if(!(g instanceof a)){if(!(g instanceof m)){if(!this._ruid){throw new Error("Can't add external files.")}g=new m(this._ruid,g)}g=new a(g)}return g},acceptFile:function(g){var h=!g||g.size<6||this.accept&&n.exec(g.name)&&!this.accept.test(g.name);return !h},_addFile:function(g){var h=this;g=h._wrapFile(g);if(!h.owner.trigger("beforeFileQueued",g)){return}if(!h.acceptFile(g)){h.owner.trigger("error","Q_TYPE_DENIED",g);return}h.queue.append(g);h.owner.trigger("fileQueued",g);return g},getFile:function(g){return this.queue.getFile(g)},addFiles:function(h){var g=this;if(!h.length){h=[h]}h=p.map(h,function(i){return g._addFile(i)});g.owner.trigger("filesQueued",h);if(g.options.auto){g.request("start-upload")}},getStats:function(){return this.stats},removeFile:function(g){var h=this;g=g.id?g:h.queue.getFile(g);g.setStatus(c.CANCELLED);h.owner.trigger("fileDequeued",g)},getFiles:function(){return this.queue.getFiles.apply(this.queue,arguments)},fetchFile:function(){return this.queue.fetch.apply(this.queue,arguments)},retry:function(j,l){var h=this,i,k,g;if(j){j=j.id?j:h.queue.getFile(j);j.setStatus(c.QUEUED);l||h.request("start-upload");return}i=h.queue.getFiles(c.ERROR);k=0;g=i.length;for(;k<g;k++){j=i[k];j.setStatus(c.QUEUED)}h.request("start-upload")},sortFiles:function(){return this.queue.sort.apply(this.queue,arguments)},reset:function(){this.queue=new q();this.stats=this.queue.stats}})});f("widgets/runtime",["uploader","runtime/runtime","widgets/widget"],function(a,b){a.support=function(){return b.hasRuntime.apply(b,arguments)};return a.register({"predict-runtime-type":"predictRuntmeType"},{init:function(){if(!this.predictRuntmeType()){throw Error("Runtime Error")}},predictRuntmeType:function(){var c=this.options.runtimeOrder||b.orders,i=this.type,k,l;if(!i){c=c.split(/\s*,\s*/g);for(k=0,l=c.length;k<l;k++){if(b.hasRuntime(c[k])){this.type=i=c[k];break}}}return i}})});f("lib/transport",["base","runtime/client","mediator"],function(i,j,b){var c=i.$;function a(g){var h=this;g=h.options=c.extend(true,{},a.options,g||{});j.call(this,"Transport");this._blob=null;this._formData=g.formData||{};this._headers=g.headers||{};this.on("progress",this._timeout);this.on("load error",function(){h.trigger("progress",1);clearTimeout(h._timer)})}a.options={server:"",method:"POST",withCredentials:false,fileVal:"file",timeout:2*60*1000,formData:{},headers:{},sendAsBinary:false};c.extend(a.prototype,{appendBlob:function(n,o,p){var g=this,h=g.options;if(g.getRuid()){g.disconnectRuntime()}g.connectRuntime(o.ruid,function(){g.exec("init")});g._blob=o;h.fileVal=n||h.fileVal;h.filename=p||h.filename},append:function(h,g){if(typeof h==="object"){c.extend(this._formData,h)}else{this._formData[h]=g}},setRequestHeader:function(h,g){if(typeof h==="object"){c.extend(this._headers,h)}else{this._headers[h]=g}},send:function(g){this.exec("send",g);this._timeout()},abort:function(){clearTimeout(this._timer);return this.exec("abort")},destroy:function(){this.trigger("destroy");this.off();this.exec("destroy");this.disconnectRuntime()},getResponse:function(){return this.exec("getResponse")},getResponseAsJson:function(){return this.exec("getResponseAsJson")},getStatus:function(){return this.exec("getStatus")},_timeout:function(){var h=this,g=h.options.timeout;if(!g){return}clearTimeout(h._timer);h._timer=setTimeout(function(){h.abort();h.trigger("error","timeout")},g)}});b.installTo(a.prototype);return a});f("widgets/upload",["base","uploader","file","lib/transport","widgets/widget"],function(n,b,c,a){var l=n.$,o=n.isPromise,p=c.Status;l.extend(b.options,{prepareNextFile:false,chunked:false,chunkSize:5*1024*1024,chunkRetry:2,threads:3,formData:null});function m(j,i){var k=[],v=j.source,w=v.size,h=i?Math.ceil(w/i):1,u=0,x=0,g;while(x<h){g=Math.min(i,w-u);k.push({file:j,start:u,end:i?(u+g):w,total:w,chunks:h,chunk:x++});u+=g}j.blocks=k.concat();j.remaning=k.length;return{file:j,has:function(){return !!k.length},fetch:function(){return k.shift()}}}b.register({"start-upload":"start","stop-upload":"stop","skip-file":"skipFile","is-in-progress":"isInProgress"},{init:function(){var g=this.owner;this.runing=false;this.pool=[];this.pending=[];this.remaning=0;this.__tick=n.bindFn(this._tick,this);g.on("uploadComplete",function(h){h.blocks&&l.each(h.blocks,function(i,j){j.transport&&(j.transport.abort(),j.transport.destroy());delete j.transport});delete h.blocks;delete h.remaning})},start:function(){var g=this;l.each(g.request("get-files",p.INVALID),function(){g.request("remove-file",this)});if(g.runing){return}g.runing=true;l.each(g.pool,function(j,h){var i=h.file;if(i.getStatus()===p.INTERRUPT){i.setStatus(p.PROGRESS);g._trigged=false;h.transport&&h.transport.send()}});g._trigged=false;g.owner.trigger("startUpload");n.nextTick(g.__tick)},stop:function(g){var h=this;if(h.runing===false){return}h.runing=false;g&&l.each(h.pool,function(i,j){j.transport&&j.transport.abort();j.file.setStatus(p.INTERRUPT)});h.owner.trigger("stopUpload")},isInProgress:function(){return !!this.runing},getStats:function(){return this.request("get-stats")},skipFile:function(g,h){g=this.request("get-file",g);g.setStatus(h||p.COMPLETE);g.skipped=true;g.blocks&&l.each(g.blocks,function(i,j){var k=j.transport;if(k){k.abort();k.destroy();delete j.transport}});this.owner.trigger("uploadSkip",g)},_tick:function(){var j=this,g=j.options,h,i;if(j._promise){return j._promise.always(j.__tick)}if(j.pool.length<g.threads&&(i=j._nextBlock())){j._trigged=false;h=function(k){j._promise=null;k&&k.file&&j._startSend(k);n.nextTick(j.__tick)};j._promise=o(i)?i.always(h):h(i)}else{if(!j.remaning&&!j.getStats().numOfQueue){j.runing=false;j._trigged||n.nextTick(function(){j.owner.trigger("uploadFinished")});j._trigged=true}}},_nextBlock:function(){var i=this,g=i._act,j=i.options,k,h;if(g&&g.has()&&g.file.getStatus()===p.PROGRESS){if(j.prepareNextFile&&!i.pending.length){i._prepareNextFile()}return g.fetch()}else{if(i.runing){if(!i.pending.length&&i.getStats().numOfQueue){i._prepareNextFile()}k=i.pending.shift();h=function(r){if(!r){return null}g=m(r,j.chunked?j.chunkSize:0);i._act=g;return g.fetch()};return o(k)?k[k.pipe?"pipe":"then"](h):h(k)}}},_prepareNextFile:function(){var g=this,h=g.request("fetch-file"),i=g.pending,j;if(h){j=g.request("before-send-file",h,function(){if(h.getStatus()===p.QUEUED){g.owner.trigger("uploadStart",h);h.setStatus(p.PROGRESS);return h}return g._finishFile(h)});j.done(function(){var k=l.inArray(j,i);~k&&i.splice(k,1,h)});j.fail(function(k){h.setStatus(p.ERROR,k);g.owner.trigger("uploadError",h,k);g.owner.trigger("uploadComplete",h)});i.push(j)}},_popBlock:function(g){var h=l.inArray(g,this.pool);this.pool.splice(h,1);g.file.remaning--;this.remaning--},_startSend:function(i){var g=this,h=i.file,j;g.pool.push(i);g.remaning++;i.blob=i.chunks===1?h.source:h.source.slice(i.start,i.end);j=g.request("before-send",i,function(){if(h.getStatus()===p.PROGRESS){g._doSend(i)}else{g._popBlock(i);n.nextTick(g.__tick)}});j.fail(function(){if(h.remaning===1){g._finishFile(h).always(function(){i.percentage=1;g._popBlock(i);g.owner.trigger("uploadComplete",h);n.nextTick(g.__tick)})}else{i.percentage=1;g._popBlock(i);n.nextTick(g.__tick)}})},_doSend:function(i){var y=this,v=y.owner,w=y.options,j=i.file,z=new a(w),h=l.extend({},w.formData),k=l.extend({},w.headers),x,g;i.transport=z;z.on("destroy",function(){delete i.transport;y._popBlock(i);n.nextTick(y.__tick)});z.on("progress",function(r){var q=0,s=0;q=i.percentage=r;if(i.chunks>1){l.each(j.blocks,function(t,u){s+=(u.percentage||0)*(u.end-u.start)});q=s/j.size}v.trigger("uploadProgress",j,q||0)});x=function(q){var r;g=z.getResponseAsJson()||{};g._raw=z.getResponse();r=function(s){q=s};if(!v.trigger("uploadAccept",i,g,r)){q=q||"server"}return q};z.on("error",function(q,r){i.retried=i.retried||0;if(i.chunks>1&&~"http,abort".indexOf(q)&&i.retried<w.chunkRetry){i.retried++;z.send()}else{if(!r&&q==="server"){q=x(q)}j.setStatus(p.ERROR,q);v.trigger("uploadError",j,q);v.trigger("uploadComplete",j)}});z.on("load",function(){var q;if((q=x())){z.trigger("error",q,true);return}if(j.remaning===1){y._finishFile(j,g)}else{z.destroy()}});h=l.extend(h,{id:j.id,name:j.name,type:j.type,lastModifiedDate:j.lastModifiedDate,size:j.size});i.chunks>1&&l.extend(h,{chunks:i.chunks,chunk:i.chunk});v.trigger("uploadBeforeSend",i,h,k);z.appendBlob(w.fileVal,i.blob,j.name);z.append(h);z.setRequestHeader(k);z.send()},_finishFile:function(j,g,i){var h=this.owner;return h.request("after-send-file",arguments,function(){j.setStatus(p.COMPLETE);h.trigger("uploadSuccess",j,g,i)}).fail(function(k){if(j.getStatus()===p.PROGRESS){j.setStatus(p.ERROR,k)}h.trigger("uploadError",j,k)}).always(function(){h.trigger("uploadComplete",j)})}})});f("widgets/validator",["base","uploader","file","widgets/widget"],function(k,a,b){var c=k.$,l={},j;j={addValidator:function(g,h){l[g]=h},removeValidator:function(g){delete l[g]}};a.register({init:function(){var g=this;c.each(l,function(){this.call(g.owner)})}});j.addValidator("fileNumLimit",function(){var p=this,g=p.options,h=0,o=g.fileNumLimit>>0,i=true;if(!o){return}p.on("beforeFileQueued",function(m){if(h>=o&&i){i=false;this.trigger("error","Q_EXCEED_NUM_LIMIT",o,m);setTimeout(function(){i=true},1)}return h>=o?false:true});p.on("fileQueued",function(){h++});p.on("fileDequeued",function(){h--});p.on("uploadFinished",function(){h=0})});j.addValidator("fileSizeLimit",function(){var p=this,g=p.options,h=0,o=g.fileSizeLimit>>0,i=true;if(!o){return}p.on("beforeFileQueued",function(n){var m=h+n.size>o;if(m&&i){i=false;this.trigger("error","Q_EXCEED_SIZE_LIMIT",o,n);setTimeout(function(){i=true},1)}return m?false:true});p.on("fileQueued",function(m){h+=m.size});p.on("fileDequeued",function(m){h-=m.size});p.on("uploadFinished",function(){h=0})});j.addValidator("fileSingleSizeLimit",function(){var g=this,h=g.options,i=h.fileSingleSizeLimit;if(!i){return}g.on("beforeFileQueued",function(n){if(n.size>i){n.setStatus(b.Status.INVALID,"exceed_size");this.trigger("error","F_EXCEED_SIZE",n);return false}})});j.addValidator("duplicate",function(){var g=this,i=g.options,n={};if(i.duplicate){return}function h(m){var s=0,t=0,v=m.length,u;for(;t<v;t++){u=m.charCodeAt(t);s=u+(s<<6)+(s<<16)-s}return s}g.on("beforeFileQueued",function(p){var m=p.__hash||(p.__hash=h(p.name+p.size+p.lastModifiedDate));if(n[m]){this.trigger("error","F_DUPLICATE",p);return false}});g.on("fileQueued",function(p){var m=p.__hash;m&&(n[m]=true)});g.on("fileDequeued",function(p){var m=p.__hash;m&&(delete n[m])})});return j});f("runtime/compbase",[],function(){function a(c,b){this.owner=c;this.options=c.options;this.getRuntime=function(){return b};this.getRuid=function(){return b.uid};this.trigger=function(){return c.trigger.apply(c,arguments)}}return a});f("runtime/flash/runtime",["base","runtime/runtime","runtime/compbase"],function(n,o,a){var c=n.$,m="flash",l={};function p(){var h;try{h=navigator.plugins["Shockwave Flash"];h=h.description}catch(g){try{h=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){h="0.0"}}h=h.match(/\d+/g);return parseFloat(h[0]+"."+h[1],10)}function b(){var k={},r={},h=this.destory,i=this,g=n.guid("webuploader_");o.apply(i,arguments);i.type=m;i.exec=function(z,q){var A=this,x=A.uid,y=n.slice(arguments,2),B;r[x]=A;if(l[z]){if(!k[x]){k[x]=new l[z](A,i)}B=k[x];if(B[q]){return B[q].apply(B,y)}}return i.flashExec.apply(A,arguments)};function j(z,q){var x=z.type||z,w,y;w=x.split("::");y=w[0];x=w[1];if(x==="Ready"&&y===i.uid){i.trigger("ready")}else{if(r[y]){r[y].trigger(x.toLowerCase(),z,q)}}}d[g]=function(){var q=arguments;setTimeout(function(){j.apply(null,q)},1)};this.jsreciver=g;this.destory=function(){return h&&h.apply(this,arguments)};this.flashExec=function(x,q){var v=i.getFlash(),w=n.slice(arguments,2);return v.exec(this.uid,x,q,w)}}n.inherits(o,{constructor:b,init:function(){var h=this.getContainer(),i=this.options,g;h.css({position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"});g='<object id="'+this.uid+'" type="application/x-shockwave-flash" data="'+i.swf+'" ';if(n.browser.ie){g+='classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '}g+='width="100%" height="100%" style="outline:0"><param name="movie" value="'+i.swf+'" /><param name="flashvars" value="uid='+this.uid+"&jsreciver="+this.jsreciver+'" /><param name="wmode" value="transparent" /><param name="allowscriptaccess" value="always" /></object>';h.html(g)},getFlash:function(){if(this._flash){return this._flash}this._flash=c("#"+this.uid).get(0);return this._flash}});b.register=function(g,h){h=l[g]=n.inherits(a,c.extend({flashExec:function(){var j=this.owner,i=this.getRuntime();return i.flashExec.apply(j,arguments)}},h));return h};if(p()>=11.4){o.addRuntime(m,b)}return b});f("runtime/flash/filepicker",["base","runtime/flash/runtime"],function(c,a){var b=c.$;return a.register("FilePicker",{init:function(l){var i=b.extend({},l),n,m;n=i.accept&&i.accept.length;for(m=0;m<n;m++){if(!i.accept[m].title){i.accept[m].title="Files"}}delete i.button;delete i.container;this.flashExec("FilePicker","init",i)},destroy:function(){}})});f("runtime/flash/image",["runtime/flash/runtime"],function(a){return a.register("Image",{loadFromBlob:function(b){var c=this.owner;c.info()&&this.flashExec("Image","info",c.info());c.meta()&&this.flashExec("Image","meta",c.meta());this.flashExec("Image","loadFromBlob",b.uid)}})});f("runtime/flash/transport",["base","runtime/flash/runtime","runtime/client"],function(c,a,h){var b=c.$;return a.register("Transport",{init:function(){this._status=0;this._response=null;this._responseJson=null},send:function(){var r=this.owner,p=this.options,n=this._initAjax(),q=r._blob,o=p.server,g;n.connectRuntime(q.ruid);if(p.sendAsBinary){o+=(/\?/.test(o)?"&":"?")+b.param(r._formData);g=q.uid}else{b.each(r._formData,function(i,j){n.exec("append",i,j)});n.exec("appendBlob",p.fileVal,q.uid,p.filename||r._formData.name||"")}this._setRequestHeader(n,p.headers);n.exec("send",{method:p.method,url:o},g)},getStatus:function(){return this._status},getResponse:function(){return this._response},getResponseAsJson:function(){return this._responseJson},abort:function(){var g=this._xhr;if(g){g.exec("abort");g.destroy();this._xhr=g=null}},destroy:function(){this.abort()},_initAjax:function(){var j=this,g=new h("XMLHttpRequest");g.on("uploadprogress progress",function(i){return j.trigger("progress",i.loaded/i.total)});g.on("load",function(){var l=g.exec("getStatus"),i="";g.off();j._xhr=null;if(l>=200&&l<300){j._response=g.exec("getResponse");j._responseJson=g.exec("getResponseAsJson")}else{if(l>=500&&l<600){j._response=g.exec("getResponse");j._responseJson=g.exec("getResponseAsJson");i="server"}else{i="http"}}g.destroy();g=null;return i?j.trigger("error",i):j.trigger("load")});g.on("error",function(){g.off();j._xhr=null;j.trigger("error","http")});j._xhr=g;return g},_setRequestHeader:function(g,j){b.each(j,function(l,i){g.exec("setRequestHeader",l,i)})}})});f("preset/flashonly",["base","widgets/filepicker","widgets/image","widgets/queue","widgets/runtime","widgets/upload","widgets/validator","runtime/flash/filepicker","runtime/flash/image","runtime/flash/transport"],function(a){return a});f("webuploader",["preset/flashonly"],function(a){return a});return e("webuploader")});
|