define(["jquery","underscore","webuploader","jquery.jplayer","bootstrap","filestyle"],function(a,b,c){var d={defaultoptions:{direct:!1,global:!1,callback:null,type:"image",mode:"",multiple:!1,uploader:{}},uploader:{},show:function(a,b){this.init(a,b)},init:function(b,c){var d=this;return c.account_error?(util.message("公众号号没有上传素材的权限","","info"),!1):(d.options=a.extend({},d.defaultoptions,c),d.options.callback=b,a("#modal-wechat-webuploader").remove(),0==a("#modal-wechat-webuploader").length&&a(document.body).append(d.buildHtml().mainDialog),d.modalobj=a("#modal-wechat-webuploader"),d.modalobj.modal("show"),void d.modalobj.on("shown.bs.modal",function(){a(this).data("init")||(("image"==d.options.type||"thumb"==d.options.type)&&d.initLocal(),"voice"==d.options.type&&d.initLocalVoice(),"video"==d.options.type&&d.initLocalVideo(),"thumb"==d.options.type||"image"==d.options.type?d.initImageUploader():"voice"==d.options.type?d.initVoiceUploader():"video"==d.options.type&&d.initVideoUploader())}))},initLocal:function(){var a=this;a.modalobj.find("#li_history_image").removeClass("hide"),a.modalobj.find("#wechat_history_image")[0]||a.modalobj.find(".modal-body").append(this.buildHtml().localDialog),a.localPage(1)},localPage:function(c){var d=this,e=d.options.type,f=d.options.mode,g=d.modalobj.find("#wechat_history_image");return a.getJSON("./index.php?c=utility&a=wechat_file&do=browser",{page:c,type:e,mode:f,psize:32},function(c){c=c.message,g.find(".history-content").html(''),b.isEmpty(c.items)||(g.data("attachment",c.items),g.find(".history-content").empty(),g.find(".history-content").html(b.template(d.buildHtml().localDialogLi)(c)),g.find("#image-list-pager").html(c.page),g.find(".pagination a").click(function(){d.localPage(a(this).attr("page"))}),g.find(".img-list li").click(function(b){d.selectImage(a(b.target).parents("li"))}),d.deletefile())}),g.find(".btn-primary").unbind("click").click(function(){var b=[];g.find(".img-item-selected").each(function(){b.push(d.modalobj.find("#wechat_history_image").data("attachment")[a(this).attr("attachid")]),a(this).removeClass("img-item-selected")}),d.finish(b)}),!1},selectImage:function(b){var c=this;a(b).toggleClass("img-item-selected"),c.options.direct&&c.modalobj.find("#wechat_history_image").find(".btn-primary").trigger("click")},initLocalVoice:function(){var a=this;a.modalobj.find("#li_history_audio").removeClass("hide"),a.modalobj.find("#wechat_history_audio")[0]||a.modalobj.find(".modal-body").append(this.buildHtml().localAudioDialog);a.modalobj.find("#li_history_audio");a.localAudioPage(1)},localAudioPage:function(c){var d=this,e=d.options.type,f=d.options.mode,g=d.modalobj.find("#wechat_history_audio");return a.getJSON("./index.php?c=utility&a=wechat_file&do=browser",{page:c,type:e,mode:f,psize:5},function(c){c=c.message,g.find(".history-content").html(''),b.isEmpty(c.items)||(g.data("attachment",c.items),g.find(".history-content").empty(),g.find(".history-content").html(b.template(d.buildHtml().localAudioDialogLi)(c)),g.find("#image-list-pager").html(c.page),g.find(".pagination a").click(function(){d.localAudioPage(a(this).attr("page"))}),g.find(".js-btn-select").click(function(b){a(b.target).toggleClass("btn-primary"),d.options.direct&&d.modalobj.find("#wechat_history_audio").find(".modal-footer .btn-primary").trigger("click")}),d.playAudio(),d.deletefile())}),g.find(".modal-footer .btn-primary").unbind("click").click(function(){var b=[];g.find(".history-content .btn-primary").each(function(){b.push(d.modalobj.find("#wechat_history_audio").data("attachment")[a(this).attr("attachid")]),a(this).removeClass("btn-primary")}),d.finish(b)}),!1},playAudio:function(){var b=this,c=b.modalobj.find("#wechat_history_audio");a(".audio-player-play").click(function(){var b=a(this).attr("attach");if(b){if(a("#player")[0])var d=a("#player");else{var d=a('
');a(document.body).append(d)}d.data("control",a(this)),d.jPlayer({playing:function(){a(this).data("control").find("p").removeClass("fa-play").addClass("fa-stop")},pause:function(b){a(this).data("control").find("p").removeClass("fa-stop").addClass("fa-play")},swfPath:"resource/components/jplayer",supplied:"mp3,wma,wav,amr",solution:"html, flash"}),d.jPlayer("setMedia",{mp3:a(this).attr("attach")}).jPlayer("play"),a(this).find("p").hasClass("fa-stop")?d.jPlayer("stop"):(c.find(".fa-stop").removeClass("fa-stop").addClass("fa-play"),d.jPlayer("setMedia",{mp3:a(this).attr("attach")}).jPlayer("play"))}})},deletefile:function(){var b=this;b.modalobj.find(".history .delete-file").off("click"),b.modalobj.find(".history .delete-file").on("click",function(b){var c=a(this);if(confirm("确定要删除文件吗?")){var d=a(this).parent().attr("attachid"),e=a(this).parent().attr("data-type");a.post("./index.php?c=utility&a=wechat_file&do=delete",{id:d},function(b){var b=a.parseJSON(b);return b.error?void("image"==e?c.parent().remove():"audio"==e&&c.parents("tr").remove()):(util.message(b.message),!1)})}b.stopPropagation()})},initLocalVideo:function(){var a=this;a.modalobj.find("#li_history_video").removeClass("hide"),a.modalobj.find("#wechat_history_video")[0]||a.modalobj.find(".modal-body").append(this.buildHtml().localVideoDialog);a.modalobj.find("#li_history_video");a.localVideoPage(1)},localVideoPage:function(c){var d=this,e=d.options.type,f=d.modalobj.find("#wechat_history_video");return a.getJSON("./index.php?c=utility&a=wechat_file&do=browser",{page:c,type:e,psize:5},function(c){c=c.message,f.find(".history-content").html(''),b.isEmpty(c.items)||(f.data("attachment",c.items),f.find(".history-content").empty(),f.find(".history-content").html(b.template(d.buildHtml().localVideoDialogLi)(c)),f.find("#image-list-pager").html(c.page),f.find(".pagination a").click(function(){d.localVideoPage(a(this).attr("page"))}),f.find(".js-btn-select").click(function(b){a(b.target).toggleClass("btn-primary"),d.options.direct&&d.modalobj.find("#wechat_history_video").find(".modal-footer .btn-primary").trigger("click")}),d.deletefile())}),f.find(".modal-footer .btn-primary").unbind("click").click(function(){var b=[];f.find(".history-content .btn-primary").each(function(){b.push(d.modalobj.find("#wechat_history_video").data("attachment")[a(this).attr("attachid")]),a(this).removeClass("btn-primary")}),d.finish(b)}),!1},initImageUploader:function(){function b(b){var c=a(''+b.name+'
'),e=a('删除
').appendTo(c),f=c.find("p.progress span"),g=c.find("p.imgWrap"),h=a(''),j=function(a){switch(a){case"exceed_size":text="文件大小超出";break;case"interrupt":text="上传暂停";break;default:text="上传失败,请重试"}h.text(text).appendTo(c)};"invalid"===b.getStatus()?j(b.statusText):(g.text("预览中"),d.makeThumb(b,function(b,c){if(b)return void g.text("不能预览");var d=a('
');g.empty().append(d)},thumbnailWidth,thumbnailHeight),percentages[b.id]=[b.size,0],b.rotation=0),b.on("statuschange",function(a,d){"progress"===d?f.hide().width(0):"queued"===d&&(c.off("mouseenter mouseleave"),e.remove()),"error"===a||"invalid"===a?(j(b.statusText),percentages[b.id][1]=1):"interrupt"===a?j("interrupt"):"queued"===a?percentages[b.id][1]=0:"progress"===a&&(h.remove(),f.css("display","block")),c.removeClass("state-"+d).addClass("state-"+a)}),c.on("mouseenter",function(){e.stop().animate({height:30})}),c.on("mouseleave",function(){e.stop().animate({height:0})}),e.on("click","span",function(){var c,e=a(this).index();switch(e){case 0:return void d.removeFile(b);case 1:b.rotation+=90;break;case 2:b.rotation-=90}supportTransition?(c="rotate("+b.rotation+"deg)",g.css({"-webkit-transform":c,"-mos-transform":c,"-o-transform":c,transform:c})):g.css("filter","progid:DXImageTransform.Microsoft.BasicImage(rotation="+~~(b.rotation/90%4+4)%4+")")}),i.options.multiple&&k.find(".fileinput-button").show(),c.insertBefore(k.find(".fileinput-button"))}function e(b){var c=a("#"+b.id);delete percentages[b.id],f(),c.off().find(".file-panel").off().end().remove()}function f(){var b,c=0,d=0,e=p.children();a.each(percentages,function(a,b){d+=b[0],c+=b[0]*b[1]}),b=d?c/d:0,e.eq(0).text(Math.round(100*b)+"%"),e.eq(1).css("width",Math.round(100*b)+"%"),g()}function g(){var a,b="";if("ready"===state){if(""==i.options.mode)var e=i.modalobj.find(".nav-pills li.active").attr("data-mode");else var e=i.options.mode;i.options.flag||(d.option("server",d.option("server")+"&mode="+e+"&types="+i.options.type),i.options.flag=1),b="选中"+fileCount+"张图片,共"+c.formatSize(fileSize)+"。"}else"confirm"===state?(a=d.getStats(),a.uploadFailNum&&(b="已上传"+a.successNum+"张图片,"+a.uploadFailNum+'张图片上传失败,重新上传失败图片或忽略')):(a=d.getStats(),b="共"+fileCount+"张("+c.formatSize(fileSize)+"),已上传"+a.successNum+"张",a.uploadFailNum&&(b+=",失败"+a.uploadFailNum+"张"));m.html(b)}function h(a){var b;if(a!==state){switch(n.removeClass("state-"+state),n.addClass("state-"+a),state=a,state){case"pedding":o.removeClass("element-invisible"),k.hide(),d.refresh();break;case"ready":o.addClass("element-invisible"),k.show(),d.refresh();break;case"uploading":p.show(),n.text("暂停上传");break;case"paused":p.show(),n.text("继续上传");break;case"confirm":if(p.hide(),n.text("开始上传").addClass("disabled"),b=d.getStats(),b.successNum&&!b.uploadFailNum)return void h("finish");break;case"finish":if(n.removeClass("disabled"),b=d.getStats(),b.successNum){if(d.uploadedFiles.length>0)return i.finish(d.uploadedFiles),void d.resetUploader()}else state="done",location.reload()}g()}}var i=this;i.options.flag=0,i.modalobj.find("#li_upload_perm a").html("上传永久图片"),i.modalobj.find("#li_upload_temp a").html("上传临时图片(保留3天)"),i.modalobj.find(".modal-body").append(this.buildHtml().uploaderDialog);var j=a("#wechat_uploader"),k=a('').appendTo(j.find(".queueList")),l=j.find(".statusBar"),m=l.find(".info"),n=j.find(".uploadBtn"),o=j.find(".placeholder"),p=l.find(".progress").hide();j.find(".btn-primary");fileCount=0,fileSize=0,ratio=window.devicePixelRatio||1,thumbnailWidth=110*ratio,thumbnailHeight=110*ratio,state="pedding",percentages={},supportTransition=function(){var a=document.createElement("p").style,b="transition"in a||"WebkitTransition"in a||"MozTransition"in a||"msTransition"in a||"OTransition"in a;return a=null,b}(),d;var q={pick:{id:"#wechat_filePicker",label:"点击选择图片",multiple:!0},dnd:"#wechat_dndArea",paste:"#wechat_uploader",swf:"./resource/componets/webuploader/Uploader.swf",server:"./index.php?c=utility&a=wechat_file&do=upload",chunked:!1,compress:{quality:80,preserveHeaders:!0,noCompressIfLarger:!0,compressSize:1048576},accept:{title:"Images",extensions:"gif,jpg,jpeg,bmp,png",mimeTypes:"image/*"},fileNumLimit:30,fileSizeLimit:4194304,fileSingleSizeLimit:125829120,auto:!1};q=a.extend({},q,i.options.uploader),q.pick.multiple=i.options.multiple,d=c.create(q),d.uploadedFiles=[],d.addButton({id:"#wechat_filePicker2",label:"+",multiple:i.options.multiple}),accept=0,d.resetUploader=function(){fileCount=0,fileSize=0,accept=0,d.uploadedFiles=[],a.each(d.getFiles(),function(a,b){e(b)}),f(),d.reset(),d.refresh(),a("#wechat_dndArea").removeClass("element-invisible"),a("#wechat_uploader").find(".filelist").empty(),a("#wechat_filePicker").find(".webuploader-pick").next().css({left:"190px"});var b=a("#wechat_uploader").find(".statusBar");b.find(".info").empty(),b.find(".accept").empty(),b.hide()},d.onUploadProgress=function(b,c){var d=a("#"+b.id),e=d.find(".progress span");e.css("width",100*c+"%"),percentages[b.id][1]=c,fileid=b.id,f()},d.onFileQueued=function(a){fileCount++,fileSize+=a.size,1===fileCount&&(o.addClass("element-invisible"),l.show()),b(a),h("ready"),f()},d.onFileDequeued=function(a){fileCount--,fileSize-=a.size,fileCount||h("pedding"),e(a),f()},d.on("all",function(a){switch(a){case"uploadFinished":h("confirm");break;case"startUpload":h("uploading");break;case"stopUpload":h("paused")}}),d.on("uploadSuccess",function(b,c){return c.media_id?(accept++,d.uploadedFiles.push(c),a("#"+b.id).append(''+c.width+"x"+c.height+""),a(".accept").text("成功上传 "+accept+" 张图片"),void 0):(alert(c.message),!1)}),d.onError=function(a){return"Q_EXCEED_SIZE_LIMIT"==a?void alert("错误信息: 图片大于 1M 无法上传."):"F_DUPLICATE"==a?void alert("错误信息: 不能重复上传图片."):void alert("Eroor: "+a)},n.on("click",function(){return a(this).hasClass("disabled")?!1:void("ready"===state?d.upload():"paused"===state?d.upload():"uploading"===state&&d.stop())}),m.on("click",".retry",function(){d.retry()}),m.on("click",".ignore",function(){}),n.addClass("state-"+state),f()},initVoiceUploader:function(){function b(b){var e=a(''+b.name+'
'),f=a('删除
').appendTo(e),g=e.find("p.progress span"),h=e.find("p.imgWrap"),j=a(''),l=function(a){switch(a){case"exceed_size":text="文件大小超出";break;case"interrupt":text="上传暂停";break;default:text="上传失败,请重试"}j.text(text).appendTo(e)};"invalid"===b.getStatus()?l(b.statusText):(h.text(c.formatSize(b.size)+" kb"),percentages[b.id]=[b.size,0],b.rotation=0),b.on("statuschange",function(a,c){"progress"===c?g.hide().width(0):"queued"===c&&(e.off("mouseenter mouseleave"),f.remove()),"error"===a||"invalid"===a?(l(b.statusText),percentages[b.id][1]=1):"interrupt"===a?l("interrupt"):"queued"===a?percentages[b.id][1]=0:"progress"===a&&j.remove(),e.removeClass("state-"+c).addClass("state-"+a)}),e.on("mouseenter",function(){f.stop().animate({height:30})}),e.on("mouseleave",function(){f.stop().animate({height:0})}),f.on("click","span",function(){var c,e=a(this).index();switch(e){case 0:return void d.removeFile(b);case 1:b.rotation+=90;break;case 2:b.rotation-=90}supportTransition?(c="rotate("+b.rotation+"deg)",h.css({"-webkit-transform":c,"-mos-transform":c,"-o-transform":c,transform:c})):h.css("filter","progid:DXImageTransform.Microsoft.BasicImage(rotation="+~~(b.rotation/90%4+4)%4+")")}),i.options.multiple&&k.find(".fileinput-button").show(),e.insertBefore(k.find(".fileinput-button"))}function e(b){var c=a("#"+b.id);delete percentages[b.id],f(),c.off().find(".file-panel").off().end().remove()}function f(){var b,c=0,d=0,e=p.children();a.each(percentages,function(a,b){d+=b[0],c+=b[0]*b[1]}),b=d?c/d:0,e.eq(0).text(Math.round(100*b)+"%"),e.eq(1).css("width",Math.round(100*b)+"%"),g()}function g(){var a,b="";if("ready"===state){if(""==i.options.mode)var e=i.modalobj.find(".nav-pills li.active").attr("data-mode");else var e=i.options.mode;i.options.flag||(d.option("server",d.option("server")+"&mode="+e+"&types="+i.options.type),i.options.flag=1),b="选中"+fileCount+"个音频,共"+c.formatSize(fileSize)+"。"}else"confirm"===state?(a=d.getStats(),a.uploadFailNum&&(b="已上传"+a.successNum+"个音频,"+a.uploadFailNum+'个音频上传失败,重新上传失败音频文件或忽略')):(a=d.getStats(),b="共"+fileCount+"张("+c.formatSize(fileSize)+"),已上传"+a.successNum+"个",a.uploadFailNum&&(b+=",失败"+a.uploadFailNum+"个"));m.html(b)}function h(a){var b;if(a!==state){switch(n.removeClass("state-"+state),n.addClass("state-"+a),state=a,state){case"pedding":o.removeClass("element-invisible"),k.hide(),d.refresh();break;case"ready":o.addClass("element-invisible"),k.show(),d.refresh();break;case"uploading":p.show(),n.text("暂停上传");break;case"paused":p.show(),n.text("继续上传");break;case"confirm":if(p.hide(),n.text("开始上传").addClass("disabled"),b=d.getStats(),b.successNum&&!b.uploadFailNum)return void h("finish");break;case"finish":if(n.removeClass("disabled"),b=d.getStats(),b.successNum){if(d.uploadedFiles.length>0)return i.finish(d.uploadedFiles),void d.resetUploader()}else state="done",location.reload()}g()}}var i=this;i.modalobj.find("#li_upload_perm a").html("上传永久音频"),i.modalobj.find("#li_upload_temp a").html("上传临时音频(保留3天)"),i.modalobj.find(".modal-body").append(this.buildHtml().uploaderDialog);var j=a("#wechat_uploader"),k=a('').appendTo(j.find(".queueList")),l=j.find(".statusBar"),m=l.find(".info"),n=j.find(".uploadBtn"),o=j.find(".placeholder"),p=l.find(".progress").hide();j.find(".btn-primary");fileCount=0,fileSize=0,ratio=window.devicePixelRatio||1,state="pedding",percentages={},supportTransition=function(){var a=document.createElement("p").style,b="transition"in a||"WebkitTransition"in a||"MozTransition"in a||"msTransition"in a||"OTransition"in a;return a=null,b}(),d;var q={pick:{id:"#wechat_filePicker",label:"点击选择音频",multiple:!0},dnd:"#wechat_dndArea",paste:"#wechat_uploader",swf:"./resource/componets/webuploader/Uploader.swf",server:"./index.php?c=utility&a=wechat_file&do=upload",chunked:!1,compress:{quality:80,preserveHeaders:!0,noCompressIfLarger:!0,compressSize:1048576},accept:{title:"Audios",extensions:"mp3,wma,wav,amr",mimeTypes:"audio/*"},fileNumLimit:5,fileSizeLimit:5242880,fileSingleSizeLimit:26214400,auto:!1};q=a.extend({},q,i.options.uploader),a("#wechat_dndArea p").html("临时语音只支持amr/mp3格式,大小不超过为2M
永久语音只支持mp3/wma/wav/amr格式,大小不超过为5M,长度不超过60秒"),q.pick.multiple=i.options.multiple,d=c.create(q),d.uploadedFiles=[],d.addButton({id:"#wechat_filePicker2",label:"+",multiple:i.options.multiple}),accept=0,d.resetUploader=function(){fileCount=0,fileSize=0,accept=0,d.uploadedFiles=[],a.each(d.getFiles(),function(a,b){e(b)}),f(),d.reset(),d.refresh(),a("#wechat_dndArea").removeClass("element-invisible"),a("#wechat_uploader").find(".filelist").empty(),a("#wechat_filePicker").find(".webuploader-pick").next().css({left:"190px"});var b=a("#wechat_uploader").find(".statusBar");b.find(".info").empty(),b.find(".accept").empty(),b.hide()},d.onUploadProgress=function(b,c){var d=a("#"+b.id),e=d.find(".progress span");e.css("width",100*c+"%"),percentages[b.id][1]=c,fileid=b.id,f()},d.onFileQueued=function(a){fileCount++,fileSize+=a.size,1===fileCount&&(o.addClass("element-invisible"),l.show()),b(a),h("ready"),f()},d.onFileDequeued=function(a){fileCount--,fileSize-=a.size,fileCount||h("pedding"),e(a),f()},d.on("all",function(a){switch(a){case"uploadFinished":h("confirm");break;case"startUpload":h("uploading");break;case"stopUpload":h("paused")}}),d.on("uploadSuccess",function(b,c){c.media_id&&(accept++,d.uploadedFiles.push(c),a("#"+b.id).append(''+c.width+"x"+c.height+""),a(".accept").text("成功上传 "+accept+" 个音频"))}),d.onError=function(a){return"Q_EXCEED_SIZE_LIMIT"==a?void alert("错误信息: 音频大于 "+c.formatSize(q.fileSizeLimit)+" 无法上传."):"F_DUPLICATE"==a?void alert("错误信息: 不能重复上传音频."):void alert("Eroor: "+a)},n.on("click",function(){return a(this).hasClass("disabled")?!1:void("ready"===state?d.upload():"paused"===state?d.upload():"uploading"===state&&d.stop())}),m.on("click",".retry",function(){d.retry()}),m.on("click",".ignore",function(){}),n.addClass("state-"+state),f()},finish:function(b){var c=this;a.isFunction(c.options.callback)&&(0==c.options.multiple?c.options.callback(b[0]):c.options.callback(b),c.modalobj.modal("hide"))},initVideoUploader:function(){var b=this;b.modalobj.find("#li_upload_perm a").html("上传永久视频"),b.modalobj.find("#li_upload_temp a").html("上传临时视频(保留3天)"),b.modalobj.find(".modal-body").append(this.buildHtml().uploaderVoiceDialog),b.modalobj.find("#fileUploader_video_form").find(':file[name="file"]').filestyle({buttonText:"选择视频文件"}),b.modalobj.find("#video").find("button.btn-primary").off("click"),b.modalobj.find("#video").find("button.btn-primary").on("click",function(){var c="./index.php?c=utility&a=wechat_file&do=upload&types=video",d=b.modalobj.find(".nav-pills li.active").attr("data-mode");if(a("#fileUploader_video_form").attr("action",c+"&mode="+d),!a('#fileUploader_video_form :text[name="title"]').val())return util.message("视频标题不能为空"),!1;if(!a('#fileUploader_video_form textarea[name="introduction"]').val())return util.message("视频描述不能为空"),!1;a("#fileUploader_video_form").submit(),util.loading();var e=setInterval(function(){var c=a("#fileUploader_video_target").get(0).contentWindow.document.body.innerText;if(""!=c){clearInterval(e);var d=a.parseJSON(c);d.message?(alert(d.message),util.loaded()):d.media_id&&a.isFunction(b.options.callback)&&(b.options.multiple?b.options.callback([d]):b.options.callback(d),util.loaded(),b.modalobj.modal("hide"))}},500)})},buildHtml:function(){var a={};return a.mainDialog='',a.localDialog='",a.uploaderDialog='\n
\n
\n
\n
xx
\n'+(this.options.multiple?'
或将照片拖到这里,单次最多可选5张
\n':'
或将照片拖到这里
\n')+'
\n
\n
\n
\n
',a.localDialogLi='\n<%_.each(items, function(item) {%> \n- \n \n
\n<%});%>\n
',a.localAudioDialog='",a.localAudioDialogLi='<%var items = _.sortBy(items, function(item) {return -item.id;});%><%_.each(items, function(item) {%> \n\n <%=item.filename%> | \n <%=item.createtime%> | \n \n \n \n \n \n \n | \n
\n<%});%>\n',a.localVideoDialog='",a.localVideoDialogLi='<%var items = _.sortBy(items, function(item) {return -item.id;});%><%_.each(items, function(item) {%> \n\n <%=item.filename%> | \n <%=item.createtime%> | \n \n \n \n \n \n | \n
\n<%});%>\n',a.uploaderVoiceDialog='',a}};return d});