var bt_upload_file={f:null,f_total:0,f_path:null,split_size:1024*1024*2,_files:[],_error:0,_start_time:0,_t_start_time:0,collback_to:null,upload_url:'/files?action=upload',_loadT:null,open:function(path,is_exts,ps,collback_to){bt_upload_file.f_path=path.replace('//','/');user_agent=navigator.userAgent.toLowerCase();var btn_dir='';var accept_ext='';if(!is_exts){if(user_agent.indexOf('chrome')!==-1||user_agent.indexOf('firefox')!==-1){btn_dir='<input type="file" id="dir_input" onchange="bt_upload_file.list(this.files)" style="display:none;"  multiple="true" autocomplete="off" multiple webkitdirectory /><button type="button" style="margin-left: 10px;"  id="opt" onclick="$(\'#dir_input\').click()" autocomplete="off" title="Supported browsers: Chrome、Firefox、Edge">Select dir</button>'}}else{accept_ext='accept="'+is_exts+'"'}var other_ps='';if(ps){other_ps=' --- <span style="color:red;">'+ps+'</span>'}else{other_ps=' Support for breakpoints'}if(collback_to){bt_upload_file.collback_to=collback_to}bt_upload_file._loadT=layer.open({type:1,title:'Upload files to ['+bt_upload_file.f_path+']'+other_ps,area:['550px','500px'],shadeClose:false,closeBtn:2,content:'<div class="fileUploadDiv"><input type="file" id="file_input" onchange="bt_upload_file.list(this.files)"  multiple="true" autocomplete="off" '+accept_ext+' /><button type="button"  id="opt" onclick="$(\'#file_input\').click()" autocomplete="off">Select file</button>'+btn_dir+'<span id="totalProgress" style="position: absolute;top: 7px;right: 10px;"></span><span><button type="button" id="up" autocomplete="off" onclick="bt_upload_file.start(0)">Upload</button><button type="button" id="filesClose" autocomplete="off" onClick="layer.close(bt_upload_file._loadT)" >Close</button></span><ul id="up_box"><li id="tipsUpdataText" style="height: 97%;line-height: 280px;text-align: center;color: #ccc;font-size: 32px;"><span>You can drag the files here.</span></li></ul></div>'});bt_upload_file._files=[];document.addEventListener("drop",function(e){e.preventDefault()});document.addEventListener("dragleave",function(e){e.preventDefault()});document.addEventListener("dragenter",function(e){e.preventDefault()});document.addEventListener("dragover",function(e){e.preventDefault()});var area=document.getElementById("up_box");area.addEventListener("drop",function(e){e.preventDefault();var fileList=e.dataTransfer.files;if(fileList.length==0){return false}bt_upload_file.list(fileList)})},list:function(_files){$("#totalProgress").html("");$("#tipsUpdataText").remove();if(_files.length==0){return false}var file_data=$.extend(true,{},_files);for(var i=0;i<file_data.length;i++){bt_upload_file._files.push(file_data[i])}var fileList=bt_upload_file._files;$("#up_box").html("");var loadT=layer.msg('Loading file list...',{time:0,icon:16,shade:0.3});for(var i=0;i<fileList.length;i++){var f_name=fileList[i].name;if(fileList[i].webkitRelativePath){f_name=fileList[i].webkitRelativePath}$("#up_box").append('<li class="offset-'+i+'"><span class="filename" title="Upload to: '+bt_upload_file.f_path+"/"+f_name+'">'+f_name+'</span><span class="filesize">'+bt_upload_file.to_size(fileList[i].size)+"</span><em>Waiting for upload</em></li>")}layer.close(loadT)},to_size:function(a){var d=[" B"," KB"," MB"," GB"," TB"," PB"];var e=1024;for(var b=0;b<d.length;b+=1){if(a<e){return(b===0?a:a.toFixed(2))+d[b]}a/=e}},start:function(i){var len=bt_upload_file._files.length;if(len===0){layer.msg('Please select a file!',{icon:2});return false}if(i===0){bt_upload_file._t_start_time=new Date()}$("#filesClose,#up,#opt").attr("disabled","disabled");var total_time=bt_upload_file.diff_time(bt_upload_file._t_start_time,new Date());$("#totalProgress").html('<p>Uploaded('+i+'/'+len+'),'+total_time+'</p> <progress value="'+i+'" max="'+len+'"></progress>');if(len<=i){$("#totalProgress").html('<p>Uploaded completed('+i+'/'+len+'), '+total_time+'</p> <progress value="'+i+'" max="'+len+'"></progress>');bt_upload_file._files=[];$("#filesClose,#up,#opt").removeAttr("disabled");if(bt_upload_file.collback_to){bt_upload_file.collback_to(bt_upload_file.f_path)}return false}if(i>10){$("#up_box").scrollTop(35*(i-10)+50)}bt_upload_file._start_time=new Date();bt_upload_file._error=0;bt_upload_file.f=bt_upload_file._files[i];bt_upload_file.f_total=Math.ceil(bt_upload_file.f.size/bt_upload_file.split_size);bt_upload_file.upload(0,i)},upload:function(start,i){var end=Math.min(bt_upload_file.f.size,start+bt_upload_file.split_size);var len=bt_upload_file._files.length;var f_path=bt_upload_file.f_path;if(bt_upload_file.f.webkitRelativePath){f_path=bt_upload_file.f_path+'/'+bt_upload_file.f.webkitRelativePath.replace('/'+bt_upload_file.f.name,'')}var form=new FormData();form.append("f_path",f_path.replace('//','/'));form.append("f_name",bt_upload_file.f.name);form.append("f_size",bt_upload_file.f.size);form.append("f_start",start);form.append("blob",bt_upload_file.f.slice(start,end));$.ajax({url:bt_upload_file.upload_url,type:"POST",data:form,async:true,processData:false,contentType:false,success:function(data){if(typeof(data)==="number"){var progress=parseInt(data/bt_upload_file.f.size*100);var total_time=bt_upload_file.diff_time(bt_upload_file._t_start_time,new Date());$("#totalProgress").html('<p>Uploaded('+i+'/'+len+'),'+total_time+'</p> <progress value="'+i+'" max="'+len+'"></progress>');$("#up_box li em")[i].outerHTML='<em style="color:green;">Upload progress:'+progress+'%</em>';$("#up_box li .filesize")[i].outerHTML='<span class="filesize">'+bt_upload_file.to_size(data)+'/'+bt_upload_file.to_size(bt_upload_file.f.size)+'</span>';$("#up_box li em")[i].focus();bt_upload_file.upload(data,i)}else{if(data.status){var f_time=bt_upload_file.diff_time(bt_upload_file._start_time,new Date());$("#up_box li em")[i].outerHTML='<em style="color:green;">Completed('+f_time+')</em>';$("#up_box li .filesize")[i].outerHTML='<span class="filesize">'+bt_upload_file.to_size(bt_upload_file.f.size)+'/'+bt_upload_file.to_size(bt_upload_file.f.size)+'</span>'}else{$("#up_box li em")[i].outerHTML='<em style="color:red;">'+data.msg+'</em>'}bt_upload_file.start(i+1)}},error:function(e){if(bt_upload_file._error>5){$("#up_box li em")[i].outerHTML='<em style="color:red;">Upload failed</em>';bt_upload_file.start(i+1);return}bt_upload_file._error+=1;bt_upload_file.upload(start,i)}})},diff_time:function(start_date,end_date){var diff=end_date.getTime()-start_date.getTime();var minutes=Math.floor(diff/(60*1000));var leave3=diff%(60*1000);var seconds=(leave3/1000).toFixed(2);var result=seconds+'sec';if(minutes>0){result=minutes+"min"+result}return result}};