forked from LPology/Simple-Ajax-Uploader
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSimpleAjaxUploader.min.js
2 lines (2 loc) · 21.3 KB
/
SimpleAjaxUploader.min.js
1
2
/** Simple Ajax Uploader v2.2.4 Copyright 2012-2015 LPology, LLC MIT license https://github.com/LPology/Simple-Ajax-Uploader */
(function(b,a){if(typeof define==="function"&&define.amd){define(function(){return a(b)})}else{if(typeof module==="object"&&module.exports){module.exports=a(b)}else{b.ss=a(b)}}}(typeof window!=="undefined"?window:this,function(f){var l=f.ss||{},k=/^\s+/,h=/\s+$/,b=/[xy]/g,c=/.*(\/|\\)/,e=/.*[.]/,d=/[\t\r\n]/g,g=Object.prototype.toString.call(f.HTMLElement).indexOf("Constructor")>0,a=(navigator.userAgent.indexOf("MSIE 7")!==-1),i=document.createElement("input"),j;i.type="file";j=("multiple" in i&&typeof File!=="undefined"&&typeof(new XMLHttpRequest()).upload!=="undefined");l.obj2string=function(p,o){var q=[];for(var r in p){if(p.hasOwnProperty(r)){var n=o?o+"["+r+"]":r,m=p[r];q.push(typeof m==="object"?l.obj2string(m,n):encodeURIComponent(n)+"="+encodeURIComponent(m))}}return q.join("&")};l.extendObj=function(n,m){for(var o in m){if(m.hasOwnProperty(o)){n[o]=m[o]}}};l.addEvent=function(o,n,m){if(o.addEventListener){o.addEventListener(n,m,false)}else{o.attachEvent("on"+n,m)}return function(){l.removeEvent(o,n,m)}};l.removeEvent=document.removeEventListener?function(o,n,m){if(o.removeEventListener){o.removeEventListener(n,m,false)}}:function(p,o,n){var m="on"+o;if(typeof p[m]==="undefined"){p[m]=null}p.detachEvent(m,n)};l.newXHR=function(){if(typeof XMLHttpRequest!=="undefined"){return new f.XMLHttpRequest()}else{if(f.ActiveXObject){try{return new f.ActiveXObject("Microsoft.XMLHTTP")}catch(m){return false}}}};l.getIFrame=function(){var n=l.getUID(),m;if(a){m=document.createElement('<iframe src="javascript:false;" name="'+n+'">')}else{m=document.createElement("iframe");m.src="javascript:false;";m.name=n}m.style.display="none";m.id=n;return m};l.getForm=function(n){var m=document.createElement("form");m.encoding="multipart/form-data";m.enctype="multipart/form-data";m.style.display="none";for(var o in n){if(n.hasOwnProperty(o)){m[o]=n[o]}}return m};l.getHidden=function(n,o){var m=document.createElement("input");m.type="hidden";m.name=n;m.value=o;return m};l.parseJSON=function(n){if(!n){return false}n=l.trim(n+"");if(f.JSON&&f.JSON.parse){try{return f.JSON.parse(n+"")}catch(m){return false}}var o=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g,p=null,q;return n&&!l.trim(n.replace(o,function(t,r,s,u){if(q&&r){p=0}if(p===0){return t}q=s||r;p+=!u-!s;return""}))?(Function("return "+n))():false};l.getBox=function(o){var n,m,q=0,p=0;if(o.getBoundingClientRect){n=o.getBoundingClientRect();m=document.documentElement;q=n.top+(f.pageYOffset||m.scrollTop)-(m.clientTop||0);p=n.left+(f.pageXOffset||m.scrollLeft)-(m.clientLeft||0)}else{do{p+=o.offsetLeft;q+=o.offsetTop}while((o=o.offsetParent))}return{top:Math.round(q),left:Math.round(p)}};l.addStyles=function(o,n){for(var m in n){if(n.hasOwnProperty(m)){o.style[m]=n[m]}}};l.copyLayout=function(o,n){var m=l.getBox(o);l.addStyles(n,{position:"absolute",left:m.left+"px",top:m.top+"px",width:o.offsetWidth+"px",height:o.offsetHeight+"px"})};l.getUID=function(){return"axxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(b,function(o){var n=Math.random()*16|0,m=o=="x"?n:(n&3|8);return m.toString(16)})};l.trim=function(m){return m.toString().replace(k,"").replace(h,"")};l.getFilename=function(m){return m.replace(c,"")};l.getExt=function(m){return(-1!==m.indexOf("."))?m.replace(e,""):""};l.hasClass=function(n,m){if(!n||!m){return false}return(" "+n.className+" ").replace(d," ").indexOf(" "+m+" ")>=0};l.addClass=function(n,m){if(!n||!m){return false}if(!l.hasClass(n,m)){n.className+=" "+m}};l.removeClass=(function(){var m={};return function(o,n){if(!o||!n){return false}if(!m[n]){m[n]=new RegExp("(?:^|\\s)"+n+"(?!\\S)")}o.className=o.className.replace(m[n],"")}})();l.purge=function(q){var o=q.attributes,p,m,r;if(o){for(p=o.length-1;p>=0;p-=1){r=o[p].name;if(typeof q[r]==="function"){q[r]=null}}}o=q.childNodes;if(o){m=o.length;for(p=0;p<m;p+=1){l.purge(q.childNodes[p])}}};l.remove=function(m){if(m&&m.parentNode){l.purge(m);m.parentNode.removeChild(m)}m=null};l.verifyElem=function(m){if(typeof jQuery!=="undefined"&&m instanceof jQuery){m=m[0]}else{if(typeof m==="string"){if(m.charAt(0)=="#"){m=m.substr(1)}m=document.getElementById(m)}}if(!m||m.nodeType!==1){return false}if(m.nodeName.toUpperCase()=="A"){m.style.cursor="pointer";l.addEvent(m,"click",function(n){if(n&&n.preventDefault){n.preventDefault()}else{if(f.event){f.event.returnValue=false}}})}return m};l._options={};l.uploadSetup=function(m){l.extendObj(l._options,m)};l.SimpleUpload=function(n){var p,m,o;this._opts={button:"",url:"",dropzone:"",dragClass:"",cors:false,progressUrl:false,sessionProgressUrl:false,nginxProgressUrl:false,multiple:false,maxUploads:3,queue:true,checkProgressInterval:500,keyParamName:"APC_UPLOAD_PROGRESS",sessionProgressName:"PHP_SESSION_UPLOAD_PROGRESS",nginxProgressHeader:"X-Progress-ID",corsInputName:"XHR_CORS_TARGETORIGIN",allowedExtensions:[],accept:"",maxSize:false,name:"",data:{},noParams:false,autoSubmit:true,multipart:false,method:"POST",responseType:"",debug:false,hoverClass:"",focusClass:"",disabledClass:"",customHeaders:{},encodeCustomHeaders:false,onAbort:function(q,s,r){},onChange:function(q,t,s,r){},onSubmit:function(q,t,s,r){},onProgress:function(q){},onUpdateFileSize:function(q){},onComplete:function(r,q,t,s){},onExtError:function(q,r){},onSizeError:function(r,q){},onError:function(s,v,q,w,r,u,t){},startXHR:function(r,q,s){},endXHR:function(r,q,s){},startNonXHR:function(q,r){},endNonXHR:function(q,r){}};l.extendObj(this._opts,l._options);l.extendObj(this._opts,n);n=null;this._btns=[];if(this._opts.button instanceof Array){m=this._opts.button.length;for(p=0;p<m;p++){o=l.verifyElem(this._opts.button[p]);if(o!==false){this._btns.push(this.rerouteClicks(o))}else{this.log("Button with array index "+p+" is invalid")}}}else{o=l.verifyElem(this._opts.button);if(o!==false){this._btns.push(this.rerouteClicks(o))}}delete this._opts.button;this._opts.button=o=null;if(this._opts.dropzone===""&&(this._btns.length<1||this._btns[0]===false)){throw new Error("Invalid button. Make sure the element you're passing exists.")}if(this._opts.multiple===false){this._opts.maxUploads=1}this._queue=[];this._active=0;this._disabled=false;this._maxFails=10;this._progKeys={};if(!j){this._sizeFlags={}}if(j&&this._opts.dropzone!==""){this._dzone=l.verifyElem(this._opts.dropzone);if(!this._dzone){this.log("Invalid or nonexistent element passed for drop zone")}else{this.addDropZone(this._dzone)}}this._createInput();this._manDisabled=false;this.enable(true)};l.SimpleUpload.prototype={_killInput:function(){if(!this._input){return}if(this._input.turnOff){this._input.turnOff()}if(this._input.focusOff){this._input.focusOff()}if(this._input.blurOff){this._input.blurOff()}if(this._input.parentNode.mouseOverOff){this._input.parentNode.mouseOverOff()}l.remove(this._input.parentNode);delete this._input;this._input=null},destroy:function(){var m=this._btns.length;while(m--){if(this._btns[m].off){this._btns[m].off()}l.removeClass(this._btns[m],this._opts.hoverClass);l.removeClass(this._btns[m],this._opts.focusClass);l.removeClass(this._btns[m],this._opts.disabledClass);this._btns[m].disabled=false}this._killInput();this._destroy=true},log:function(m){if(this._opts&&this._opts.debug&&f.console&&f.console.log){f.console.log("[Uploader] "+m)}},setData:function(m){this._opts.data=m},setOptions:function(m){l.extendObj(this._opts,m)},setProgressBar:function(m){this._progBar=l.verifyElem(m)},setPctBox:function(m){this._pctBox=l.verifyElem(m)},setFileSizeBox:function(m){this._sizeBox=l.verifyElem(m)},setProgressContainer:function(m){this._progBox=l.verifyElem(m)},setAbortBtn:function(n,m){this._abortBtn=l.verifyElem(n);this._removeAbort=false;if(m){this._removeAbort=true}},getQueueSize:function(){return this._queue.length},_cycleQueue:function(){if(this._queue.length>0&&this._opts.autoSubmit){this.submit()}},removeCurrent:function(n){if(n){var m=this._queue.length;while(m--){if(this._queue[m].id===n){this._queue.splice(m,1);break}}}else{this._queue.splice(0,1)}this._cycleQueue()},clearQueue:function(){this._queue.length=0},disable:function(m){var n=this._btns.length,o;this._manDisabled=!m||this._manDisabled===true?true:false;this._disabled=true;while(n--){o=this._btns[n].nodeName.toUpperCase();if(o=="INPUT"||o=="BUTTON"){this._btns[n].disabled=true}if(this._opts.disabledClass!==""){l.addClass(this._btns[n],this._opts.disabledClass)}}if(this._input&&this._input.parentNode){this._input.parentNode.style.visibility="hidden"}},enable:function(m){if(!m){this._manDisabled=false}if(this._manDisabled===true){return}var n=this._btns.length;this._disabled=false;while(n--){l.removeClass(this._btns[n],this._opts.disabledClass);this._btns[n].disabled=false}},updatePosition:function(){if(this._btns[0]&&this._input&&this._input.parentNode){this._overBtn=this._btns[0];l.copyLayout(this._btns[0],this._input.parentNode)}}};l.IframeUpload={_getHost:function(n){var m=document.createElement("a");m.href=n;if(m.hostname){return m.hostname.toLowerCase()}return n},_addFiles:function(n){var m=l.getFilename(n.value),o=l.getExt(m);if(false===this._opts.onChange.call(this,m,o,this._overBtn)){return false}this._queue.push({id:l.getUID(),file:n,name:m,ext:o,btn:this._overBtn,size:null});return true},_uploadIframe:function(A,u,n,z,B,m,s){var y=this,w=this._opts,E=l.getUID(),v=l.getIFrame(),p,t,C=false,x=false,o,r,q;if(w.noParams===true){t=w.url}else{t=!w.nginxProgressUrl?w.url:t+((t.indexOf("?")>-1)?"&":"?")+encodeURIComponent(w.nginxProgressHeader)+"="+encodeURIComponent(E)}p=l.getForm({action:t,target:v.name,method:w.method});w.onProgress.call(this,0);if(B){B.innerHTML="0%"}if(z){z.style.width="0%"}if(w.cors){o=l.addEvent(f,"message",function(F){if(y._getHost(F.origin)!=y._getHost(w.url)){y.log("Non-matching origin: "+F.origin);return}C=true;o();w.endNonXHR.call(y,A.name,A.btn);y._finish(A,"","",F.data,n,u,B,m,s)})}var D=l.addEvent(v,"load",function(){D();if(w.sessionProgressUrl){p.appendChild(l.getHidden(w.sessionProgressName,E))}else{if(w.progressUrl){p.appendChild(l.getHidden(w.keyParamName,E))}}for(var F in w.data){if(w.data.hasOwnProperty(F)){p.appendChild(l.getHidden(F,w.data[F]))}}if(w.cors){p.appendChild(l.getHidden(w.corsInputName,f.location.href))}p.appendChild(A.file);r=l.addEvent(v,"load",function(){if(!v.parentNode||x){return}x=true;delete y._progKeys[E];delete y._sizeFlags[E];r();if(m){l.removeEvent(m,"click",q)}if(w.cors){f.setTimeout(function(){l.remove(p);l.remove(v);if(!C){y._errorFinish(A,"","",false,"error",u,n,B,m,s)}w=E=p=v=n=u=B=m=s=null},600)}else{try{var I=v.contentDocument?v.contentDocument:v.contentWindow.document,G=I.body.innerHTML;w.endNonXHR.call(y,A.name,A.btn);y._finish(A,"","",G,n,u,B,m,s)}catch(H){y._errorFinish(A,"",H.message,false,"error",u,n,B,m,s)}f.setTimeout(function(){l.remove(p);l.remove(v);p=v=null},0);A=w=E=n=u=B=null}});if(m){q=function(){l.removeEvent(m,"click",q);delete y._progKeys[E];delete y._sizeFlags[E];if(v){x=true;r();try{if(v.contentWindow.document.execCommand){v.contentWindow.document.execCommand("Stop")}}catch(G){}try{v.src="javascript".concat(":false;")}catch(G){}f.setTimeout(function(){l.remove(p);l.remove(v);p=v=null},0)}y.log("Upload aborted");w.onAbort.call(y,A.name,A.btn,A.size);y._last(n,u,B,m,s)};l.addEvent(m,"click",q)}y.log("Commencing upload using iframe");p.submit();if(y._hasProgUrl){y._progKeys[E]=1;f.setTimeout(function(){y._getProg(E,z,n,B,1);z=n=B=null},600)}f.setTimeout(function(){y.removeCurrent(A.id)},0)});document.body.appendChild(p);document.body.appendChild(v)},_getProg:function(u,t,o,y,p){var x=this,n=this._opts,r=new Date().getTime(),w,q,v;if(!u){return}if(n.nginxProgressUrl){q=n.nginxProgressUrl+"?"+encodeURIComponent(n.nginxProgressHeader)+"="+encodeURIComponent(u)+"&_="+r}else{if(n.sessionProgressUrl){q=n.sessionProgressUrl}else{if(n.progressUrl){q=n.progressUrl+"?progresskey="+encodeURIComponent(u)+"&_="+r}}}v=function(){var A,B,C,z,E;try{if(v&&(n.cors||w.readyState===4)){v=undefined;w.onreadystatechange=function(){};try{E=w.statusText;z=w.status}catch(D){E="";z=""}if(n.cors||(z>=200&&z<300)){A=l.parseJSON(w.responseText);if(A===false){x.log("Error parsing progress response (expecting JSON)");return}if(n.nginxProgressUrl){if(A.state=="uploading"){B=parseInt(A.size,10);if(B>0){C=Math.round((parseInt(A.received,10)/B)*100);B=Math.round(B/1024)}}else{if(A.state=="done"){C=100}else{if(A.state=="error"){x.log("Error requesting upload progress: "+A.status);return}}}}else{if(n.sessionProgressUrl||n.progressUrl){if(A.success===true){B=parseInt(A.size,10);C=parseInt(A.pct,10)}}}if(C){if(y){y.innerHTML=C+"%"}if(t){t.style.width=C+"%"}n.onProgress.call(x,C)}if(B&&!x._sizeFlags[u]){if(o){o.innerHTML=B+"K"}x._sizeFlags[u]=1;n.onUpdateFileSize.call(x,B)}if(!C&&!B&&p>=x._maxFails){p++;x.log("Failed progress request limit reached. Count: "+p);return}if(C<100&&x._progKeys[u]){f.setTimeout(function(){x._getProg(u,t,o,y,p);u=t=o=y=p=null},n.checkProgressInterval)}}else{delete x._progKeys[u];x.log("Error requesting upload progress: "+z+" "+E)}w=B=C=z=E=A=null}}catch(D){x.log("Error requesting upload progress: "+D.message)}};if(n.cors&&!n.sessionProgressUrl){if(f.XDomainRequest){w=new f.XDomainRequest();w.open("GET",q,true);w.onprogress=w.ontimeout=function(){};w.onload=v;w.onerror=function(){delete x._progKeys[u];u=null;x.log("Error requesting upload progress")}}else{return}}else{var m=!n.sessionProgressUrl?"GET":"POST",s;w=l.newXHR();w.onreadystatechange=v;w.open(m,q,true);if(n.sessionProgressUrl){s=encodeURIComponent(n.sessionProgressName)+"="+encodeURIComponent(u);w.setRequestHeader("Content-type","application/x-www-form-urlencoded")}if(n.nginxProgressUrl){w.setRequestHeader(n.nginxProgressHeader,u)}w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept","application/json, text/javascript, */*; q=0.01");w.send((n.sessionProgressUrl&&s)||null)}},_initUpload:function(m){if(false===this._opts.startNonXHR.call(this,m.name,m.btn)){if(this._disabled){this.enable(true)}this._active--;return}this._hasProgUrl=(this._opts.progressUrl||this._opts.sessionProgressUrl||this._opts.nginxProgressUrl)?true:false;this._uploadIframe(m,this._progBox,this._sizeBox,this._progBar,this._pctBox,this._abortBtn,this._removeAbort);this._progBox=this._sizeBox=this._progBar=this._pctBox=this._abortBtn=this._removeAbort=null}};l.XhrUpload={_addFiles:function(r){var q=r.length,m,p,o,n;if(!this._opts.multiple){q=1}for(n=0;n<q;n++){m=l.getFilename(r[n].name);p=l.getExt(m);o=Math.round(r[n].size/1024);if(false===this._opts.onChange.call(this,m,p,this._overBtn,o)){return false}this._queue.push({id:l.getUID(),file:r[n],name:m,ext:p,btn:this._overBtn,size:o})}return true},_uploadXhr:function(B,s,D,o,n,y,v,C,m,r){var x=this,w=this._opts,u=l.newXHR(),t,q;if(n){n.innerHTML=B.size+"K"}if(C){C.innerHTML="0%"}if(y){y.style.width="0%"}w.onProgress.call(this,0);t=function(G,F){var E,I;try{if(t&&(F||u.readyState===4)){t=undefined;u.onreadystatechange=function(){};if(F){if(u.readyState!==4){u.abort()}w.onAbort.call(x,B.name,B.btn,B.size);x._last(n,v,C,m,r)}else{if(m){l.removeEvent(m,"click",q)}E=u.status;try{I=u.statusText}catch(H){I=""}if(E>=200&&E<300){w.endXHR.call(x,B.name,B.size,B.btn);x._finish(B,E,I,u.responseText,n,v,C,m,r)}else{x._errorFinish(B,E,I,u.responseText,"error",v,n,C,m,r)}}}}catch(H){if(!F){x._errorFinish(B,-1,H.message,false,"error",v,n,C,m,r)}}};if(m){q=function(){l.removeEvent(m,"click",q);if(t){t(undefined,true)}};l.addEvent(m,"click",q)}u.onreadystatechange=t;u.open(w.method.toUpperCase(),s,true);l.extendObj(o,w.customHeaders);for(var A in o){if(o.hasOwnProperty(A)){if(w.encodeCustomHeaders&&w.customHeaders.hasOwnProperty(A)){u.setRequestHeader(A,encodeURIComponent(o[A])+"")}else{u.setRequestHeader(A,o[A]+"")}}}l.addEvent(u.upload,"progress",function(E){if(E.lengthComputable){var F=Math.round((E.loaded/E.total)*100);w.onProgress.call(x,F);if(C){C.innerHTML=F+"%"}if(y){y.style.width=F+"%"}}});if(w.multipart===true){var z=new FormData();for(var p in D){if(D.hasOwnProperty(p)){z.append(p,D[p])}}z.append(w.name,B.file);this.log("Commencing upload using multipart form");u.send(z)}else{this.log("Commencing upload using binary stream");u.send(B.file)}this.removeCurrent(B.id)},_initUpload:function(n){var p={},o={},m;if(false===this._opts.startXHR.call(this,n.name,n.size,n.btn)){if(this._disabled){this.enable(true)}this._active--;return}p[this._opts.name]=n.name;o["X-Requested-With"]="XMLHttpRequest";o["X-File-Name"]=!this._opts.encodeCustomHeaders?n.name:encodeURIComponent(n.name);if(this._opts.responseType.toLowerCase()=="json"){o.Accept="application/json, text/javascript, */*; q=0.01"}if(!this._opts.multipart){o["Content-Type"]="application/octet-stream"}l.extendObj(p,this._opts.data);m=this._opts.noParams===true?this._opts.url:this._opts.url+((this._opts.url.indexOf("?")>-1)?"&":"?")+l.obj2string(p);this._uploadXhr(n,m,p,o,this._sizeBox,this._progBar,this._progBox,this._pctBox,this._abortBtn,this._removeAbort);this._sizeBox=this._progBar=this._progBox=this._pctBox=this._abortBtn=this._removeAbort=null}};(function(){l.extendObj(l.SimpleUpload.prototype,{_createInput:function(){var m=this,n=document.createElement("div");this._input=document.createElement("input");this._input.type="file";this._input.name=this._opts.name;if(j&&!g&&this._opts.multiple){this._input.multiple=true}if("accept" in this._input&&this._opts.accept!==""){this._input.accept=this._opts.accept}l.addStyles(n,{display:"block",position:"absolute",overflow:"hidden",margin:0,padding:0,opacity:0,direction:"ltr",zIndex:2147483582});l.addStyles(this._input,{position:"absolute",right:0,margin:0,padding:0,fontSize:"480px",fontFamily:"sans-serif",cursor:"pointer",height:"100%"});if(n.style.opacity!=="0"){n.style.filter="alpha(opacity=0)"}this._input.turnOff=l.addEvent(this._input,"change",function(){if(!m._input||m._input.value===""){return}if(false===m._addFiles(j?m._input.files:m._input)){return}l.removeClass(m._overBtn,m._opts.hoverClass);l.removeClass(m._overBtn,m._opts.focusClass);m._killInput();m._createInput();if(m._opts.autoSubmit){m.submit()}});if(m._opts.hoverClass!==""){n.mouseOverOff=l.addEvent(n,"mouseover",function(){l.addClass(m._overBtn,m._opts.hoverClass)})}n.mouseOutOff=l.addEvent(n,"mouseout",function(){m._input.parentNode.style.visibility="hidden";if(m._opts.hoverClass!==""){l.removeClass(m._overBtn,m._opts.hoverClass);l.removeClass(m._overBtn,m._opts.focusClass)}});if(m._opts.focusClass!==""){this._input.focusOff=l.addEvent(this._input,"focus",function(){l.addClass(m._overBtn,m._opts.focusClass)});this._input.blurOff=l.addEvent(this._input,"blur",function(){l.removeClass(m._overBtn,m._opts.focusClass)})}document.body.appendChild(n);n.appendChild(this._input);n=null},rerouteClicks:function(n){var m=this;n.off=l.addEvent(n,"mouseover",function(){if(m._disabled){return}if(!m._input){m._createInput()}m._overBtn=n;l.copyLayout(n,m._input.parentNode);m._input.parentNode.style.visibility="visible"});return n},_last:function(o,n,q,p,m){if(o){o.innerHTML=""}if(q){q.innerHTML=""}if(p&&m){l.remove(p)}if(n){l.remove(n)}this._active--;o=n=q=p=m=null;if(this._disabled){this.enable(true)}if(this._destroy&&this._queue.length===0&&this._active.length===0){for(var r in this){if(this.hasOwnProperty(r)){delete this[r]}}}else{this._cycleQueue()}},_errorFinish:function(o,r,n,q,p,s,m,v,t,u){this.log("Upload failed: "+r+" "+n);this._opts.onError.call(this,o.name,p,r,n,q,o.btn,o.size);this._last(m,s,v,t,u);o=r=n=q=p=m=s=v=t=u=null},_finish:function(o,q,n,p,m,r,u,s,t){this.log("Server response: "+p);if(this._opts.responseType.toLowerCase()=="json"){p=l.parseJSON(p);if(p===false){this._errorFinish(o,q,n,false,"parseerror",r,m,s,t);return}}this._opts.onComplete.call(this,o.name,p,o.btn,o.size);this._last(m,r,u,s,t);o=q=n=p=m=r=u=s=t=null},_checkFile:function(n){var o=false,m=this._opts.allowedExtensions.length;if(m>0){while(m--){if(this._opts.allowedExtensions[m].toLowerCase()==n.ext.toLowerCase()){o=true;break}}if(!o){this.removeCurrent(n.id);this.log("File extension not permitted");this._opts.onExtError.call(this,n.name,n.ext);return false}}if(n.size&&this._opts.maxSize!==false&&n.size>this._opts.maxSize){this.removeCurrent(n.id);this.log(n.name+" exceeds "+this._opts.maxSize+"K limit");this._opts.onSizeError.call(this,n.name,n.size);return false}n=null;return true},submit:function(){if(this._disabled||this._active>=this._opts.maxUploads||this._queue.length<1){return}if(!this._checkFile(this._queue[0])){return}if(false===this._opts.onSubmit.call(this,this._queue[0].name,this._queue[0].ext,this._queue[0].btn,this._queue[0].size)){return}this._active++;if(this._opts.multiple===false||this._opts.queue===false&&this._active>=this._opts.maxUploads){this.disable(true)}this._initUpload(this._queue[0])}});if(j){l.extendObj(l.SimpleUpload.prototype,l.XhrUpload)}else{l.extendObj(l.SimpleUpload.prototype,l.IframeUpload)}}());l.extendObj(l.SimpleUpload.prototype,{_dragFileCheck:function(n){if(n.dataTransfer.types){for(var m=0;m<n.dataTransfer.types.length;m++){if(n.dataTransfer.types[m]=="Files"){return true}}}return false},addDropZone:function(n){var m=this;l.addStyles(n,{zIndex:2147483583});n.ondragenter=function(o){if(!m._dragFileCheck(o)){return false}l.addClass(this,m._opts.dragClass);return false};n.ondragover=function(){return false};n.ondragend=function(){l.removeClass(this,m._opts.dragClass);return false};n.ondragleave=function(){l.removeClass(this,m._opts.dragClass);return false};n.ondrop=function(o){o.preventDefault();l.removeClass(this,m._opts.dragClass);if(!m._dragFileCheck(o)){return false}m._addFiles(o.dataTransfer.files);m._cycleQueue()}}});return l}));