!function(e){"use strict";e.fn.filer=function(t){return this.each(function(i,n){var a=e(n),l=".jFiler",r=e(),o=e(),s=e(),d=[],f=e.extend(!0,{},e.fn.filer.defaults,t),u={init:function(){a.wrap('
'),r=a.closest(l),u._changeInput()},_bindInput:function(){f.changeInput&&o.size()>0&&o.bind("click",u._clickHandler),a.on({focus:function(){o.addClass("focused")},blur:function(){o.removeClass("focused")},change:function(){u._onChange()}}),f.dragDrop&&(o.length>0?o:a).bind("drop",u._dragDrop.drop).bind("dragover",u._dragDrop.dragEnter).bind("dragleave",u._dragDrop.dragLeave),f.uploadFile&&f.clipBoardPaste&&e(window).on("paste",u._clipboardPaste)},_unbindInput:function(){f.changeInput&&o.size()>0&&o.unbind("click",u._clickHandler)},_clickHandler:function(){a.click()},_applyAttrSettings:function(){var e=["name","limit","maxSize","extensions","changeInput","showThumbs","appendTo","theme","addMore","excludeName","files"];for(var t in e){var i="data-jfiler-"+e[t];if(u._assets.hasAttr(i)){switch(e[t]){case"changeInput":case"showThumbs":case"addMore":f[e[t]]=["true","false"].indexOf(a.attr(i))>-1?"true"==a.attr(i):a.attr(i);break;case"extensions":f[e[t]]=a.attr(i).replace(/ /g,"").split(",");break;case"files":f[e[t]]=JSON.parse(a.attr(i));break;default:f[e[t]]=a.attr(i)}a.removeAttr(i)}}},_changeInput:function(){if(u._applyAttrSettings(),f.theme&&r.addClass("jFiler-theme-"+f.theme),"input"!=a.get(0).tagName.toLowerCase()&&"file"!=a.get(0).type)o=a,a=e(''),a.css({position:"absolute",left:"-9999px",top:"-9999px","z-index":"-9999"}),r.prepend(a),u._isGn=a;else if(f.changeInput){switch(typeof f.changeInput){case"boolean":o=e('
'+f.captions.feedback+'
'+f.captions.button+'
"');break;case"string":case"object":o=e(f.changeInput);break;case"function":o=e(f.changeInput(r,a,f))}a.after(o),a.css({position:"absolute",left:"-9999px",top:"-9999px","z-index":"-9999"})}(!f.limit||f.limit&&f.limit>=2)&&(a.attr("multiple","multiple"),"[]"!=a.attr("name").slice(-2)?a.attr("name",a.attr("name")+"[]"):null),u._bindInput(),f.files&&u._append(!1,{files:f.files})},_clear:function(){u.files=null,f.uploadFile||f.addMore||u._reset(),u._set("feedback",u._itFl&&u._itFl.length>0?u._itFl.length+" "+f.captions.feedback2:f.captions.feedback),null!=f.onEmpty&&"function"==typeof f.onEmpty?f.onEmpty(r,o,a):null},_reset:function(t){if(!t){if(!f.uploadFile&&f.addMore){for(var i=0;i0&&o.find(".jFiler-input-caption span").html(t)}},_filesCheck:function(){var t=0;if(f.limit&&u.files.length+u._itFl.length>f.limit)return alert(u._assets.textParse(f.captions.errors.filesLimit)),!1;for(var i=0;i1048576*f.maxSize)return alert(u._assets.textParse(f.captions.errors.filesSize,l)),!1;if(4096==a.size&&0==a.type.length)return!1;t+=u.files[i].size}if(null!=f.maxSize&&t>=Math.round(1048576*f.maxSize))return alert(u._assets.textParse(f.captions.errors.filesSizeAll)),!1;if(f.addMore||f.uploadFile){var l=u._itFl.filter(function(e){return e.file.name!=a.name||e.file.size!=a.size||e.file.type!=a.type||(a.lastModified?e.file.lastModified!=a.lastModified:0)?void 0:!0});if(l.length>0)return!1}return!0},_thumbCreator:{create:function(t){var i=u.files[t],n=u._itFc?u._itFc.id:t,a=i.name,l=i.size,r=i.type.split("/",1).toString().toLowerCase(),o=-1!=a.indexOf(".")?a.split(".").pop().toLowerCase():"",d=f.uploadFile?'
'+f.templates.progressBar+"
":"",p={id:n,name:a,size:l,size2:u._assets.bytesToSize(l),type:r,extension:o,icon:u._assets.getIcon(o,r),icon2:u._thumbCreator.generateIcon({type:r,extension:o}),image:'
',progressBar:d,_appended:i._appended},c="";return i.opts&&(p=e.extend({},i.opts,p)),c=e(u._thumbCreator.renderContent(p)).attr("data-jfiler-index",n),c.get(0).jfiler_id=n,u._thumbCreator.renderFile(i,c,p),i.forList?c:(u._itFc.html=c,c.hide()[f.templates.itemAppendToEnd?"appendTo":"prependTo"](s.find(f.templates._selectors.list)).show(),void(i._appended||u._onSelect(t)))},renderContent:function(e){return u._assets.textParse(e._appended?f.templates.itemAppend:f.templates.item,e)},renderFile:function(t,i,n){if(0==i.find(".jFiler-item-thumb-image").size())return!1;if(t.file&&"image"==n.type){var a='',l=i.find(".jFiler-item-thumb-image.fi-loading");return e(a).error(function(){a=u._thumbCreator.generateIcon(n),i.addClass("jFiler-no-thumbnail"),l.removeClass("fi-loading").html(a)}).load(function(){l.removeClass("fi-loading").html(a)}),!0}if(window.File&&window.FileList&&window.FileReader&&"image"==n.type&&n.size<6e6){var r=new FileReader;r.onload=function(t){var a='',l=i.find(".jFiler-item-thumb-image.fi-loading");e(a).error(function(){a=u._thumbCreator.generateIcon(n),i.addClass("jFiler-no-thumbnail"),l.removeClass("fi-loading").html(a)}).load(function(){l.removeClass("fi-loading").html(a)})},r.readAsDataURL(t)}else{var a=u._thumbCreator.generateIcon(n),l=i.find(".jFiler-item-thumb-image.fi-loading");i.addClass("jFiler-no-thumbnail"),l.removeClass("fi-loading").html(a)}},generateIcon:function(t){var i=new Array(3);if(t&&t.type&&t.extension)switch(t.type){case"image":i[0]="f-image",i[1]='';break;case"video":i[0]="f-video",i[1]='';break;case"audio":i[0]="f-audio",i[1]='';break;default:i[0]="f-file f-file-ext-"+t.extension,i[1]=t.extension.length>0?"."+t.extension:"",i[2]=1}else i[0]="f-file",i[1]=t.extension&&t.extension.length>0?"."+t.extension:"",i[2]=1;var n=''+i[1]+"";if(1==i[2]){var a=u._assets.text2Color(t.extension);if(a){var l=e(n).appendTo("body"),r=l.css("box-shadow");r=a+r.substring(r.replace(/^.*(rgba?\([^)]+\)).*$/,"$1").length,r.length),l.css({"-webkit-box-shadow":r,"-moz-box-shadow":r,"box-shadow":r}).attr("style","-webkit-box-shadow: "+r+"; -moz-box-shadow: "+r+"; box-shadow: "+r+";"),n=l.prop("outerHTML"),l.remove()}}return n},_box:function(t){if(null!=f.beforeShow&&"function"==typeof f.beforeShow?!f.beforeShow(u.files,s,r,o,a):!1)return!1;if(s.length<1){if(f.appendTo)var i=e(f.appendTo);else var i=r;i.find(".jFiler-items").remove(),s=e('
'),s.append(u._assets.textParse(f.templates.box)).appendTo(i),s.on("click",f.templates._selectors.remove,function(i){i.preventDefault();var n=f.templates.removeConfirmation?confirm(f.captions.removeConfirmation):!0;n&&u._remove(t?t.remove.event:i,t?t.remove.el:e(this).closest(f.templates._selectors.item))})}for(var n=0;n=u.files.length&&(u._ajFc=0,null!=f.uploadFile.onComplete&&"function"==typeof f.uploadFile.onComplete?f.uploadFile.onComplete(s,r,o,a,e,t):null)},beforeSend:function(e,i){return null!=f.uploadFile.beforeSend&&"function"==typeof f.uploadFile.beforeSend?f.uploadFile.beforeSend(t,s,r,o,a,n.id,e,i):!0},success:function(e,i,l){n.uploaded=!0,null!=f.uploadFile.success&&"function"==typeof f.uploadFile.success?f.uploadFile.success(e,t,s,r,o,a,n.id,i,l):null},error:function(e,i,l){n.uploaded=!1,null!=f.uploadFile.error&&"function"==typeof f.uploadFile.error?f.uploadFile.error(t,s,r,o,a,n.id,e,i,l):null},statusCode:f.uploadFile.statusCode,cache:!1,contentType:!1,processData:!1}),n.ajax},progressHandling:function(e,t){if(e.lengthComputable){var i=Math.round(100*e.loaded/e.total).toString();null!=f.uploadFile.onProgress&&"function"==typeof f.uploadFile.onProgress?f.uploadFile.onProgress(i,t,s,r,o,a):null,t.find(".jFiler-jProgressBar").find(f.templates._selectors.progressBar).css("width",i+"%")}}},_dragDrop:{dragEnter:function(e){e.preventDefault(),e.stopPropagation(),r.addClass("dragged"),u._set("feedback",f.captions.drop),null!=f.dragDrop.dragEnter&&"function"==typeof f.dragDrop.dragEnter?f.dragDrop.dragEnter(e,o,a,r):null},dragLeave:function(e){return e.preventDefault(),e.stopPropagation(),u._dragDrop._dragLeaveCheck(e)?(r.removeClass("dragged"),u._set("feedback",f.captions.feedback),void(null!=f.dragDrop.dragLeave&&"function"==typeof f.dragDrop.dragLeave?f.dragDrop.dragLeave(e,o,a,r):null)):!1},drop:function(e){e.preventDefault(),r.removeClass("dragged"),!e.originalEvent.dataTransfer.files||e.originalEvent.dataTransfer.files.length<=0||(u._set("feedback",f.captions.feedback),u._onChange(e,e.originalEvent.dataTransfer.files),null!=f.dragDrop.drop&&"function"==typeof f.dragDrop.drop?f.dragDrop.drop(e.originalEvent.dataTransfer.files,e,o,a,r):null)},_dragLeaveCheck:function(t){var i=t.relatedTarget,n=!1;return i!==o&&(i&&(n=e.contains(o,i)),n)?!1:!0}},_clipboardPaste:function(e,t){if((t||e.originalEvent.clipboardData||e.originalEvent.clipboardData.items)&&(!t||e.originalEvent.dataTransfer||e.originalEvent.dataTransfer.items)&&!u._clPsePre){var i=t?e.originalEvent.dataTransfer.items:e.originalEvent.clipboardData.items,n=function(e,t,i){t=t||"",i=i||512;for(var n=atob(e),a=[],l=0;l=u.files.length&&(null!=f.afterShow&&"function"==typeof f.afterShow?f.afterShow(s,r,o,a):null)},_onChange:function(t,i){if(i){if(!i||0==i.length)return u._set("input",""),u._clear(),!1;u.files=i}else{if(!a.get(0).files||"undefined"==typeof a.get(0).files||0==a.get(0).files.length)return f.uploadFile||f.addMore||(u._set("input",""),u._clear()),!1;u.files=a.get(0).files}if(f.uploadFile||f.addMore||u._reset(!0),!u._filesCheck())return u._set("input",""),u._clear(),!1;if(u._set("feedback",u.files.length+u._itFl.length+" "+f.captions.feedback2),f.showThumbs)u._thumbCreator._box();else for(var n=0;n'),r=a.prop("attributes");e.each(r,function(){l.attr(this.name,this.value)}),a.after(l),u._unbindInput(),d.push(l),a=l,u._bindInput()}},_append:function(e,t){var i=t?t.files:!1;if(i&&!(i.length<=0)&&(u.files=i,f.showThumbs)){for(var n=0;n0?!f.uploadFile||e.isEmptyObject(f.uploadFile)||a[0].uploaded?void 0:(u._itFc=a[0],u._upload(n),!0):!1},_remove:function(t,n){if(n.binded){if(n.data.id&&(n=s.find(f.templates._selectors.item+"[data-jfiler-index='"+n.data.id+"']"),0==n.size()))return!1;n.data.el&&(n=n.data.el)}var l=n.get(0).jfiler_id||n.attr("data-jfiler-index"),d=null,p=function(t){var n=r.find("input[name^='jfiler-items-exclude-']:hidden").first(),l=u._itFl[t],o=[];if(0==n.size()&&(n=e(''),n.appendTo(r)),l.file._choosed||l.file._appended||l.uploaded){if(u._prEr=!0,u._itFr.push(l),f.addMore){var s=l.input,d=0;u._itFl.filter(function(e){e.file._choosed&&e.input.get(0)==s.get(0)&&d++}),1==d&&(u._itFr=u._itFr.filter(function(e){return e.file._choosed?e.input.get(0)!=s.get(0):!0}),s.val(""),u._prEr=!1)}for(var p=0;p-1?'':''},textParse:function(t,i){switch(i=e.extend({},{limit:f.limit,maxSize:f.maxSize},i&&e.isPlainObject(i)?i:{}),typeof t){case"string":return t.replace(/\{\{fi-(.*?)\}\}/g,function(e,t){return t=t.replace(/ /g,""),t.match(/(.*?)\|limitTo\:(\d+)/)?t.replace(/(.*?)\|limitTo\:(\d+)/,function(e,t,n){var t=i[t]?i[t]:"",a=t.substring(0,n);return a=t.length>a.length?a.substring(0,a.length-3)+"...":a}):i[t]?i[t]:""});case"function":return t(i);default:return t}},text2Color:function(e){if(!e||0==e.length)return!1;for(var t=0,i=0;tt;n+=("00"+(i>>2*t++&255).toString(16)).slice(-2));return n}},files:null,_itFl:[],_itFc:null,_itFr:[],_ajFc:0,_prEr:!1};return u.init(),a.on("filer.append",function(e,t){u._append(e,t)}),a.on("filer.remove",function(e,t){t.binded=!0,u._remove(e,t)}),a.on("filer.reset",function(){return u._reset(),u._clear(),!0}),a.on("filer.generateList",function(e,t){return u._getList(e,t)}),a.on("filer.retry",function(e,t){return u._retryUpload(e,t)}),this})},e.fn.filer.defaults={limit:null,maxSize:null,extensions:null,changeInput:!0,showThumbs:!1,appendTo:null,theme:null,templates:{box:null,item:null,itemAppend:null,progressBar:null,itemAppendToEnd:!1,removeConfirmation:!0,_selectors:{list:null,item:null,progressBar:null,remove:null}},files:null,uploadFile:null,dragDrop:null,addMore:!1,clipBoardPaste:!0,excludeName:null,beforeShow:null,onSelect:null,afterShow:null,onRemove:null,onEmpty:null,captions:{button:"Choose Files",feedback:"Choose files To Upload",feedback2:"files were chosen",drop:"Drop file here to Upload",removeConfirmation:"Are you sure you want to remove this file?",errors:{filesLimit:"Only {{fi-limit}} files are allowed to be uploaded.",filesType:"Only Images are allowed to be uploaded.",filesSize:"{{fi-name}} is too large! Please upload file up to {{fi-maxSize}} MB.",filesSizeAll:"Files you've choosed are too large! Please upload files up to {{fi-maxSize}} MB."}}}}(jQuery);