From bcbd89e0b468e79a3c68762acf0ac3852a341713 Mon Sep 17 00:00:00 2001 From: Davit Barbakadze Date: Mon, 25 May 2015 15:29:04 +0400 Subject: [PATCH] Update js/. --- js/Moxie.swf | Bin 29579 -> 29910 bytes js/Moxie.xap | Bin 62646 -> 63118 bytes .../css/jquery.ui.plupload.css | 9 +- js/jquery.ui.plupload/jquery.ui.plupload.js | 36 +- .../jquery.ui.plupload.min.js | 2 +- js/moxie.js | 3271 +++++++++-------- js/moxie.min.js | 10 +- js/plupload.dev.js | 10 +- js/plupload.full.min.js | 16 +- js/plupload.min.js | 6 +- 10 files changed, 1834 insertions(+), 1526 deletions(-) diff --git a/js/Moxie.swf b/js/Moxie.swf index 8c9606405f515f03503039b2a77d8d0a237e2a98..e477cf9326ec212859ed21cc1ba4e19296dc5270 100644 GIT binary patch literal 29910 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 ZF&Cr9`@lK>`p4g%AD9NA{{-b?AHb^|E{^~J literal 29579 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%0D1tufENKf0lNUZ0WYb>ajznN9q!kjFO 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 DwR6KF delta 58011 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 E01MNFa{vGU diff --git a/js/jquery.ui.plupload/css/jquery.ui.plupload.css b/js/jquery.ui.plupload/css/jquery.ui.plupload.css index a5a82e2e1..9b5739685 100644 --- a/js/jquery.ui.plupload/css/jquery.ui.plupload.css +++ b/js/jquery.ui.plupload/css/jquery.ui.plupload.css @@ -118,10 +118,15 @@ background-color: #eee; } -.plupload_file_loading .plupload_file_thumb { +.plupload_thumb_loading .plupload_file_thumb { background: #eee url(../img/loading.gif) center no-repeat; } +.plupload_thumb_loading .plupload_file_dummy, +.plupload_thumb_embedded .plupload_file_dummy { + display: none; +} + .plupload_file_name { overflow: hidden; text-overflow: ellipsis; @@ -344,7 +349,7 @@ font-weight: bold; } -plupload_message i { +.plupload_message i { font-style: italic; } diff --git a/js/jquery.ui.plupload/jquery.ui.plupload.js b/js/jquery.ui.plupload/jquery.ui.plupload.js index f9daf1649..ad4b17141 100644 --- a/js/jquery.ui.plupload/jquery.ui.plupload.js +++ b/js/jquery.ui.plupload/jquery.ui.plupload.js @@ -1019,7 +1019,7 @@ $.widget("ui.plupload", { // get potentially visible thumbs that are not yet visible thumbs = $('.plupload_file', self.filelist) .slice(startIdx, startIdx + num) - .filter('.plupload_file_loading') + .filter('.plupload_thumb_toload') .get(); } @@ -1051,22 +1051,30 @@ $.widget("ui.plupload", { var img = new o.Image(); img.onload = function() { - var thumb = $('#' + file.id + ' .plupload_file_thumb', self.filelist).html(''); + var thumb = $('#' + file.id + ' .plupload_file_thumb', self.filelist); this.embed(thumb[0], { - width: self.options.thumb_width, + width: self.options.thumb_width, height: self.options.thumb_height, - crop: true, + //crop: true, + resample: 'bicubic', swf_url: o.resolveUrl(self.options.flash_swf_url), xap_url: o.resolveUrl(self.options.silverlight_xap_url) }); }; - img.bind("embedded error", function() { - $('#' + file.id, self.filelist).removeClass('plupload_file_loading'); + img.bind("embedded error", function(e) { + $('#' + file.id, self.filelist) + .removeClass('plupload_thumb_loading') + .addClass('plupload_thumb_' + e.type) + ; this.destroy(); setTimeout(cb, 1); // detach, otherwise ui might hang (in SilverLight for example) }); + $('#' + file.id, self.filelist) + .removeClass('plupload_thumb_toload') + .addClass('plupload_thumb_loading') + ; img.load(file.getSource()); } @@ -1100,21 +1108,21 @@ $.widget("ui.plupload", { _addFiles: function(files) { var self = this, file_html, html = ''; - file_html = '
  • ' + - '
    ' + - '
    %ext%
    ' + + file_html = '
  • ' + + '
    ' + + '
    {ext}
    ' + '
    ' + '
    ' + '
    ' + - '%percent% ' + + '{percent} ' + '
    ' + - '
    ' + - '%name% ' + + '
    ' + + '{name} ' + '
    ' + '
    ' + '
    ' + '
    ' + - '
    %size%
    ' + + '
    {size}
    ' + '
    ' + '
  • '; @@ -1125,7 +1133,7 @@ $.widget("ui.plupload", { $.each(files, function(i, file) { var ext = o.Mime.getFileExtension(file.name) || 'none'; - html += file_html.replace(/%(\w+)%/g, function($0, $1) { + html += file_html.replace(/\{(\w+)\}/g, function($0, $1) { switch ($1) { case 'thumb_width': case 'thumb_height': diff --git a/js/jquery.ui.plupload/jquery.ui.plupload.min.js b/js/jquery.ui.plupload/jquery.ui.plupload.min.js index c276ad3fc..3f417e59f 100644 --- a/js/jquery.ui.plupload/jquery.ui.plupload.min.js +++ b/js/jquery.ui.plupload/jquery.ui.plupload.min.js @@ -1 +1 @@ -;(function(e,t,n,r,i){function o(e){return n.translate(e)||e}function u(e){e.id=e.attr("id"),e.html('
    '+o("Select files")+"
    "+'
    '+o("Add files to the upload queue and click the start button.")+"
    "+'
    '+'"+'"+"
    "+"
    "+"
    "+''+""+'"+'"+'"+''+""+"
    '+o("Filename")+"'+o("Status")+"'+o("Size")+" 
    "+'
    '+'
    '+o("Drag files here.")+"
    "+'
    '+'
     
    '+"
    "+''+""+'"+''+''+''+""+""+"
    "+''+"
    ")}var s={};i.widget("ui.plupload",{widgetEventPrefix:"",contents_bak:"",options:{browse_button_hover:"ui-state-hover",browse_button_active:"ui-state-active",filters:{},buttons:{browse:!0,start:!0,stop:!0},views:{list:!0,thumbs:!1,active:"list",remember:!0},thumb_width:100,thumb_height:60,multiple_queues:!0,dragdrop:!0,autostart:!1,sortable:!1,rename:!1},FILE_COUNT_ERROR:-9001,_create:function(){var e=this.element.attr("id");e||(e=n.guid(),this.element.attr("id",e)),this.id=e,this.contents_bak=this.element.html(),u(this.element),this.container=i(".plupload_container",this.element).attr("id",e+"_container"),this.content=i(".plupload_content",this.element),i.fn.resizable&&this.container.resizable({handles:"s",minHeight:300}),this.filelist=i(".plupload_filelist_content",this.container).attr({id:e+"_filelist",unselectable:"on"}),this.browse_button=i(".plupload_add",this.container).attr("id",e+"_browse"),this.start_button=i(".plupload_start",this.container).attr("id",e+"_start"),this.stop_button=i(".plupload_stop",this.container).attr("id",e+"_stop"),this.thumbs_switcher=i("#"+e+"_view_thumbs"),this.list_switcher=i("#"+e+"_view_list"),i.ui.button&&(this.browse_button.button({icons:{primary:"ui-icon-circle-plus"},disabled:!0}),this.start_button.button({icons:{primary:"ui-icon-circle-arrow-e"},disabled:!0}),this.stop_button.button({icons:{primary:"ui-icon-circle-close"}}),this.list_switcher.button({text:!1,icons:{secondary:"ui-icon-grip-dotted-horizontal"}}),this.thumbs_switcher.button({text:!1,icons:{secondary:"ui-icon-image"}})),this.progressbar=i(".plupload_progress_container",this.container),i.ui.progressbar&&this.progressbar.progressbar(),this.counter=i(".plupload_count",this.element).attr({id:e+"_count",name:e+"_count"}),this._initUploader()},_initUploader:function(){var e=this,t=this.id,u,a={container:t+"_buttons",browse_button:t+"_browse"};i(".plupload_buttons",this.element).attr("id",t+"_buttons"),e.options.dragdrop&&(this.filelist.parent().attr("id",this.id+"_dropbox"),a.drop_element=this.id+"_dropbox"),this.filelist.on("click",function(t){i(t.target).hasClass("plupload_action_icon")&&(e.removeFile(i(t.target).closest(".plupload_file").attr("id")),t.preventDefault())}),u=this.uploader=s[t]=new n.Uploader(i.extend(this.options,a)),e.options.views.thumbs&&(u.settings.required_features.display_media=!0),e.options.max_file_count&&n.extend(u.getOption("filters"),{max_file_count:e.options.max_file_count}),n.addFileFilter("max_file_count",function(t,n,r){t<=this.files.length-(this.total.uploaded+this.total.failed)?(e.browse_button.button("disable"),this.disableBrowse(),this.trigger("Error",{code:e.FILE_COUNT_ERROR,message:o("File count error."),file:n}),r(!1)):r(!0)}),u.bind("Error",function(t,i){var s,u="";s=""+i.message+"";switch(i.code){case n.FILE_EXTENSION_ERROR:u=r.sprintf(o("File: %s"),i.file.name);break;case n.FILE_SIZE_ERROR:u=r.sprintf(o("File: %s, size: %d, max file size: %d"),i.file.name,n.formatSize(i.file.size),n.formatSize(n.parseSize(t.getOption("filters").max_file_size)));break;case n.FILE_DUPLICATE_ERROR:u=r.sprintf(o("%s already present in the queue."),i.file.name);break;case e.FILE_COUNT_ERROR:u=r.sprintf(o("Upload element accepts only %d file(s) at a time. Extra files were stripped."),t.getOption("filters").max_file_count||0);break;case n.IMAGE_FORMAT_ERROR:u=o("Image format either wrong or not supported.");break;case n.IMAGE_MEMORY_ERROR:u=o("Runtime ran out of available memory.");break;case n.HTTP_ERROR:u=o("Upload URL might be wrong or doesn't exist.")}s+="
    "+u+"",e._trigger("error",null,{up:t,error:i}),i.code===n.INIT_ERROR?setTimeout(function(){e.destroy()},1):e.notify("error",s)}),u.bind("PostInit",function(t){e.options.buttons.browse?e.browse_button.button("enable"):(e.browse_button.button("disable").hide(),t.disableBrowse(!0)),e.options.buttons.start||e.start_button.button("disable").hide(),e.options.buttons.stop||e.stop_button.button("disable").hide(),!e.options.unique_names&&e.options.rename&&e._enableRenaming(),e.options.dragdrop&&t.features.dragdrop&&e.filelist.parent().addClass("plupload_dropbox"),e._enableViewSwitcher(),e.start_button.click(function(t){i(this).button("option","disabled")||e.start(),t.preventDefault()}),e.stop_button.click(function(t){e.stop(),t.preventDefault()}),e._trigger("ready",null,{up:t})}),u.init(),u.bind("FileFiltered",function(t,n){e._addFiles(n)}),u.bind("FilesAdded",function(t,n){e._trigger("selected",null,{up:t,files:n}),e.options.sortable&&i.ui.sortable&&e._enableSortingList(),e._trigger("updatelist",null,{filelist:e.filelist}),e.options.autostart&&setTimeout(function(){e.start()},10)}),u.bind("FilesRemoved",function(t,n){i.ui.sortable&&e.options.sortable&&i("tbody",e.filelist).sortable("destroy"),i.each(n,function(e,t){i("#"+t.id).toggle("highlight",function(){i(this).remove()})}),t.files.length&&e.options.sortable&&i.ui.sortable&&e._enableSortingList(),e._trigger("updatelist",null,{filelist:e.filelist}),e._trigger("removed",null,{up:t,files:n})}),u.bind("QueueChanged StateChanged",function(){e._handleState()}),u.bind("UploadFile",function(t,n){e._handleFileStatus(n)}),u.bind("FileUploaded",function(t,n){e._handleFileStatus(n),e._trigger("uploaded",null,{up:t,file:n})}),u.bind("UploadProgress",function(t,n){e._handleFileStatus(n),e._updateTotalProgress(),e._trigger("progress",null,{up:t,file:n})}),u.bind("UploadComplete",function(t,n){e._addFormFields(),e._trigger("complete",null,{up:t,files:n})})},_setOption:function(e,t){var n=this;e=="buttons"&&typeof t=="object"&&(t=i.extend(n.options.buttons,t),t.browse?(n.browse_button.button("enable").show(),n.uploader.disableBrowse(!1)):(n.browse_button.button("disable").hide(),n.uploader.disableBrowse(!0)),t.start?n.start_button.button("enable").show():n.start_button.button("disable").hide(),t.stop?n.start_button.button("enable").show():n.stop_button.button("disable").hide()),n.uploader.settings[e]=t},start:function(){this.uploader.start(),this._trigger("start",null,{up:this.uploader})},stop:function(){this.uploader.stop(),this._trigger("stop",null,{up:this.uploader})},enable:function(){this.browse_button.button("enable"),this.uploader.disableBrowse(!1)},disable:function(){this.browse_button.button("disable"),this.uploader.disableBrowse(!0)},getFile:function(e){var t;return typeof e=="number"?t=this.uploader.files[e]:t=this.uploader.getFile(e),t},getFiles:function(){return this.uploader.files},removeFile:function(e){n.typeOf(e)==="string"&&(e=this.getFile(e)),this.uploader.removeFile(e)},clearQueue:function(){this.uploader.splice()},getUploader:function(){return this.uploader},refresh:function(){this.uploader.refresh()},notify:function(e,t){var n=i('
    '+'

    '+t+"

    "+"
    ");n.addClass("ui-state-"+(e==="error"?"error":"highlight")).find("p .ui-icon").addClass("ui-icon-"+(e==="error"?"alert":"info")).end().find(".plupload_message_close").click(function(){n.remove()}).end(),i(".plupload_header",this.container).append(n)},destroy:function(){this.uploader.destroy(),i(".plupload_button",this.element).unbind(),i.ui.button&&i(".plupload_add, .plupload_start, .plupload_stop",this.container).button("destroy"),i.ui.progressbar&&this.progressbar.progressbar("destroy"),i.ui.sortable&&this.options.sortable&&i("tbody",this.filelist).sortable("destroy"),this.element.empty().html(this.contents_bak),this.contents_bak="",i.Widget.prototype.destroy.apply(this)},_handleState:function(){var e=this.uploader,t=e.files.length-(e.total.uploaded+e.total.failed),s=e.getOption("filters").max_file_count||0;n.STARTED===e.state?(i([]).add(this.stop_button).add(".plupload_started").removeClass("plupload_hidden"),this.start_button.button("disable"),this.options.multiple_queues||(this.browse_button.button("disable"),e.disableBrowse()),i(".plupload_upload_status",this.element).html(r.sprintf(o("Uploaded %d/%d files"),e.total.uploaded,e.files.length)),i(".plupload_header_content",this.element).addClass("plupload_header_content_bw")):n.STOPPED===e.state&&(i([]).add(this.stop_button).add(".plupload_started").addClass("plupload_hidden"),t?this.start_button.button("enable"):this.start_button.button("disable"),this.options.multiple_queues&&i(".plupload_header_content",this.element).removeClass("plupload_header_content_bw"),this.options.multiple_queues&&s&&s>t&&(this.browse_button.button("enable"),e.disableBrowse(!1)),this._updateTotalProgress()),e.total.queued===0?i(".ui-button-text",this.browse_button).html(o("Add Files")):i(".ui-button-text",this.browse_button).html(r.sprintf(o("%d files queued"),e.total.queued)),e.refresh()},_handleFileStatus:function(e){var t=i("#"+e.id),r,s;if(!t.length)return;switch(e.status){case n.DONE:r="plupload_done",s="plupload_action_icon ui-icon ui-icon-circle-check";break;case n.FAILED:r="ui-state-error plupload_failed",s="plupload_action_icon ui-icon ui-icon-alert";break;case n.QUEUED:r="plupload_delete",s="plupload_action_icon ui-icon ui-icon-circle-minus";break;case n.UPLOADING:r="ui-state-highlight plupload_uploading",s="plupload_action_icon ui-icon ui-icon-circle-arrow-w";var o=i(".plupload_scroll",this.container),u=o.scrollTop(),a=o.height(),f=t.position().top+t.height();a
    %ext%
    %percent%
    %name%
    %size%
    ',n.typeOf(e)!=="array"&&(e=[e]),i.each(e,function(e,i){var u=r.Mime.getFileExtension(i.name)||"none";o+=s.replace(/%(\w+)%/g,function(e,r){switch(r){case"thumb_width":case"thumb_height":return t.options[r];case"size":return n.formatSize(i.size);case"ext":return u;default:return i[r]||""}})}),t.filelist.append(o)},_addFormFields:function(){var e=this;i(".plupload_file_fields",this.filelist).html(""),n.each(this.uploader.files,function(t,r){var s="",o=e.id+"_"+r;t.target_name&&(s+=''),s+='',s+='',i("#"+t.id).find(".plupload_file_fields").html(s)}),this.counter.val(this.uploader.files.length)},_viewChanged:function(e){this.options.views.remember&&i.cookie&&i.cookie("plupload_ui_view",e,{expires:7,path:"/"}),r.Env.browser==="IE"&&r.Env.version<7&&this.content.attr("style",'height:expression(document.getElementById("'+this.id+"_container"+'").clientHeight - '+(e==="list"?132:102)+")"),this.container.removeClass("plupload_view_list plupload_view_thumbs").addClass("plupload_view_"+e),this.view_mode=e,this._trigger("viewchanged",null,{view:e})},_enableViewSwitcher:function(){var e=this,t,r=i(".plupload_view_switch",this.container),s,o;n.each(["list","thumbs"],function(t){e.options.views[t]||r.find('[for="'+e.id+"_view_"+t+'"], #'+e.id+"_view_"+t).remove()}),s=r.find(".plupload_button"),s.length===1?(r.hide(),t=s.eq(0).data("view"),this._viewChanged(t)):i.ui.button&&s.length>1?(this.options.views.remember&&i.cookie&&(t=i.cookie("plupload_ui_view")),~n.inArray(t,["list","thumbs"])||(t=this.options.views.active),r.show().buttonset().find(".ui-button").click(function(n){t=i(this).data("view"),e._viewChanged(t),n.preventDefault()}),o=r.find('[for="'+e.id+"_view_"+t+'"]'),o.length&&o.trigger("click")):(r.show(),this._viewChanged(this.options.views.active)),this.options.views.thumbs&&this._displayThumbs()},_enableRenaming:function(){var e=this;this.filelist.dblclick(function(t){var n=i(t.target),r,s,o,u,a="";if(!n.hasClass("plupload_file_name_wrapper"))return;s=e.uploader.getFile(n.closest(".plupload_file")[0].id),u=s.name,o=/^(.+)(\.[^.]+)$/.exec(u),o&&(u=o[1],a=o[2]),r=i('').width(n.width()).insertAfter(n.hide()),r.val(u).blur(function(){n.show().parent().scrollLeft(0).end().next().remove()}).keydown(function(e){var t=i(this);i.inArray(e.keyCode,[13,27])!==-1&&(e.preventDefault(),e.keyCode===13&&(s.name=t.val()+a,n.html(s.name)),t.blur())})[0].focus()})},_enableSortingList:function(){var e=this;if(i(".plupload_file",this.filelist).length<2)return;i("tbody",this.filelist).sortable("destroy"),this.filelist.sortable({items:".plupload_delete",cancel:"object, .plupload_clearer",stop:function(){var t=[];i.each(i(this).sortable("toArray"),function(n,r){t[t.length]=e.uploader.getFile(r)}),t.unshift(t.length),t.unshift(0),Array.prototype.splice.apply(e.uploader.files,t)}})}})})(window,document,plupload,mOxie,jQuery); \ No newline at end of file +;(function(e,t,n,r,i){function o(e){return n.translate(e)||e}function u(e){e.id=e.attr("id"),e.html('
    '+o("Select files")+"
    "+'
    '+o("Add files to the upload queue and click the start button.")+"
    "+'
    '+'"+'"+"
    "+"
    "+"
    "+''+""+'"+'"+'"+''+""+"
    '+o("Filename")+"'+o("Status")+"'+o("Size")+" 
    "+'
    '+'
    '+o("Drag files here.")+"
    "+'
    '+'
     
    '+"
    "+''+""+'"+''+''+''+""+""+"
    "+''+"
    ")}var s={};i.widget("ui.plupload",{widgetEventPrefix:"",contents_bak:"",options:{browse_button_hover:"ui-state-hover",browse_button_active:"ui-state-active",filters:{},buttons:{browse:!0,start:!0,stop:!0},views:{list:!0,thumbs:!1,active:"list",remember:!0},thumb_width:100,thumb_height:60,multiple_queues:!0,dragdrop:!0,autostart:!1,sortable:!1,rename:!1},FILE_COUNT_ERROR:-9001,_create:function(){var e=this.element.attr("id");e||(e=n.guid(),this.element.attr("id",e)),this.id=e,this.contents_bak=this.element.html(),u(this.element),this.container=i(".plupload_container",this.element).attr("id",e+"_container"),this.content=i(".plupload_content",this.element),i.fn.resizable&&this.container.resizable({handles:"s",minHeight:300}),this.filelist=i(".plupload_filelist_content",this.container).attr({id:e+"_filelist",unselectable:"on"}),this.browse_button=i(".plupload_add",this.container).attr("id",e+"_browse"),this.start_button=i(".plupload_start",this.container).attr("id",e+"_start"),this.stop_button=i(".plupload_stop",this.container).attr("id",e+"_stop"),this.thumbs_switcher=i("#"+e+"_view_thumbs"),this.list_switcher=i("#"+e+"_view_list"),i.ui.button&&(this.browse_button.button({icons:{primary:"ui-icon-circle-plus"},disabled:!0}),this.start_button.button({icons:{primary:"ui-icon-circle-arrow-e"},disabled:!0}),this.stop_button.button({icons:{primary:"ui-icon-circle-close"}}),this.list_switcher.button({text:!1,icons:{secondary:"ui-icon-grip-dotted-horizontal"}}),this.thumbs_switcher.button({text:!1,icons:{secondary:"ui-icon-image"}})),this.progressbar=i(".plupload_progress_container",this.container),i.ui.progressbar&&this.progressbar.progressbar(),this.counter=i(".plupload_count",this.element).attr({id:e+"_count",name:e+"_count"}),this._initUploader()},_initUploader:function(){var e=this,t=this.id,u,a={container:t+"_buttons",browse_button:t+"_browse"};i(".plupload_buttons",this.element).attr("id",t+"_buttons"),e.options.dragdrop&&(this.filelist.parent().attr("id",this.id+"_dropbox"),a.drop_element=this.id+"_dropbox"),this.filelist.on("click",function(t){i(t.target).hasClass("plupload_action_icon")&&(e.removeFile(i(t.target).closest(".plupload_file").attr("id")),t.preventDefault())}),u=this.uploader=s[t]=new n.Uploader(i.extend(this.options,a)),e.options.views.thumbs&&(u.settings.required_features.display_media=!0),e.options.max_file_count&&n.extend(u.getOption("filters"),{max_file_count:e.options.max_file_count}),n.addFileFilter("max_file_count",function(t,n,r){t<=this.files.length-(this.total.uploaded+this.total.failed)?(e.browse_button.button("disable"),this.disableBrowse(),this.trigger("Error",{code:e.FILE_COUNT_ERROR,message:o("File count error."),file:n}),r(!1)):r(!0)}),u.bind("Error",function(t,i){var s,u="";s=""+i.message+"";switch(i.code){case n.FILE_EXTENSION_ERROR:u=r.sprintf(o("File: %s"),i.file.name);break;case n.FILE_SIZE_ERROR:u=r.sprintf(o("File: %s, size: %d, max file size: %d"),i.file.name,n.formatSize(i.file.size),n.formatSize(n.parseSize(t.getOption("filters").max_file_size)));break;case n.FILE_DUPLICATE_ERROR:u=r.sprintf(o("%s already present in the queue."),i.file.name);break;case e.FILE_COUNT_ERROR:u=r.sprintf(o("Upload element accepts only %d file(s) at a time. Extra files were stripped."),t.getOption("filters").max_file_count||0);break;case n.IMAGE_FORMAT_ERROR:u=o("Image format either wrong or not supported.");break;case n.IMAGE_MEMORY_ERROR:u=o("Runtime ran out of available memory.");break;case n.HTTP_ERROR:u=o("Upload URL might be wrong or doesn't exist.")}s+="
    "+u+"",e._trigger("error",null,{up:t,error:i}),i.code===n.INIT_ERROR?setTimeout(function(){e.destroy()},1):e.notify("error",s)}),u.bind("PostInit",function(t){e.options.buttons.browse?e.browse_button.button("enable"):(e.browse_button.button("disable").hide(),t.disableBrowse(!0)),e.options.buttons.start||e.start_button.button("disable").hide(),e.options.buttons.stop||e.stop_button.button("disable").hide(),!e.options.unique_names&&e.options.rename&&e._enableRenaming(),e.options.dragdrop&&t.features.dragdrop&&e.filelist.parent().addClass("plupload_dropbox"),e._enableViewSwitcher(),e.start_button.click(function(t){i(this).button("option","disabled")||e.start(),t.preventDefault()}),e.stop_button.click(function(t){e.stop(),t.preventDefault()}),e._trigger("ready",null,{up:t})}),u.init(),u.bind("FileFiltered",function(t,n){e._addFiles(n)}),u.bind("FilesAdded",function(t,n){e._trigger("selected",null,{up:t,files:n}),e.options.sortable&&i.ui.sortable&&e._enableSortingList(),e._trigger("updatelist",null,{filelist:e.filelist}),e.options.autostart&&setTimeout(function(){e.start()},10)}),u.bind("FilesRemoved",function(t,n){i.ui.sortable&&e.options.sortable&&i("tbody",e.filelist).sortable("destroy"),i.each(n,function(e,t){i("#"+t.id).toggle("highlight",function(){i(this).remove()})}),t.files.length&&e.options.sortable&&i.ui.sortable&&e._enableSortingList(),e._trigger("updatelist",null,{filelist:e.filelist}),e._trigger("removed",null,{up:t,files:n})}),u.bind("QueueChanged StateChanged",function(){e._handleState()}),u.bind("UploadFile",function(t,n){e._handleFileStatus(n)}),u.bind("FileUploaded",function(t,n){e._handleFileStatus(n),e._trigger("uploaded",null,{up:t,file:n})}),u.bind("UploadProgress",function(t,n){e._handleFileStatus(n),e._updateTotalProgress(),e._trigger("progress",null,{up:t,file:n})}),u.bind("UploadComplete",function(t,n){e._addFormFields(),e._trigger("complete",null,{up:t,files:n})})},_setOption:function(e,t){var n=this;e=="buttons"&&typeof t=="object"&&(t=i.extend(n.options.buttons,t),t.browse?(n.browse_button.button("enable").show(),n.uploader.disableBrowse(!1)):(n.browse_button.button("disable").hide(),n.uploader.disableBrowse(!0)),t.start?n.start_button.button("enable").show():n.start_button.button("disable").hide(),t.stop?n.start_button.button("enable").show():n.stop_button.button("disable").hide()),n.uploader.settings[e]=t},start:function(){this.uploader.start(),this._trigger("start",null,{up:this.uploader})},stop:function(){this.uploader.stop(),this._trigger("stop",null,{up:this.uploader})},enable:function(){this.browse_button.button("enable"),this.uploader.disableBrowse(!1)},disable:function(){this.browse_button.button("disable"),this.uploader.disableBrowse(!0)},getFile:function(e){var t;return typeof e=="number"?t=this.uploader.files[e]:t=this.uploader.getFile(e),t},getFiles:function(){return this.uploader.files},removeFile:function(e){n.typeOf(e)==="string"&&(e=this.getFile(e)),this.uploader.removeFile(e)},clearQueue:function(){this.uploader.splice()},getUploader:function(){return this.uploader},refresh:function(){this.uploader.refresh()},notify:function(e,t){var n=i('
    '+'

    '+t+"

    "+"
    ");n.addClass("ui-state-"+(e==="error"?"error":"highlight")).find("p .ui-icon").addClass("ui-icon-"+(e==="error"?"alert":"info")).end().find(".plupload_message_close").click(function(){n.remove()}).end(),i(".plupload_header",this.container).append(n)},destroy:function(){this.uploader.destroy(),i(".plupload_button",this.element).unbind(),i.ui.button&&i(".plupload_add, .plupload_start, .plupload_stop",this.container).button("destroy"),i.ui.progressbar&&this.progressbar.progressbar("destroy"),i.ui.sortable&&this.options.sortable&&i("tbody",this.filelist).sortable("destroy"),this.element.empty().html(this.contents_bak),this.contents_bak="",i.Widget.prototype.destroy.apply(this)},_handleState:function(){var e=this.uploader,t=e.files.length-(e.total.uploaded+e.total.failed),s=e.getOption("filters").max_file_count||0;n.STARTED===e.state?(i([]).add(this.stop_button).add(".plupload_started").removeClass("plupload_hidden"),this.start_button.button("disable"),this.options.multiple_queues||(this.browse_button.button("disable"),e.disableBrowse()),i(".plupload_upload_status",this.element).html(r.sprintf(o("Uploaded %d/%d files"),e.total.uploaded,e.files.length)),i(".plupload_header_content",this.element).addClass("plupload_header_content_bw")):n.STOPPED===e.state&&(i([]).add(this.stop_button).add(".plupload_started").addClass("plupload_hidden"),t?this.start_button.button("enable"):this.start_button.button("disable"),this.options.multiple_queues&&i(".plupload_header_content",this.element).removeClass("plupload_header_content_bw"),this.options.multiple_queues&&s&&s>t&&(this.browse_button.button("enable"),e.disableBrowse(!1)),this._updateTotalProgress()),e.total.queued===0?i(".ui-button-text",this.browse_button).html(o("Add Files")):i(".ui-button-text",this.browse_button).html(r.sprintf(o("%d files queued"),e.total.queued)),e.refresh()},_handleFileStatus:function(e){var t=i("#"+e.id),r,s;if(!t.length)return;switch(e.status){case n.DONE:r="plupload_done",s="plupload_action_icon ui-icon ui-icon-circle-check";break;case n.FAILED:r="ui-state-error plupload_failed",s="plupload_action_icon ui-icon ui-icon-alert";break;case n.QUEUED:r="plupload_delete",s="plupload_action_icon ui-icon ui-icon-circle-minus";break;case n.UPLOADING:r="ui-state-highlight plupload_uploading",s="plupload_action_icon ui-icon ui-icon-circle-arrow-w";var o=i(".plupload_scroll",this.container),u=o.scrollTop(),a=o.height(),f=t.position().top+t.height();a
    {ext}
    {percent}
    {name}
    {size}
    ',n.typeOf(e)!=="array"&&(e=[e]),i.each(e,function(e,i){var u=r.Mime.getFileExtension(i.name)||"none";o+=s.replace(/\{(\w+)\}/g,function(e,r){switch(r){case"thumb_width":case"thumb_height":return t.options[r];case"size":return n.formatSize(i.size);case"ext":return u;default:return i[r]||""}})}),t.filelist.append(o)},_addFormFields:function(){var e=this;i(".plupload_file_fields",this.filelist).html(""),n.each(this.uploader.files,function(t,r){var s="",o=e.id+"_"+r;t.target_name&&(s+=''),s+='',s+='',i("#"+t.id).find(".plupload_file_fields").html(s)}),this.counter.val(this.uploader.files.length)},_viewChanged:function(e){this.options.views.remember&&i.cookie&&i.cookie("plupload_ui_view",e,{expires:7,path:"/"}),r.Env.browser==="IE"&&r.Env.version<7&&this.content.attr("style",'height:expression(document.getElementById("'+this.id+"_container"+'").clientHeight - '+(e==="list"?132:102)+")"),this.container.removeClass("plupload_view_list plupload_view_thumbs").addClass("plupload_view_"+e),this.view_mode=e,this._trigger("viewchanged",null,{view:e})},_enableViewSwitcher:function(){var e=this,t,r=i(".plupload_view_switch",this.container),s,o;n.each(["list","thumbs"],function(t){e.options.views[t]||r.find('[for="'+e.id+"_view_"+t+'"], #'+e.id+"_view_"+t).remove()}),s=r.find(".plupload_button"),s.length===1?(r.hide(),t=s.eq(0).data("view"),this._viewChanged(t)):i.ui.button&&s.length>1?(this.options.views.remember&&i.cookie&&(t=i.cookie("plupload_ui_view")),~n.inArray(t,["list","thumbs"])||(t=this.options.views.active),r.show().buttonset().find(".ui-button").click(function(n){t=i(this).data("view"),e._viewChanged(t),n.preventDefault()}),o=r.find('[for="'+e.id+"_view_"+t+'"]'),o.length&&o.trigger("click")):(r.show(),this._viewChanged(this.options.views.active)),this.options.views.thumbs&&this._displayThumbs()},_enableRenaming:function(){var e=this;this.filelist.dblclick(function(t){var n=i(t.target),r,s,o,u,a="";if(!n.hasClass("plupload_file_name_wrapper"))return;s=e.uploader.getFile(n.closest(".plupload_file")[0].id),u=s.name,o=/^(.+)(\.[^.]+)$/.exec(u),o&&(u=o[1],a=o[2]),r=i('').width(n.width()).insertAfter(n.hide()),r.val(u).blur(function(){n.show().parent().scrollLeft(0).end().next().remove()}).keydown(function(e){var t=i(this);i.inArray(e.keyCode,[13,27])!==-1&&(e.preventDefault(),e.keyCode===13&&(s.name=t.val()+a,n.html(s.name)),t.blur())})[0].focus()})},_enableSortingList:function(){var e=this;if(i(".plupload_file",this.filelist).length<2)return;i("tbody",this.filelist).sortable("destroy"),this.filelist.sortable({items:".plupload_delete",cancel:"object, .plupload_clearer",stop:function(){var t=[];i.each(i(this).sortable("toArray"),function(n,r){t[t.length]=e.uploader.getFile(r)}),t.unshift(t.length),t.unshift(0),Array.prototype.splice.apply(e.uploader.files,t)}})}})})(window,document,plupload,mOxie,jQuery); \ No newline at end of file diff --git a/js/moxie.js b/js/moxie.js index 92851f2c7..6c097fa00 100644 --- a/js/moxie.js +++ b/js/moxie.js @@ -1,6 +1,7 @@ +;var MXI_DEBUG = true; /** * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill - * v1.2.2 + * v1.3 * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. @@ -8,7 +9,7 @@ * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing * - * Date: 2015-05-11 + * Date: 2015-05-24 */ /** * Compiled inline version. (Library mode) @@ -384,10 +385,10 @@ define('moxie/core/utils/Basic', [], function() { /** - Generates an unique ID. This is 99.99% unique since it takes the current time and 5 random numbers. - The only way a user would be able to get the same ID is if the two persons at the same exact milisecond manages - to get 5 the same random numbers between 0-65535 it also uses a counter so each call will be guaranteed to be page unique. - It's more probable for the earth to be hit with an ansteriod. Y + Generates an unique ID. The only way a user would be able to get the same ID is if the two persons + at the same exact millisecond manage to get the same 5 random numbers between 0-65535; it also uses + a counter so each ID is guaranteed to be unique for the given page. It is more probable for the earth + to be hit with an asteroid. @method guid @static @@ -447,14 +448,31 @@ define('moxie/core/utils/Basic', [], function() { }, mul; - size = /^([0-9]+)([mgk]?)$/.exec(size.toLowerCase().replace(/[^0-9mkg]/g, '')); + + size = /^([0-9\.]+)([tmgk]?)$/.exec(size.toLowerCase().replace(/[^0-9\.tmkg]/g, '')); mul = size[2]; size = +size[1]; if (muls.hasOwnProperty(mul)) { size *= muls[mul]; } - return size; + return Math.floor(size); + }; + + + /** + * Pseudo sprintf implementation - simple way to replace tokens with specified values. + * + * @param {String} str String with tokens + * @return {String} String with replaced tokens + */ + var sprintf = function(str) { + var args = [].slice.call(arguments, 1); + + return str.replace(/%[a-z]/g, function() { + var value = args.shift(); + return typeOf(value) !== 'undefined' ? value : ''; + }); }; @@ -471,14 +489,15 @@ define('moxie/core/utils/Basic', [], function() { arrayIntersect: arrayIntersect, toArray: toArray, trim: trim, + sprintf: sprintf, parseSizeStr: parseSizeStr }; }); -// Included from: src/javascript/core/I18n.js +// Included from: src/javascript/core/utils/Env.js /** - * I18n.js + * Env.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. @@ -487,341 +506,83 @@ define('moxie/core/utils/Basic', [], function() { * Contributing: http://www.plupload.com/contributing */ -define("moxie/core/I18n", [ +define("moxie/core/utils/Env", [ "moxie/core/utils/Basic" ], function(Basic) { - var i18n = {}; - - return { - /** - * Extends the language pack object with new items. - * - * @param {Object} pack Language pack items to add. - * @return {Object} Extended language pack object. - */ - addI18n: function(pack) { - return Basic.extend(i18n, pack); - }, - - /** - * Translates the specified string by checking for the english string in the language pack lookup. - * - * @param {String} str String to look for. - * @return {String} Translated string or the input string if it wasn't found. - */ - translate: function(str) { - return i18n[str] || str; - }, - - /** - * Shortcut for translate function - * - * @param {String} str String to look for. - * @return {String} Translated string or the input string if it wasn't found. - */ - _: function(str) { - return this.translate(str); - }, + + // UAParser.js v0.6.2 + // Lightweight JavaScript-based User-Agent string parser + // https://github.com/faisalman/ua-parser-js + // + // Copyright © 2012-2013 Faisalman + // Dual licensed under GPLv2 & MIT - /** - * Pseudo sprintf implementation - simple way to replace tokens with specified values. - * - * @param {String} str String with tokens - * @return {String} String with replaced tokens - */ - sprintf: function(str) { - var args = [].slice.call(arguments, 1); + var UAParser = (function (undefined) { - return str.replace(/%[a-z]/g, function() { - var value = args.shift(); - return Basic.typeOf(value) !== 'undefined' ? value : ''; - }); - } - }; -}); + ////////////// + // Constants + ///////////// -// Included from: src/javascript/core/utils/Mime.js -/** - * Mime.js - * - * Copyright 2013, Moxiecode Systems AB - * Released under GPL License. - * - * License: http://www.plupload.com/license - * Contributing: http://www.plupload.com/contributing - */ + var EMPTY = '', + UNKNOWN = '?', + FUNC_TYPE = 'function', + UNDEF_TYPE = 'undefined', + OBJ_TYPE = 'object', + MAJOR = 'major', + MODEL = 'model', + NAME = 'name', + TYPE = 'type', + VENDOR = 'vendor', + VERSION = 'version', + ARCHITECTURE= 'architecture', + CONSOLE = 'console', + MOBILE = 'mobile', + TABLET = 'tablet'; -define("moxie/core/utils/Mime", [ - "moxie/core/utils/Basic", - "moxie/core/I18n" -], function(Basic, I18n) { - - var mimeData = "" + - "application/msword,doc dot," + - "application/pdf,pdf," + - "application/pgp-signature,pgp," + - "application/postscript,ps ai eps," + - "application/rtf,rtf," + - "application/vnd.ms-excel,xls xlb," + - "application/vnd.ms-powerpoint,ppt pps pot," + - "application/zip,zip," + - "application/x-shockwave-flash,swf swfl," + - "application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx," + - "application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx," + - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx," + - "application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx," + - "application/vnd.openxmlformats-officedocument.presentationml.template,potx," + - "application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx," + - "application/x-javascript,js," + - "application/json,json," + - "audio/mpeg,mp3 mpga mpega mp2," + - "audio/x-wav,wav," + - "audio/x-m4a,m4a," + - "audio/ogg,oga ogg," + - "audio/aiff,aiff aif," + - "audio/flac,flac," + - "audio/aac,aac," + - "audio/ac3,ac3," + - "audio/x-ms-wma,wma," + - "image/bmp,bmp," + - "image/gif,gif," + - "image/jpeg,jpg jpeg jpe," + - "image/photoshop,psd," + - "image/png,png," + - "image/svg+xml,svg svgz," + - "image/tiff,tiff tif," + - "text/plain,asc txt text diff log," + - "text/html,htm html xhtml," + - "text/css,css," + - "text/csv,csv," + - "text/rtf,rtf," + - "video/mpeg,mpeg mpg mpe m2v," + - "video/quicktime,qt mov," + - "video/mp4,mp4," + - "video/x-m4v,m4v," + - "video/x-flv,flv," + - "video/x-ms-wmv,wmv," + - "video/avi,avi," + - "video/webm,webm," + - "video/3gpp,3gpp 3gp," + - "video/3gpp2,3g2," + - "video/vnd.rn-realvideo,rv," + - "video/ogg,ogv," + - "video/x-matroska,mkv," + - "application/vnd.oasis.opendocument.formula-template,otf," + - "application/octet-stream,exe"; - - - var Mime = { - mimes: {}, + /////////// + // Helper + ////////// - extensions: {}, - // Parses the default mime types string into a mimes and extensions lookup maps - addMimeType: function (mimeData) { - var items = mimeData.split(/,/), i, ii, ext; - - for (i = 0; i < items.length; i += 2) { - ext = items[i + 1].split(/ /); + var util = { + has : function (str1, str2) { + return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1; + }, + lowerize : function (str) { + return str.toLowerCase(); + } + }; - // extension to mime lookup - for (ii = 0; ii < ext.length; ii++) { - this.mimes[ext[ii]] = items[i]; - } - // mime to extension lookup - this.extensions[items[i]] = ext; - } - }, + /////////////// + // Map helper + ////////////// - extList2mimes: function (filters, addMissingExtensions) { - var self = this, ext, i, ii, type, mimes = []; - - // convert extensions to mime types list - for (i = 0; i < filters.length; i++) { - ext = filters[i].extensions.split(/\s*,\s*/); - for (ii = 0; ii < ext.length; ii++) { - - // if there's an asterisk in the list, then accept attribute is not required - if (ext[ii] === '*') { - return []; - } - - type = self.mimes[ext[ii]]; - if (!type) { - if (addMissingExtensions && /^\w+$/.test(ext[ii])) { - mimes.push('.' + ext[ii]); - } else { - return []; // accept all - } - } else if (Basic.inArray(type, mimes) === -1) { - mimes.push(type); - } - } - } - return mimes; - }, + var mapper = { + rgx : function () { - mimes2exts: function(mimes) { - var self = this, exts = []; - - Basic.each(mimes, function(mime) { - if (mime === '*') { - exts = []; - return false; - } + // loop through all regexes maps + for (var result, i = 0, j, k, p, q, matches, match, args = arguments; i < args.length; i += 2) { - // check if this thing looks like mime type - var m = mime.match(/^(\w+)\/(\*|\w+)$/); - if (m) { - if (m[2] === '*') { - // wildcard mime type detected - Basic.each(self.extensions, function(arr, mime) { - if ((new RegExp('^' + m[1] + '/')).test(mime)) { - [].push.apply(exts, self.extensions[mime]); - } - }); - } else if (self.extensions[mime]) { - [].push.apply(exts, self.extensions[mime]); - } - } - }); - return exts; - }, + var regex = args[i], // even sequence (0,2,4,..) + props = args[i + 1]; // odd sequence (1,3,5,..) - - mimes2extList: function(mimes) { - var accept = [], exts = []; - - if (Basic.typeOf(mimes) === 'string') { - mimes = Basic.trim(mimes).split(/\s*,\s*/); - } - - exts = this.mimes2exts(mimes); - - accept.push({ - title: I18n.translate('Files'), - extensions: exts.length ? exts.join(',') : '*' - }); - - // save original mimes string - accept.mimes = mimes; - - return accept; - }, - - - getFileExtension: function(fileName) { - var matches = fileName && fileName.match(/\.([^.]+)$/); - if (matches) { - return matches[1].toLowerCase(); - } - return ''; - }, - - getFileMime: function(fileName) { - return this.mimes[this.getFileExtension(fileName)] || ''; - } - }; - - Mime.addMimeType(mimeData); - - return Mime; -}); - -// Included from: src/javascript/core/utils/Env.js - -/** - * Env.js - * - * Copyright 2013, Moxiecode Systems AB - * Released under GPL License. - * - * License: http://www.plupload.com/license - * Contributing: http://www.plupload.com/contributing - */ - -define("moxie/core/utils/Env", [ - "moxie/core/utils/Basic" -], function(Basic) { - - // UAParser.js v0.6.2 - // Lightweight JavaScript-based User-Agent string parser - // https://github.com/faisalman/ua-parser-js - // - // Copyright © 2012-2013 Faisalman - // Dual licensed under GPLv2 & MIT - - var UAParser = (function (undefined) { - - ////////////// - // Constants - ///////////// - - - var EMPTY = '', - UNKNOWN = '?', - FUNC_TYPE = 'function', - UNDEF_TYPE = 'undefined', - OBJ_TYPE = 'object', - MAJOR = 'major', - MODEL = 'model', - NAME = 'name', - TYPE = 'type', - VENDOR = 'vendor', - VERSION = 'version', - ARCHITECTURE= 'architecture', - CONSOLE = 'console', - MOBILE = 'mobile', - TABLET = 'tablet'; - - - /////////// - // Helper - ////////// - - - var util = { - has : function (str1, str2) { - return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1; - }, - lowerize : function (str) { - return str.toLowerCase(); - } - }; - - - /////////////// - // Map helper - ////////////// - - - var mapper = { - - rgx : function () { - - // loop through all regexes maps - for (var result, i = 0, j, k, p, q, matches, match, args = arguments; i < args.length; i += 2) { - - var regex = args[i], // even sequence (0,2,4,..) - props = args[i + 1]; // odd sequence (1,3,5,..) - - // construct object barebones - if (typeof(result) === UNDEF_TYPE) { - result = {}; - for (p in props) { - q = props[p]; - if (typeof(q) === OBJ_TYPE) { - result[q[0]] = undefined; - } else { - result[q] = undefined; - } - } - } + // construct object barebones + if (typeof(result) === UNDEF_TYPE) { + result = {}; + for (p in props) { + q = props[p]; + if (typeof(q) === OBJ_TYPE) { + result[q[0]] = undefined; + } else { + result[q] = undefined; + } + } + } // try matching uastring with regexes for (j = k = 0; j < regex.length; j++) { @@ -950,91 +711,105 @@ define("moxie/core/utils/Env", [ var regexes = { browser : [[ - + // Presto based - /(opera\smini)\/((\d+)?[\w\.-]+)/i, // Opera Mini - /(opera\s[mobiletab]+).+version\/((\d+)?[\w\.-]+)/i, // Opera Mobi/Tablet - /(opera).+version\/((\d+)?[\w\.]+)/i, // Opera > 9.80 - /(opera)[\/\s]+((\d+)?[\w\.]+)/i // Opera < 9.80 - - ], [NAME, VERSION, MAJOR], [ + /(opera\smini)\/([\w\.-]+)/i, // Opera Mini + /(opera\s[mobiletab]+).+version\/([\w\.-]+)/i, // Opera Mobi/Tablet + /(opera).+version\/([\w\.]+)/i, // Opera > 9.80 + /(opera)[\/\s]+([\w\.]+)/i // Opera < 9.80 - /\s(opr)\/((\d+)?[\w\.]+)/i // Opera Webkit - ], [[NAME, 'Opera'], VERSION, MAJOR], [ + ], [NAME, VERSION], [ + + /\s(opr)\/([\w\.]+)/i // Opera Webkit + ], [[NAME, 'Opera'], VERSION], [ // Mixed - /(kindle)\/((\d+)?[\w\.]+)/i, // Kindle - /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?((\d+)?[\w\.]+)*/i, + /(kindle)\/([\w\.]+)/i, // Kindle + /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer // Trident based - /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?((\d+)?[\w\.]*)/i, + /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser/Baidu - /(?:ms|\()(ie)\s((\d+)?[\w\.]+)/i, // Internet Explorer + /(?:ms|\()(ie)\s([\w\.]+)/i, // Internet Explorer // Webkit/KHTML based - /(rekonq)((?:\/)[\w\.]+)*/i, // Rekonq - /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron)\/((\d+)?[\w\.-]+)/i + /(rekonq)\/([\w\.]+)*/i, // Rekonq + /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi)\/([\w\.-]+)/i // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron - ], [NAME, VERSION, MAJOR], [ + ], [NAME, VERSION], [ + + /(trident).+rv[:\s]([\w\.]+).+like\sgecko/i // IE11 + ], [[NAME, 'IE'], VERSION], [ - /(trident).+rv[:\s]((\d+)?[\w\.]+).+like\sgecko/i // IE11 - ], [[NAME, 'IE'], VERSION, MAJOR], [ + /(edge)\/((\d+)?[\w\.]+)/i // Microsoft Edge + ], [NAME, VERSION], [ - /(yabrowser)\/((\d+)?[\w\.]+)/i // Yandex - ], [[NAME, 'Yandex'], VERSION, MAJOR], [ + /(yabrowser)\/([\w\.]+)/i // Yandex + ], [[NAME, 'Yandex'], VERSION], [ - /(comodo_dragon)\/((\d+)?[\w\.]+)/i // Comodo Dragon - ], [[NAME, /_/g, ' '], VERSION, MAJOR], [ + /(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon + ], [[NAME, /_/g, ' '], VERSION], [ - /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?((\d+)?[\w\.]+)/i + /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i, // Chrome/OmniWeb/Arora/Tizen/Nokia - ], [NAME, VERSION, MAJOR], [ + /(uc\s?browser|qqbrowser)[\/\s]?([\w\.]+)/i + // UCBrowser/QQBrowser + ], [NAME, VERSION], [ + + /(dolfin)\/([\w\.]+)/i // Dolphin + ], [[NAME, 'Dolphin'], VERSION], [ + + /((?:android.+)crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS + ], [[NAME, 'Chrome'], VERSION], [ - /(dolfin)\/((\d+)?[\w\.]+)/i // Dolphin - ], [[NAME, 'Dolphin'], VERSION, MAJOR], [ + /XiaoMi\/MiuiBrowser\/([\w\.]+)/i // MIUI Browser + ], [VERSION, [NAME, 'MIUI Browser']], [ - /((?:android.+)crmo|crios)\/((\d+)?[\w\.]+)/i // Chrome for Android/iOS - ], [[NAME, 'Chrome'], VERSION, MAJOR], [ + /android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)/i // Android Browser + ], [VERSION, [NAME, 'Android Browser']], [ - /((?:android.+))version\/((\d+)?[\w\.]+)\smobile\ssafari/i // Android Browser - ], [[NAME, 'Android Browser'], VERSION, MAJOR], [ + /FBAV\/([\w\.]+);/i // Facebook App for iOS + ], [VERSION, [NAME, 'Facebook']], [ - /version\/((\d+)?[\w\.]+).+?mobile\/\w+\s(safari)/i // Mobile Safari - ], [VERSION, MAJOR, [NAME, 'Mobile Safari']], [ + /version\/([\w\.]+).+?mobile\/\w+\s(safari)/i // Mobile Safari + ], [VERSION, [NAME, 'Mobile Safari']], [ - /version\/((\d+)?[\w\.]+).+?(mobile\s?safari|safari)/i // Safari & Safari Mobile - ], [VERSION, MAJOR, NAME], [ + /version\/([\w\.]+).+?(mobile\s?safari|safari)/i // Safari & Safari Mobile + ], [VERSION, NAME], [ - /webkit.+?(mobile\s?safari|safari)((\/[\w\.]+))/i // Safari < 3.0 - ], [NAME, [MAJOR, mapper.str, maps.browser.oldsafari.major], [VERSION, mapper.str, maps.browser.oldsafari.version]], [ + /webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i // Safari < 3.0 + ], [NAME, [VERSION, mapper.str, maps.browser.oldsafari.version]], [ - /(konqueror)\/((\d+)?[\w\.]+)/i, // Konqueror - /(webkit|khtml)\/((\d+)?[\w\.]+)/i - ], [NAME, VERSION, MAJOR], [ + /(konqueror)\/([\w\.]+)/i, // Konqueror + /(webkit|khtml)\/([\w\.]+)/i + ], [NAME, VERSION], [ // Gecko based - /(navigator|netscape)\/((\d+)?[\w\.-]+)/i // Netscape - ], [[NAME, 'Netscape'], VERSION, MAJOR], [ + /(navigator|netscape)\/([\w\.-]+)/i // Netscape + ], [[NAME, 'Netscape'], VERSION], [ /(swiftfox)/i, // Swiftfox - /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?((\d+)?[\w\.\+]+)/i, + /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i, // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror - /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/((\d+)?[\w\.-]+)/i, + /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i, // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix - /(mozilla)\/((\d+)?[\w\.]+).+rv\:.+gecko\/\d+/i, // Mozilla + /(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i, // Mozilla // Other - /(uc\s?browser|polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|qqbrowser)[\/\s]?((\d+)?[\w\.]+)/i, - // UCBrowser/Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/QQBrowser - /(links)\s\(((\d+)?[\w\.]+)/i, // Links - /(gobrowser)\/?((\d+)?[\w\.]+)*/i, // GoBrowser - /(ice\s?browser)\/v?((\d+)?[\w\._]+)/i, // ICE Browser - /(mosaic)[\/\s]((\d+)?[\w\.]+)/i // Mosaic - ], [NAME, VERSION, MAJOR] + /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf)[\/\s]?([\w\.]+)/i, + // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf + /(links)\s\(([\w\.]+)/i, // Links + /(gobrowser)\/?([\w\.]+)*/i, // GoBrowser + /(ice\s?browser)\/v?([\w\._]+)/i, // ICE Browser + /(mosaic)[\/\s]([\w\.]+)/i // Mosaic + ], [NAME, VERSION] ], engine : [[ + /windows.+\sedge\/([\w\.]+)/i // EdgeHTML + ], [VERSION, [NAME, 'EdgeHTML']], [ + /(presto)\/([\w\.]+)/i, // Presto /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, // KHTML/Tasman/Links @@ -1048,6 +823,8 @@ define("moxie/core/utils/Env", [ os : [[ // Windows based + /microsoft\s(windows)\s(vista|xp)/i // Windows (iTunes) + ], [NAME, VERSION], [ /(windows)\snt\s6\.2;\s(arm)/i, // Windows RT /(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [ @@ -1058,12 +835,15 @@ define("moxie/core/utils/Env", [ /\((bb)(10);/i // BlackBerry 10 ], [[NAME, 'BlackBerry'], VERSION], [ /(blackberry)\w*\/?([\w\.]+)*/i, // Blackberry - /(tizen)\/([\w\.]+)/i, // Tizen - /(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego)[\/\s-]?([\w\.]+)*/i - // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo + /(tizen)[\/\s]([\w\.]+)/i, // Tizen + /(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i, + // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo/Contiki + /linux;.+(sailfish);/i // Sailfish OS ], [NAME, VERSION], [ /(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i // Symbian - ], [[NAME, 'Symbian'], VERSION],[ + ], [[NAME, 'Symbian'], VERSION], [ + /\((series40);/i // Series 40 + ], [NAME], [ /mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS ], [[NAME, 'Firefox OS'], VERSION], [ @@ -1072,9 +852,10 @@ define("moxie/core/utils/Env", [ // GNU/Linux based /(mint)[\/\s\(]?(\w+)*/i, // Mint - /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk)[\/\s-]?([\w\.-]+)*/i, + /(mageia|vectorlinux)[;\s]/i, // Mageia/VectorLinux + /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i, // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware - // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk + // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus /(hurd|linux)\s?([\w\.]+)*/i, // Hurd/Linux /(gnu)\s?([\w\.]+)*/i // GNU ], [NAME, VERSION], [ @@ -1093,14 +874,16 @@ define("moxie/core/utils/Env", [ /(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i // iOS ], [[NAME, 'iOS'], [VERSION, /_/g, '.']], [ - /(mac\sos\sx)\s?([\w\s\.]+\w)*/i // Mac OS - ], [NAME, [VERSION, /_/g, '.']], [ + /(mac\sos\sx)\s?([\w\s\.]+\w)*/i, + /(macintosh|mac(?=_powerpc)\s)/i // Mac OS + ], [[NAME, 'Mac OS'], [VERSION, /_/g, '.']], [ // Other + /((?:open)?solaris)[\/\s-]?([\w\.]+)*/i, // Solaris /(haiku)\s(\w+)/i, // Haiku /(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i, // AIX - /(macintosh|mac(?=_powerpc)|plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos)/i, - // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS + /(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i, + // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS/OpenVMS /(unix)\s?([\w\.]+)*/i // UNIX ], [NAME, VERSION] ] @@ -1333,6 +1116,10 @@ define("moxie/core/utils/Env", [ }, use_fileinput: function() { + if (navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/)) { + return false; + } + var el = document.createElement('input'); el.setAttribute('type', 'file'); return !el.disabled; @@ -1366,13 +1153,52 @@ define("moxie/core/utils/Env", [ // @deprecated Use `Env.os` instead Env.OS = Env.os; + if (MXI_DEBUG) { + Env.debug = { + runtime: true, + events: false + }; + + Env.log = function() { + + function logObj(data) { + // TODO: this should recursively print out the object in a pretty way + console.appendChild(document.createTextNode(data + "\n")); + } + + var data = arguments[0]; + + if (Basic.typeOf(data) === 'string') { + data = Basic.sprintf.apply(this, arguments); + } + + if (window && window.console && window.console.log) { + window.console.log(data); + } else if (document) { + var console = document.getElementById('moxie-console'); + if (!console) { + console = document.createElement('pre'); + console.id = 'moxie-console'; + //console.style.display = 'none'; + document.body.appendChild(console); + } + + if (Basic.inArray(Basic.typeOf(data), ['object', 'array']) !== -1) { + logObj(data); + } else { + console.appendChild(document.createTextNode(data + "\n")); + } + } + }; + } + return Env; }); -// Included from: src/javascript/core/utils/Dom.js +// Included from: src/javascript/core/I18n.js /** - * Dom.js + * I18n.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. @@ -1381,63 +1207,323 @@ define("moxie/core/utils/Env", [ * Contributing: http://www.plupload.com/contributing */ -define('moxie/core/utils/Dom', ['moxie/core/utils/Env'], function(Env) { - - /** - Get DOM Element by it's id. - - @method get - @for Utils - @param {String} id Identifier of the DOM Element - @return {DOMElement} - */ - var get = function(id) { - if (typeof id !== 'string') { - return id; - } - return document.getElementById(id); - }; +define("moxie/core/I18n", [ + "moxie/core/utils/Basic" +], function(Basic) { + var i18n = {}; - /** - Checks if specified DOM element has specified class. + return { + /** + * Extends the language pack object with new items. + * + * @param {Object} pack Language pack items to add. + * @return {Object} Extended language pack object. + */ + addI18n: function(pack) { + return Basic.extend(i18n, pack); + }, - @method hasClass - @static - @param {Object} obj DOM element like object to add handler to. - @param {String} name Class name - */ - var hasClass = function(obj, name) { - if (!obj.className) { - return false; - } + /** + * Translates the specified string by checking for the english string in the language pack lookup. + * + * @param {String} str String to look for. + * @return {String} Translated string or the input string if it wasn't found. + */ + translate: function(str) { + return i18n[str] || str; + }, - var regExp = new RegExp("(^|\\s+)"+name+"(\\s+|$)"); - return regExp.test(obj.className); - }; + /** + * Shortcut for translate function + * + * @param {String} str String to look for. + * @return {String} Translated string or the input string if it wasn't found. + */ + _: function(str) { + return this.translate(str); + }, - /** - Adds specified className to specified DOM element. + /** + * Pseudo sprintf implementation - simple way to replace tokens with specified values. + * + * @param {String} str String with tokens + * @return {String} String with replaced tokens + */ + sprintf: function(str) { + var args = [].slice.call(arguments, 1); - @method addClass - @static - @param {Object} obj DOM element like object to add handler to. - @param {String} name Class name - */ - var addClass = function(obj, name) { - if (!hasClass(obj, name)) { - obj.className = !obj.className ? name : obj.className.replace(/\s+$/, '') + ' ' + name; + return str.replace(/%[a-z]/g, function() { + var value = args.shift(); + return Basic.typeOf(value) !== 'undefined' ? value : ''; + }); } }; +}); - /** - Removes specified className from specified DOM element. +// Included from: src/javascript/core/utils/Mime.js - @method removeClass - @static - @param {Object} obj DOM element like object to add handler to. - @param {String} name Class name - */ - var removeClass = function(obj, name) { +/** + * Mime.js + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + */ + +define("moxie/core/utils/Mime", [ + "moxie/core/utils/Basic", + "moxie/core/I18n" +], function(Basic, I18n) { + + var mimeData = "" + + "application/msword,doc dot," + + "application/pdf,pdf," + + "application/pgp-signature,pgp," + + "application/postscript,ps ai eps," + + "application/rtf,rtf," + + "application/vnd.ms-excel,xls xlb," + + "application/vnd.ms-powerpoint,ppt pps pot," + + "application/zip,zip," + + "application/x-shockwave-flash,swf swfl," + + "application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx," + + "application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx," + + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx," + + "application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx," + + "application/vnd.openxmlformats-officedocument.presentationml.template,potx," + + "application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx," + + "application/x-javascript,js," + + "application/json,json," + + "audio/mpeg,mp3 mpga mpega mp2," + + "audio/x-wav,wav," + + "audio/x-m4a,m4a," + + "audio/ogg,oga ogg," + + "audio/aiff,aiff aif," + + "audio/flac,flac," + + "audio/aac,aac," + + "audio/ac3,ac3," + + "audio/x-ms-wma,wma," + + "image/bmp,bmp," + + "image/gif,gif," + + "image/jpeg,jpg jpeg jpe," + + "image/photoshop,psd," + + "image/png,png," + + "image/svg+xml,svg svgz," + + "image/tiff,tiff tif," + + "text/plain,asc txt text diff log," + + "text/html,htm html xhtml," + + "text/css,css," + + "text/csv,csv," + + "text/rtf,rtf," + + "video/mpeg,mpeg mpg mpe m2v," + + "video/quicktime,qt mov," + + "video/mp4,mp4," + + "video/x-m4v,m4v," + + "video/x-flv,flv," + + "video/x-ms-wmv,wmv," + + "video/avi,avi," + + "video/webm,webm," + + "video/3gpp,3gpp 3gp," + + "video/3gpp2,3g2," + + "video/vnd.rn-realvideo,rv," + + "video/ogg,ogv," + + "video/x-matroska,mkv," + + "application/vnd.oasis.opendocument.formula-template,otf," + + "application/octet-stream,exe"; + + + var Mime = { + + mimes: {}, + + extensions: {}, + + // Parses the default mime types string into a mimes and extensions lookup maps + addMimeType: function (mimeData) { + var items = mimeData.split(/,/), i, ii, ext; + + for (i = 0; i < items.length; i += 2) { + ext = items[i + 1].split(/ /); + + // extension to mime lookup + for (ii = 0; ii < ext.length; ii++) { + this.mimes[ext[ii]] = items[i]; + } + // mime to extension lookup + this.extensions[items[i]] = ext; + } + }, + + + extList2mimes: function (filters, addMissingExtensions) { + var self = this, ext, i, ii, type, mimes = []; + + // convert extensions to mime types list + for (i = 0; i < filters.length; i++) { + ext = filters[i].extensions.split(/\s*,\s*/); + + for (ii = 0; ii < ext.length; ii++) { + + // if there's an asterisk in the list, then accept attribute is not required + if (ext[ii] === '*') { + return []; + } + + type = self.mimes[ext[ii]]; + if (type && Basic.inArray(type, mimes) === -1) { + mimes.push(type); + } + + // future browsers should filter by extension, finally + if (addMissingExtensions && /^\w+$/.test(ext[ii])) { + mimes.push('.' + ext[ii]); + } else if (!type) { + // if we have no type in our map, then accept all + return []; + } + } + } + return mimes; + }, + + + mimes2exts: function(mimes) { + var self = this, exts = []; + + Basic.each(mimes, function(mime) { + if (mime === '*') { + exts = []; + return false; + } + + // check if this thing looks like mime type + var m = mime.match(/^(\w+)\/(\*|\w+)$/); + if (m) { + if (m[2] === '*') { + // wildcard mime type detected + Basic.each(self.extensions, function(arr, mime) { + if ((new RegExp('^' + m[1] + '/')).test(mime)) { + [].push.apply(exts, self.extensions[mime]); + } + }); + } else if (self.extensions[mime]) { + [].push.apply(exts, self.extensions[mime]); + } + } + }); + return exts; + }, + + + mimes2extList: function(mimes) { + var accept = [], exts = []; + + if (Basic.typeOf(mimes) === 'string') { + mimes = Basic.trim(mimes).split(/\s*,\s*/); + } + + exts = this.mimes2exts(mimes); + + accept.push({ + title: I18n.translate('Files'), + extensions: exts.length ? exts.join(',') : '*' + }); + + // save original mimes string + accept.mimes = mimes; + + return accept; + }, + + + getFileExtension: function(fileName) { + var matches = fileName && fileName.match(/\.([^.]+)$/); + if (matches) { + return matches[1].toLowerCase(); + } + return ''; + }, + + getFileMime: function(fileName) { + return this.mimes[this.getFileExtension(fileName)] || ''; + } + }; + + Mime.addMimeType(mimeData); + + return Mime; +}); + +// Included from: src/javascript/core/utils/Dom.js + +/** + * Dom.js + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + */ + +define('moxie/core/utils/Dom', ['moxie/core/utils/Env'], function(Env) { + + /** + Get DOM Element by it's id. + + @method get + @for Utils + @param {String} id Identifier of the DOM Element + @return {DOMElement} + */ + var get = function(id) { + if (typeof id !== 'string') { + return id; + } + return document.getElementById(id); + }; + + /** + Checks if specified DOM element has specified class. + + @method hasClass + @static + @param {Object} obj DOM element like object to add handler to. + @param {String} name Class name + */ + var hasClass = function(obj, name) { + if (!obj.className) { + return false; + } + + var regExp = new RegExp("(^|\\s+)"+name+"(\\s+|$)"); + return regExp.test(obj.className); + }; + + /** + Adds specified className to specified DOM element. + + @method addClass + @static + @param {Object} obj DOM element like object to add handler to. + @param {String} name Class name + */ + var addClass = function(obj, name) { + if (!hasClass(obj, name)) { + obj.className = !obj.className ? name : obj.className.replace(/\s+$/, '') + ' ' + name; + } + }; + + /** + Removes specified className from specified DOM element. + + @method removeClass + @static + @param {Object} obj DOM element like object to add handler to. + @param {String} name Class name + */ + var removeClass = function(obj, name) { if (obj.className) { var regExp = new RegExp("(^|\\s+)"+name+"(\\s+|$)"); obj.className = obj.className.replace(regExp, function($0, $1, $2) { @@ -1723,9 +1809,10 @@ define('moxie/core/Exceptions', [ */ define('moxie/core/EventTarget', [ + 'moxie/core/utils/Env', 'moxie/core/Exceptions', 'moxie/core/utils/Basic' -], function(x, Basic) { +], function(Env, x, Basic) { /** Parent object for all event dispatching components and objects @@ -1768,6 +1855,11 @@ define('moxie/core/EventTarget', [ */ addEventListener: function(type, fn, priority, scope) { var self = this, list; + + // without uid no event handlers can be added, so make sure we got one + if (!this.hasOwnProperty('uid')) { + this.uid = Basic.guid('uid_'); + } type = Basic.trim(type); @@ -1902,6 +1994,10 @@ define('moxie/core/EventTarget', [ evt.type = type; args.unshift(evt); + if (MXI_DEBUG && Env.debug.events) { + Env.log("Event '%s' fired on %u", evt.type, uid); + } + // Dispatch event to all listeners var queue = []; Basic.each(list, function(handler) { @@ -1969,30 +2065,30 @@ define('moxie/core/EventTarget', [ return this.dispatchEvent.apply(this, arguments); }, - + /** - Converts properties of on[event] type to corresponding event handlers, - is used to avoid extra hassle around the process of calling them back + Handle properties of on[event] type. - @method convertEventPropsToHandlers + @method handleEventProps @private */ - convertEventPropsToHandlers: function(handlers) { - var h; - - if (Basic.typeOf(handlers) !== 'array') { - handlers = [handlers]; - } + handleEventProps: function(dispatches) { + var self = this; - for (var i = 0; i < handlers.length; i++) { - h = 'on' + handlers[i]; - - if (Basic.typeOf(this[h]) === 'function') { - this.addEventListener(handlers[i], this[h]); - } else if (Basic.typeOf(this[h]) === 'undefined') { - this[h] = null; // object must have defined event properties, even if it doesn't make use of them + this.bind(dispatches.join(' '), function(e) { + var prop = 'on' + e.type.toLowerCase(); + if (Basic.typeOf(this[prop]) === 'function') { + this[prop].apply(this, arguments); } - } + }); + + // object must have defined event properties, even if it doesn't make use of them + Basic.each(dispatches, function(prop) { + prop = 'on' + prop.toLowerCase(prop); + if (Basic.typeOf(self[prop]) === 'undefined') { + self[prop] = null; + } + }); } }); @@ -2003,186 +2099,6 @@ define('moxie/core/EventTarget', [ return EventTarget; }); -// Included from: src/javascript/core/utils/Encode.js - -/** - * Encode.js - * - * Copyright 2013, Moxiecode Systems AB - * Released under GPL License. - * - * License: http://www.plupload.com/license - * Contributing: http://www.plupload.com/contributing - */ - -define('moxie/core/utils/Encode', [], function() { - - /** - Encode string with UTF-8 - - @method utf8_encode - @for Utils - @static - @param {String} str String to encode - @return {String} UTF-8 encoded string - */ - var utf8_encode = function(str) { - return unescape(encodeURIComponent(str)); - }; - - /** - Decode UTF-8 encoded string - - @method utf8_decode - @static - @param {String} str String to decode - @return {String} Decoded string - */ - var utf8_decode = function(str_data) { - return decodeURIComponent(escape(str_data)); - }; - - /** - Decode Base64 encoded string (uses browser's default method if available), - from: https://raw.github.com/kvz/phpjs/master/functions/url/base64_decode.js - - @method atob - @static - @param {String} data String to decode - @return {String} Decoded string - */ - var atob = function(data, utf8) { - if (typeof(window.atob) === 'function') { - return utf8 ? utf8_decode(window.atob(data)) : window.atob(data); - } - - // http://kevin.vanzonneveld.net - // + original by: Tyler Akins (http://rumkin.com) - // + improved by: Thunder.m - // + input by: Aman Gupta - // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // + bugfixed by: Onno Marsman - // + bugfixed by: Pellentesque Malesuada - // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // + input by: Brett Zamir (http://brett-zamir.me) - // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA=='); - // * returns 1: 'Kevin van Zonneveld' - // mozilla has this native - // - but breaks in 2.0.0.12! - //if (typeof this.window.atob == 'function') { - // return atob(data); - //} - var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, - ac = 0, - dec = "", - tmp_arr = []; - - if (!data) { - return data; - } - - data += ''; - - do { // unpack four hexets into three octets using index points in b64 - h1 = b64.indexOf(data.charAt(i++)); - h2 = b64.indexOf(data.charAt(i++)); - h3 = b64.indexOf(data.charAt(i++)); - h4 = b64.indexOf(data.charAt(i++)); - - bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; - - o1 = bits >> 16 & 0xff; - o2 = bits >> 8 & 0xff; - o3 = bits & 0xff; - - if (h3 == 64) { - tmp_arr[ac++] = String.fromCharCode(o1); - } else if (h4 == 64) { - tmp_arr[ac++] = String.fromCharCode(o1, o2); - } else { - tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); - } - } while (i < data.length); - - dec = tmp_arr.join(''); - - return utf8 ? utf8_decode(dec) : dec; - }; - - /** - Base64 encode string (uses browser's default method if available), - from: https://raw.github.com/kvz/phpjs/master/functions/url/base64_encode.js - - @method btoa - @static - @param {String} data String to encode - @return {String} Base64 encoded string - */ - var btoa = function(data, utf8) { - if (utf8) { - utf8_encode(data); - } - - if (typeof(window.btoa) === 'function') { - return window.btoa(data); - } - - // http://kevin.vanzonneveld.net - // + original by: Tyler Akins (http://rumkin.com) - // + improved by: Bayron Guevara - // + improved by: Thunder.m - // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // + bugfixed by: Pellentesque Malesuada - // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) - // + improved by: Rafał Kukawski (http://kukawski.pl) - // * example 1: base64_encode('Kevin van Zonneveld'); - // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA==' - // mozilla has this native - // - but breaks in 2.0.0.12! - var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; - var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, - ac = 0, - enc = "", - tmp_arr = []; - - if (!data) { - return data; - } - - do { // pack three octets into four hexets - o1 = data.charCodeAt(i++); - o2 = data.charCodeAt(i++); - o3 = data.charCodeAt(i++); - - bits = o1 << 16 | o2 << 8 | o3; - - h1 = bits >> 18 & 0x3f; - h2 = bits >> 12 & 0x3f; - h3 = bits >> 6 & 0x3f; - h4 = bits & 0x3f; - - // use hexets to index into b64, and append result to encoded string - tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); - } while (i < data.length); - - enc = tmp_arr.join(''); - - var r = data.length % 3; - - return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3); - }; - - - return { - utf8_encode: utf8_encode, - utf8_decode: utf8_decode, - atob: atob, - btoa: btoa - }; -}); - // Included from: src/javascript/runtime/Runtime.js /** @@ -2196,10 +2112,11 @@ define('moxie/core/utils/Encode', [], function() { */ define('moxie/runtime/Runtime', [ + "moxie/core/utils/Env", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/EventTarget" -], function(Basic, Dom, EventTarget) { +], function(Env, Basic, Dom, EventTarget) { var runtimeConstructors = {}, runtimes = {}; /** @@ -2304,6 +2221,10 @@ define('moxie/runtime/Runtime', [ if (options.preferred_caps) { defaultMode = Runtime.getMode(modeCaps, options.preferred_caps, defaultMode); } + + if (MXI_DEBUG && Env.debug.runtime) { + Env.log("\tdefault mode: %s", defaultMode); + } // small extension factory here (is meant to be extended with actual extensions constructors) _shim = (function() { @@ -2715,11 +2636,20 @@ define('moxie/runtime/Runtime', [ } if (!mode) { - mode = capMode; + mode = capMode; } else if (!(mode = Basic.arrayIntersect(mode, capMode))) { // if cap requires conflicting mode - runtime cannot fulfill required caps + + if (MXI_DEBUG && Env.debug.runtime) { + Env.log("\t\t%c: %v (conflicting mode requested: %s)", cap, value, capMode); + } + return (mode = false); - } + } + } + + if (MXI_DEBUG && Env.debug.runtime) { + Env.log("\t\t%c: %v (compatible modes: %s)", cap, value, mode); } }); @@ -2785,10 +2715,11 @@ define('moxie/runtime/Runtime', [ */ define('moxie/runtime/RuntimeClient', [ + 'moxie/core/utils/Env', 'moxie/core/Exceptions', 'moxie/core/utils/Basic', 'moxie/runtime/Runtime' -], function(x, Basic, Runtime) { +], function(Env, x, Basic, Runtime) { /** Set of methods and properties, required by a component to acquire ability to connect to a runtime @@ -2802,6 +2733,7 @@ define('moxie/runtime/RuntimeClient', [ Connects to the runtime specified by the options. Will either connect to existing runtime or create a new one. Increments number of clients connected to the specified runtime. + @private @method connectRuntime @param {Mixed} options Can be a runtme uid or a set of key-value pairs defining requirements and pre-requisites */ @@ -2818,13 +2750,18 @@ define('moxie/runtime/RuntimeClient', [ return; } - type = items.shift(); + type = items.shift().toLowerCase(); constructor = Runtime.getConstructor(type); if (!constructor) { initialize(items); return; } + if (MXI_DEBUG && Env.debug.runtime) { + Env.log("Trying runtime: %s", type); + Env.log(options); + } + // try initializing the runtime runtime = new constructor(options); @@ -2832,6 +2769,10 @@ define('moxie/runtime/RuntimeClient', [ // mark runtime as initialized runtime.initialized = true; + if (MXI_DEBUG && Env.debug.runtime) { + Env.log("Runtime '%s' initialized", runtime.type); + } + // jailbreak ... setTimeout(function() { runtime.clients++; @@ -2841,12 +2782,20 @@ define('moxie/runtime/RuntimeClient', [ }); runtime.bind('Error', function() { + if (MXI_DEBUG && Env.debug.runtime) { + Env.log("Runtime '%s' failed to initialize", runtime.type); + } + runtime.destroy(); // runtime cannot destroy itself from inside at a right moment, thus we do it here initialize(items); }); /*runtime.bind('Exception', function() { });*/ + if (MXI_DEBUG && Env.debug.runtime) { + Env.log("\tselected mode: %s", runtime.mode); + } + // check if runtime managed to pick-up operational mode if (!runtime.mode) { runtime.trigger('Error'); @@ -2878,6 +2827,23 @@ define('moxie/runtime/RuntimeClient', [ initialize((options.runtime_order || Runtime.order).split(/\s*,\s*/)); }, + + /** + Disconnects from the runtime. Decrements number of clients connected to the specified runtime. + + @private + @method disconnectRuntime + */ + disconnectRuntime: function() { + if (runtime && --runtime.clients <= 0) { + runtime.destroy(); + } + + // once the component is disconnected, it shouldn't have access to the runtime + runtime = null; + }, + + /** Returns the runtime to which the client is currently connected. @@ -2888,20 +2854,22 @@ define('moxie/runtime/RuntimeClient', [ if (runtime && runtime.uid) { return runtime; } - runtime = null; // make sure we do not leave zombies rambling around - return null; + return runtime = null; // make sure we do not leave zombies rambling around }, - /** - Disconnects from the runtime. Decrements number of clients connected to the specified runtime. - @method disconnectRuntime + /** + Handy shortcut to safely invoke runtime extension methods. + + @private + @method exec + @return {Mixed} Whatever runtime extension method returns */ - disconnectRuntime: function() { - if (runtime && --runtime.clients <= 0) { - runtime.destroy(); - runtime = null; + exec: function() { + if (runtime) { + return runtime.exec.apply(this, arguments); } + return null; } }); @@ -2910,10 +2878,10 @@ define('moxie/runtime/RuntimeClient', [ }); -// Included from: src/javascript/file/Blob.js +// Included from: src/javascript/file/FileInput.js /** - * Blob.js + * FileInput.js * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. @@ -2922,283 +2890,17 @@ define('moxie/runtime/RuntimeClient', [ * Contributing: http://www.plupload.com/contributing */ -define('moxie/file/Blob', [ +define('moxie/file/FileInput', [ 'moxie/core/utils/Basic', - 'moxie/core/utils/Encode', + 'moxie/core/utils/Env', + 'moxie/core/utils/Mime', + 'moxie/core/utils/Dom', + 'moxie/core/Exceptions', + 'moxie/core/EventTarget', + 'moxie/core/I18n', + 'moxie/runtime/Runtime', 'moxie/runtime/RuntimeClient' -], function(Basic, Encode, RuntimeClient) { - - var blobpool = {}; - - /** - @class Blob - @constructor - @param {String} ruid Unique id of the runtime, to which this blob belongs to - @param {Object} blob Object "Native" blob object, as it is represented in the runtime - */ - function Blob(ruid, blob) { - - function _sliceDetached(start, end, type) { - var blob, data = blobpool[this.uid]; - - if (Basic.typeOf(data) !== 'string' || !data.length) { - return null; // or throw exception - } - - blob = new Blob(null, { - type: type, - size: end - start - }); - blob.detach(data.substr(start, blob.size)); - - return blob; - } - - RuntimeClient.call(this); - - if (ruid) { - this.connectRuntime(ruid); - } - - if (!blob) { - blob = {}; - } else if (Basic.typeOf(blob) === 'string') { // dataUrl or binary string - blob = { data: blob }; - } - - Basic.extend(this, { - - /** - Unique id of the component - - @property uid - @type {String} - */ - uid: blob.uid || Basic.guid('uid_'), - - /** - Unique id of the connected runtime, if falsy, then runtime will have to be initialized - before this Blob can be used, modified or sent - - @property ruid - @type {String} - */ - ruid: ruid, - - /** - Size of blob - - @property size - @type {Number} - @default 0 - */ - size: blob.size || 0, - - /** - Mime type of blob - - @property type - @type {String} - @default '' - */ - type: blob.type || '', - - /** - @method slice - @param {Number} [start=0] - */ - slice: function(start, end, type) { - if (this.isDetached()) { - return _sliceDetached.apply(this, arguments); - } - return this.getRuntime().exec.call(this, 'Blob', 'slice', this.getSource(), start, end, type); - }, - - /** - Returns "native" blob object (as it is represented in connected runtime) or null if not found - - @method getSource - @return {Blob} Returns "native" blob object or null if not found - */ - getSource: function() { - if (!blobpool[this.uid]) { - return null; - } - return blobpool[this.uid]; - }, - - /** - Detaches blob from any runtime that it depends on and initialize with standalone value - - @method detach - @protected - @param {DOMString} [data=''] Standalone value - */ - detach: function(data) { - if (this.ruid) { - this.getRuntime().exec.call(this, 'Blob', 'destroy'); - this.disconnectRuntime(); - this.ruid = null; - } - - data = data || ''; - - // if dataUrl, convert to binary string - var matches = data.match(/^data:([^;]*);base64,/); - if (matches) { - this.type = matches[1]; - data = Encode.atob(data.substring(data.indexOf('base64,') + 7)); - } - - this.size = data.length; - - blobpool[this.uid] = data; - }, - - /** - Checks if blob is standalone (detached of any runtime) - - @method isDetached - @protected - @return {Boolean} - */ - isDetached: function() { - return !this.ruid && Basic.typeOf(blobpool[this.uid]) === 'string'; - }, - - /** - Destroy Blob and free any resources it was using - - @method destroy - */ - destroy: function() { - this.detach(); - delete blobpool[this.uid]; - } - }); - - - if (blob.data) { - this.detach(blob.data); // auto-detach if payload has been passed - } else { - blobpool[this.uid] = blob; - } - } - - return Blob; -}); - -// Included from: src/javascript/file/File.js - -/** - * File.js - * - * Copyright 2013, Moxiecode Systems AB - * Released under GPL License. - * - * License: http://www.plupload.com/license - * Contributing: http://www.plupload.com/contributing - */ - -define('moxie/file/File', [ - 'moxie/core/utils/Basic', - 'moxie/core/utils/Mime', - 'moxie/file/Blob' -], function(Basic, Mime, Blob) { - /** - @class File - @extends Blob - @constructor - @param {String} ruid Unique id of the runtime, to which this blob belongs to - @param {Object} file Object "Native" file object, as it is represented in the runtime - */ - function File(ruid, file) { - var name, type; - - if (!file) { // avoid extra errors in case we overlooked something - file = {}; - } - - // figure out the type - if (file.type && file.type !== '') { - type = file.type; - } else { - type = Mime.getFileMime(file.name); - } - - // sanitize file name or generate new one - if (file.name) { - name = file.name.replace(/\\/g, '/'); - name = name.substr(name.lastIndexOf('/') + 1); - } else { - var prefix = type.split('/')[0]; - name = Basic.guid((prefix !== '' ? prefix : 'file') + '_'); - - if (Mime.extensions[type]) { - name += '.' + Mime.extensions[type][0]; // append proper extension if possible - } - } - - Blob.apply(this, arguments); - - Basic.extend(this, { - /** - File mime type - - @property type - @type {String} - @default '' - */ - type: type || '', - - /** - File name - - @property name - @type {String} - @default UID - */ - name: name || Basic.guid('file_'), - - /** - Date of last modification - - @property lastModifiedDate - @type {String} - @default now - */ - lastModifiedDate: file.lastModifiedDate || (new Date()).toLocaleString() // Thu Aug 23 2012 19:40:00 GMT+0400 (GET) - }); - } - - File.prototype = Blob.prototype; - - return File; -}); - -// Included from: src/javascript/file/FileInput.js - -/** - * FileInput.js - * - * Copyright 2013, Moxiecode Systems AB - * Released under GPL License. - * - * License: http://www.plupload.com/license - * Contributing: http://www.plupload.com/contributing - */ - -define('moxie/file/FileInput', [ - 'moxie/core/utils/Basic', - 'moxie/core/utils/Mime', - 'moxie/core/utils/Dom', - 'moxie/core/Exceptions', - 'moxie/core/EventTarget', - 'moxie/core/I18n', - 'moxie/file/File', - 'moxie/runtime/Runtime', - 'moxie/runtime/RuntimeClient' -], function(Basic, Mime, Dom, x, EventTarget, I18n, File, Runtime, RuntimeClient) { +], function(Basic, Env, Mime, Dom, x, EventTarget, I18n, Runtime, RuntimeClient) { /** Provides a convenient way to create cross-browser file-picker. Generates file selection dialog on click, converts selected files to _File_ objects, to be used in conjunction with _Image_, preloaded in memory @@ -3304,6 +3006,10 @@ define('moxie/file/FileInput', [ ]; function FileInput(options) { + if (MXI_DEBUG) { + Env.log("Instantiating FileInput..."); + } + var self = this, container, browseButton, defaults; @@ -3389,128 +3095,559 @@ define('moxie/file/FileInput', [ shimid: null, /** - Array of selected mOxie.File objects + Array of selected mOxie.File objects + + @property files + @type {Array} + @default null + */ + files: null, + + /** + Initializes the file-picker, connects it to runtime and dispatches event ready when done. + + @method init + */ + init: function() { + self.bind('RuntimeInit', function(e, runtime) { + self.ruid = runtime.uid; + self.shimid = runtime.shimid; + + self.bind("Ready", function() { + self.trigger("Refresh"); + }, 999); + + // re-position and resize shim container + self.bind('Refresh', function() { + var pos, size, browseButton, shimContainer; + + browseButton = Dom.get(options.browse_button); + shimContainer = Dom.get(runtime.shimid); // do not use runtime.getShimContainer(), since it will create container if it doesn't exist + + if (browseButton) { + pos = Dom.getPos(browseButton, Dom.get(options.container)); + size = Dom.getSize(browseButton); + + if (shimContainer) { + Basic.extend(shimContainer.style, { + top : pos.y + 'px', + left : pos.x + 'px', + width : size.w + 'px', + height : size.h + 'px' + }); + } + } + shimContainer = browseButton = null; + }); + + runtime.exec.call(self, 'FileInput', 'init', options); + }); + + // runtime needs: options.required_features, options.runtime_order and options.container + self.connectRuntime(Basic.extend({}, options, { + required_caps: { + select_file: true + } + })); + }, + + /** + Disables file-picker element, so that it doesn't react to mouse clicks. + + @method disable + @param {Boolean} [state=true] Disable component if - true, enable if - false + */ + disable: function(state) { + var runtime = this.getRuntime(); + if (runtime) { + runtime.exec.call(this, 'FileInput', 'disable', Basic.typeOf(state) === 'undefined' ? true : state); + } + }, + + + /** + Reposition and resize dialog trigger to match the position and size of browse_button element. + + @method refresh + */ + refresh: function() { + self.trigger("Refresh"); + }, + + + /** + Destroy component. + + @method destroy + */ + destroy: function() { + var runtime = this.getRuntime(); + if (runtime) { + runtime.exec.call(this, 'FileInput', 'destroy'); + this.disconnectRuntime(); + } + + if (Basic.typeOf(this.files) === 'array') { + // no sense in leaving associated files behind + Basic.each(this.files, function(file) { + file.destroy(); + }); + } + this.files = null; + + this.unbindAll(); + } + }); + + this.handleEventProps(dispatches); + } + + FileInput.prototype = EventTarget.instance; + + return FileInput; +}); + +// Included from: src/javascript/core/utils/Encode.js + +/** + * Encode.js + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + */ + +define('moxie/core/utils/Encode', [], function() { + + /** + Encode string with UTF-8 + + @method utf8_encode + @for Utils + @static + @param {String} str String to encode + @return {String} UTF-8 encoded string + */ + var utf8_encode = function(str) { + return unescape(encodeURIComponent(str)); + }; + + /** + Decode UTF-8 encoded string + + @method utf8_decode + @static + @param {String} str String to decode + @return {String} Decoded string + */ + var utf8_decode = function(str_data) { + return decodeURIComponent(escape(str_data)); + }; + + /** + Decode Base64 encoded string (uses browser's default method if available), + from: https://raw.github.com/kvz/phpjs/master/functions/url/base64_decode.js + + @method atob + @static + @param {String} data String to decode + @return {String} Decoded string + */ + var atob = function(data, utf8) { + if (typeof(window.atob) === 'function') { + return utf8 ? utf8_decode(window.atob(data)) : window.atob(data); + } + + // http://kevin.vanzonneveld.net + // + original by: Tyler Akins (http://rumkin.com) + // + improved by: Thunder.m + // + input by: Aman Gupta + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + bugfixed by: Onno Marsman + // + bugfixed by: Pellentesque Malesuada + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + input by: Brett Zamir (http://brett-zamir.me) + // + bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // * example 1: base64_decode('S2V2aW4gdmFuIFpvbm5ldmVsZA=='); + // * returns 1: 'Kevin van Zonneveld' + // mozilla has this native + // - but breaks in 2.0.0.12! + //if (typeof this.window.atob == 'function') { + // return atob(data); + //} + var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, + ac = 0, + dec = "", + tmp_arr = []; + + if (!data) { + return data; + } + + data += ''; + + do { // unpack four hexets into three octets using index points in b64 + h1 = b64.indexOf(data.charAt(i++)); + h2 = b64.indexOf(data.charAt(i++)); + h3 = b64.indexOf(data.charAt(i++)); + h4 = b64.indexOf(data.charAt(i++)); + + bits = h1 << 18 | h2 << 12 | h3 << 6 | h4; + + o1 = bits >> 16 & 0xff; + o2 = bits >> 8 & 0xff; + o3 = bits & 0xff; + + if (h3 == 64) { + tmp_arr[ac++] = String.fromCharCode(o1); + } else if (h4 == 64) { + tmp_arr[ac++] = String.fromCharCode(o1, o2); + } else { + tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); + } + } while (i < data.length); + + dec = tmp_arr.join(''); + + return utf8 ? utf8_decode(dec) : dec; + }; + + /** + Base64 encode string (uses browser's default method if available), + from: https://raw.github.com/kvz/phpjs/master/functions/url/base64_encode.js + + @method btoa + @static + @param {String} data String to encode + @return {String} Base64 encoded string + */ + var btoa = function(data, utf8) { + if (utf8) { + data = utf8_encode(data); + } + + if (typeof(window.btoa) === 'function') { + return window.btoa(data); + } + + // http://kevin.vanzonneveld.net + // + original by: Tyler Akins (http://rumkin.com) + // + improved by: Bayron Guevara + // + improved by: Thunder.m + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + bugfixed by: Pellentesque Malesuada + // + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) + // + improved by: Rafał Kukawski (http://kukawski.pl) + // * example 1: base64_encode('Kevin van Zonneveld'); + // * returns 1: 'S2V2aW4gdmFuIFpvbm5ldmVsZA==' + // mozilla has this native + // - but breaks in 2.0.0.12! + var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, + ac = 0, + enc = "", + tmp_arr = []; + + if (!data) { + return data; + } + + do { // pack three octets into four hexets + o1 = data.charCodeAt(i++); + o2 = data.charCodeAt(i++); + o3 = data.charCodeAt(i++); + + bits = o1 << 16 | o2 << 8 | o3; + + h1 = bits >> 18 & 0x3f; + h2 = bits >> 12 & 0x3f; + h3 = bits >> 6 & 0x3f; + h4 = bits & 0x3f; + + // use hexets to index into b64, and append result to encoded string + tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4); + } while (i < data.length); + + enc = tmp_arr.join(''); + + var r = data.length % 3; + + return (r ? enc.slice(0, r - 3) : enc) + '==='.slice(r || 3); + }; + + + return { + utf8_encode: utf8_encode, + utf8_decode: utf8_decode, + atob: atob, + btoa: btoa + }; +}); + +// Included from: src/javascript/file/Blob.js + +/** + * Blob.js + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + */ + +define('moxie/file/Blob', [ + 'moxie/core/utils/Basic', + 'moxie/core/utils/Encode', + 'moxie/runtime/RuntimeClient' +], function(Basic, Encode, RuntimeClient) { + + var blobpool = {}; + + /** + @class Blob + @constructor + @param {String} ruid Unique id of the runtime, to which this blob belongs to + @param {Object} blob Object "Native" blob object, as it is represented in the runtime + */ + function Blob(ruid, blob) { + + function _sliceDetached(start, end, type) { + var blob, data = blobpool[this.uid]; + + if (Basic.typeOf(data) !== 'string' || !data.length) { + return null; // or throw exception + } + + blob = new Blob(null, { + type: type, + size: end - start + }); + blob.detach(data.substr(start, blob.size)); + + return blob; + } + + RuntimeClient.call(this); + + if (ruid) { + this.connectRuntime(ruid); + } + + if (!blob) { + blob = {}; + } else if (Basic.typeOf(blob) === 'string') { // dataUrl or binary string + blob = { data: blob }; + } + + Basic.extend(this, { + + /** + Unique id of the component + + @property uid + @type {String} + */ + uid: blob.uid || Basic.guid('uid_'), + + /** + Unique id of the connected runtime, if falsy, then runtime will have to be initialized + before this Blob can be used, modified or sent + + @property ruid + @type {String} + */ + ruid: ruid, + + /** + Size of blob + + @property size + @type {Number} + @default 0 + */ + size: blob.size || 0, + + /** + Mime type of blob + + @property type + @type {String} + @default '' + */ + type: blob.type || '', + + /** + @method slice + @param {Number} [start=0] + */ + slice: function(start, end, type) { + if (this.isDetached()) { + return _sliceDetached.apply(this, arguments); + } + return this.getRuntime().exec.call(this, 'Blob', 'slice', this.getSource(), start, end, type); + }, + + /** + Returns "native" blob object (as it is represented in connected runtime) or null if not found - @property files - @type {Array} - @default null + @method getSource + @return {Blob} Returns "native" blob object or null if not found */ - files: null, + getSource: function() { + if (!blobpool[this.uid]) { + return null; + } + return blobpool[this.uid]; + }, - /** - Initializes the file-picker, connects it to runtime and dispatches event ready when done. + /** + Detaches blob from any runtime that it depends on and initialize with standalone value - @method init + @method detach + @protected + @param {DOMString} [data=''] Standalone value */ - init: function() { - self.convertEventPropsToHandlers(dispatches); + detach: function(data) { + if (this.ruid) { + this.getRuntime().exec.call(this, 'Blob', 'destroy'); + this.disconnectRuntime(); + this.ruid = null; + } - self.bind('RuntimeInit', function(e, runtime) { - self.ruid = runtime.uid; - self.shimid = runtime.shimid; + data = data || ''; - self.bind("Ready", function() { - self.trigger("Refresh"); - }, 999); + // if dataUrl, convert to binary string + if (data.substr(0, 5) == 'data:') { + var base64Offset = data.indexOf(';base64,'); + this.type = data.substring(5, base64Offset); + data = Encode.atob(data.substring(base64Offset + 8)); + } - self.bind("Change", function() { - var files = runtime.exec.call(self, 'FileInput', 'getFiles'); + this.size = data.length; - self.files = []; + blobpool[this.uid] = data; + }, - Basic.each(files, function(file) { - // ignore empty files (IE10 for example hangs if you try to send them via XHR) - if (file.size === 0) { - return true; - } - self.files.push(new File(self.ruid, file)); - }); - }, 999); + /** + Checks if blob is standalone (detached of any runtime) + + @method isDetached + @protected + @return {Boolean} + */ + isDetached: function() { + return !this.ruid && Basic.typeOf(blobpool[this.uid]) === 'string'; + }, + + /** + Destroy Blob and free any resources it was using - // re-position and resize shim container - self.bind('Refresh', function() { - var pos, size, browseButton, shimContainer; - - browseButton = Dom.get(options.browse_button); - shimContainer = Dom.get(runtime.shimid); // do not use runtime.getShimContainer(), since it will create container if it doesn't exist + @method destroy + */ + destroy: function() { + this.detach(); + delete blobpool[this.uid]; + } + }); - if (browseButton) { - pos = Dom.getPos(browseButton, Dom.get(options.container)); - size = Dom.getSize(browseButton); + + if (blob.data) { + this.detach(blob.data); // auto-detach if payload has been passed + } else { + blobpool[this.uid] = blob; + } + } + + return Blob; +}); - if (shimContainer) { - Basic.extend(shimContainer.style, { - top : pos.y + 'px', - left : pos.x + 'px', - width : size.w + 'px', - height : size.h + 'px' - }); - } - } - shimContainer = browseButton = null; - }); - - runtime.exec.call(self, 'FileInput', 'init', options); - }); +// Included from: src/javascript/file/File.js - // runtime needs: options.required_features, options.runtime_order and options.container - self.connectRuntime(Basic.extend({}, options, { - required_caps: { - select_file: true - } - })); - }, +/** + * File.js + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + */ - /** - Disables file-picker element, so that it doesn't react to mouse clicks. +define('moxie/file/File', [ + 'moxie/core/utils/Basic', + 'moxie/core/utils/Mime', + 'moxie/file/Blob' +], function(Basic, Mime, Blob) { + /** + @class File + @extends Blob + @constructor + @param {String} ruid Unique id of the runtime, to which this blob belongs to + @param {Object} file Object "Native" file object, as it is represented in the runtime + */ + function File(ruid, file) { + if (!file) { // avoid extra errors in case we overlooked something + file = {}; + } - @method disable - @param {Boolean} [state=true] Disable component if - true, enable if - false - */ - disable: function(state) { - var runtime = this.getRuntime(); - if (runtime) { - runtime.exec.call(this, 'FileInput', 'disable', Basic.typeOf(state) === 'undefined' ? true : state); - } - }, + Blob.apply(this, arguments); + if (!this.type) { + this.type = Mime.getFileMime(file.name); + } + // sanitize file name or generate new one + var name; + if (file.name) { + name = file.name.replace(/\\/g, '/'); + name = name.substr(name.lastIndexOf('/') + 1); + } else if (this.type) { + var prefix = this.type.split('/')[0]; + name = Basic.guid((prefix !== '' ? prefix : 'file') + '_'); + + if (Mime.extensions[this.type]) { + name += '.' + Mime.extensions[this.type][0]; // append proper extension if possible + } + } + + + Basic.extend(this, { /** - Reposition and resize dialog trigger to match the position and size of browse_button element. + File name - @method refresh + @property name + @type {String} + @default UID */ - refresh: function() { - self.trigger("Refresh"); - }, - + name: name || Basic.guid('file_'), /** - Destroy component. + Relative path to the file inside a directory - @method destroy + @property relativePath + @type {String} + @default '' */ - destroy: function() { - var runtime = this.getRuntime(); - if (runtime) { - runtime.exec.call(this, 'FileInput', 'destroy'); - this.disconnectRuntime(); - } + relativePath: '', + + /** + Date of last modification - if (Basic.typeOf(this.files) === 'array') { - // no sense in leaving associated files behind - Basic.each(this.files, function(file) { - file.destroy(); - }); - } - this.files = null; - } + @property lastModifiedDate + @type {String} + @default now + */ + lastModifiedDate: file.lastModifiedDate || (new Date()).toLocaleString() // Thu Aug 23 2012 19:40:00 GMT+0400 (GET) }); } - FileInput.prototype = EventTarget.instance; + File.prototype = Blob.prototype; - return FileInput; + return File; }); // Included from: src/javascript/file/FileDrop.js @@ -3530,11 +3667,12 @@ define('moxie/file/FileDrop', [ 'moxie/core/utils/Dom', 'moxie/core/Exceptions', 'moxie/core/utils/Basic', + 'moxie/core/utils/Env', 'moxie/file/File', 'moxie/runtime/RuntimeClient', 'moxie/core/EventTarget', 'moxie/core/utils/Mime' -], function(I18n, Dom, x, Basic, File, RuntimeClient, EventTarget, Mime) { +], function(I18n, Dom, x, Basic, Env, File, RuntimeClient, EventTarget, Mime) { /** Turn arbitrary DOM element to a drop zone accepting files. Converts selected files to _File_ objects, to be used in conjunction with _Image_, preloaded in memory with _FileReader_ or uploaded to a server through @@ -3611,6 +3749,10 @@ define('moxie/file/FileDrop', [ ]; function FileDrop(options) { + if (MXI_DEBUG) { + Env.log("Instantiating FileDrop..."); + } + var self = this, defaults; // if flat argument passed it should be drop_zone id @@ -3653,25 +3795,10 @@ define('moxie/file/FileDrop', [ files: null, - init: function() { - - self.convertEventPropsToHandlers(dispatches); - + init: function() { self.bind('RuntimeInit', function(e, runtime) { self.ruid = runtime.uid; - - self.bind("Drop", function() { - var files = runtime.exec.call(self, 'FileDrop', 'getFiles'); - - self.files = []; - - Basic.each(files, function(file) { - self.files.push(new File(self.ruid, file)); - }); - }, 999); - runtime.exec.call(self, 'FileDrop', 'init', options); - self.dispatchEvent('ready'); }); @@ -3686,8 +3813,12 @@ define('moxie/file/FileDrop', [ this.disconnectRuntime(); } this.files = null; + + this.unbindAll(); } }); + + this.handleEventProps(dispatches); } FileDrop.prototype = EventTarget.instance; @@ -3695,48 +3826,6 @@ define('moxie/file/FileDrop', [ return FileDrop; }); -// Included from: src/javascript/runtime/RuntimeTarget.js - -/** - * RuntimeTarget.js - * - * Copyright 2013, Moxiecode Systems AB - * Released under GPL License. - * - * License: http://www.plupload.com/license - * Contributing: http://www.plupload.com/contributing - */ - -define('moxie/runtime/RuntimeTarget', [ - 'moxie/core/utils/Basic', - 'moxie/runtime/RuntimeClient', - "moxie/core/EventTarget" -], function(Basic, RuntimeClient, EventTarget) { - /** - Instance of this class can be used as a target for the events dispatched by shims, - when allowing them onto components is for either reason inappropriate - - @class RuntimeTarget - @constructor - @protected - @extends EventTarget - */ - function RuntimeTarget() { - this.uid = Basic.guid('uid_'); - - RuntimeClient.call(this); - - this.destroy = function() { - this.disconnectRuntime(); - this.unbindAll(); - }; - } - - RuntimeTarget.prototype = EventTarget.instance; - - return RuntimeTarget; -}); - // Included from: src/javascript/file/FileReader.js /** @@ -3755,9 +3844,8 @@ define('moxie/file/FileReader', [ 'moxie/core/Exceptions', 'moxie/core/EventTarget', 'moxie/file/Blob', - 'moxie/file/File', - 'moxie/runtime/RuntimeTarget' -], function(Basic, Encode, x, EventTarget, Blob, File, RuntimeTarget) { + 'moxie/runtime/RuntimeClient' +], function(Basic, Encode, x, EventTarget, Blob, RuntimeClient) { /** Utility for preloading o.Blob/o.File objects in memory. By design closely follows [W3C FileReader](http://www.w3.org/TR/FileAPI/#dfn-filereader) interface. Where possible uses native FileReader, where - not falls back to shims. @@ -3819,8 +3907,9 @@ define('moxie/file/FileReader', [ ]; function FileReader() { - var self = this, _fr; - + + RuntimeClient.call(this); + Basic.extend(this, { /** UID of the component instance. @@ -3900,9 +3989,7 @@ define('moxie/file/FileReader', [ this.readyState = FileReader.DONE; } - if (_fr) { - _fr.getRuntime().exec.call(this, 'FileReader', 'abort'); - } + this.exec('FileReader', 'abort'); this.trigger('abort'); this.trigger('loadend'); @@ -3915,83 +4002,63 @@ define('moxie/file/FileReader', [ */ destroy: function() { this.abort(); - - if (_fr) { - _fr.getRuntime().exec.call(this, 'FileReader', 'destroy'); - _fr.disconnectRuntime(); - } - - self = _fr = null; + this.exec('FileReader', 'destroy'); + this.disconnectRuntime(); + this.unbindAll(); } }); - - - function _read(op, blob) { - _fr = new RuntimeTarget(); - function error(err) { - self.readyState = FileReader.DONE; - self.error = err; - self.trigger('error'); - loadEnd(); - } + // uid must already be assigned + this.handleEventProps(dispatches); - function loadEnd() { - _fr.destroy(); - _fr = null; - self.trigger('loadend'); - } + this.bind('Error', function(e, err) { + this.readyState = FileReader.DONE; + this.error = err; + }, 999); + + this.bind('Load', function(e) { + this.readyState = FileReader.DONE; + }, 999); - function exec(runtime) { - _fr.bind('Error', function(e, err) { - error(err); - }); + + function _read(op, blob) { + var self = this; - _fr.bind('Progress', function(e) { - self.result = runtime.exec.call(_fr, 'FileReader', 'getResult'); - self.trigger(e); - }); - - _fr.bind('Load', function(e) { - self.readyState = FileReader.DONE; - self.result = runtime.exec.call(_fr, 'FileReader', 'getResult'); - self.trigger(e); - loadEnd(); - }); + this.trigger('loadstart'); - runtime.exec.call(_fr, 'FileReader', 'read', op, blob); + if (this.readyState === FileReader.LOADING) { + this.trigger('error', new x.DOMException(x.DOMException.INVALID_STATE_ERR)); + this.trigger('loadend'); + return; } - this.convertEventPropsToHandlers(dispatches); - - if (this.readyState === FileReader.LOADING) { - return error(new x.DOMException(x.DOMException.INVALID_STATE_ERR)); + // if source is not o.Blob/o.File + if (!(blob instanceof Blob)) { + this.trigger('error', new x.DOMException(x.DOMException.NOT_FOUND_ERR)); + this.trigger('loadend'); + return; } + this.result = null; this.readyState = FileReader.LOADING; - this.trigger('loadstart'); - - // if source is o.Blob/o.File - if (blob instanceof Blob) { - if (blob.isDetached()) { - var src = blob.getSource(); - switch (op) { - case 'readAsText': - case 'readAsBinaryString': - this.result = src; - break; - case 'readAsDataURL': - this.result = 'data:' + blob.type + ';base64,' + Encode.btoa(src); - break; - } - this.readyState = FileReader.DONE; - this.trigger('load'); - loadEnd(); - } else { - exec(_fr.connectRuntime(blob.ruid)); + + if (blob.isDetached()) { + var src = blob.getSource(); + switch (op) { + case 'readAsText': + case 'readAsBinaryString': + this.result = src; + break; + case 'readAsDataURL': + this.result = 'data:' + blob.type + ';base64,' + Encode.btoa(src); + break; } + this.readyState = FileReader.DONE; + this.trigger('load'); + this.trigger('loadend'); } else { - error(new x.DOMException(x.DOMException.NOT_FOUND_ERR)); + this.connectRuntime(blob.ruid); + this.exec('FileReader', 'read', op, blob); } } } @@ -4065,7 +4132,7 @@ define('moxie/core/utils/Url', [], function() { https: 443 } , uri = {} - , regex = /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/ + , regex = /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/ , m = regex.exec(url || '') ; @@ -4091,10 +4158,11 @@ define('moxie/core/utils/Url', [], function() { if (/^[^\/]/.test(uri.path)) { path = currentUrl.path; // if path ends with a filename, strip it - if (!/(\/|\/[^\.]+)$/.test(path)) { + if (/\/[^\/]*\.[^\/]*$/.test(path)) { path = path.replace(/\/[^\/]+$/, '/'); } else { - path += '/'; + // avoid double slash at the end (see #127) + path = path.replace(/\/?$/, '/'); } } uri.path = path + (uri.path || ''); // site may reside at domain.com or domain.com/subdir @@ -4120,7 +4188,7 @@ define('moxie/core/utils/Url', [], function() { @method resolveUrl @static - @param {String} url Either absolute or relative + @param {String|Object} url Either absolute or relative, or a result of parseUrl call @return {String} Resolved, absolute url */ var resolveUrl = function(url) { @@ -4128,7 +4196,7 @@ define('moxie/core/utils/Url', [], function() { http: 80, https: 443 } - , urlp = parseUrl(url) + , urlp = typeof(url) === 'string' ? parseUrl(url) : url ; return urlp.scheme + '://' + urlp.host + (urlp.port !== ports[urlp.scheme] ? ':' + urlp.port : '') + urlp.path + (urlp.query ? urlp.query : ''); @@ -4160,6 +4228,48 @@ define('moxie/core/utils/Url', [], function() { }; }); +// Included from: src/javascript/runtime/RuntimeTarget.js + +/** + * RuntimeTarget.js + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + */ + +define('moxie/runtime/RuntimeTarget', [ + 'moxie/core/utils/Basic', + 'moxie/runtime/RuntimeClient', + "moxie/core/EventTarget" +], function(Basic, RuntimeClient, EventTarget) { + /** + Instance of this class can be used as a target for the events dispatched by shims, + when allowing them onto components is for either reason inappropriate + + @class RuntimeTarget + @constructor + @protected + @extends EventTarget + */ + function RuntimeTarget() { + this.uid = Basic.guid('uid_'); + + RuntimeClient.call(this); + + this.destroy = function() { + this.disconnectRuntime(); + this.unbindAll(); + }; + } + + RuntimeTarget.prototype = EventTarget.instance; + + return RuntimeTarget; +}); + // Included from: src/javascript/file/FileReaderSync.js /** @@ -4451,7 +4561,23 @@ define("moxie/xhr/XMLHttpRequest", [ @uses RuntimeClient @extends EventTarget */ - var dispatches = ['loadstart', 'progress', 'abort', 'error', 'load', 'timeout', 'loadend']; // & readystatechange (for historical reasons) + var dispatches = [ + 'loadstart', + + 'progress', + + 'abort', + + 'error', + + 'load', + + 'timeout', + + 'loadend' + + // readystatechange (for historical reasons) + ]; var NATIVE = 1, RUNTIME = 2; @@ -4693,7 +4819,6 @@ define("moxie/xhr/XMLHttpRequest", [ _p('readyState', XMLHttpRequest.OPENED); // 20 - this.convertEventPropsToHandlers(['readystatechange']); // unify event handlers this.dispatchEvent('readystatechange'); }, @@ -4870,9 +4995,6 @@ define("moxie/xhr/XMLHttpRequest", [ } else { _options = options; } - - this.convertEventPropsToHandlers(dispatches); - this.upload.convertEventPropsToHandlers(dispatches); // 1-2 if (this.readyState !== XMLHttpRequest.OPENED || _send_flag) { @@ -4973,6 +5095,9 @@ define("moxie/xhr/XMLHttpRequest", [ } }); + this.handleEventProps(dispatches.concat(['readystatechange'])); // for historical reasons + this.upload.handleEventProps(dispatches); + /* this is nice, but maybe too lengthy // if supported by JS version, set getters/setters for specific properties @@ -5264,6 +5389,10 @@ define("moxie/xhr/XMLHttpRequest", [ _options.required_caps.send_multipart = true; } + if (!Basic.isEmptyObj(_headers)) { + _options.required_caps.send_custom_headers = true; + } + if (!_same_origin_flag) { _options.required_caps.do_cors = true; } @@ -5507,6 +5636,7 @@ define("moxie/image/Image", [ ]; function Image() { + RuntimeClient.call(this); Basic.extend(this, { @@ -5619,13 +5749,6 @@ define("moxie/image/Image", [ @param {Boolean|Object} [mixed] */ load: function() { - // this is here because to bind properly we need an uid first, which is created above - this.bind('Load Resize', function() { - _updateInfo.call(this); - }, 999); - - this.convertEventPropsToHandlers(dispatches); - _load.apply(this, arguments); }, @@ -5633,22 +5756,28 @@ define("moxie/image/Image", [ Downsizes the image to fit the specified width/height. If crop is supplied, image will be cropped to exact dimensions. @method downsize - @param {Number} width Resulting width - @param {Number} [height=width] Resulting height (optional, if not supplied will default to width) - @param {Boolean} [crop=false] Whether to crop the image to exact dimensions - @param {Boolean} [preserveHeaders=true] Whether to preserve meta headers (on JPEGs after resize) + @param {Object} opts + @param {Number} opts.width Resulting width + @param {Number} [opts.height=width] Resulting height (optional, if not supplied will default to width) + @param {Boolean} [opts.crop=false] Whether to crop the image to exact dimensions + @param {Boolean} [opts.preserveHeaders=true] Whether to preserve meta headers (on JPEGs after resize) + @param {String} [opts.resample=false] Resampling algorithm to use for resizing */ downsize: function(opts) { var defaults = { width: this.width, height: this.height, + type: this.type || 'image/jpeg', + quality: 90, crop: false, - preserveHeaders: true + preserveHeaders: true, + resample: false }; if (typeof(opts) === 'object') { opts = Basic.extend(defaults, opts); } else { + // for backward compatibility opts = Basic.extend(defaults, { width: arguments[0], height: arguments[1], @@ -5667,7 +5796,7 @@ define("moxie/image/Image", [ throw new x.ImageError(x.ImageError.MAX_RESOLUTION_ERR); } - this.getRuntime().exec.call(this, 'Image', 'downsize', opts.width, opts.height, opts.crop, opts.preserveHeaders); + this.exec('Image', 'downsize', opts.width, opts.height, opts.crop, opts.preserveHeaders); } catch(ex) { // for now simply trigger error event this.trigger('error', ex.code); @@ -5708,16 +5837,7 @@ define("moxie/image/Image", [ if (!this.size) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } - - if (!type) { - type = 'image/jpeg'; - } - - if (type === 'image/jpeg' && !quality) { - quality = 90; - } - - return this.getRuntime().exec.call(this, 'Image', 'getAsBlob', type, quality); + return this.exec('Image', 'getAsBlob', type || 'image/jpeg', quality || 90); }, /** @@ -5733,7 +5853,7 @@ define("moxie/image/Image", [ if (!this.size) { throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } - return this.getRuntime().exec.call(this, 'Image', 'getAsDataURL', type, quality); + return this.exec('Image', 'getAsDataURL', type || 'image/jpeg', quality || 90); }, /** @@ -5757,44 +5877,49 @@ define("moxie/image/Image", [ @method embed @param {DOMElement} el DOM element to insert the image object into - @param {Object} [options] - @param {Number} [options.width] The width of an embed (defaults to the image width) - @param {Number} [options.height] The height of an embed (defaults to the image height) + @param {Object} [opts] + @param {Number} [opts.width] The width of an embed (defaults to the image width) + @param {Number} [opts.height] The height of an embed (defaults to the image height) @param {String} [type="image/jpeg"] Mime type @param {Number} [quality=90] Quality of an embed, if mime type is image/jpeg @param {Boolean} [crop=false] Whether to crop an embed to the specified dimensions */ - embed: function(el) { + embed: function(el, opts) { var self = this - , imgCopy - , type, quality, crop - , options = arguments[1] || {} - , width = this.width - , height = this.height , runtime // this has to be outside of all the closures to contain proper runtime ; - function onResize() { + opts = Basic.extend({ + width: this.width, + height: this.height, + type: this.type || 'image/jpeg', + quality: 90 + }, opts || {}); + + + function render(type, quality) { + var img = this; + // if possible, embed a canvas element directly if (Env.can('create_canvas')) { - var canvas = imgCopy.getAsCanvas(); + var canvas = img.getAsCanvas(); if (canvas) { el.appendChild(canvas); canvas = null; - imgCopy.destroy(); + img.destroy(); self.trigger('embedded'); return; } } - var dataUrl = imgCopy.getAsDataURL(type, quality); + var dataUrl = img.getAsDataURL(type, quality); if (!dataUrl) { throw new x.ImageError(x.ImageError.WRONG_FORMAT); } if (Env.can('use_data_uri_of', dataUrl.length)) { - el.innerHTML = ''; - imgCopy.destroy(); + el.innerHTML = ''; + img.destroy(); self.trigger('embedded'); } else { var tr = new Transporter(); @@ -5808,8 +5933,8 @@ define("moxie/image/Image", [ //position: 'relative', top: '0px', left: '0px', - width: imgCopy.width + 'px', - height: imgCopy.height + 'px' + width: img.width + 'px', + height: img.height + 'px' }); // some shims (Flash/SilverLight) reinitialize, if parent element is hidden, reordered or it's @@ -5821,20 +5946,20 @@ define("moxie/image/Image", [ onResize.call(self); // re-feed our image data });*/ - runtime = null; + runtime = null; // release }, 999); runtime.exec.call(self, "ImageView", "display", this.result.uid, width, height); - imgCopy.destroy(); + img.destroy(); }); - tr.transport(Encode.atob(dataUrl.substring(dataUrl.indexOf('base64,') + 7)), type, Basic.extend({}, options, { + tr.transport(Encode.atob(dataUrl.substring(dataUrl.indexOf('base64,') + 7)), type, { required_caps: { display_media: true }, runtime_order: 'flash,silverlight', container: el - })); + }); } } @@ -5846,39 +5971,28 @@ define("moxie/image/Image", [ if (!this.size) { // only preloaded image objects can be used as source throw new x.DOMException(x.DOMException.INVALID_STATE_ERR); } - + + // high-resolution images cannot be consistently handled across the runtimes if (this.width > Image.MAX_RESIZE_WIDTH || this.height > Image.MAX_RESIZE_HEIGHT) { - throw new x.ImageError(x.ImageError.MAX_RESOLUTION_ERR); - } - - type = options.type || this.type || 'image/jpeg'; - quality = options.quality || 90; - crop = Basic.typeOf(options.crop) !== 'undefined' ? options.crop : false; - - // figure out dimensions for the thumb - if (options.width) { - width = options.width; - height = options.height || width; - } else { - // if container element has measurable dimensions, use them - var dimensions = Dom.getSize(el); - if (dimensions.w && dimensions.h) { // both should be > 0 - width = dimensions.w; - height = dimensions.h; - } + //throw new x.ImageError(x.ImageError.MAX_RESOLUTION_ERR); } - imgCopy = new Image(); + var imgCopy = new Image(); imgCopy.bind("Resize", function() { - onResize.call(self); + render.call(this, opts.type, opts.quality); }); imgCopy.bind("Load", function() { - imgCopy.downsize(width, height, crop, false); + imgCopy.downsize(opts); }); - imgCopy.clone(this, false); + // if embedded thumb data is available and dimensions are big enough, use it + if (this.meta.thumb && this.meta.thumb.width >= opts.width && this.meta.thumb.height >= opts.height) { + imgCopy.load(this.meta.thumb.data); + } else { + imgCopy.clone(this, false); + } return imgCopy; } catch(ex) { @@ -5902,9 +6016,17 @@ define("moxie/image/Image", [ }); + // this is here, because in order to bind properly, we need uid, which is created above + this.handleEventProps(dispatches); + + this.bind('Load Resize', function() { + _updateInfo.call(this); + }, 999); + + function _updateInfo(info) { if (!info) { - info = this.getRuntime().exec.call(this, 'Image', 'getInfo'); + info = this.exec('Image', 'getInfo'); } this.size = info.size; @@ -6039,8 +6161,8 @@ define("moxie/image/Image", [ } // virtual world will crash on you if image has a resolution higher than this: - Image.MAX_RESIZE_WIDTH = 6500; - Image.MAX_RESIZE_HEIGHT = 6500; + Image.MAX_RESIZE_WIDTH = 8192; + Image.MAX_RESIZE_HEIGHT = 8192; Image.prototype = EventTarget.instance; @@ -6096,7 +6218,7 @@ define("moxie/runtime/html5/Runtime", [ return (('draggable' in div) || ('ondragstart' in div && 'ondrop' in div)) && (Env.browser !== 'IE' || Env.version > 9); }()), filter_by_extension: Test(function() { // if you know how to feature-detect this, please suggest - return (Env.browser === 'Chrome' && Env.version >= 28) || (Env.browser === 'IE' && Env.version >= 10); + return (Env.browser === 'Chrome' && Env.version >= 28) || (Env.browser === 'IE' && Env.version >= 10) || (Env.browser === 'Safari' && Env.version >= 7); }()), return_response_headers: True, return_response_type: function(responseType) { @@ -6118,9 +6240,9 @@ define("moxie/runtime/html5/Runtime", [ }, select_multiple: function() { // it is buggy on Safari Windows and iOS - return I.can('select_file') && - !(Env.browser === 'Safari' && Env.os === 'Windows') && - !(Env.os === 'iOS' && Env.verComp(Env.osVersion, "7.0.4", '<')); + return I.can('select_file') && + !(Env.browser === 'Safari' && Env.os === 'Windows') && + !(Env.os === 'iOS' && Env.verComp(Env.osVersion, "7.0.0", '>') && Env.verComp(Env.osVersion, "8.0.0", '<')); }, send_binary_string: Test(window.XMLHttpRequest && (new XMLHttpRequest().sendAsBinary || (window.Uint8Array && window.ArrayBuffer))), send_custom_headers: Test(window.XMLHttpRequest), @@ -6131,12 +6253,14 @@ define("moxie/runtime/html5/Runtime", [ stream_upload: function(){ return I.can('slice_blob') && I.can('send_multipart'); }, - summon_file_dialog: Test(function() { // yeah... some dirty sniffing here... - return (Env.browser === 'Firefox' && Env.version >= 4) || + summon_file_dialog: function() { // yeah... some dirty sniffing here... + return I.can('select_file') && ( + (Env.browser === 'Firefox' && Env.version >= 4) || (Env.browser === 'Opera' && Env.version >= 12) || (Env.browser === 'IE' && Env.version >= 10) || - !!~Basic.inArray(Env.browser, ['Chrome', 'Safari']); - }()), + !!~Basic.inArray(Env.browser, ['Chrome', 'Safari']) + ); + }, upload_filesize: True }, arguments[2] @@ -6167,55 +6291,6 @@ define("moxie/runtime/html5/Runtime", [ return extensions; }); -// Included from: src/javascript/runtime/html5/file/Blob.js - -/** - * Blob.js - * - * Copyright 2013, Moxiecode Systems AB - * Released under GPL License. - * - * License: http://www.plupload.com/license - * Contributing: http://www.plupload.com/contributing - */ - -/** -@class moxie/runtime/html5/file/Blob -@private -*/ -define("moxie/runtime/html5/file/Blob", [ - "moxie/runtime/html5/Runtime", - "moxie/file/Blob" -], function(extensions, Blob) { - - function HTML5Blob() { - function w3cBlobSlice(blob, start, end) { - var blobSlice; - - if (window.File.prototype.slice) { - try { - blob.slice(); // depricated version will throw WRONG_ARGUMENTS_ERR exception - return blob.slice(start, end); - } catch (e) { - // depricated slice method - return blob.slice(start, end - start); - } - // slice method got prefixed: https://bugzilla.mozilla.org/show_bug.cgi?id=649672 - } else if ((blobSlice = window.File.prototype.webkitSlice || window.File.prototype.mozSlice)) { - return blobSlice.call(blob, start, end); - } else { - return null; // or throw some exception - } - } - - this.slice = function() { - return new Blob(this.getRuntime().uid, w3cBlobSlice.apply(this, arguments)); - }; - } - - return (extensions.Blob = HTML5Blob); -}); - // Included from: src/javascript/core/utils/Events.js /** @@ -6407,22 +6482,22 @@ define('moxie/core/utils/Events', [ */ define("moxie/runtime/html5/file/FileInput", [ "moxie/runtime/html5/Runtime", + "moxie/file/File", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Events", "moxie/core/utils/Mime", "moxie/core/utils/Env" -], function(extensions, Basic, Dom, Events, Mime, Env) { +], function(extensions, File, Basic, Dom, Events, Mime, Env) { function FileInput() { - var _files = [], _options; + var _options; Basic.extend(this, { init: function(options) { var comp = this, I = comp.getRuntime(), input, shimContainer, mimes, browseButton, zIndex, top; _options = options; - _files = []; // figure out accept string mimes = _options.accept.mimes || Mime.extList2mimes(_options.accept, I.can('filter_by_extension')); @@ -6489,19 +6564,29 @@ define("moxie/runtime/html5/file/FileInput", [ }, comp.uid); - input.onchange = function onChange() { // there should be only one handler for this - _files = []; + input.onchange = function onChange(e) { // there should be only one handler for this + comp.files = []; - if (_options.directory) { - // folders are represented by dots, filter them out (Chrome 11+) - Basic.each(this.files, function(file) { - if (file.name !== ".") { // if it doesn't looks like a folder - _files.push(file); + Basic.each(this.files, function(file) { + var relativePath = ''; + + if (_options.directory) { + // folders are represented by dots, filter them out (Chrome 11+) + if (file.name == ".") { + // if it looks like a folder... + return true; } - }); - } else { - _files = [].slice.call(this.files); - } + } + + if (file.webkitRelativePath) { + relativePath = '/' + file.webkitRelativePath.replace(/^\//, ''); + } + + file = new File(I.uid, file); + file.relativePath = relativePath; + + comp.files.push(file); + }); // clearing the value enables the user to select the same file again if they want to if (Env.browser !== 'IE' && Env.browser !== 'IEMobile') { @@ -6512,7 +6597,10 @@ define("moxie/runtime/html5/file/FileInput", [ this.parentNode.replaceChild(clone, this); clone.onchange = onChange; } - comp.trigger('change'); + + if (comp.files.length) { + comp.trigger('change'); + } }; // ready event is perfectly asynchronous @@ -6524,9 +6612,6 @@ define("moxie/runtime/html5/file/FileInput", [ shimContainer = null; }, - getFiles: function() { - return _files; - }, disable: function(state) { var I = this.getRuntime(), input; @@ -6552,12 +6637,61 @@ define("moxie/runtime/html5/file/FileInput", [ shim.removeInstance(this.uid); - _files = _options = shimContainer = shim = null; + _options = shimContainer = shim = null; } }); } - return (extensions.FileInput = FileInput); + return (extensions.FileInput = FileInput); +}); + +// Included from: src/javascript/runtime/html5/file/Blob.js + +/** + * Blob.js + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + */ + +/** +@class moxie/runtime/html5/file/Blob +@private +*/ +define("moxie/runtime/html5/file/Blob", [ + "moxie/runtime/html5/Runtime", + "moxie/file/Blob" +], function(extensions, Blob) { + + function HTML5Blob() { + function w3cBlobSlice(blob, start, end) { + var blobSlice; + + if (window.File.prototype.slice) { + try { + blob.slice(); // depricated version will throw WRONG_ARGUMENTS_ERR exception + return blob.slice(start, end); + } catch (e) { + // depricated slice method + return blob.slice(start, end - start); + } + // slice method got prefixed: https://bugzilla.mozilla.org/show_bug.cgi?id=649672 + } else if ((blobSlice = window.File.prototype.webkitSlice || window.File.prototype.mozSlice)) { + return blobSlice.call(blob, start, end); + } else { + return null; // or throw some exception + } + } + + this.slice = function() { + return new Blob(this.getRuntime().uid, w3cBlobSlice.apply(this, arguments)); + }; + } + + return (extensions.Blob = HTML5Blob); }); // Included from: src/javascript/runtime/html5/file/FileDrop.js @@ -6578,20 +6712,22 @@ define("moxie/runtime/html5/file/FileInput", [ */ define("moxie/runtime/html5/file/FileDrop", [ "moxie/runtime/html5/Runtime", + 'moxie/file/File', "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Events", "moxie/core/utils/Mime" -], function(extensions, Basic, Dom, Events, Mime) { +], function(extensions, File, Basic, Dom, Events, Mime) { function FileDrop() { - var _files = [], _allowedExts = [], _options; + var _files = [], _allowedExts = [], _options, _ruid; Basic.extend(this, { init: function(options) { var comp = this, dropZone; _options = options; + _ruid = comp.ruid; // every dropped-in file should have a reference to the runtime _allowedExts = _extractExts(_options.accept); dropZone = _options.container; @@ -6614,14 +6750,14 @@ define("moxie/runtime/html5/file/FileDrop", [ // Chrome 21+ accepts folders via Drag'n'Drop if (e.dataTransfer.items && e.dataTransfer.items[0].webkitGetAsEntry) { _readItems(e.dataTransfer.items, function() { + comp.files = _files; comp.trigger("drop"); }); } else { Basic.each(e.dataTransfer.files, function(file) { - if (_isAcceptable(file)) { - _files.push(file); - } + _addFile(file); }); + comp.files = _files; comp.trigger("drop"); } }, comp.uid); @@ -6635,13 +6771,9 @@ define("moxie/runtime/html5/file/FileDrop", [ }, comp.uid); }, - getFiles: function() { - return _files; - }, - destroy: function() { Events.removeAllEvents(_options && Dom.get(_options.container), this.uid); - _files = _allowedExts = _options = null; + _ruid = _files = _allowedExts = _options = null; } }); @@ -6659,6 +6791,15 @@ define("moxie/runtime/html5/file/FileDrop", [ ; } + + function _addFile(file, relativePath) { + if (_isAcceptable(file)) { + var fileObj = new File(_ruid, file); + fileObj.relativePath = relativePath || ''; + _files.push(fileObj); + } + } + function _extractExts(accept) { var exts = []; @@ -6686,10 +6827,7 @@ define("moxie/runtime/html5/file/FileDrop", [ if (entry) { // file() fails on OSX when the filename contains a special character (e.g. umlaut): see #61 if (entry.isFile) { - var file = item.getAsFile(); - if (_isAcceptable(file)) { - _files.push(file); - } + _addFile(item.getAsFile(), entry.fullPath); } else { entries.push(entry); } @@ -6720,9 +6858,7 @@ define("moxie/runtime/html5/file/FileDrop", [ function _readEntry(entry, cb) { if (entry.isFile) { entry.file(function(file) { - if (_isAcceptable(file)) { - _files.push(file); - } + _addFile(file, entry.fullPath); cb(); }, function() { // fire an error event maybe @@ -6789,24 +6925,28 @@ define("moxie/runtime/html5/file/FileReader", [ Basic.extend(this, { read: function(op, blob) { - var target = this; + var comp = this; + + comp.result = ''; _fr = new window.FileReader(); _fr.addEventListener('progress', function(e) { - target.trigger(e); + comp.trigger(e); }); _fr.addEventListener('load', function(e) { - target.trigger(e); + comp.result = _convertToBinary ? _toBinary(_fr.result) : _fr.result; + comp.trigger(e); }); _fr.addEventListener('error', function(e) { - target.trigger(e, _fr.error); + comp.trigger(e, _fr.error); }); - _fr.addEventListener('loadend', function() { + _fr.addEventListener('loadend', function(e) { _fr = null; + comp.trigger(e); }); if (Basic.typeOf(_fr[op]) === 'function') { @@ -6818,10 +6958,6 @@ define("moxie/runtime/html5/file/FileReader", [ } }, - getResult: function() { - return _fr && _fr.result ? (_convertToBinary ? _toBinary(_fr.result) : _fr.result) : null; - }, - abort: function() { if (_fr) { _fr.abort(); @@ -7320,6 +7456,10 @@ define("moxie/runtime/html5/utils/BinaryReader", [], function() { } return str; + }, + + length: function() { + return bin.length; } }; }; @@ -7498,7 +7638,7 @@ define("moxie/runtime/html5/image/ExifParser", [ data = new BinaryReader(); tags = { - tiff : { + tiff: { /* The image orientation viewed in terms of rows and columns. @@ -7519,7 +7659,7 @@ define("moxie/runtime/html5/image/ExifParser", [ 0x8769: 'ExifIFDPointer', 0x8825: 'GPSInfoIFDPointer' }, - exif : { + exif: { 0x9000: 'ExifVersion', 0xA001: 'ColorSpace', 0xA002: 'PixelXDimension', @@ -7542,12 +7682,17 @@ define("moxie/runtime/html5/image/ExifParser", [ 0xA409: 'Saturation', 0xA40A: 'Sharpness' }, - gps : { + gps: { 0x0000: 'GPSVersionID', 0x0001: 'GPSLatitudeRef', 0x0002: 'GPSLatitude', 0x0003: 'GPSLongitudeRef', 0x0004: 'GPSLongitude' + }, + + thumb: { + 0x0201: 'JPEGInterchangeFormat', + 0x0202: 'JPEGInterchangeFormatLength' } }; @@ -7732,7 +7877,7 @@ define("moxie/runtime/html5/image/ExifParser", [ offset = data.LONG(offset) + offsets.tiffHeader; for (ii = 0; ii < count; ii++) { - values[ii] = data.LONG(offset + ii*4) / data.LONG(offset + ii*4 + 4); + values[ii] = data.LONG(offset + ii*8) / data.LONG(offset + ii*8 + 4); } break; @@ -7750,7 +7895,7 @@ define("moxie/runtime/html5/image/ExifParser", [ offset = data.LONG(offset) + offsets.tiffHeader; for (ii = 0; ii < count; ii++) { - values[ii] = data.SLONG(offset + ii*4) / data.SLONG(offset + ii*4 + 4); + values[ii] = data.SLONG(offset + ii*8) / data.SLONG(offset + ii*8 + 4); } break; @@ -7794,6 +7939,12 @@ define("moxie/runtime/html5/image/ExifParser", [ offsets.gpsIFD = offsets.tiffHeader + Tiff.GPSInfoIFDPointer; delete Tiff.GPSInfoIFDPointer; } + + // check if we got thumb data as well + var IFD1Offset = data.LONG(offsets.IFD0 + data.SHORT(offsets.IFD0) * 12 + 2); + if (IFD1Offset) { + offsets.IFD1 = offsets.tiffHeader + IFD1Offset; + } return true; } @@ -7858,35 +8009,48 @@ define("moxie/runtime/html5/image/ExifParser", [ }, EXIF: function() { - var Exif; + var Exif = null; - // Populate EXIF hash - Exif = extractTags(offsets.exifIFD, tags.exif); + if (offsets.exifIFD) { + Exif = extractTags(offsets.exifIFD, tags.exif); - // Fix formatting of some tags - if (Exif.ExifVersion && Basic.typeOf(Exif.ExifVersion) === 'array') { - for (var i = 0, exifVersion = ''; i < Exif.ExifVersion.length; i++) { - exifVersion += String.fromCharCode(Exif.ExifVersion[i]); + // Fix formatting of some tags + if (Exif.ExifVersion && Basic.typeOf(Exif.ExifVersion) === 'array') { + for (var i = 0, exifVersion = ''; i < Exif.ExifVersion.length; i++) { + exifVersion += String.fromCharCode(Exif.ExifVersion[i]); + } + Exif.ExifVersion = exifVersion; } - Exif.ExifVersion = exifVersion; } return Exif; }, GPS: function() { - var GPS; + var GPS = null; - GPS = extractTags(offsets.gpsIFD, tags.gps); + if (offsets.gpsIFD) { + var GPS = extractTags(offsets.gpsIFD, tags.gps); - // iOS devices (and probably some others) do not put in GPSVersionID tag (why?..) - if (GPS.GPSVersionID && Basic.typeOf(GPS.GPSVersionID) === 'array') { - GPS.GPSVersionID = GPS.GPSVersionID.join('.'); + // iOS devices (and probably some others) do not put in GPSVersionID tag (why?..) + if (GPS.GPSVersionID && Basic.typeOf(GPS.GPSVersionID) === 'array') { + GPS.GPSVersionID = GPS.GPSVersionID.join('.'); + } } return GPS; }, + thumb: function() { + if (offsets.IFD1) { + var IFD1Tags = extractTags(offsets.IFD1, tags.thumb); + if ('JPEGInterchangeFormat' in IFD1Tags) { + return data.SEGMENT(offsets.tiffHeader + IFD1Tags.JPEGInterchangeFormat, IFD1Tags.JPEGInterchangeFormatLength); + } + } + return null; + }, + setExif: function(tag, value) { // Right now only setting of width/height is possible if (tag !== 'PixelXDimension' && tag !== 'PixelYDimension') {return false;} @@ -7935,26 +8099,6 @@ define("moxie/runtime/html5/image/JPEG", [ function JPEG(binstr) { var _binstr, _br, _hm, _ep, _info, hasExif; - function _getDimensions() { - var idx = 0, marker, length; - - // examine all through the end, since some images might have very large APP segments - while (idx <= _binstr.length) { - marker = _br.SHORT(idx += 2); - - if (marker >= 0xFFC0 && marker <= 0xFFC3) { // SOFn - idx += 5; // marker (2 bytes) + length (2 bytes) + Sample precision (1 byte) - return { - height: _br.SHORT(idx), - width: _br.SHORT(idx += 2) - }; - } - length = _br.SHORT(idx += 2); - idx += length - 2; - } - return null; - } - _binstr = binstr; _br = new BinaryReader(); @@ -8022,10 +8166,60 @@ define("moxie/runtime/html5/image/JPEG", [ this.meta = { tiff: _ep.TIFF(), exif: _ep.EXIF(), - gps: _ep.GPS() + gps: _ep.GPS(), + thumb: _getThumb() }; } + + function _getDimensions(br) { + var idx = 0 + , marker + , length + ; + + if (!br) { + br = _br; + } + + // examine all through the end, since some images might have very large APP segments + while (idx <= br.length()) { + marker = br.SHORT(idx += 2); + + if (marker >= 0xFFC0 && marker <= 0xFFC3) { // SOFn + idx += 5; // marker (2 bytes) + length (2 bytes) + Sample precision (1 byte) + return { + height: br.SHORT(idx), + width: br.SHORT(idx += 2) + }; + } + length = br.SHORT(idx += 2); + idx += length - 2; + } + return null; + } + + + function _getThumb() { + var binstr = _ep.thumb() + , br = new BinaryReader() + , info + ; + + if (binstr) { + br.init(binstr); + info = _getDimensions(br); + br.init(null); + + if (info) { + info.data = binstr; + return info; + } + } + return null; + } + + function _purge() { if (!_ep || !_hm || !_br) { return; // ignore any repeating purge requests @@ -8437,12 +8631,13 @@ define("moxie/runtime/html5/image/Image", [ "moxie/core/utils/Basic", "moxie/core/Exceptions", "moxie/core/utils/Encode", + "moxie/file/Blob", "moxie/file/File", "moxie/runtime/html5/image/ImageInfo", "moxie/runtime/html5/image/MegaPixel", "moxie/core/utils/Mime", "moxie/core/utils/Env" -], function(extensions, Basic, x, Encode, File, ImageInfo, MegaPixel, Mime, Env) { +], function(extensions, Basic, x, Encode, Blob, File, ImageInfo, MegaPixel, Mime, Env) { function HTML5Image() { var me = this @@ -8505,6 +8700,14 @@ define("moxie/runtime/html5/image/Image", [ meta: _imgInfo && _imgInfo.meta || this.meta || {} }; + // store thumbnail data as blob + if (info.meta.thumb) { + info.meta.thumb.data = new Blob(null, { + type: 'image/jpeg', + data: info.meta.thumb.data + }); + } + return info; }, @@ -8645,7 +8848,7 @@ define("moxie/runtime/html5/image/Image", [ comp.trigger('load'); }; - _img.src = /^data:[^;]*;base64,/.test(str) ? str : _toDataUrl(str, _blob.type); + _img.src = str.substr(0, 5) == 'data:' ? str : _toDataUrl(str, _blob.type); } @@ -8902,6 +9105,47 @@ define("moxie/runtime/flash/Runtime", [ return parseFloat(version[0] + '.' + version[1]); } + + /** + Cross-browser SWF removal + - Especially needed to safely and completely remove a SWF in Internet Explorer + + Originated from SWFObject v2.2 + */ + function removeSWF(id) { + var obj = Dom.get(id); + if (obj && obj.nodeName == "OBJECT") { + if (Env.browser === 'IE') { + obj.style.display = "none"; + (function onInit(){ + // http://msdn.microsoft.com/en-us/library/ie/ms534360(v=vs.85).aspx + if (obj.readyState == 4) { + removeObjectInIE(id); + } + else { + setTimeout(onInit, 10); + } + })(); + } + else { + obj.parentNode.removeChild(obj); + } + } + } + + + function removeObjectInIE(id) { + var obj = Dom.get(id); + if (obj) { + for (var i in obj) { + if (typeof obj[i] == "function") { + obj[i] = null; + } + } + obj.parentNode.removeChild(obj); + } + } + /** Constructor for the Flash Runtime @@ -8999,6 +9243,10 @@ define("moxie/runtime/flash/Runtime", [ // minimal requirement for Flash Player version if (getShimVersion() < 10) { + if (MXI_DEBUG && Env.debug.runtime) { + Env.log("\tFlash didn't meet minimal version requirement (10)."); + } + this.mode = false; // with falsy mode, runtime won't operable, no matter what the mode was before } @@ -9056,12 +9304,18 @@ define("moxie/runtime/flash/Runtime", [ initTimer = setTimeout(function() { if (I && !I.initialized) { // runtime might be already destroyed by this moment I.trigger("Error", new x.RuntimeError(x.RuntimeError.NOT_INIT_ERR)); + + if (MXI_DEBUG && Env.debug.runtime) { + Env.log("\tFlash failed to initialize within a specified period of time (typically 5s)."); + } } }, 5000); }, destroy: (function(destroy) { // extend default destroy method return function() { + removeSWF(I.uid); // SWF removal requires special care in IE + destroy.call(I); clearTimeout(initTimer); // initialization check might be still onwait options = initTimer = destroy = I = null; @@ -9076,6 +9330,53 @@ define("moxie/runtime/flash/Runtime", [ return extensions; }); +// Included from: src/javascript/runtime/flash/file/FileInput.js + +/** + * FileInput.js + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + */ + +/** +@class moxie/runtime/flash/file/FileInput +@private +*/ +define("moxie/runtime/flash/file/FileInput", [ + "moxie/runtime/flash/Runtime", + "moxie/file/File", + "moxie/core/utils/Basic" +], function(extensions, File, Basic) { + + var FileInput = { + init: function(options) { + var comp = this, I = this.getRuntime(); + + this.bind("Change", function() { + var files = I.shimExec.call(comp, 'FileInput', 'getFiles'); + comp.files = []; + Basic.each(files, function(file) { + comp.files.push(new File(I.uid, file)); + }); + }, 999); + + this.getRuntime().shimExec.call(this, 'FileInput', 'init', { + name: options.name, + accept: options.accept, + multiple: options.multiple + }); + + this.trigger('ready'); + } + }; + + return (extensions.FileInput = FileInput); +}); + // Included from: src/javascript/runtime/flash/file/Blob.js /** @@ -9125,40 +9426,6 @@ define("moxie/runtime/flash/file/Blob", [ return (extensions.Blob = FlashBlob); }); -// Included from: src/javascript/runtime/flash/file/FileInput.js - -/** - * FileInput.js - * - * Copyright 2013, Moxiecode Systems AB - * Released under GPL License. - * - * License: http://www.plupload.com/license - * Contributing: http://www.plupload.com/contributing - */ - -/** -@class moxie/runtime/flash/file/FileInput -@private -*/ -define("moxie/runtime/flash/file/FileInput", [ - "moxie/runtime/flash/Runtime" -], function(extensions) { - - var FileInput = { - init: function(options) { - this.getRuntime().shimExec.call(this, 'FileInput', 'init', { - name: options.name, - accept: options.accept, - multiple: options.multiple - }); - this.trigger('ready'); - } - }; - - return (extensions.FileInput = FileInput); -}); - // Included from: src/javascript/runtime/flash/file/FileReader.js /** @@ -9180,8 +9447,6 @@ define("moxie/runtime/flash/file/FileReader", [ "moxie/core/utils/Encode" ], function(extensions, Encode) { - var _result = ''; - function _formatData(data, op) { switch (op) { case 'readAsText': @@ -9196,28 +9461,22 @@ define("moxie/runtime/flash/file/FileReader", [ var FileReader = { read: function(op, blob) { - var target = this, self = target.getRuntime(); + var comp = this; + + comp.result = ''; // special prefix for DataURL read mode if (op === 'readAsDataURL') { - _result = 'data:' + (blob.type || '') + ';base64,'; + comp.result = 'data:' + (blob.type || '') + ';base64,'; } - target.bind('Progress', function(e, data) { + comp.bind('Progress', function(e, data) { if (data) { - _result += _formatData(data, op); + comp.result += _formatData(data, op); } - }); - - return self.shimExec.call(this, 'FileReader', 'readAsBase64', blob.uid); - }, - - getResult: function() { - return _result; - }, + }, 999); - destroy: function() { - _result = null; + return comp.getRuntime().shimExec.call(this, 'FileReader', 'readAsBase64', blob.uid); } }; @@ -9507,6 +9766,17 @@ define("moxie/runtime/flash/image/Image", [ } }, + getInfo: function() { + var self = this.getRuntime() + , info = self.shimExec.call(this, 'Image', 'getInfo') + ; + + if (info.meta && info.meta.thumb) { + info.meta.thumb.data = new Blob(self.uid, info.meta.thumb.data); + } + return info; + }, + loadFromImage: function(img) { var self = this.getRuntime(); return self.shimExec.call(this, 'Image', 'loadFromImage', img.uid); @@ -9696,6 +9966,10 @@ define("moxie/runtime/silverlight/Runtime", [ // minimal requirement if (!isInstalled('2.0.31005.0') || Env.browser === 'Opera') { + if (MXI_DEBUG && Env.debug.runtime) { + Env.log("\tSilverlight is not installed or minimal version (2.0.31005.0) requirement not met (not likely)."); + } + this.mode = false; } @@ -9727,6 +10001,10 @@ define("moxie/runtime/silverlight/Runtime", [ initTimer = setTimeout(function() { if (I && !I.initialized) { // runtime might be already destroyed by this moment I.trigger("Error", new x.RuntimeError(x.RuntimeError.NOT_INIT_ERR)); + + if (MXI_DEBUG && Env.debug.runtime) { + Env.log("\Silverlight failed to initialize within a specified period of time (5-10s)."); + } } }, Env.OS !== 'Windows'? 10000 : 5000); // give it more time to initialize in non Windows OS (like Mac) }, @@ -9747,30 +10025,6 @@ define("moxie/runtime/silverlight/Runtime", [ return extensions; }); -// Included from: src/javascript/runtime/silverlight/file/Blob.js - -/** - * Blob.js - * - * Copyright 2013, Moxiecode Systems AB - * Released under GPL License. - * - * License: http://www.plupload.com/license - * Contributing: http://www.plupload.com/contributing - */ - -/** -@class moxie/runtime/silverlight/file/Blob -@private -*/ -define("moxie/runtime/silverlight/file/Blob", [ - "moxie/runtime/silverlight/Runtime", - "moxie/core/utils/Basic", - "moxie/runtime/flash/file/Blob" -], function(extensions, Basic, Blob) { - return (extensions.Blob = Basic.extend({}, Blob)); -}); - // Included from: src/javascript/runtime/silverlight/file/FileInput.js /** @@ -9788,11 +10042,14 @@ define("moxie/runtime/silverlight/file/Blob", [ @private */ define("moxie/runtime/silverlight/file/FileInput", [ - "moxie/runtime/silverlight/Runtime" -], function(extensions) { + "moxie/runtime/silverlight/Runtime", + "moxie/file/File", + "moxie/core/utils/Basic" +], function(extensions, File, Basic) { var FileInput = { init: function(options) { + var comp = this, I = this.getRuntime(); function toFilters(accept) { var filter = ''; @@ -9801,6 +10058,14 @@ define("moxie/runtime/silverlight/file/FileInput", [ } return filter; } + + this.bind("Change", function() { + var files = I.shimExec.call(comp, 'FileInput', 'getFiles'); + comp.files = []; + Basic.each(files, function(file) { + comp.files.push(new File(I.uid, file)); + }); + }, 999); this.getRuntime().shimExec.call(this, 'FileInput', 'init', toFilters(options.accept), options.name, options.multiple); this.trigger('ready'); @@ -9810,6 +10075,30 @@ define("moxie/runtime/silverlight/file/FileInput", [ return (extensions.FileInput = FileInput); }); +// Included from: src/javascript/runtime/silverlight/file/Blob.js + +/** + * Blob.js + * + * Copyright 2013, Moxiecode Systems AB + * Released under GPL License. + * + * License: http://www.plupload.com/license + * Contributing: http://www.plupload.com/contributing + */ + +/** +@class moxie/runtime/silverlight/file/Blob +@private +*/ +define("moxie/runtime/silverlight/file/Blob", [ + "moxie/runtime/silverlight/Runtime", + "moxie/core/utils/Basic", + "moxie/runtime/flash/file/Blob" +], function(extensions, Basic, Blob) { + return (extensions.Blob = Basic.extend({}, Blob)); +}); + // Included from: src/javascript/runtime/silverlight/file/FileDrop.js /** @@ -9985,13 +10274,14 @@ define("moxie/runtime/silverlight/runtime/Transporter", [ define("moxie/runtime/silverlight/image/Image", [ "moxie/runtime/silverlight/Runtime", "moxie/core/utils/Basic", + "moxie/file/Blob", "moxie/runtime/flash/image/Image" -], function(extensions, Basic, Image) { +], function(extensions, Basic, Blob, Image) { return (extensions.Image = Basic.extend({}, Image, { getInfo: function() { var self = this.getRuntime() - , grps = ['tiff', 'exif', 'gps'] + , grps = ['tiff', 'exif', 'gps', 'thumb'] , info = { meta: {} } , rawInfo = self.shimExec.call(this, 'Image', 'getInfo') ; @@ -10021,6 +10311,11 @@ define("moxie/runtime/silverlight/image/Image", [ } } }); + + // save thumb data as blob + if (info.meta && info.meta.thumb) { + info.meta.thumb.data = new Blob(self.uid, info.meta.thumb.data); + } } info.width = parseInt(rawInfo.width, 10); @@ -10076,7 +10371,7 @@ define("moxie/runtime/html4/Runtime", [ do_cors: false, drag_and_drop: false, filter_by_extension: Test(function() { // if you know how to feature-detect this, please suggest - return (Env.browser === 'Chrome' && Env.version >= 28) || (Env.browser === 'IE' && Env.version >= 10); + return (Env.browser === 'Chrome' && Env.version >= 28) || (Env.browser === 'IE' && Env.version >= 10) || (Env.browser === 'Safari' && Env.version >= 7); }()), resize_image: function() { return extensions.Image && I.can('access_binary') && Env.can('create_canvas'); @@ -10103,11 +10398,14 @@ define("moxie/runtime/html4/Runtime", [ stream_upload: function() { return I.can('select_file'); }, - summon_file_dialog: Test(function() { // yeah... some dirty sniffing here... - return (Env.browser === 'Firefox' && Env.version >= 4) || + summon_file_dialog: function() { // yeah... some dirty sniffing here... + return I.can('select_file') && ( + (Env.browser === 'Firefox' && Env.version >= 4) || (Env.browser === 'Opera' && Env.version >= 12) || - !!~Basic.inArray(Env.browser, ['Chrome', 'Safari']); - }()), + (Env.browser === 'IE' && Env.version >= 10) || + !!~Basic.inArray(Env.browser, ['Chrome', 'Safari']) + ); + }, upload_filesize: True, use_http_method: function(methods) { return !Basic.arrayDiff(methods, ['GET', 'POST']); @@ -10154,15 +10452,16 @@ define("moxie/runtime/html4/Runtime", [ */ define("moxie/runtime/html4/file/FileInput", [ "moxie/runtime/html4/Runtime", + "moxie/file/File", "moxie/core/utils/Basic", "moxie/core/utils/Dom", "moxie/core/utils/Events", "moxie/core/utils/Mime", "moxie/core/utils/Env" -], function(extensions, Basic, Dom, Events, Mime, Env) { +], function(extensions, File, Basic, Dom, Events, Mime, Env) { function FileInput() { - var _uid, _files = [], _mimes = [], _options; + var _uid, _mimes = [], _options; function addInput() { var comp = this, I = comp.getRuntime(), shimContainer, browseButton, currForm, form, input, uid; @@ -10230,39 +10529,35 @@ define("moxie/runtime/html4/file/FileInput", [ return; } - if (this.files) { + if (this.files) { // check if browser is fresh enough file = this.files[0]; + + // ignore empty files (IE10 for example hangs if you try to send them via XHR) + if (file.size === 0) { + form.parentNode.removeChild(form); + return; + } } else { file = { name: this.value }; } - _files = [file]; - - this.onchange = function() {}; // clear event handler - addInput.call(comp); - - // after file is initialized as o.File, we need to update form and input ids - comp.bind('change', function onChange() { - var input = Dom.get(uid), form = Dom.get(uid + '_form'), file; - - comp.unbind('change', onChange); + file = new File(I.uid, file); - if (comp.files.length && input && form) { - file = comp.files[0]; + // clear event handler + this.onchange = function() {}; + addInput.call(comp); - input.setAttribute('id', file.uid); - form.setAttribute('id', file.uid + '_form'); + comp.files = [file]; - // set upload target - form.setAttribute('target', file.uid + '_iframe'); - } - input = form = null; - }, 998); + // substitute all ids with file uids (consider file.uid read-only - we cannot do it the other way around) + input.setAttribute('id', file.uid); + form.setAttribute('id', file.uid + '_form'); + + comp.trigger('change'); input = form = null; - comp.trigger('change'); }; @@ -10344,9 +10639,6 @@ define("moxie/runtime/html4/file/FileInput", [ }); }, - getFiles: function() { - return _files; - }, disable: function(state) { var input; @@ -10372,7 +10664,7 @@ define("moxie/runtime/html4/file/FileInput", [ shim.removeInstance(this.uid); - _uid = _files = _mimes = _options = shimContainer = shim = null; + _uid = _mimes = _options = shimContainer = shim = null; } }); } @@ -10568,11 +10860,13 @@ define("moxie/runtime/html4/xhr/XMLHttpRequest", [ form.setAttribute('method', meta.method); form.setAttribute('enctype', 'multipart/form-data'); form.setAttribute('encoding', 'multipart/form-data'); - form.setAttribute('target', uid + '_iframe'); I.getShimContainer().appendChild(form); } + // set upload target + form.setAttribute('target', uid + '_iframe'); + if (data instanceof FormData) { data.each(function(value, name) { if (value instanceof Blob) { @@ -10673,8 +10967,9 @@ define("moxie/runtime/html4/image/Image", [ return (extensions.Image = Image); }); -expose(["moxie/core/utils/Basic","moxie/core/I18n","moxie/core/utils/Mime","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/file/File","moxie/file/FileInput","moxie/file/FileDrop","moxie/runtime/RuntimeTarget","moxie/file/FileReader","moxie/core/utils/Url","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events"]); -})(this);/** +expose(["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/I18n","moxie/core/utils/Mime","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/FileInput","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/runtime/Transporter","moxie/image/Image","moxie/core/utils/Events"]); +})(this); +/** * o.js * * Copyright 2013, Moxiecode Systems AB diff --git a/js/moxie.min.js b/js/moxie.min.js index 4d325fc5f..dac814f61 100644 --- a/js/moxie.min.js +++ b/js/moxie.min.js @@ -1,6 +1,6 @@ /** * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill - * v1.2.2 + * v1.3 * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. @@ -8,8 +8,8 @@ * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing * - * Date: 2015-05-11 + * Date: 2015-05-24 */ -!function(e,t){"use strict";function n(e,t){for(var n,i=[],r=0;r0&&n(o,function(n,o){n!==r&&(e(i[o])===e(n)&&~a(e(n),["array","object"])?t(i[o],n):i[o]=n)})}),i},n=function(e,t){var n,i,r,o;if(e){try{n=e.length}catch(a){n=o}if(n===o){for(i in e)if(e.hasOwnProperty(i)&&t(e[i],i)===!1)return}else for(r=0;n>r;r++)if(t(e[r],r)===!1)return}},i=function(t){var n;if(!t||"object"!==e(t))return!0;for(n in t)return!1;return!0},r=function(t,n){function i(r){"function"===e(t[r])&&t[r](function(e){++rn;n++)if(t[n]===e)return n}return-1},s=function(t,n){var i=[];"array"!==e(t)&&(t=[t]),"array"!==e(n)&&(n=[n]);for(var r in t)-1===a(t[r],n)&&i.push(t[r]);return i.length?i:!1},u=function(e,t){var i=[];return n(e,function(e){-1!==a(e,t)&&i.push(e)}),i.length?i:null},c=function(e){var t,n=[];for(t=0;ti;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}(),d=function(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""):e},f=function(e){if("string"!=typeof e)return e;var t={t:1099511627776,g:1073741824,m:1048576,k:1024},n;return e=/^([0-9]+)([mgk]?)$/.exec(e.toLowerCase().replace(/[^0-9mkg]/g,"")),n=e[2],e=+e[1],t.hasOwnProperty(n)&&(e*=t[n]),e};return{guid:l,typeOf:e,extend:t,each:n,isEmptyObj:i,inSeries:r,inParallel:o,inArray:a,arrayDiff:s,arrayIntersect:u,toArray:c,trim:d,parseSizeStr:f}}),i(c,[u],function(e){var t={};return{addI18n:function(n){return e.extend(t,n)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var n=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=n.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),i(l,[u,c],function(e,t){var n="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",i={mimes:{},extensions:{},addMimeType:function(e){var t=e.split(/,/),n,i,r;for(n=0;ni;i++)if(e[i]!=t[i]){if(e[i]=u(e[i]),t[i]=u(t[i]),e[i]t[i]){o=1;break}}if(!n)return o;switch(n){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var n=function(e){var t="",n="?",i="function",r="undefined",o="object",a="major",s="model",u="name",c="type",l="vendor",d="version",f="architecture",h="console",p="mobile",m="tablet",g={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},v={rgx:function(){for(var t,n=0,a,s,u,c,l,d,f=arguments;n0?2==c.length?typeof c[1]==i?t[c[0]]=c[1].call(this,d):t[c[0]]=c[1]:3==c.length?typeof c[1]!==i||c[1].exec&&c[1].test?t[c[0]]=d?d.replace(c[1],c[2]):e:t[c[0]]=d?c[1].call(this,d,c[2]):e:4==c.length&&(t[c[0]]=d?c[3].call(this,d.replace(c[1],c[2])):e):t[c]=d?d:e;break}if(l)break}return t},str:function(t,i){for(var r in i)if(typeof i[r]===o&&i[r].length>0){for(var a=0;a=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(n){var i=[].slice.call(arguments);return i.shift(),"function"===e.typeOf(t[n])?t[n].apply(this,i):!!t[n]}}(),r={can:i,browser:n.browser.name,version:parseFloat(n.browser.major),os:n.os.name,osVersion:n.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return r.OS=r.os,r}),i(f,[d],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},n=function(e,t){if(!e.className)return!1;var n=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return n.test(e.className)},i=function(e,t){n(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var n=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(n,function(e,t,n){return" "===t&&" "===n?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,n){function i(e){var t,n,i=0,r=0;return e&&(n=e.getBoundingClientRect(),t="CSS1Compat"===s.compatMode?s.documentElement:s.body,i=n.left+t.scrollLeft,r=n.top+t.scrollTop),{x:i,y:r}}var r=0,o=0,a,s=document,u,c;if(t=t,n=n||s.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!s.documentMode||s.documentMode<8))return u=i(t),c=i(n),{x:u.x-c.x,y:u.y-c.y};for(a=t;a&&a!=n&&a.nodeType;)r+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=t.parentNode;a&&a!=n&&a.nodeType;)r-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode;return{x:r,y:o}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:n,addClass:i,removeClass:r,getStyle:o,getPos:a,getSize:s}}),i(h,[u],function(e){function t(e,t){var n;for(n in e)if(e[n]===t)return n;return null}return{RuntimeError:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": RuntimeError "+this.code}var i={NOT_INIT_ERR:1,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(n,i),n.prototype=Error.prototype,n}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": ImageError "+this.code}var i={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2};return e.extend(n,i),n.prototype=Error.prototype,n}(),FileException:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": FileException "+this.code}var i={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(n,i),n.prototype=Error.prototype,n}(),DOMException:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": DOMException "+this.code}var i={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(n,i),n.prototype=Error.prototype,n}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),i(p,[h,u],function(e,t){function n(){var n={};t.extend(this,{uid:null,init:function(){this.uid||(this.uid=t.guid("uid_"))},addEventListener:function(e,i,r,o){var a=this,s;return e=t.trim(e),/\s/.test(e)?void t.each(e.split(/\s+/),function(e){a.addEventListener(e,i,r,o)}):(e=e.toLowerCase(),r=parseInt(r,10)||0,s=n[this.uid]&&n[this.uid][e]||[],s.push({fn:i,priority:r,scope:o||this}),n[this.uid]||(n[this.uid]={}),void(n[this.uid][e]=s))},hasEventListener:function(e){return e?!(!n[this.uid]||!n[this.uid][e]):!!n[this.uid]},removeEventListener:function(e,i){e=e.toLowerCase();var r=n[this.uid]&&n[this.uid][e],o;if(r){if(i){for(o=r.length-1;o>=0;o--)if(r[o].fn===i){r.splice(o,1);break}}else r=[];r.length||(delete n[this.uid][e],t.isEmptyObj(n[this.uid])&&delete n[this.uid])}},removeAllEventListeners:function(){n[this.uid]&&delete n[this.uid]},dispatchEvent:function(i){var r,o,a,s,u={},c=!0,l;if("string"!==t.typeOf(i)){if(s=i,"string"!==t.typeOf(s.type))throw new e.EventException(e.EventException.UNSPECIFIED_EVENT_TYPE_ERR);i=s.type,s.total!==l&&s.loaded!==l&&(u.total=s.total,u.loaded=s.loaded),u.async=s.async||!1}if(-1!==i.indexOf("::")?!function(e){r=e[0],i=e[1]}(i.split("::")):r=this.uid,i=i.toLowerCase(),o=n[r]&&n[r][i]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),u.type=i,a.unshift(u);var d=[];t.each(o,function(e){a[0].target=e.scope,d.push(u.async?function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}:function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&t.inSeries(d,function(e){c=!e})}return c},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},convertEventPropsToHandlers:function(e){var n;"array"!==t.typeOf(e)&&(e=[e]);for(var i=0;i>16&255,o=d>>8&255,a=255&d,64==c?m[h++]=String.fromCharCode(r):64==l?m[h++]=String.fromCharCode(r,o):m[h++]=String.fromCharCode(r,o,a);while(f>18&63,u=d>>12&63,c=d>>6&63,l=63&d,m[h++]=i.charAt(s)+i.charAt(u)+i.charAt(c)+i.charAt(l);while(fa;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return i.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return i.call(this,"readAsDataURL",e)},readAsText:function(e){return i.call(this,"readAsText",e)}})}}),i(A,[h,u,y],function(e,t,n){function i(){var e,i=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof n?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):i.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(n){t.each(i,function(e){n(e.value,e.name)}),e&&n(e.value,e.name)},destroy:function(){e=null,i=[]}})}return i}),i(S,[u,h,p,m,R,g,x,y,T,A,d,l],function(e,t,n,i,r,o,a,s,u,c,l,d){function f(){this.uid=e.guid("uid_")}function h(){function n(e,t){return y.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?y[e]:v[e]:void(l.can("define_property")?y[e]=t:v[e]=t):void 0}function u(t){function i(){k&&(k.destroy(),k=null),s.dispatchEvent("loadend"),s=null}function r(r){k.bind("LoadStart",function(e){n("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),I&&s.upload.dispatchEvent(e)}),k.bind("Progress",function(e){n("readyState")!==h.LOADING&&(n("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),k.bind("UploadProgress",function(e){I&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),k.bind("Load",function(t){n("readyState",h.DONE),n("status",Number(r.exec.call(k,"XMLHttpRequest","getStatus")||0)),n("statusText",p[n("status")]||""),n("response",r.exec.call(k,"XMLHttpRequest","getResponse",n("responseType"))),~e.inArray(n("responseType"),["text",""])?n("responseText",n("response")):"document"===n("responseType")&&n("responseXML",n("response")),U=r.exec.call(k,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),n("status")>0?(I&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(N=!0,s.dispatchEvent("error")),i()}),k.bind("Abort",function(e){s.dispatchEvent(e),i()}),k.bind("Error",function(e){N=!0,n("readyState",h.DONE),s.dispatchEvent("readystatechange"),D=!0,s.dispatchEvent(e),i()}),r.exec.call(k,"XMLHttpRequest","send",{url:E,method:_,async:w,user:b,password:R,headers:x,mimeType:A,encoding:T,responseType:s.responseType,withCredentials:s.withCredentials,options:P},t)}var s=this;M=(new Date).getTime(),k=new a,"string"==typeof P.required_caps&&(P.required_caps=o.parseCaps(P.required_caps)),P.required_caps=e.extend({},P.required_caps,{return_response_type:s.responseType}),t instanceof c&&(P.required_caps.send_multipart=!0),L||(P.required_caps.do_cors=!0),P.ruid?r(k.connectRuntime(P)):(k.bind("RuntimeInit",function(e,t){r(t)}),k.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),k.connectRuntime(P))}function g(){n("responseText",""),n("responseXML",null),n("response",null),n("status",0),n("statusText",""),M=C=null}var v=this,y={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},w=!0,E,_,x={},b,R,T=null,A=null,S=!1,O=!1,I=!1,D=!1,N=!1,L=!1,M,C,F=null,H=null,P={},k,U="",B;e.extend(this,y,{uid:e.guid("uid_"),upload:new f,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||i.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(_=o.toUpperCase()),~e.inArray(_,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=i.utf8_encode(a),l=r.parseUrl(a),L=r.hasSameOrigin(l),E=r.resolveUrl(a),(u||c)&&!L)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(b=u||l.user,R=c||l.pass,w=s||!0,w===!1&&(n("timeout")||n("withCredentials")||""!==n("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);S=!w,O=!1,x={},g.call(this),n("readyState",h.OPENED),this.convertEventPropsToHandlers(["readystatechange"]),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(n("readyState")!==h.OPENED||O)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||i.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(x[r]?x[r]+=", "+o:x[r]=o,!0)},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),N||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(B||(B={},e.each(U.split(/\r\n/),function(t){var n=t.split(/:\s+/);2===n.length&&(n[0]=e.trim(n[0]),B[n[0].toLowerCase()]={header:n[0],value:e.trim(n[1])})})),B.hasOwnProperty(t))?B[t].header+": "+B[t].value:null},overrideMimeType:function(i){var r,o;if(~e.inArray(n("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i=e.trim(i.toLowerCase()),/;/.test(i)&&(r=i.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(i=r[1],r[2]&&(o=r[2])),!d.mimes[i])throw new t.DOMException(t.DOMException.SYNTAX_ERR);F=i,H=o},send:function(n,r){if(P="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.convertEventPropsToHandlers(m),this.upload.convertEventPropsToHandlers(m),this.readyState!==h.OPENED||O)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n instanceof s)P.ruid=n.ruid,A=n.type||"application/octet-stream";else if(n instanceof c){if(n.hasBlob()){var o=n.getBlob();P.ruid=o.ruid,A=o.type||"application/octet-stream"}}else"string"==typeof n&&(T="UTF-8",A="text/plain;charset=UTF-8",n=i.utf8_encode(n));this.withCredentials||(this.withCredentials=P.required_caps&&P.required_caps.send_browser_cookies&&!L),I=!S&&this.upload.hasEventListener(),N=!1,D=!n,S||(O=!0),u.call(this,n)},abort:function(){if(N=!0,S=!1,~e.inArray(n("readyState"),[h.UNSENT,h.OPENED,h.DONE]))n("readyState",h.UNSENT);else{if(n("readyState",h.DONE),O=!1,!k)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);k.getRuntime().exec.call(k,"XMLHttpRequest","abort",D),D=!0}},destroy:function(){k&&("function"===e.typeOf(k.destroy)&&k.destroy(),k=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}})}var p={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};f.prototype=n.instance;var m=["loadstart","progress","abort","error","load","timeout","loadend"],g=1,v=2;return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=n.instance,h}),i(O,[u,m,v,p],function(e,t,n,i){function r(){function i(){l=d=0,c=this.result=null}function o(t,n){var i=this;u=n,i.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(i.state,[r.IDLE,r.DONE])&&a.call(i)},999),i.bind("TransportingComplete",function(){d=l,i.state=r.DONE,c=null,i.result=u.exec.call(i,"Transporter","getAsBlob",t||"")},999),i.state=r.BUSY,i.trigger("TransportingStarted"),a.call(i)}function a(){var e=this,n,i=l-d;f>i&&(f=i),n=t.btoa(c.substr(d,f)),u.exec.call(e,"Transporter","receive",n,l)}var s,u,c,l,d,f;n.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,n,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),f=r.chunk_size,i.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,n,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,n,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),i.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),i.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=i.instance,r}),i(I,[u,f,h,T,S,g,v,O,d,p,y,w,m],function(e,t,n,i,r,o,a,s,u,c,l,d,f){function h(){function i(e){e||(e=this.getRuntime().exec.call(this,"Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name)}function c(t){var i=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);m.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new n.ImageError(n.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(i,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===i)/^data:[^;]*;base64,/.test(t)?c.call(this,new l(null,{data:t}),arguments[1]):v.apply(this,arguments);else{if("node"!==i||"img"!==t.nodeName.toLowerCase())throw new n.DOMException(n.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function m(t,n){var i=this.connectRuntime(t.ruid);this.ruid=i.uid,i.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(n)?!0:n)}function g(t,n){function i(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){i(t)}),n&&"string"==typeof n.required_caps&&(n.required_caps=o.parseCaps(n.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},n))):i(this.connectRuntime(t.ruid))}function v(e,t){var n=this,i;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){this.bind("Load Resize",function(){i.call(this)},999),this.convertEventPropsToHandlers(p),c.apply(this,arguments)},downsize:function(t){var i={width:this.width,height:this.height,crop:!1,preserveHeaders:!0};t="object"==typeof t?e.extend(i,t):e.extend(i,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]});try{if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);if(this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT)throw new n.ImageError(n.ImageError.MAX_RESOLUTION_ERR);this.getRuntime().exec.call(this,"Image","downsize",t.width,t.height,t.crop,t.preserveHeaders)}catch(r){this.trigger("error",r.code)}},crop:function(e,t,n){this.downsize(e,t,!0,n)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);return e||(e="image/jpeg"),"image/jpeg"!==e||t||(t=90),this.getRuntime().exec.call(this,"Image","getAsBlob",e,t)},getAsDataURL:function(e,t){if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);return this.getRuntime().exec.call(this,"Image","getAsDataURL",e,t)},getAsBinaryString:function(e,t){var n=this.getAsDataURL(e,t);return f.atob(n.substring(n.indexOf("base64,")+7))},embed:function(i){function r(){if(u.can("create_canvas")){var t=a.getAsCanvas();if(t)return i.appendChild(t),t=null,a.destroy(),void o.trigger("embedded")}var r=a.getAsDataURL(c,l);if(!r)throw new n.ImageError(n.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",r.length))i.innerHTML='',a.destroy(),o.trigger("embedded");else{var d=new s;d.bind("TransportingComplete",function(){v=o.connectRuntime(this.result.ruid),o.bind("Embedded",function(){e.extend(v.getShimContainer().style,{top:"0px",left:"0px",width:a.width+"px",height:a.height+"px"}),v=null},999),v.exec.call(o,"ImageView","display",this.result.uid,m,g),a.destroy()}),d.transport(f.atob(r.substring(r.indexOf("base64,")+7)),c,e.extend({},p,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:i}))}}var o=this,a,c,l,d,p=arguments[1]||{},m=this.width,g=this.height,v;try{if(!(i=t.get(i)))throw new n.DOMException(n.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);if(this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT)throw new n.ImageError(n.ImageError.MAX_RESOLUTION_ERR);if(c=p.type||this.type||"image/jpeg",l=p.quality||90,d="undefined"!==e.typeOf(p.crop)?p.crop:!1,p.width)m=p.width,g=p.height||m;else{var y=t.getSize(i);y.w&&y.h&&(m=y.w,g=y.h)}return a=new h,a.bind("Resize",function(){r.call(o)}),a.bind("Load",function(){a.downsize(m,g,d,!1)}),a.clone(this,!1),a}catch(w){this.trigger("error",w.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}})}var p=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=6500,h.MAX_RESIZE_HEIGHT=6500,h.prototype=c.instance,h}),i(D,[u,h,g,d],function(e,t,n,i){function r(t){var r=this,s=n.capTest,u=n.capTrue,c=e.extend({access_binary:s(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return r.can("access_binary")&&!!a.Image},display_media:s(i.can("create_canvas")||i.can("use_data_uri_over32kb")),do_cors:s(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:s(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==i.browser||i.version>9)}()),filter_by_extension:s(function(){return"Chrome"===i.browser&&i.version>=28||"IE"===i.browser&&i.version>=10}()),return_response_headers:u,return_response_type:function(e){return"json"===e&&window.JSON?!0:i.can("return_response_type",e)},return_status_code:u,report_upload_progress:s(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return r.can("access_binary")&&i.can("create_canvas")},select_file:function(){return i.can("use_fileinput")&&window.File},select_folder:function(){return r.can("select_file")&&"Chrome"===i.browser&&i.version>=21},select_multiple:function(){return!(!r.can("select_file")||"Safari"===i.browser&&"Windows"===i.os||"iOS"===i.os&&i.verComp(i.osVersion,"7.0.4","<"))},send_binary_string:s(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:s(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||r.can("send_binary_string")},slice_blob:s(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return r.can("slice_blob")&&r.can("send_multipart")},summon_file_dialog:s(function(){return"Firefox"===i.browser&&i.version>=4||"Opera"===i.browser&&i.version>=12||"IE"===i.browser&&i.version>=10||!!~e.inArray(i.browser,["Chrome","Safari"])}()),upload_filesize:u},arguments[2]);n.call(this,t,arguments[1]||o,c),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html5",a={};return n.addConstructor(o,r),a}),i(N,[D,y],function(e,t){function n(){function e(e,t,n){var i;if(!window.File.prototype.slice)return(i=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?i.call(e,t,n):null;try{return e.slice(),e.slice(t,n)}catch(r){return e.slice(t,n-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=n}),i(L,[u],function(e){function t(){this.returnValue=!1}function n(){this.cancelBubble=!0}var i={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=n,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),i.hasOwnProperty(o[r])||(i[o[r]]={}),l=i[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,n,o){var a,s;if(n=n.toLowerCase(),t[r]&&i[t[r]]&&i[t[r]][n]){a=i[t[r]][n];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(n,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+n,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete i[t[r]][n],e.isEmptyObj(i[t[r]])){delete i[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,n){t&&t[r]&&e.each(i[t[r]],function(e,i){a(t,i,n)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),i(M,[D,u,f,L,l,d],function(e,t,n,i,r,o){function a(){var e=[],a;t.extend(this,{init:function(s){var u=this,c=u.getRuntime(),l,d,f,h,p,m;a=s,e=[],f=a.accept.mimes||r.extList2mimes(a.accept,c.can("filter_by_extension")),d=c.getShimContainer(),d.innerHTML='",l=n.get(c.uid),t.extend(l.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=n.get(a.browse_button),c.can("summon_file_dialog")&&("static"===n.getStyle(h,"position")&&(h.style.position="relative"),p=parseInt(n.getStyle(h,"z-index"),10)||1,h.style.zIndex=p,d.style.zIndex=p-1,i.addEvent(h,"click",function(e){var t=n.get(c.uid);t&&!t.disabled&&t.click(),e.preventDefault()},u.uid)),m=c.can("summon_file_dialog")?h:d,i.addEvent(m,"mouseover",function(){u.trigger("mouseenter")},u.uid),i.addEvent(m,"mouseout",function(){u.trigger("mouseleave")},u.uid),i.addEvent(m,"mousedown",function(){u.trigger("mousedown")},u.uid),i.addEvent(n.get(a.container),"mouseup",function(){u.trigger("mouseup")},u.uid),l.onchange=function g(){if(e=[],a.directory?t.each(this.files,function(t){"."!==t.name&&e.push(t)}):e=[].slice.call(this.files),"IE"!==o.browser&&"IEMobile"!==o.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=g}u.trigger("change")},u.trigger({type:"ready",async:!0}),d=null},getFiles:function(){return e},disable:function(e){var t=this.getRuntime(),i;(i=n.get(t.uid))&&(i.disabled=!!e)},destroy:function(){var t=this.getRuntime(),r=t.getShim(),o=t.getShimContainer();i.removeAllEvents(o,this.uid),i.removeAllEvents(a&&n.get(a.container),this.uid),i.removeAllEvents(a&&n.get(a.browse_button),this.uid),o&&(o.innerHTML=""),r.removeInstance(this.uid),e=a=o=r=null}})}return e.FileInput=a}),i(C,[D,u,f,L,l],function(e,t,n,i,r){function o(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var n=t.toArray(e.dataTransfer.types||[]);return-1!==t.inArray("Files",n)||-1!==t.inArray("public.file-url",n)||-1!==t.inArray("application/x-moz-file",n)}function o(e){for(var n=[],i=0;i=4&&u.version<7,f="Android Browser"===u.browser,m=!1;if(p=n.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),h=c(),h.open(n.method,n.url,n.async,n.user,n.password),r instanceof o)r.isDetached()&&(m=!0),r=r.getSource();else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),m=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return void e.call(s,n,r);if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}h.upload?(n.withCredentials&&(h.withCredentials=!0),h.addEventListener("load",function(e){s.trigger(e)}),h.addEventListener("error",function(e){s.trigger(e)}),h.addEventListener("progress",function(e){s.trigger(e)}),h.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):h.onreadystatechange=function v(){switch(h.readyState){case 1:break;case 2:break;case 3:var e,t;try{i.hasSameOrigin(n.url)&&(e=h.getResponseHeader("Content-Length")||0),h.responseText&&(t=h.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:h.onreadystatechange=function(){},s.trigger(0===h.status?"error":"load")}},t.isEmptyObj(n.headers)||t.each(n.headers,function(e,t){h.setRequestHeader(t,e)}),""!==n.responseType&&"responseType"in h&&("json"!==n.responseType||u.can("return_response_type","json")?h.responseType=n.responseType:h.responseType="text"),m?h.sendAsBinary?h.sendAsBinary(r):!function(){for(var e=new Uint8Array(r.length),t=0;ta;a++)i|=o.charCodeAt(e+a)<s;s++)o+=String.fromCharCode(t>>Math.abs(a+8*s)&255);n(o,e,i)}var r=!1,o;return{II:function(e){return e===t?r:void(r=e)},init:function(e){r=!1,o=e},SEGMENT:function(e,t,i){switch(arguments.length){case 1:return o.substr(e,o.length-e-1);case 2:return o.substr(e,t);case 3:n(i,e,t);break;default:return o}},BYTE:function(t){return e(t,1)},SHORT:function(t){return e(t,2)},LONG:function(n,r){return r===t?e(n,4):void i(n,r,4)},SLONG:function(t){var n=e(t,4);return n>2147483647?n-4294967296:n},STRING:function(t,n){var i="";for(n+=t;n>t;t++)i+=String.fromCharCode(e(t,1));return i}}}}),i(k,[P],function(e){return function t(n){var i=[],r,o,a,s=0;if(r=new e,r.init(n),65496===r.SHORT(0)){for(o=2;o<=n.length;)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;s=r.SHORT(o+2)+2,a>=65505&&65519>=a&&i.push({hex:a,name:"APP"+(15&a),start:o,length:s,segment:r.SEGMENT(o,s)}),o+=s}return r.init(null),{headers:i,restore:function(e){var t,n;for(r.init(e),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,t=i.length;t>n;n++)r.SEGMENT(o,0,i[n].segment),o+=i[n].length;return e=r.SEGMENT(),r.init(null),e},strip:function(e){var n,i,o;for(i=new t(e),n=i.headers,i.purge(),r.init(e),o=n.length;o--;)r.SEGMENT(n[o].start,n[o].length,"");return e=r.SEGMENT(),r.init(null),e},get:function(e){for(var t=[],n=0,r=i.length;r>n;n++)i[n].name===e.toUpperCase()&&t.push(i[n].segment);return t},set:function(e,t){var n=[],r,o,a;for("string"==typeof t?n.push(t):n=t,r=o=0,a=i.length;a>r&&(i[r].name===e.toUpperCase()&&(i[r].segment=n[o],i[r].length=n[o].length,o++),!(o>=n.length));r++);},purge:function(){i=[],r.init(null),r=null}}}}}),i(U,[u,P],function(e,n){return function i(){function i(e,n){var i=a.SHORT(e),r,o,s,u,d,f,h,p,m=[],g={};for(r=0;i>r;r++)if(h=f=e+12*r+2,s=n[a.SHORT(h)],s!==t){switch(u=a.SHORT(h+=2),d=a.LONG(h+=2),h+=4,m=[],u){case 1:case 7:for(d>4&&(h=a.LONG(h)+c.tiffHeader),o=0;d>o;o++)m[o]=a.BYTE(h+o);break;case 2:d>4&&(h=a.LONG(h)+c.tiffHeader),g[s]=a.STRING(h,d-1);continue;case 3:for(d>2&&(h=a.LONG(h)+c.tiffHeader),o=0;d>o;o++)m[o]=a.SHORT(h+2*o);break;case 4:for(d>1&&(h=a.LONG(h)+c.tiffHeader),o=0;d>o;o++)m[o]=a.LONG(h+4*o);break;case 5:for(h=a.LONG(h)+c.tiffHeader,o=0;d>o;o++)m[o]=a.LONG(h+4*o)/a.LONG(h+4*o+4);break;case 9:for(h=a.LONG(h)+c.tiffHeader,o=0;d>o;o++)m[o]=a.SLONG(h+4*o);break;case 10:for(h=a.LONG(h)+c.tiffHeader,o=0;d>o;o++)m[o]=a.SLONG(h+4*o)/a.SLONG(h+4*o+4);break;default:continue}p=1==d?m[0]:m,l.hasOwnProperty(s)&&"object"!=typeof p?g[s]=l[s][p]:g[s]=p}return g}function r(){var e=c.tiffHeader;return a.II(18761==a.SHORT(e)),42!==a.SHORT(e+=2)?!1:(c.IFD0=c.tiffHeader+a.LONG(e+=2),u=i(c.IFD0,s.tiff),"ExifIFDPointer"in u&&(c.exifIFD=c.tiffHeader+u.ExifIFDPointer,delete u.ExifIFDPointer),"GPSInfoIFDPointer"in u&&(c.gpsIFD=c.tiffHeader+u.GPSInfoIFDPointer,delete u.GPSInfoIFDPointer),!0)}function o(e,t,n){var i,r,o,u=0;if("string"==typeof t){var l=s[e.toLowerCase()];for(var d in l)if(l[d]===t){t=d;break}}i=c[e.toLowerCase()+"IFD"],r=a.SHORT(i);for(var f=0;r>f;f++)if(o=i+12*f+2,a.SHORT(o)==t){u=o+8;break}return u?(a.LONG(u,n),!0):!1}var a,s,u,c={},l;return a=new n,s={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion", -40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire.",1:"Flash fired.",5:"Strobe return light not detected.",7:"Strobe return light detected.",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},{init:function(e){return c={tiffHeader:10},e!==t&&e.length?(a.init(e),65505===a.SHORT(0)&&"EXIF\x00"===a.STRING(4,5).toUpperCase()?r():!1):!1},TIFF:function(){return u},EXIF:function(){var t;if(t=i(c.exifIFD,s.exif),t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n=65472&&65475>=t)return e+=5,{height:c.SHORT(e),width:c.SHORT(e+=2)};n=c.SHORT(e+=2),e+=n-2}return null}function s(){d&&l&&c&&(d.purge(),l.purge(),c.init(null),u=f=l=d=c=null)}var u,c,l,d,f,h;if(u=o,c=new i,c.init(u),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new n(o),d=new r,h=!!d.init(l.get("app1")[0]),f=a.call(this),e.extend(this,{type:"image/jpeg",size:u.length,width:f&&f.width||0,height:f&&f.height||0,setExif:function(t,n){return h?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,n),void l.set("app1",d.getBinary())):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):u=l.restore(u)},stripHeaders:function(e){return l.strip(e)},purge:function(){s.call(this)}}),h&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS()})}return o}),i(z,[h,u,P],function(e,t,n){function i(i){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:u.LONG(t),height:u.LONG(t+=4)}):null}function o(){u&&(u.init(null),s=d=c=l=u=null)}function a(e){var t,n,i,r;return t=u.LONG(e),n=u.STRING(e+=4,4),i=e+=4,r=u.LONG(e+t),{length:t,type:n,start:i,CRC:r}}var s,u,c,l,d;s=i,u=new n,u.init(s),function(){var t=0,n=0,i=[35152,20039,3338,6666];for(n=0;ng;){for(var v=g+f>a?a-g:f,y=0;o>y;){var w=y+f>o?o-y:f;p.clearRect(0,0,f,f),p.drawImage(e,-y,-g);var E=y*s/o+c<<0,_=Math.ceil(w*s/o),x=g*u/a/m+l<<0,b=Math.ceil(v*u/a/m);d.drawImage(h,0,0,w,v,E,x,_,b),y+=f}g+=f}h=p=null}function t(e){var t=e.naturalWidth,n=e.naturalHeight;if(t*n>1048576){var i=document.createElement("canvas");i.width=i.height=1;var r=i.getContext("2d");return r.drawImage(e,-t+1,0),0===r.getImageData(0,0,1,1).data[3]}return!1}function n(e,t,n){var i=document.createElement("canvas");i.width=1,i.height=n;var r=i.getContext("2d");r.drawImage(e,0,0);for(var o=r.getImageData(0,0,1,n).data,a=0,s=n,u=n;u>a;){var c=o[4*(u-1)+3];0===c?s=u:a=u,u=s+a>>1}i=null;var l=u/n;return 0===l?1:l}return{isSubsampled:t,renderTo:e}}),i(X,[D,u,h,m,w,G,q,l,d],function(e,t,n,i,r,o,a,s,u){function c(){function e(){if(!E&&!y)throw new n.ImageError(n.DOMException.INVALID_STATE_ERR);return E||y}function c(e){return i.atob(e.substring(e.indexOf("base64,")+7))}function l(e,t){return"data:"+(t||"")+";base64,"+i.btoa(e)}function d(e){var t=this;y=new Image,y.onerror=function(){g.call(this),t.trigger("error",n.ImageError.WRONG_FORMAT)},y.onload=function(){t.trigger("load")},y.src=/^data:[^;]*;base64,/.test(e)?e:l(e,x.type)}function f(e,t){var i=this,r;return window.FileReader?(r=new FileReader,r.onload=function(){t(this.result)},r.onerror=function(){i.trigger("error",n.ImageError.WRONG_FORMAT)},r.readAsDataURL(e),void 0):t(e.getAsDataURL())}function h(n,i,r,o){var a=this,s,u,c=0,l=0,d,f,h,g;if(R=o,g=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1,-1!==t.inArray(g,[5,6,7,8])){var v=n;n=i,i=v}return d=e(),r?(n=Math.min(n,d.width),i=Math.min(i,d.height),s=Math.max(n/d.width,i/d.height)):s=Math.min(n/d.width,i/d.height),s>1&&!r&&o?void this.trigger("Resize"):(E||(E=document.createElement("canvas")),f=Math.round(d.width*s),h=Math.round(d.height*s),r?(E.width=n,E.height=i,f>n&&(c=Math.round((f-n)/2)),h>i&&(l=Math.round((h-i)/2))):(E.width=f,E.height=h),R||m(E.width,E.height,g),p.call(this,d,E,-c,-l,f,h),this.width=E.width,this.height=E.height,b=!0,void a.trigger("Resize"))}function p(e,t,n,i,r,o){if("iOS"===u.OS)a.renderTo(e,t,{width:r,height:o,x:n,y:i});else{var s=t.getContext("2d");s.drawImage(e,n,i,r,o)}}function m(e,t,n){switch(n){case 5:case 6:case 7:case 8:E.width=t,E.height=e;break;default:E.width=e,E.height=t}var i=E.getContext("2d");switch(n){case 2:i.translate(e,0),i.scale(-1,1);break;case 3:i.translate(e,t),i.rotate(Math.PI);break;case 4:i.translate(0,t),i.scale(1,-1);break;case 5:i.rotate(.5*Math.PI),i.scale(1,-1);break;case 6:i.rotate(.5*Math.PI),i.translate(0,-t);break;case 7:i.rotate(.5*Math.PI),i.translate(e,-t),i.scale(-1,1);break;case 8:i.rotate(-.5*Math.PI),i.translate(-e,0)}}function g(){w&&(w.purge(),w=null),_=y=E=x=null,b=!1}var v=this,y,w,E,_,x,b=!1,R=!0;t.extend(this,{loadFromBlob:function(e){var t=this,i=t.getRuntime(),r=arguments.length>1?arguments[1]:!0;if(!i.can("access_binary"))throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);return x=e,e.isDetached()?(_=e.getSource(),void d.call(this,_)):void f.call(this,e.getSource(),function(e){r&&(_=c(e)),d.call(t,e)})},loadFromImage:function(e,t){this.meta=e.meta,x=new r(null,{name:e.name,size:e.size,type:e.type}),d.call(this,t?_=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t=this.getRuntime(),n;return!w&&_&&t.can("access_image_binary")&&(w=new o(_)),n={width:e().width||0,height:e().height||0,type:x.type||s.getFileMime(x.name),size:_&&_.length||x.size||0,name:x.name||"",meta:w&&w.meta||this.meta||{}}},downsize:function(){h.apply(this,arguments)},getAsCanvas:function(){return E&&(E.id=this.uid+"_canvas"),E},getAsBlob:function(e,t){return e!==this.type&&h.call(this,this.width,this.height,!1),new r(null,{name:x.name||"",type:e,data:v.getAsBinaryString.call(this,e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return y.src;if("image/jpeg"!==e)return E.toDataURL("image/png");try{return E.toDataURL("image/jpeg",t/100)}catch(n){return E.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return _||(_=c(v.getAsDataURL(e,t))),_;if("image/jpeg"!==e)_=c(v.getAsDataURL(e,t));else{var n;t||(t=90);try{n=E.toDataURL("image/jpeg",t/100)}catch(i){n=E.toDataURL("image/jpeg")}_=c(n),w&&(_=w.stripHeaders(_),R&&(w.meta&&w.meta.exif&&w.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),_=w.writeHeaders(_)),w.purge(),w=null)}return b=!1,_},destroy:function(){v=null,g.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),i(j,[u,d,f,h,g],function(e,t,n,i,r){function o(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(n){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function a(a){var c=this,l;a=e.extend({swf_url:t.swf_url},a),r.call(this,a,s,{access_binary:function(e){return e&&"browser"===c.mode},access_image_binary:function(e){return e&&"browser"===c.mode},display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===c.mode},resize_image:r.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===c.mode},return_status_code:function(t){return"browser"===c.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:function(e){return e&&"browser"===c.mode},send_browser_cookies:function(e){return e&&"browser"===c.mode},send_custom_headers:function(e){return e&&"browser"===c.mode},send_multipart:r.capTrue,slice_blob:function(e){return e&&"browser"===c.mode},stream_upload:function(e){return e&&"browser"===c.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===c.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),o()<10&&(this.mode=!1),e.extend(this,{getShim:function(){return n.get(this.uid)},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec(this.uid,e,t,n)},init:function(){var n,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),n='',"IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=n,r=o=null):o.innerHTML=n,l=setTimeout(function(){c&&!c.initialized&&c.trigger("Error",new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){e.call(c),clearTimeout(l),a=l=e=c=null}}(this.destroy)},u)}var s="flash",u={};return r.addConstructor(s,a),u}),i(V,[j,y],function(e,t){var n={slice:function(e,n,i,r){var o=this.getRuntime();return 0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),e=o.shimExec.call(this,"Blob","slice",n,i,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=n}),i(W,[j],function(e){var t={init:function(e){this.getRuntime().shimExec.call(this,"FileInput","init",{name:e.name,accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=t}),i(Y,[j,m],function(e,t){function n(e,n){switch(n){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var i="",r={read:function(e,t){var r=this,o=r.getRuntime();return"readAsDataURL"===e&&(i="data:"+(t.type||"")+";base64,"),r.bind("Progress",function(t,r){r&&(i+=n(r,e))}),o.shimExec.call(this,"FileReader","readAsBase64",t.uid)},getResult:function(){return i},destroy:function(){i=null}};return e.FileReader=r}),i($,[j,m],function(e,t){function n(e,n){switch(n){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var i={read:function(e,t){var i,r=this.getRuntime();return(i=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(i="data:"+(t.type||"")+";base64,"+i),n(i,e,t.type)):null}};return e.FileReaderSync=i}),i(J,[j,u,y,w,T,A,O],function(e,t,n,i,r,o,a){var s={send:function(e,i){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,i)}function s(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),i=null,r()}function u(e,t){var n=new a;n.bind("TransportingComplete",function(){t(this.result)}),n.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),i instanceof o){var d;if(i.each(function(e,t){e instanceof n?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),i.hasBlob()){var f=i.getBlob();f.isDetached()?u(f,function(e){f.destroy(),s(d,e)}):s(d,f)}else i=null,r()}else i instanceof n?i.isDetached()?u(i,function(e){i.destroy(),i=e.uid,r()}):(i=i.uid,r()):r()},getResponse:function(e){var n,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new i(a.uid,o),"blob"===e)return o;try{if(n=new r,~t.inArray(e,["","text"]))return n.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(n.readAsText(o))}finally{o.destroy()}}return null},abort:function(e){var t=this.getRuntime();t.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=s}),i(Z,[j,y],function(e,t){var n={getAsBlob:function(e){var n=this.getRuntime(),i=n.shimExec.call(this,"Transporter","getAsBlob",e);return i?new t(n.uid,i):null}};return e.Transporter=n}),i(K,[j,u,O,y,T],function(e,t,n,i,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(i,"Image","loadFromBlob",e.uid),i=r=null}var i=this,r=i.getRuntime();if(e.isDetached()){var o=new n;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getAsBlob:function(e,t){var n=this.getRuntime(),r=n.shimExec.call(this,"Image","getAsBlob",e,t);return r?new i(n.uid,r):null},getAsDataURL:function(){var e=this.getRuntime(),t=e.Image.getAsBlob.apply(this,arguments),n;return t?(n=new r,n.readAsDataURL(t)):null}};return e.Image=o}),i(Q,[u,d,f,h,g],function(e,t,n,i,r){function o(e){var t=!1,n=null,i,r,o,a,s,u=0;try{try{n=new ActiveXObject("AgControl.AgControl"),n.IsVersionSupported(e)&&(t=!0),n=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(i=l.description,"1.0.30226.2"===i&&(i="2.0.30226.2"),r=i.split(".");r.length>3;)r.pop();for(;r.length<4;)r.push(0);for(o=e.split(".");o.length>4;)o.pop();do a=parseInt(o[u],10),s=parseInt(r[u],10),u++;while(u=a&&!isNaN(a)&&(t=!0)}}}catch(d){t=!1}return t}function a(a){var c=this,l;a=e.extend({xap_url:t.xap_url},a),r.call(this,a,s,{access_binary:r.capTrue,access_image_binary:r.capTrue,display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:r.capTrue,resize_image:r.capTrue,return_response_headers:function(e){return e&&"client"===c.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===c.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:r.capTrue,send_browser_cookies:function(e){return e&&"browser"===c.mode},send_custom_headers:function(e){return e&&"client"===c.mode},send_multipart:r.capTrue,slice_blob:r.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:r.capTrue,use_http_method:function(t){return"client"===c.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),o("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return n.get(this.uid).content.Moxie},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec(this.uid,e,t,n)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='',l=setTimeout(function(){c&&!c.initialized&&c.trigger("Error",new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(c),clearTimeout(l),a=l=e=c=null}}(this.destroy)},u)}var s="silverlight",u={};return r.addConstructor(s,a),u}),i(ee,[Q,u,V],function(e,t,n){return e.Blob=t.extend({},n)}),i(te,[Q],function(e){var t={init:function(e){function t(e){for(var t="",n=0;no;o++)n=t.keys[o],s=t[n],s&&(/^(\d|[1-9]\d+)$/.test(s)?s=parseInt(s,10):/^\d*\.\d+$/.test(s)&&(s=parseFloat(s)),i.meta[e][n]=s)}),i.width=parseInt(r.width,10),i.height=parseInt(r.height,10),i.size=parseInt(r.size,10),i.type=r.type,i.name=r.name,i}})}),i(ue,[u,h,g,d],function(e,t,n,i){function r(t){var r=this,s=n.capTest,u=n.capTrue;n.call(this,t,o,{access_binary:s(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:s(a.Image&&(i.can("create_canvas")||i.can("use_data_uri_over32kb"))),do_cors:!1,drag_and_drop:!1,filter_by_extension:s(function(){return"Chrome"===i.browser&&i.version>=28||"IE"===i.browser&&i.version>=10}()),resize_image:function(){return a.Image&&r.can("access_binary")&&i.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return i.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return r.can("select_file")},summon_file_dialog:s(function(){return"Firefox"===i.browser&&i.version>=4||"Opera"===i.browser&&i.version>=12||!!~e.inArray(i.browser,["Chrome","Safari"])}()),upload_filesize:u,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html4",a={};return n.addConstructor(o,r),a}),i(ce,[ue,u,f,L,l,d],function(e,t,n,i,r,o){function a(){function e(){var r=this,l=r.getRuntime(),d,f,h,p,m,g;g=t.guid("uid_"),d=l.getShimContainer(),a&&(h=n.get(a+"_form"),h&&t.extend(h.style,{top:"100%"})),p=document.createElement("form"),p.setAttribute("id",g+"_form"),p.setAttribute("method","post"),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),t.extend(p.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=document.createElement("input"),m.setAttribute("id",g),m.setAttribute("type","file"),m.setAttribute("name",c.name||"Filedata"),m.setAttribute("accept",u.join(",")),t.extend(m.style,{fontSize:"999px",opacity:0}),p.appendChild(m),d.appendChild(p),t.extend(m.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===o.browser&&o.version<10&&t.extend(m.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),m.onchange=function(){var t;this.value&&(t=this.files?this.files[0]:{name:this.value},s=[t],this.onchange=function(){},e.call(r),r.bind("change",function i(){var e=n.get(g),t=n.get(g+"_form"),o;r.unbind("change",i),r.files.length&&e&&t&&(o=r.files[0],e.setAttribute("id",o.uid),t.setAttribute("id",o.uid+"_form"),t.setAttribute("target",o.uid+"_iframe")),e=t=null},998),m=p=null,r.trigger("change"))},l.can("summon_file_dialog")&&(f=n.get(c.browse_button),i.removeEvent(f,"click",r.uid),i.addEvent(f,"click",function(e){m&&!m.disabled&&m.click(),e.preventDefault()},r.uid)),a=g,d=h=f=null}var a,s=[],u=[],c;t.extend(this,{init:function(t){var o=this,a=o.getRuntime(),s;c=t,u=t.accept.mimes||r.extList2mimes(t.accept,a.can("filter_by_extension")),s=a.getShimContainer(),function(){var e,r,u;e=n.get(t.browse_button),a.can("summon_file_dialog")&&("static"===n.getStyle(e,"position")&&(e.style.position="relative"),r=parseInt(n.getStyle(e,"z-index"),10)||1,e.style.zIndex=r,s.style.zIndex=r-1),u=a.can("summon_file_dialog")?e:s,i.addEvent(u,"mouseover",function(){o.trigger("mouseenter")},o.uid),i.addEvent(u,"mouseout",function(){o.trigger("mouseleave")},o.uid),i.addEvent(u,"mousedown",function(){o.trigger("mousedown")},o.uid),i.addEvent(n.get(t.container),"mouseup",function(){o.trigger("mouseup")},o.uid),e=null}(),e.call(this),s=null,o.trigger({type:"ready",async:!0})},getFiles:function(){return s},disable:function(e){var t;(t=n.get(a))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),r=e.getShimContainer();i.removeAllEvents(r,this.uid),i.removeAllEvents(c&&n.get(c.container),this.uid),i.removeAllEvents(c&&n.get(c.browse_button),this.uid),r&&(r.innerHTML=""),t.removeInstance(this.uid),a=s=u=c=r=t=null}})}return e.FileInput=a}),i(le,[ue,F],function(e,t){return e.FileReader=t}),i(de,[ue,u,f,R,h,L,y,A],function(e,t,n,i,r,o,a,s){function u(){function e(e){var t=this,i,r,a,s,u=!1;if(l){if(i=l.id.replace(/_iframe$/,""),r=n.get(i+"_form")){for(a=r.getElementsByTagName("input"),s=a.length;s--;)switch(a[s].getAttribute("type")){case"hidden":a[s].parentNode.removeChild(a[s]);break;case"file":u=!0}a=[],u||r.parentNode.removeChild(r),r=null}setTimeout(function(){o.removeEvent(l,"load",t.uid),l.parentNode&&l.parentNode.removeChild(l);var n=t.getRuntime().getShimContainer();n.children.length||n.parentNode.removeChild(n),n=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,f){function h(){var n=m.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='',l=r.firstChild,n.appendChild(l),o.addEvent(l,"load",function(){var n;try{n=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(n.title)?u=n.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(n.body.innerHTML),p.trigger({type:"progress",loaded:c.length,total:c.length}),w&&p.trigger({type:"uploadprogress",loaded:w.size||1025,total:w.size||1025}))}catch(r){if(!i.hasSameOrigin(d.url))return void e.call(p,function(){p.trigger("error")});u=404}e.call(p,function(){p.trigger("load")})},p.uid)}var p=this,m=p.getRuntime(),g,v,y,w;if(u=c=null,f instanceof s&&f.hasBlob()){if(w=f.getBlob(),g=w.uid,y=n.get(g),v=n.get(g+"_form"),!v)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else g=t.guid("uid_"),v=document.createElement("form"),v.setAttribute("id",g+"_form"),v.setAttribute("method",d.method),v.setAttribute("enctype","multipart/form-data"),v.setAttribute("encoding","multipart/form-data"),v.setAttribute("target",g+"_iframe"),m.getShimContainer().appendChild(v);f instanceof s&&f.each(function(e,n){if(e instanceof a)y&&y.setAttribute("name",n);else{var i=document.createElement("input");t.extend(i,{type:"hidden",name:n,value:e}),y?v.insertBefore(i,y):v.appendChild(i)}}),v.setAttribute("action",d.url),h(),v.submit(),p.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(n){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),i(fe,[ue,X],function(e,t){return e.Image=t}),a([u,c,l,d,f,h,p,m,g,v,y,w,E,_,x,b,R,T,A,S,O,I,L])}(this);;(function(e){"use strict";var t={},n=e.moxie.core.utils.Basic.inArray;return function r(e){var i,s;for(i in e)s=typeof e[i],s==="object"&&!~n(i,["Exceptions","Env","Mime"])?r(e[i]):s==="function"&&(t[i]=e[i])}(e.moxie),t.Env=e.moxie.core.utils.Env,t.Mime=e.moxie.core.utils.Mime,t.Exceptions=e.moxie.core.Exceptions,e.mOxie=t,e.o||(e.o=t),t})(this); \ No newline at end of file +!function(e,t){"use strict";function n(e,t){for(var n,i=[],r=0;r0&&n(o,function(n,o){n!==r&&(e(i[o])===e(n)&&~a(e(n),["array","object"])?t(i[o],n):i[o]=n)})}),i},n=function(e,t){var n,i,r,o;if(e){try{n=e.length}catch(a){n=o}if(n===o){for(i in e)if(e.hasOwnProperty(i)&&t(e[i],i)===!1)return}else for(r=0;n>r;r++)if(t(e[r],r)===!1)return}},i=function(t){var n;if(!t||"object"!==e(t))return!0;for(n in t)return!1;return!0},r=function(t,n){function i(r){"function"===e(t[r])&&t[r](function(e){++rn;n++)if(t[n]===e)return n}return-1},s=function(t,n){var i=[];"array"!==e(t)&&(t=[t]),"array"!==e(n)&&(n=[n]);for(var r in t)-1===a(t[r],n)&&i.push(t[r]);return i.length?i:!1},u=function(e,t){var i=[];return n(e,function(e){-1!==a(e,t)&&i.push(e)}),i.length?i:null},c=function(e){var t,n=[];for(t=0;ti;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}(),d=function(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""):e},f=function(e){if("string"!=typeof e)return e;var t={t:1099511627776,g:1073741824,m:1048576,k:1024},n;return e=/^([0-9\.]+)([tmgk]?)$/.exec(e.toLowerCase().replace(/[^0-9\.tmkg]/g,"")),n=e[2],e=+e[1],t.hasOwnProperty(n)&&(e*=t[n]),Math.floor(e)},h=function(t){var n=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=n.shift();return"undefined"!==e(t)?t:""})};return{guid:l,typeOf:e,extend:t,each:n,isEmptyObj:i,inSeries:r,inParallel:o,inArray:a,arrayDiff:s,arrayIntersect:u,toArray:c,trim:d,sprintf:h,parseSizeStr:f}}),i(c,[u],function(e){function t(e,t,n){var i=0,r=0,o=0,a={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},s=function(e){return e=(""+e).replace(/[_\-+]/g,"."),e=e.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,"."),e.length?e.split("."):[-8]},u=function(e){return e?isNaN(e)?a[e]||-7:parseInt(e,10):0};for(e=s(e),t=s(t),r=Math.max(e.length,t.length),i=0;r>i;i++)if(e[i]!=t[i]){if(e[i]=u(e[i]),t[i]=u(t[i]),e[i]t[i]){o=1;break}}if(!n)return o;switch(n){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var n=function(e){var t="",n="?",i="function",r="undefined",o="object",a="major",s="model",u="name",c="type",l="vendor",d="version",f="architecture",h="console",p="mobile",m="tablet",g={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},v={rgx:function(){for(var t,n=0,a,s,u,c,l,d,f=arguments;n0?2==c.length?typeof c[1]==i?t[c[0]]=c[1].call(this,d):t[c[0]]=c[1]:3==c.length?typeof c[1]!==i||c[1].exec&&c[1].test?t[c[0]]=d?d.replace(c[1],c[2]):e:t[c[0]]=d?c[1].call(this,d,c[2]):e:4==c.length&&(t[c[0]]=d?c[3].call(this,d.replace(c[1],c[2])):e):t[c]=d?d:e;break}if(l)break}return t},str:function(t,i){for(var r in i)if(typeof i[r]===o&&i[r].length>0){for(var a=0;a=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(n){var i=[].slice.call(arguments);return i.shift(),"function"===e.typeOf(t[n])?t[n].apply(this,i):!!t[n]}}(),r={can:i,browser:n.browser.name,version:parseFloat(n.browser.major),os:n.os.name,osVersion:n.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return r.OS=r.os,r}),i(l,[u],function(e){var t={};return{addI18n:function(n){return e.extend(t,n)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var n=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=n.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),i(d,[u,l],function(e,t){var n="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",i={mimes:{},extensions:{},addMimeType:function(e){var t=e.split(/,/),n,i,r;for(n=0;n=0;o--)if(r[o].fn===i){r.splice(o,1);break}}else r=[];r.length||(delete e[this.uid][t],n.isEmptyObj(e[this.uid])&&delete e[this.uid])}},removeAllEventListeners:function(){e[this.uid]&&delete e[this.uid]},dispatchEvent:function(i){var r,o,a,s,u={},c=!0,l;if("string"!==n.typeOf(i)){if(s=i,"string"!==n.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);i=s.type,s.total!==l&&s.loaded!==l&&(u.total=s.total,u.loaded=s.loaded),u.async=s.async||!1}if(-1!==i.indexOf("::")?!function(e){r=e[0],i=e[1]}(i.split("::")):r=this.uid,i=i.toLowerCase(),o=e[r]&&e[r][i]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),u.type=i,a.unshift(u);var d=[];n.each(o,function(e){a[0].target=e.scope,d.push(u.async?function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}:function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&n.inSeries(d,function(e){c=!e})}return c},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===n.typeOf(this[t])&&this[t].apply(this,arguments)}),n.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===n.typeOf(t[e])&&(t[e]=null)})}})}return i.instance=new i,i}),i(m,[c,u,f,p],function(e,t,n,i){function r(e,i,o,s,u){var c=this,l,d=t.guid(i+"_"),f=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(f=r.getMode(s,e.preferred_caps,f)),l=function(){var e={};return{exec:function(t,n,i,r){return l[n]&&(e[t]||(e[t]={context:this,instance:new l[n]}),e[t].instance[i])?e[t].instance[i].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var n=this;t.each(e,function(e,i){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),n.removeInstance(i)})}}}(),t.extend(this,{initialized:!1,uid:d,type:i,mode:r.getMode(s,e.required_caps,f),shimid:d+"_container",clients:0,options:e,can:function(e,n){var i=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(n)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],i))return!1;return!0}return"function"===t.typeOf(i[e])?i[e].call(this,n):n===i[e]},getShimContainer:function(){var e,i=n.get(this.shimid);return i||(e=this.options.container?n.get(this.options.container):document.body,i=document.createElement("div"),i.id=this.shimid,i.className="moxie-shim moxie-shim-"+this.type,t.extend(i.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(i),e=null),i},getShim:function(){return l},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec.call(this,this.uid,e,t,n)},exec:function(e,t){var n=[].slice.call(arguments,2);return c[e]&&c[e][t]?c[e][t].apply(this,n):c.shimExec.apply(this,arguments)},destroy:function(){if(c){var e=n.get(this.shimid);e&&e.parentNode.removeChild(e),l&&l.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=c=l=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=i.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var n={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){n[e]=!0}),n)},r.can=function(e,t){var n,i=r.getConstructor(e),o;return i?(n=new i({required_caps:t}),o=n.mode,n.destroy(),!!o):!1},r.thatCan=function(e,t){var n=(t||r.order).split(/\s*,\s*/);for(var i in n)if(r.can(n[i],e))return n[i];return null},r.getMode=function(e,n,i){var r=null;if("undefined"===t.typeOf(i)&&(i="browser"),n&&!t.isEmptyObj(e)){if(t.each(n,function(n,i){if(e.hasOwnProperty(i)){var o=e[i](n);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(i,r)?i:r[0];if(r===!1)return!1}return i},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),i(g,[c,h,u,m],function(e,t,n,i){return function r(){var e;n.extend(this,{connectRuntime:function(r){function o(n){var s,u;return n.length?(s=n.shift().toLowerCase(),(u=i.getConstructor(s))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,a.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(n)}),e.mode?void e.init():void e.trigger("Error")):void o(n)):(a.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),void(e=null))}var a=this,s;if("string"===n.typeOf(r)?s=r:"string"===n.typeOf(r.ruid)&&(s=r.ruid),s){if(e=i.getRuntime(s))return e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||i.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null}})}}),i(v,[u,c,d,f,h,p,l,m,g],function(e,t,n,i,r,o,a,s,u){function c(t){var o=this,c,d,f;if(-1!==e.inArray(e.typeOf(t),["string","node"])&&(t={browse_button:t}),d=i.get(t.browse_button),!d)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR);f={accept:[{title:a.translate("All Files"),extensions:"*"}],name:"file",multiple:!1,required_caps:!1,container:d.parentNode||document.body},t=e.extend({},f,t),"string"==typeof t.required_caps&&(t.required_caps=s.parseCaps(t.required_caps)),"string"==typeof t.accept&&(t.accept=n.mimes2extList(t.accept)),c=i.get(t.container),c||(c=document.body),"static"===i.getStyle(c,"position")&&(c.style.position="relative"),c=d=null,u.call(o),e.extend(o,{uid:e.guid("uid_"),ruid:null,shimid:null,files:null,init:function(){o.bind("RuntimeInit",function(n,r){o.ruid=r.uid,o.shimid=r.shimid,o.bind("Ready",function(){o.trigger("Refresh")},999),o.bind("Refresh",function(){var n,o,a,s;a=i.get(t.browse_button),s=i.get(r.shimid),a&&(n=i.getPos(a,i.get(t.container)),o=i.getSize(a),s&&e.extend(s.style,{top:n.y+"px",left:n.x+"px",width:o.w+"px",height:o.h+"px"})),s=a=null}),r.exec.call(o,"FileInput","init",t)}),o.connectRuntime(e.extend({},t,{required_caps:{select_file:!0}}))},disable:function(t){var n=this.getRuntime();n&&n.exec.call(this,"FileInput","disable","undefined"===e.typeOf(t)?!0:t)},refresh:function(){o.trigger("Refresh")},destroy:function(){var t=this.getRuntime();t&&(t.exec.call(this,"FileInput","destroy"),this.disconnectRuntime()),"array"===e.typeOf(this.files)&&e.each(this.files,function(e){e.destroy()}),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","change","cancel","mouseenter","mouseleave","mousedown","mouseup"];return c.prototype=o.instance,c}),i(w,[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},n=function(e,n){if("function"==typeof window.atob)return n?t(window.atob(e)):window.atob(e);var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r,o,a,s,u,c,l,d,f=0,h=0,p="",m=[];if(!e)return e;e+="";do s=i.indexOf(e.charAt(f++)),u=i.indexOf(e.charAt(f++)),c=i.indexOf(e.charAt(f++)),l=i.indexOf(e.charAt(f++)),d=s<<18|u<<12|c<<6|l,r=d>>16&255,o=d>>8&255,a=255&d,64==c?m[h++]=String.fromCharCode(r):64==l?m[h++]=String.fromCharCode(r,o):m[h++]=String.fromCharCode(r,o,a);while(f>18&63,u=d>>12&63,c=d>>6&63,l=63&d,m[h++]=i.charAt(s)+i.charAt(u)+i.charAt(c)+i.charAt(l);while(fa;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return i.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return i.call(this,"readAsDataURL",e)},readAsText:function(e){return i.call(this,"readAsText",e)}})}}),i(A,[h,u,y],function(e,t,n){function i(){var e,i=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof n?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):i.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(n){t.each(i,function(e){n(e.value,e.name)}),e&&n(e.value,e.name)},destroy:function(){e=null,i=[]}})}return i}),i(T,[u,h,p,w,x,m,R,y,S,A,c,d],function(e,t,n,i,r,o,a,s,u,c,l,d){function f(){this.uid=e.guid("uid_")}function h(){function n(e,t){return w.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?w[e]:v[e]:void(l.can("define_property")?w[e]=t:v[e]=t):void 0}function u(t){function i(){k&&(k.destroy(),k=null),s.dispatchEvent("loadend"),s=null}function r(r){k.bind("LoadStart",function(e){n("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),O&&s.upload.dispatchEvent(e)}),k.bind("Progress",function(e){n("readyState")!==h.LOADING&&(n("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),k.bind("UploadProgress",function(e){O&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),k.bind("Load",function(t){n("readyState",h.DONE),n("status",Number(r.exec.call(k,"XMLHttpRequest","getStatus")||0)),n("statusText",p[n("status")]||""),n("response",r.exec.call(k,"XMLHttpRequest","getResponse",n("responseType"))),~e.inArray(n("responseType"),["text",""])?n("responseText",n("response")):"document"===n("responseType")&&n("responseXML",n("response")),B=r.exec.call(k,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),n("status")>0?(O&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(N=!0,s.dispatchEvent("error")),i()}),k.bind("Abort",function(e){s.dispatchEvent(e),i()}),k.bind("Error",function(e){N=!0,n("readyState",h.DONE),s.dispatchEvent("readystatechange"),D=!0,s.dispatchEvent(e),i()}),r.exec.call(k,"XMLHttpRequest","send",{url:E,method:_,async:y,user:x,password:R,headers:b,mimeType:A,encoding:S,responseType:s.responseType,withCredentials:s.withCredentials,options:H},t)}var s=this;M=(new Date).getTime(),k=new a,"string"==typeof H.required_caps&&(H.required_caps=o.parseCaps(H.required_caps)),H.required_caps=e.extend({},H.required_caps,{return_response_type:s.responseType}),t instanceof c&&(H.required_caps.send_multipart=!0),e.isEmptyObj(b)||(H.required_caps.send_custom_headers=!0),L||(H.required_caps.do_cors=!0),H.ruid?r(k.connectRuntime(H)):(k.bind("RuntimeInit",function(e,t){r(t)}),k.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),k.connectRuntime(H))}function g(){n("responseText",""),n("responseXML",null),n("response",null),n("status",0),n("statusText",""),M=C=null}var v=this,w={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},y=!0,E,_,b={},x,R,S=null,A=null,T=!1,I=!1,O=!1,D=!1,N=!1,L=!1,M,C,F=null,P=null,H={},k,B="",G;e.extend(this,w,{uid:e.guid("uid_"),upload:new f,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||i.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(_=o.toUpperCase()),~e.inArray(_,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=i.utf8_encode(a),l=r.parseUrl(a),L=r.hasSameOrigin(l),E=r.resolveUrl(a),(u||c)&&!L)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(x=u||l.user,R=c||l.pass,y=s||!0,y===!1&&(n("timeout")||n("withCredentials")||""!==n("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);T=!y,I=!1,b={},g.call(this),n("readyState",h.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(n("readyState")!==h.OPENED||I)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||i.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(b[r]?b[r]+=", "+o:b[r]=o,!0)},getAllResponseHeaders:function(){return B||""},getResponseHeader:function(t){return t=t.toLowerCase(),N||~e.inArray(t,["set-cookie","set-cookie2"])?null:B&&""!==B&&(G||(G={},e.each(B.split(/\r\n/),function(t){var n=t.split(/:\s+/);2===n.length&&(n[0]=e.trim(n[0]),G[n[0].toLowerCase()]={header:n[0],value:e.trim(n[1])})})),G.hasOwnProperty(t))?G[t].header+": "+G[t].value:null},overrideMimeType:function(i){var r,o;if(~e.inArray(n("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i=e.trim(i.toLowerCase()),/;/.test(i)&&(r=i.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(i=r[1],r[2]&&(o=r[2])),!d.mimes[i])throw new t.DOMException(t.DOMException.SYNTAX_ERR);F=i,P=o},send:function(n,r){if(H="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==h.OPENED||I)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n instanceof s)H.ruid=n.ruid,A=n.type||"application/octet-stream";else if(n instanceof c){if(n.hasBlob()){var o=n.getBlob();H.ruid=o.ruid,A=o.type||"application/octet-stream"}}else"string"==typeof n&&(S="UTF-8",A="text/plain;charset=UTF-8",n=i.utf8_encode(n));this.withCredentials||(this.withCredentials=H.required_caps&&H.required_caps.send_browser_cookies&&!L),O=!T&&this.upload.hasEventListener(),N=!1,D=!n,T||(I=!0),u.call(this,n)},abort:function(){if(N=!0,T=!1,~e.inArray(n("readyState"),[h.UNSENT,h.OPENED,h.DONE]))n("readyState",h.UNSENT);else{if(n("readyState",h.DONE),I=!1,!k)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);k.getRuntime().exec.call(k,"XMLHttpRequest","abort",D),D=!0}},destroy:function(){k&&("function"===e.typeOf(k.destroy)&&k.destroy(),k=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(m.concat(["readystatechange"])),this.upload.handleEventProps(m)}var p={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};f.prototype=n.instance;var m=["loadstart","progress","abort","error","load","timeout","loadend"],g=1,v=2;return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=n.instance,h}),i(I,[u,w,g,p],function(e,t,n,i){function r(){function i(){l=d=0,c=this.result=null}function o(t,n){var i=this;u=n,i.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(i.state,[r.IDLE,r.DONE])&&a.call(i)},999),i.bind("TransportingComplete",function(){d=l,i.state=r.DONE,c=null,i.result=u.exec.call(i,"Transporter","getAsBlob",t||"")},999),i.state=r.BUSY,i.trigger("TransportingStarted"),a.call(i)}function a(){var e=this,n,i=l-d;f>i&&(f=i),n=t.btoa(c.substr(d,f)),u.exec.call(e,"Transporter","receive",n,l)}var s,u,c,l,d,f;n.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,n,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),f=r.chunk_size,i.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,n,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,n,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),i.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),i.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=i.instance,r}),i(O,[u,f,h,S,T,m,g,I,c,p,y,E,w],function(e,t,n,i,r,o,a,s,u,c,l,d,f){function h(){function i(e){e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name)}function c(t){var i=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);m.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new n.ImageError(n.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(i,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===i)/^data:[^;]*;base64,/.test(t)?c.call(this,new l(null,{data:t}),arguments[1]):v.apply(this,arguments);else{if("node"!==i||"img"!==t.nodeName.toLowerCase())throw new n.DOMException(n.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function m(t,n){var i=this.connectRuntime(t.ruid);this.ruid=i.uid,i.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(n)?!0:n)}function g(t,n){function i(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){i(t)}),n&&"string"==typeof n.required_caps&&(n.required_caps=o.parseCaps(n.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},n))):i(this.connectRuntime(t.ruid))}function v(e,t){var n=this,i;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},downsize:function(t){var i={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:!1};t="object"==typeof t?e.extend(i,t):e.extend(i,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]});try{if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);if(this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT)throw new n.ImageError(n.ImageError.MAX_RESOLUTION_ERR);this.exec("Image","downsize",t.width,t.height,t.crop,t.preserveHeaders)}catch(r){this.trigger("error",r.code)}},crop:function(e,t,n){this.downsize(e,t,!0,n)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var n=this.getAsDataURL(e,t);return f.atob(n.substring(n.indexOf("base64,")+7))},embed:function(i,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return i.appendChild(l),l=null,o.destroy(),void a.trigger("embedded")}var d=o.getAsDataURL(t,r);if(!d)throw new n.ImageError(n.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))i.innerHTML='',o.destroy(),a.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",function(){c=a.connectRuntime(this.result.ruid),a.bind("Embedded",function(){e.extend(c.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),c=null},999),c.exec.call(a,"ImageView","display",this.result.uid,width,height),o.destroy()}),h.transport(f.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:i})}}var a=this,c;r=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r||{});try{if(!(i=t.get(i)))throw new n.DOMException(n.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT;var l=new h;return l.bind("Resize",function(){o.call(this,r.type,r.quality)}),l.bind("Load",function(){l.downsize(r)}),this.meta.thumb&&this.meta.thumb.width>=r.width&&this.meta.thumb.height>=r.height?l.load(this.meta.thumb.data):l.clone(this,!1),l}catch(d){this.trigger("error",d.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(p),this.bind("Load Resize",function(){i.call(this)},999)}var p=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=8192,h.MAX_RESIZE_HEIGHT=8192,h.prototype=c.instance,h}),i(D,[u,h,m,c],function(e,t,n,i){function r(t){var r=this,s=n.capTest,u=n.capTrue,c=e.extend({access_binary:s(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return r.can("access_binary")&&!!a.Image},display_media:s(i.can("create_canvas")||i.can("use_data_uri_over32kb")),do_cors:s(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:s(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==i.browser||i.version>9)}()),filter_by_extension:s(function(){return"Chrome"===i.browser&&i.version>=28||"IE"===i.browser&&i.version>=10||"Safari"===i.browser&&i.version>=7}()),return_response_headers:u,return_response_type:function(e){return"json"===e&&window.JSON?!0:i.can("return_response_type",e)},return_status_code:u,report_upload_progress:s(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return r.can("access_binary")&&i.can("create_canvas")},select_file:function(){return i.can("use_fileinput")&&window.File},select_folder:function(){return r.can("select_file")&&"Chrome"===i.browser&&i.version>=21},select_multiple:function(){return!(!r.can("select_file")||"Safari"===i.browser&&"Windows"===i.os||"iOS"===i.os&&i.verComp(i.osVersion,"7.0.0",">")&&i.verComp(i.osVersion,"8.0.0","<"))},send_binary_string:s(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:s(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||r.can("send_binary_string")},slice_blob:s(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return r.can("slice_blob")&&r.can("send_multipart")},summon_file_dialog:function(){return r.can("select_file")&&("Firefox"===i.browser&&i.version>=4||"Opera"===i.browser&&i.version>=12||"IE"===i.browser&&i.version>=10||!!~e.inArray(i.browser,["Chrome","Safari"]))},upload_filesize:u},arguments[2]);n.call(this,t,arguments[1]||o,c),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html5",a={};return n.addConstructor(o,r),a}),i(N,[u],function(e){function t(){this.returnValue=!1}function n(){this.cancelBubble=!0}var i={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=n,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),i.hasOwnProperty(o[r])||(i[o[r]]={}),l=i[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,n,o){var a,s;if(n=n.toLowerCase(),t[r]&&i[t[r]]&&i[t[r]][n]){a=i[t[r]][n];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(n,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+n,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete i[t[r]][n],e.isEmptyObj(i[t[r]])){delete i[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,n){t&&t[r]&&e.each(i[t[r]],function(e,i){a(t,i,n)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),i(L,[D,E,u,f,N,d,c],function(e,t,n,i,r,o,a){function s(){var e;n.extend(this,{init:function(s){var u=this,c=u.getRuntime(),l,d,f,h,p,m;e=s,f=e.accept.mimes||o.extList2mimes(e.accept,c.can("filter_by_extension")),d=c.getShimContainer(),d.innerHTML='",l=i.get(c.uid),n.extend(l.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=i.get(e.browse_button),c.can("summon_file_dialog")&&("static"===i.getStyle(h,"position")&&(h.style.position="relative"),p=parseInt(i.getStyle(h,"z-index"),10)||1,h.style.zIndex=p,d.style.zIndex=p-1,r.addEvent(h,"click",function(e){var t=i.get(c.uid);t&&!t.disabled&&t.click(),e.preventDefault()},u.uid)),m=c.can("summon_file_dialog")?h:d,r.addEvent(m,"mouseover",function(){u.trigger("mouseenter")},u.uid),r.addEvent(m,"mouseout",function(){u.trigger("mouseleave")},u.uid),r.addEvent(m,"mousedown",function(){u.trigger("mousedown")},u.uid),r.addEvent(i.get(e.container),"mouseup",function(){u.trigger("mouseup")},u.uid),l.onchange=function g(i){if(u.files=[],n.each(this.files,function(n){var i="";return e.directory&&"."==n.name?!0:(n.webkitRelativePath&&(i="/"+n.webkitRelativePath.replace(/^\//,"")),n=new t(c.uid,n),n.relativePath=i,void u.files.push(n))}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var r=this.cloneNode(!0);this.parentNode.replaceChild(r,this),r.onchange=g}u.files.length&&u.trigger("change")},u.trigger({type:"ready",async:!0}),d=null},disable:function(e){var t=this.getRuntime(),n;(n=i.get(t.uid))&&(n.disabled=!!e)},destroy:function(){var t=this.getRuntime(),n=t.getShim(),o=t.getShimContainer();r.removeAllEvents(o,this.uid),r.removeAllEvents(e&&i.get(e.container),this.uid),r.removeAllEvents(e&&i.get(e.browse_button),this.uid),o&&(o.innerHTML=""),n.removeInstance(this.uid),e=o=n=null}})}return e.FileInput=s}),i(M,[D,y],function(e,t){function n(){function e(e,t,n){var i;if(!window.File.prototype.slice)return(i=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?i.call(e,t,n):null;try{return e.slice(),e.slice(t,n)}catch(r){return e.slice(t,n-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=n}),i(C,[D,E,u,f,N,d],function(e,t,n,i,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=n.toArray(e.dataTransfer.types||[]);return-1!==n.inArray("Files",t)||-1!==n.inArray("public.file-url",t)||-1!==n.inArray("application/x-moz-file",t)}function a(e,n){if(u(e)){var i=new t(g,e);i.relativePath=n||"",h.push(i)}}function s(e){for(var t=[],i=0;i=4&&u.version<7,f="Android Browser"===u.browser,m=!1;if(p=n.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),h=c(),h.open(n.method,n.url,n.async,n.user,n.password),r instanceof o)r.isDetached()&&(m=!0),r=r.getSource();else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),m=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return void e.call(s,n,r);if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}h.upload?(n.withCredentials&&(h.withCredentials=!0),h.addEventListener("load",function(e){s.trigger(e)}),h.addEventListener("error",function(e){s.trigger(e)}),h.addEventListener("progress",function(e){s.trigger(e)}),h.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):h.onreadystatechange=function v(){switch(h.readyState){case 1:break;case 2:break;case 3:var e,t;try{i.hasSameOrigin(n.url)&&(e=h.getResponseHeader("Content-Length")||0),h.responseText&&(t=h.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:h.onreadystatechange=function(){},s.trigger(0===h.status?"error":"load")}},t.isEmptyObj(n.headers)||t.each(n.headers,function(e,t){h.setRequestHeader(t,e)}),""!==n.responseType&&"responseType"in h&&("json"!==n.responseType||u.can("return_response_type","json")?h.responseType=n.responseType:h.responseType="text"),m?h.sendAsBinary?h.sendAsBinary(r):!function(){for(var e=new Uint8Array(r.length),t=0;ta;a++)i|=o.charCodeAt(e+a)<s;s++)o+=String.fromCharCode(t>>Math.abs(a+8*s)&255);n(o,e,i)}var r=!1,o;return{II:function(e){return e===t?r:void(r=e)},init:function(e){r=!1,o=e},SEGMENT:function(e,t,i){switch(arguments.length){case 1:return o.substr(e,o.length-e-1);case 2:return o.substr(e,t);case 3:n(i,e,t);break;default:return o}},BYTE:function(t){return e(t,1)},SHORT:function(t){return e(t,2)},LONG:function(n,r){return r===t?e(n,4):void i(n,r,4)},SLONG:function(t){var n=e(t,4);return n>2147483647?n-4294967296:n},STRING:function(t,n){var i="";for(n+=t;n>t;t++)i+=String.fromCharCode(e(t,1));return i},length:function(){return o.length}}}}),i(k,[H],function(e){return function t(n){var i=[],r,o,a,s=0;if(r=new e,r.init(n),65496===r.SHORT(0)){for(o=2;o<=n.length;)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;s=r.SHORT(o+2)+2,a>=65505&&65519>=a&&i.push({hex:a,name:"APP"+(15&a),start:o,length:s,segment:r.SEGMENT(o,s)}),o+=s}return r.init(null),{headers:i,restore:function(e){var t,n;for(r.init(e),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,t=i.length;t>n;n++)r.SEGMENT(o,0,i[n].segment),o+=i[n].length;return e=r.SEGMENT(),r.init(null),e},strip:function(e){var n,i,o;for(i=new t(e),n=i.headers,i.purge(),r.init(e),o=n.length;o--;)r.SEGMENT(n[o].start,n[o].length,"");return e=r.SEGMENT(),r.init(null),e},get:function(e){for(var t=[],n=0,r=i.length;r>n;n++)i[n].name===e.toUpperCase()&&t.push(i[n].segment);return t},set:function(e,t){var n=[],r,o,a;for("string"==typeof t?n.push(t):n=t,r=o=0,a=i.length;a>r&&(i[r].name===e.toUpperCase()&&(i[r].segment=n[o],i[r].length=n[o].length,o++),!(o>=n.length));r++);},purge:function(){i=[],r.init(null),r=null}}}}}),i(B,[u,H],function(e,n){return function i(){function i(e,n){var i=a.SHORT(e),r,o,s,u,d,f,h,p,m=[],g={};for(r=0;i>r;r++)if(h=f=e+12*r+2,s=n[a.SHORT(h)],s!==t){switch(u=a.SHORT(h+=2),d=a.LONG(h+=2),h+=4,m=[],u){case 1:case 7:for(d>4&&(h=a.LONG(h)+c.tiffHeader),o=0;d>o;o++)m[o]=a.BYTE(h+o);break;case 2:d>4&&(h=a.LONG(h)+c.tiffHeader),g[s]=a.STRING(h,d-1);continue;case 3:for(d>2&&(h=a.LONG(h)+c.tiffHeader),o=0;d>o;o++)m[o]=a.SHORT(h+2*o);break;case 4:for(d>1&&(h=a.LONG(h)+c.tiffHeader),o=0;d>o;o++)m[o]=a.LONG(h+4*o);break;case 5:for(h=a.LONG(h)+c.tiffHeader,o=0;d>o;o++)m[o]=a.LONG(h+8*o)/a.LONG(h+8*o+4);break;case 9:for(h=a.LONG(h)+c.tiffHeader,o=0;d>o;o++)m[o]=a.SLONG(h+4*o);break;case 10:for(h=a.LONG(h)+c.tiffHeader,o=0;d>o;o++)m[o]=a.SLONG(h+8*o)/a.SLONG(h+8*o+4);break;default:continue}p=1==d?m[0]:m,l.hasOwnProperty(s)&&"object"!=typeof p?g[s]=l[s][p]:g[s]=p}return g}function r(){var e=c.tiffHeader;if(a.II(18761==a.SHORT(e)),42!==a.SHORT(e+=2))return!1;c.IFD0=c.tiffHeader+a.LONG(e+=2),u=i(c.IFD0,s.tiff),"ExifIFDPointer"in u&&(c.exifIFD=c.tiffHeader+u.ExifIFDPointer,delete u.ExifIFDPointer),"GPSInfoIFDPointer"in u&&(c.gpsIFD=c.tiffHeader+u.GPSInfoIFDPointer, +delete u.GPSInfoIFDPointer);var t=a.LONG(c.IFD0+12*a.SHORT(c.IFD0)+2);return t&&(c.IFD1=c.tiffHeader+t),!0}function o(e,t,n){var i,r,o,u=0;if("string"==typeof t){var l=s[e.toLowerCase()];for(var d in l)if(l[d]===t){t=d;break}}i=c[e.toLowerCase()+"IFD"],r=a.SHORT(i);for(var f=0;r>f;f++)if(o=i+12*f+2,a.SHORT(o)==t){u=o+8;break}return u?(a.LONG(u,n),!0):!1}var a,s,u,c={},l;return a=new n,s={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire.",1:"Flash fired.",5:"Strobe return light not detected.",7:"Strobe return light detected.",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},{init:function(e){return c={tiffHeader:10},e!==t&&e.length?(a.init(e),65505===a.SHORT(0)&&"EXIF\x00"===a.STRING(4,5).toUpperCase()?r():!1):!1},TIFF:function(){return u},EXIF:function(){var t=null;if(c.exifIFD&&(t=i(c.exifIFD,s.exif),t.ExifVersion&&"array"===e.typeOf(t.ExifVersion))){for(var n=0,r="";n=65472&&65475>=n)return t+=5,{height:e.SHORT(t),width:e.SHORT(t+=2)};i=e.SHORT(t+=2),t+=i-2}return null}function s(){var e=f.thumb(),t=new i,n;return e&&(t.init(e),n=a(t),t.init(null),n)?(n.data=e,n):null}function u(){f&&d&&l&&(f.purge(),d.purge(),l.init(null),c=h=d=f=l=null)}var c,l,d,f,h,p;if(c=o,l=new i,l.init(c),65496!==l.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);d=new n(o),f=new r,p=!!f.init(d.get("app1")[0]),h=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length,width:h&&h.width||0,height:h&&h.height||0,setExif:function(t,n){return p?("object"===e.typeOf(t)?e.each(t,function(e,t){f.setExif(t,e)}):f.setExif(t,n),void d.set("app1",f.getBinary())):!1},writeHeaders:function(){return arguments.length?d.restore(arguments[0]):c=d.restore(c)},stripHeaders:function(e){return d.strip(e)},purge:function(){u.call(this)}}),p&&(this.meta={tiff:f.TIFF(),exif:f.EXIF(),gps:f.GPS(),thumb:s()})}return o}),i(U,[h,u,H],function(e,t,n){function i(i){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:u.LONG(t),height:u.LONG(t+=4)}):null}function o(){u&&(u.init(null),s=d=c=l=u=null)}function a(e){var t,n,i,r;return t=u.LONG(e),n=u.STRING(e+=4,4),i=e+=4,r=u.LONG(e+t),{length:t,type:n,start:i,CRC:r}}var s,u,c,l,d;s=i,u=new n,u.init(s),function(){var t=0,n=0,i=[35152,20039,3338,6666];for(n=0;ng;){for(var v=g+f>a?a-g:f,w=0;o>w;){var y=w+f>o?o-w:f;p.clearRect(0,0,f,f),p.drawImage(e,-w,-g);var E=w*s/o+c<<0,_=Math.ceil(y*s/o),b=g*u/a/m+l<<0,x=Math.ceil(v*u/a/m);d.drawImage(h,0,0,y,v,E,b,_,x),w+=f}g+=f}h=p=null}function t(e){var t=e.naturalWidth,n=e.naturalHeight;if(t*n>1048576){var i=document.createElement("canvas");i.width=i.height=1;var r=i.getContext("2d");return r.drawImage(e,-t+1,0),0===r.getImageData(0,0,1,1).data[3]}return!1}function n(e,t,n){var i=document.createElement("canvas");i.width=1,i.height=n;var r=i.getContext("2d");r.drawImage(e,0,0);for(var o=r.getImageData(0,0,1,n).data,a=0,s=n,u=n;u>a;){var c=o[4*(u-1)+3];0===c?s=u:a=u,u=s+a>>1}i=null;var l=u/n;return 0===l?1:l}return{isSubsampled:t,renderTo:e}}),i(X,[D,u,h,w,y,E,z,q,d,c],function(e,t,n,i,r,o,a,s,u,c){function l(){function e(){if(!_&&!y)throw new n.ImageError(n.DOMException.INVALID_STATE_ERR);return _||y}function l(e){return i.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+i.btoa(e)}function f(e){var t=this;y=new Image,y.onerror=function(){v.call(this),t.trigger("error",n.ImageError.WRONG_FORMAT)},y.onload=function(){t.trigger("load")},y.src="data:"==e.substr(0,5)?e:d(e,x.type)}function h(e,t){var i=this,r;return window.FileReader?(r=new FileReader,r.onload=function(){t(this.result)},r.onerror=function(){i.trigger("error",n.ImageError.WRONG_FORMAT)},r.readAsDataURL(e),void 0):t(e.getAsDataURL())}function p(n,i,r,o){var a=this,s,u,c=0,l=0,d,f,h,p;if(S=o,p=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1,-1!==t.inArray(p,[5,6,7,8])){var v=n;n=i,i=v}return d=e(),r?(n=Math.min(n,d.width),i=Math.min(i,d.height),s=Math.max(n/d.width,i/d.height)):s=Math.min(n/d.width,i/d.height),s>1&&!r&&o?void this.trigger("Resize"):(_||(_=document.createElement("canvas")),f=Math.round(d.width*s),h=Math.round(d.height*s),r?(_.width=n,_.height=i,f>n&&(c=Math.round((f-n)/2)),h>i&&(l=Math.round((h-i)/2))):(_.width=f,_.height=h),S||g(_.width,_.height,p),m.call(this,d,_,-c,-l,f,h),this.width=_.width,this.height=_.height,R=!0,void a.trigger("Resize"))}function m(e,t,n,i,r,o){if("iOS"===c.OS)s.renderTo(e,t,{width:r,height:o,x:n,y:i});else{var a=t.getContext("2d");a.drawImage(e,n,i,r,o)}}function g(e,t,n){switch(n){case 5:case 6:case 7:case 8:_.width=t,_.height=e;break;default:_.width=e,_.height=t}var i=_.getContext("2d");switch(n){case 2:i.translate(e,0),i.scale(-1,1);break;case 3:i.translate(e,t),i.rotate(Math.PI);break;case 4:i.translate(0,t),i.scale(1,-1);break;case 5:i.rotate(.5*Math.PI),i.scale(1,-1);break;case 6:i.rotate(.5*Math.PI),i.translate(0,-t);break;case 7:i.rotate(.5*Math.PI),i.translate(e,-t),i.scale(-1,1);break;case 8:i.rotate(-.5*Math.PI),i.translate(-e,0)}}function v(){E&&(E.purge(),E=null),b=y=_=x=null,R=!1}var w=this,y,E,_,b,x,R=!1,S=!0;t.extend(this,{loadFromBlob:function(e){var t=this,i=t.getRuntime(),r=arguments.length>1?arguments[1]:!0;if(!i.can("access_binary"))throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);return x=e,e.isDetached()?(b=e.getSource(),void f.call(this,b)):void h.call(this,e.getSource(),function(e){r&&(b=l(e)),f.call(t,e)})},loadFromImage:function(e,t){this.meta=e.meta,x=new o(null,{name:e.name,size:e.size,type:e.type}),f.call(this,t?b=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t=this.getRuntime(),n;return!E&&b&&t.can("access_image_binary")&&(E=new a(b)),n={width:e().width||0,height:e().height||0,type:x.type||u.getFileMime(x.name),size:b&&b.length||x.size||0,name:x.name||"",meta:E&&E.meta||this.meta||{}},n.meta.thumb&&(n.meta.thumb.data=new r(null,{type:"image/jpeg",data:n.meta.thumb.data})),n},downsize:function(){p.apply(this,arguments)},getAsCanvas:function(){return _&&(_.id=this.uid+"_canvas"),_},getAsBlob:function(e,t){return e!==this.type&&p.call(this,this.width,this.height,!1),new o(null,{name:x.name||"",type:e,data:w.getAsBinaryString.call(this,e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!R)return y.src;if("image/jpeg"!==e)return _.toDataURL("image/png");try{return _.toDataURL("image/jpeg",t/100)}catch(n){return _.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!R)return b||(b=l(w.getAsDataURL(e,t))),b;if("image/jpeg"!==e)b=l(w.getAsDataURL(e,t));else{var n;t||(t=90);try{n=_.toDataURL("image/jpeg",t/100)}catch(i){n=_.toDataURL("image/jpeg")}b=l(n),E&&(b=E.stripHeaders(b),S&&(E.meta&&E.meta.exif&&E.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),b=E.writeHeaders(b)),E.purge(),E=null)}return R=!1,b},destroy:function(){w=null,v.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=l}),i(j,[u,c,f,h,m],function(e,t,n,i,r){function o(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(n){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function a(e){var i=n.get(e);i&&"OBJECT"==i.nodeName&&("IE"===t.browser?(i.style.display="none",function r(){4==i.readyState?s(e):setTimeout(r,10)}()):i.parentNode.removeChild(i))}function s(e){var t=n.get(e);if(t){for(var i in t)"function"==typeof t[i]&&(t[i]=null);t.parentNode.removeChild(t)}}function u(s){var u=this,d;s=e.extend({swf_url:t.swf_url},s),r.call(this,s,c,{access_binary:function(e){return e&&"browser"===u.mode},access_image_binary:function(e){return e&&"browser"===u.mode},display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===u.mode},resize_image:r.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===u.mode},return_status_code:function(t){return"browser"===u.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:function(e){return e&&"browser"===u.mode},send_browser_cookies:function(e){return e&&"browser"===u.mode},send_custom_headers:function(e){return e&&"browser"===u.mode},send_multipart:r.capTrue,slice_blob:function(e){return e&&"browser"===u.mode},stream_upload:function(e){return e&&"browser"===u.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===u.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),o()<10&&(this.mode=!1),e.extend(this,{getShim:function(){return n.get(this.uid)},shimExec:function(e,t){var n=[].slice.call(arguments,2);return u.getShim().exec(this.uid,e,t,n)},init:function(){var n,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),n='',"IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=n,r=o=null):o.innerHTML=n,d=setTimeout(function(){u&&!u.initialized&&u.trigger("Error",new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){a(u.uid),e.call(u),clearTimeout(d),s=d=e=u=null}}(this.destroy)},l)}var c="flash",l={};return r.addConstructor(c,u),l}),i(V,[j,E,u],function(e,t,n){var i={init:function(e){var i=this,r=this.getRuntime();this.bind("Change",function(){var e=r.shimExec.call(i,"FileInput","getFiles");i.files=[],n.each(e,function(e){i.files.push(new t(r.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{name:e.name,accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=i}),i(W,[j,y],function(e,t){var n={slice:function(e,n,i,r){var o=this.getRuntime();return 0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),e=o.shimExec.call(this,"Blob","slice",n,i,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=n}),i(Y,[j,w],function(e,t){function n(e,n){switch(n){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var i={read:function(e,t){var i=this;return i.result="","readAsDataURL"===e&&(i.result="data:"+(t.type||"")+";base64,"),i.bind("Progress",function(t,r){r&&(i.result+=n(r,e))},999),i.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=i}),i($,[j,w],function(e,t){function n(e,n){switch(n){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var i={read:function(e,t){var i,r=this.getRuntime();return(i=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(i="data:"+(t.type||"")+";base64,"+i),n(i,e,t.type)):null}};return e.FileReaderSync=i}),i(J,[j,u,y,E,S,A,I],function(e,t,n,i,r,o,a){var s={send:function(e,i){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,i)}function s(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),i=null,r()}function u(e,t){var n=new a;n.bind("TransportingComplete",function(){t(this.result)}),n.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),i instanceof o){var d;if(i.each(function(e,t){e instanceof n?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),i.hasBlob()){var f=i.getBlob();f.isDetached()?u(f,function(e){f.destroy(),s(d,e)}):s(d,f)}else i=null,r()}else i instanceof n?i.isDetached()?u(i,function(e){i.destroy(),i=e.uid,r()}):(i=i.uid,r()):r()},getResponse:function(e){var n,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new i(a.uid,o),"blob"===e)return o;try{if(n=new r,~t.inArray(e,["","text"]))return n.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(n.readAsText(o))}finally{o.destroy()}}return null},abort:function(e){var t=this.getRuntime();t.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=s}),i(Z,[j,y],function(e,t){var n={getAsBlob:function(e){var n=this.getRuntime(),i=n.shimExec.call(this,"Transporter","getAsBlob",e);return i?new t(n.uid,i):null}};return e.Transporter=n}),i(K,[j,u,I,y,S],function(e,t,n,i,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(i,"Image","loadFromBlob",e.uid),i=r=null}var i=this,r=i.getRuntime();if(e.isDetached()){var o=new n;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return t.meta&&t.meta.thumb&&(t.meta.thumb.data=new i(e.uid,t.meta.thumb.data)),t},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getAsBlob:function(e,t){var n=this.getRuntime(),r=n.shimExec.call(this,"Image","getAsBlob",e,t);return r?new i(n.uid,r):null},getAsDataURL:function(){var e=this.getRuntime(),t=e.Image.getAsBlob.apply(this,arguments),n;return t?(n=new r,n.readAsDataURL(t)):null}};return e.Image=o}),i(Q,[u,c,f,h,m],function(e,t,n,i,r){function o(e){var t=!1,n=null,i,r,o,a,s,u=0;try{try{n=new ActiveXObject("AgControl.AgControl"),n.IsVersionSupported(e)&&(t=!0),n=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(i=l.description,"1.0.30226.2"===i&&(i="2.0.30226.2"),r=i.split(".");r.length>3;)r.pop();for(;r.length<4;)r.push(0);for(o=e.split(".");o.length>4;)o.pop();do a=parseInt(o[u],10),s=parseInt(r[u],10),u++;while(u=a&&!isNaN(a)&&(t=!0)}}}catch(d){t=!1}return t}function a(a){var c=this,l;a=e.extend({xap_url:t.xap_url},a),r.call(this,a,s,{access_binary:r.capTrue,access_image_binary:r.capTrue,display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:r.capTrue,resize_image:r.capTrue,return_response_headers:function(e){return e&&"client"===c.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===c.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:r.capTrue,send_browser_cookies:function(e){return e&&"browser"===c.mode},send_custom_headers:function(e){return e&&"client"===c.mode},send_multipart:r.capTrue,slice_blob:r.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:r.capTrue,use_http_method:function(t){return"client"===c.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),o("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return n.get(this.uid).content.Moxie},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec(this.uid,e,t,n)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='',l=setTimeout(function(){c&&!c.initialized&&c.trigger("Error",new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(c),clearTimeout(l),a=l=e=c=null}}(this.destroy)},u)}var s="silverlight",u={};return r.addConstructor(s,a),u}),i(ee,[Q,E,u],function(e,t,n){var i={init:function(e){function i(e){for(var t="",n=0;ni;i++)n=t.keys[i],s=t[n],s&&(/^(\d|[1-9]\d+)$/.test(s)?s=parseInt(s,10):/^\d*\.\d+$/.test(s)&&(s=parseFloat(s)),r.meta[e][n]=s)}),r.meta&&r.meta.thumb&&(r.meta.thumb.data=new n(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r}})}),i(ue,[u,h,m,c],function(e,t,n,i){function r(t){var r=this,s=n.capTest,u=n.capTrue;n.call(this,t,o,{access_binary:s(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:s(a.Image&&(i.can("create_canvas")||i.can("use_data_uri_over32kb"))),do_cors:!1,drag_and_drop:!1,filter_by_extension:s(function(){return"Chrome"===i.browser&&i.version>=28||"IE"===i.browser&&i.version>=10||"Safari"===i.browser&&i.version>=7}()),resize_image:function(){return a.Image&&r.can("access_binary")&&i.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return i.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return r.can("select_file")},summon_file_dialog:function(){return r.can("select_file")&&("Firefox"===i.browser&&i.version>=4||"Opera"===i.browser&&i.version>=12||"IE"===i.browser&&i.version>=10||!!~e.inArray(i.browser,["Chrome","Safari"]))},upload_filesize:u,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html4",a={};return n.addConstructor(o,r),a}),i(ce,[ue,E,u,f,N,d,c],function(e,t,n,i,r,o,a){function s(){function e(){var o=this,l=o.getRuntime(),d,f,h,p,m,g;g=n.guid("uid_"),d=l.getShimContainer(),s&&(h=i.get(s+"_form"),h&&n.extend(h.style,{top:"100%"})),p=document.createElement("form"),p.setAttribute("id",g+"_form"),p.setAttribute("method","post"),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),n.extend(p.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=document.createElement("input"),m.setAttribute("id",g),m.setAttribute("type","file"),m.setAttribute("name",c.name||"Filedata"),m.setAttribute("accept",u.join(",")),n.extend(m.style,{fontSize:"999px",opacity:0}),p.appendChild(m),d.appendChild(p),n.extend(m.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.version<10&&n.extend(m.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),m.onchange=function(){var n;if(this.value){if(this.files){if(n=this.files[0],0===n.size)return void p.parentNode.removeChild(p)}else n={name:this.value};n=new t(l.uid,n),this.onchange=function(){},e.call(o),o.files=[n],m.setAttribute("id",n.uid),p.setAttribute("id",n.uid+"_form"),o.trigger("change"),m=p=null}},l.can("summon_file_dialog")&&(f=i.get(c.browse_button),r.removeEvent(f,"click",o.uid),r.addEvent(f,"click",function(e){m&&!m.disabled&&m.click(),e.preventDefault()},o.uid)),s=g,d=h=f=null}var s,u=[],c;n.extend(this,{init:function(t){var n=this,a=n.getRuntime(),s;c=t,u=t.accept.mimes||o.extList2mimes(t.accept,a.can("filter_by_extension")),s=a.getShimContainer(),function(){var e,o,u;e=i.get(t.browse_button),a.can("summon_file_dialog")&&("static"===i.getStyle(e,"position")&&(e.style.position="relative"),o=parseInt(i.getStyle(e,"z-index"),10)||1,e.style.zIndex=o,s.style.zIndex=o-1),u=a.can("summon_file_dialog")?e:s,r.addEvent(u,"mouseover",function(){n.trigger("mouseenter")},n.uid),r.addEvent(u,"mouseout",function(){n.trigger("mouseleave")},n.uid),r.addEvent(u,"mousedown",function(){n.trigger("mousedown")},n.uid),r.addEvent(i.get(t.container),"mouseup",function(){n.trigger("mouseup")},n.uid),e=null}(),e.call(this),s=null,n.trigger({type:"ready",async:!0})},disable:function(e){var t;(t=i.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),n=e.getShimContainer();r.removeAllEvents(n,this.uid),r.removeAllEvents(c&&i.get(c.container),this.uid),r.removeAllEvents(c&&i.get(c.browse_button),this.uid),n&&(n.innerHTML=""),t.removeInstance(this.uid),s=u=c=n=t=null}})}return e.FileInput=s}),i(le,[ue,F],function(e,t){return e.FileReader=t}),i(de,[ue,u,f,x,h,N,y,A],function(e,t,n,i,r,o,a,s){function u(){function e(e){var t=this,i,r,a,s,u=!1;if(l){if(i=l.id.replace(/_iframe$/,""),r=n.get(i+"_form")){for(a=r.getElementsByTagName("input"),s=a.length;s--;)switch(a[s].getAttribute("type")){case"hidden":a[s].parentNode.removeChild(a[s]);break;case"file":u=!0}a=[],u||r.parentNode.removeChild(r),r=null}setTimeout(function(){o.removeEvent(l,"load",t.uid),l.parentNode&&l.parentNode.removeChild(l);var n=t.getRuntime().getShimContainer();n.children.length||n.parentNode.removeChild(n),n=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,f){function h(){var n=m.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='',l=r.firstChild,n.appendChild(l),o.addEvent(l,"load",function(){var n;try{n=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(n.title)?u=n.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(n.body.innerHTML),p.trigger({type:"progress",loaded:c.length,total:c.length}),y&&p.trigger({type:"uploadprogress",loaded:y.size||1025,total:y.size||1025}))}catch(r){if(!i.hasSameOrigin(d.url))return void e.call(p,function(){p.trigger("error")});u=404}e.call(p,function(){p.trigger("load")})},p.uid)}var p=this,m=p.getRuntime(),g,v,w,y;if(u=c=null,f instanceof s&&f.hasBlob()){if(y=f.getBlob(),g=y.uid,w=n.get(g),v=n.get(g+"_form"),!v)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else g=t.guid("uid_"),v=document.createElement("form"),v.setAttribute("id",g+"_form"),v.setAttribute("method",d.method),v.setAttribute("enctype","multipart/form-data"),v.setAttribute("encoding","multipart/form-data"),m.getShimContainer().appendChild(v);v.setAttribute("target",g+"_iframe"),f instanceof s&&f.each(function(e,n){if(e instanceof a)w&&w.setAttribute("name",n);else{var i=document.createElement("input");t.extend(i,{type:"hidden",name:n,value:e}),w?v.insertBefore(i,w):v.appendChild(i)}}),v.setAttribute("action",d.url),h(),v.submit(),p.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(n){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),i(fe,[ue,X],function(e,t){return e.Image=t}),a([u,c,l,d,f,h,p,m,g,v,w,y,E,_,b,x,R,S,A,T,I,O,N])}(this);;(function(e){"use strict";var t={},n=e.moxie.core.utils.Basic.inArray;return function r(e){var i,s;for(i in e)s=typeof e[i],s==="object"&&!~n(i,["Exceptions","Env","Mime"])?r(e[i]):s==="function"&&(t[i]=e[i])}(e.moxie),t.Env=e.moxie.core.utils.Env,t.Mime=e.moxie.core.utils.Mime,t.Exceptions=e.moxie.core.Exceptions,e.mOxie=t,e.o||(e.o=t),t})(this); \ No newline at end of file diff --git a/js/plupload.dev.js b/js/plupload.dev.js index 1b080d438..973b72902 100644 --- a/js/plupload.dev.js +++ b/js/plupload.dev.js @@ -1,6 +1,6 @@ /** * Plupload - multi-runtime File Uploader - * v2.1.3 + * v2.1.4 * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. @@ -8,7 +8,7 @@ * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing * - * Date: 2015-05-11 + * Date: 2015-05-25 */ /** * Plupload.js @@ -94,7 +94,7 @@ var plupload = { * @static * @final */ - VERSION : '2.1.3', + VERSION : '2.1.4', /** * Inital state of the queue and also the state ones it's finished all it's uploads. @@ -711,7 +711,7 @@ plupload.addFileFilter('prevent_duplicates', function(value, file, cb) { @param {String} settings.url URL of the server-side upload handler. @param {Number|String} [settings.chunk_size=0] Chunk size in bytes to slice the file into. Shorcuts with b, kb, mb, gb, tb suffixes also supported. `e.g. 204800 or "204800b" or "200kb"`. By default - disabled. @param {Boolean} [settings.send_chunk_number=true] Whether to send chunks and chunk numbers, or total and offset bytes. - @param {String} [settings.container] id of the DOM element to use as a container for uploader structures. Defaults to document.body. + @param {String|DOMElement} [settings.container] id of the DOM element or DOM element itself that will be used to wrap uploader structures. Defaults to immediate parent of the `browse_button` element. @param {String|DOMElement} [settings.drop_element] id of the DOM element or DOM element itself to use as a drop zone for Drag-n-Drop. @param {String} [settings.file_data_name="file"] Name for the file field in Multipart formated message. @param {Object} [settings.filters={}] Set of file type filters. @@ -1578,7 +1578,7 @@ plupload.Uploader = function(options) { up.destroy(); } // Set failed status if an error occured on a file - else if (err.file) { + else if (err.code === plupload.HTTP_ERROR) { err.file.status = plupload.FAILED; calcFile(err.file); diff --git a/js/plupload.full.min.js b/js/plupload.full.min.js index c2819cdde..c3d0fbdbc 100644 --- a/js/plupload.full.min.js +++ b/js/plupload.full.min.js @@ -1,6 +1,6 @@ /** * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill - * v1.2.2 + * v1.3 * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. @@ -8,14 +8,14 @@ * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing * - * Date: 2015-05-11 + * Date: 2015-05-24 */ -!function(e,t){"use strict";function n(e,t){for(var n,i=[],r=0;r0&&n(o,function(n,o){n!==r&&(e(i[o])===e(n)&&~a(e(n),["array","object"])?t(i[o],n):i[o]=n)})}),i},n=function(e,t){var n,i,r,o;if(e){try{n=e.length}catch(a){n=o}if(n===o){for(i in e)if(e.hasOwnProperty(i)&&t(e[i],i)===!1)return}else for(r=0;n>r;r++)if(t(e[r],r)===!1)return}},i=function(t){var n;if(!t||"object"!==e(t))return!0;for(n in t)return!1;return!0},r=function(t,n){function i(r){"function"===e(t[r])&&t[r](function(e){++rn;n++)if(t[n]===e)return n}return-1},s=function(t,n){var i=[];"array"!==e(t)&&(t=[t]),"array"!==e(n)&&(n=[n]);for(var r in t)-1===a(t[r],n)&&i.push(t[r]);return i.length?i:!1},u=function(e,t){var i=[];return n(e,function(e){-1!==a(e,t)&&i.push(e)}),i.length?i:null},c=function(e){var t,n=[];for(t=0;ti;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}(),d=function(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""):e},f=function(e){if("string"!=typeof e)return e;var t={t:1099511627776,g:1073741824,m:1048576,k:1024},n;return e=/^([0-9]+)([mgk]?)$/.exec(e.toLowerCase().replace(/[^0-9mkg]/g,"")),n=e[2],e=+e[1],t.hasOwnProperty(n)&&(e*=t[n]),e};return{guid:l,typeOf:e,extend:t,each:n,isEmptyObj:i,inSeries:r,inParallel:o,inArray:a,arrayDiff:s,arrayIntersect:u,toArray:c,trim:d,parseSizeStr:f}}),i(c,[u],function(e){var t={};return{addI18n:function(n){return e.extend(t,n)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var n=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=n.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),i(l,[u,c],function(e,t){var n="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",i={mimes:{},extensions:{},addMimeType:function(e){var t=e.split(/,/),n,i,r;for(n=0;ni;i++)if(e[i]!=t[i]){if(e[i]=u(e[i]),t[i]=u(t[i]),e[i]t[i]){o=1;break}}if(!n)return o;switch(n){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var n=function(e){var t="",n="?",i="function",r="undefined",o="object",a="major",s="model",u="name",c="type",l="vendor",d="version",f="architecture",h="console",p="mobile",m="tablet",g={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},v={rgx:function(){for(var t,n=0,a,s,u,c,l,d,f=arguments;n0?2==c.length?typeof c[1]==i?t[c[0]]=c[1].call(this,d):t[c[0]]=c[1]:3==c.length?typeof c[1]!==i||c[1].exec&&c[1].test?t[c[0]]=d?d.replace(c[1],c[2]):e:t[c[0]]=d?c[1].call(this,d,c[2]):e:4==c.length&&(t[c[0]]=d?c[3].call(this,d.replace(c[1],c[2])):e):t[c]=d?d:e;break}if(l)break}return t},str:function(t,i){for(var r in i)if(typeof i[r]===o&&i[r].length>0){for(var a=0;a=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(n){var i=[].slice.call(arguments);return i.shift(),"function"===e.typeOf(t[n])?t[n].apply(this,i):!!t[n]}}(),r={can:i,browser:n.browser.name,version:parseFloat(n.browser.major),os:n.os.name,osVersion:n.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return r.OS=r.os,r}),i(f,[d],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},n=function(e,t){if(!e.className)return!1;var n=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return n.test(e.className)},i=function(e,t){n(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var n=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(n,function(e,t,n){return" "===t&&" "===n?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,n){function i(e){var t,n,i=0,r=0;return e&&(n=e.getBoundingClientRect(),t="CSS1Compat"===s.compatMode?s.documentElement:s.body,i=n.left+t.scrollLeft,r=n.top+t.scrollTop),{x:i,y:r}}var r=0,o=0,a,s=document,u,c;if(t=t,n=n||s.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!s.documentMode||s.documentMode<8))return u=i(t),c=i(n),{x:u.x-c.x,y:u.y-c.y};for(a=t;a&&a!=n&&a.nodeType;)r+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=t.parentNode;a&&a!=n&&a.nodeType;)r-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode;return{x:r,y:o}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:n,addClass:i,removeClass:r,getStyle:o,getPos:a,getSize:s}}),i(h,[u],function(e){function t(e,t){var n;for(n in e)if(e[n]===t)return n;return null}return{RuntimeError:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": RuntimeError "+this.code}var i={NOT_INIT_ERR:1,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(n,i),n.prototype=Error.prototype,n}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": ImageError "+this.code}var i={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2};return e.extend(n,i),n.prototype=Error.prototype,n}(),FileException:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": FileException "+this.code}var i={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(n,i),n.prototype=Error.prototype,n}(),DOMException:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": DOMException "+this.code}var i={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(n,i),n.prototype=Error.prototype,n}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),i(p,[h,u],function(e,t){function n(){var n={};t.extend(this,{uid:null,init:function(){this.uid||(this.uid=t.guid("uid_"))},addEventListener:function(e,i,r,o){var a=this,s;return e=t.trim(e),/\s/.test(e)?void t.each(e.split(/\s+/),function(e){a.addEventListener(e,i,r,o)}):(e=e.toLowerCase(),r=parseInt(r,10)||0,s=n[this.uid]&&n[this.uid][e]||[],s.push({fn:i,priority:r,scope:o||this}),n[this.uid]||(n[this.uid]={}),void(n[this.uid][e]=s))},hasEventListener:function(e){return e?!(!n[this.uid]||!n[this.uid][e]):!!n[this.uid]},removeEventListener:function(e,i){e=e.toLowerCase();var r=n[this.uid]&&n[this.uid][e],o;if(r){if(i){for(o=r.length-1;o>=0;o--)if(r[o].fn===i){r.splice(o,1);break}}else r=[];r.length||(delete n[this.uid][e],t.isEmptyObj(n[this.uid])&&delete n[this.uid])}},removeAllEventListeners:function(){n[this.uid]&&delete n[this.uid]},dispatchEvent:function(i){var r,o,a,s,u={},c=!0,l;if("string"!==t.typeOf(i)){if(s=i,"string"!==t.typeOf(s.type))throw new e.EventException(e.EventException.UNSPECIFIED_EVENT_TYPE_ERR);i=s.type,s.total!==l&&s.loaded!==l&&(u.total=s.total,u.loaded=s.loaded),u.async=s.async||!1}if(-1!==i.indexOf("::")?!function(e){r=e[0],i=e[1]}(i.split("::")):r=this.uid,i=i.toLowerCase(),o=n[r]&&n[r][i]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),u.type=i,a.unshift(u);var d=[];t.each(o,function(e){a[0].target=e.scope,d.push(u.async?function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}:function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&t.inSeries(d,function(e){c=!e})}return c},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},convertEventPropsToHandlers:function(e){var n;"array"!==t.typeOf(e)&&(e=[e]);for(var i=0;i>16&255,o=d>>8&255,a=255&d,64==c?m[h++]=String.fromCharCode(r):64==l?m[h++]=String.fromCharCode(r,o):m[h++]=String.fromCharCode(r,o,a);while(f>18&63,u=d>>12&63,c=d>>6&63,l=63&d,m[h++]=i.charAt(s)+i.charAt(u)+i.charAt(c)+i.charAt(l);while(fa;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return i.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return i.call(this,"readAsDataURL",e)},readAsText:function(e){return i.call(this,"readAsText",e)}})}}),i(A,[h,u,y],function(e,t,n){function i(){var e,i=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof n?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):i.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(n){t.each(i,function(e){n(e.value,e.name)}),e&&n(e.value,e.name)},destroy:function(){e=null,i=[]}})}return i}),i(S,[u,h,p,m,R,g,x,y,T,A,d,l],function(e,t,n,i,r,o,a,s,u,c,l,d){function f(){this.uid=e.guid("uid_")}function h(){function n(e,t){return y.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?y[e]:v[e]:void(l.can("define_property")?y[e]=t:v[e]=t):void 0}function u(t){function i(){k&&(k.destroy(),k=null),s.dispatchEvent("loadend"),s=null}function r(r){k.bind("LoadStart",function(e){n("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),I&&s.upload.dispatchEvent(e)}),k.bind("Progress",function(e){n("readyState")!==h.LOADING&&(n("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),k.bind("UploadProgress",function(e){I&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),k.bind("Load",function(t){n("readyState",h.DONE),n("status",Number(r.exec.call(k,"XMLHttpRequest","getStatus")||0)),n("statusText",p[n("status")]||""),n("response",r.exec.call(k,"XMLHttpRequest","getResponse",n("responseType"))),~e.inArray(n("responseType"),["text",""])?n("responseText",n("response")):"document"===n("responseType")&&n("responseXML",n("response")),U=r.exec.call(k,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),n("status")>0?(I&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(N=!0,s.dispatchEvent("error")),i()}),k.bind("Abort",function(e){s.dispatchEvent(e),i()}),k.bind("Error",function(e){N=!0,n("readyState",h.DONE),s.dispatchEvent("readystatechange"),D=!0,s.dispatchEvent(e),i()}),r.exec.call(k,"XMLHttpRequest","send",{url:E,method:_,async:w,user:b,password:R,headers:x,mimeType:A,encoding:T,responseType:s.responseType,withCredentials:s.withCredentials,options:P},t)}var s=this;M=(new Date).getTime(),k=new a,"string"==typeof P.required_caps&&(P.required_caps=o.parseCaps(P.required_caps)),P.required_caps=e.extend({},P.required_caps,{return_response_type:s.responseType}),t instanceof c&&(P.required_caps.send_multipart=!0),L||(P.required_caps.do_cors=!0),P.ruid?r(k.connectRuntime(P)):(k.bind("RuntimeInit",function(e,t){r(t)}),k.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),k.connectRuntime(P))}function g(){n("responseText",""),n("responseXML",null),n("response",null),n("status",0),n("statusText",""),M=C=null}var v=this,y={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},w=!0,E,_,x={},b,R,T=null,A=null,S=!1,O=!1,I=!1,D=!1,N=!1,L=!1,M,C,F=null,H=null,P={},k,U="",B;e.extend(this,y,{uid:e.guid("uid_"),upload:new f,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||i.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(_=o.toUpperCase()),~e.inArray(_,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=i.utf8_encode(a),l=r.parseUrl(a),L=r.hasSameOrigin(l),E=r.resolveUrl(a),(u||c)&&!L)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(b=u||l.user,R=c||l.pass,w=s||!0,w===!1&&(n("timeout")||n("withCredentials")||""!==n("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);S=!w,O=!1,x={},g.call(this),n("readyState",h.OPENED),this.convertEventPropsToHandlers(["readystatechange"]),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(n("readyState")!==h.OPENED||O)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||i.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(x[r]?x[r]+=", "+o:x[r]=o,!0)},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),N||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(B||(B={},e.each(U.split(/\r\n/),function(t){var n=t.split(/:\s+/);2===n.length&&(n[0]=e.trim(n[0]),B[n[0].toLowerCase()]={header:n[0],value:e.trim(n[1])})})),B.hasOwnProperty(t))?B[t].header+": "+B[t].value:null},overrideMimeType:function(i){var r,o;if(~e.inArray(n("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i=e.trim(i.toLowerCase()),/;/.test(i)&&(r=i.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(i=r[1],r[2]&&(o=r[2])),!d.mimes[i])throw new t.DOMException(t.DOMException.SYNTAX_ERR);F=i,H=o},send:function(n,r){if(P="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.convertEventPropsToHandlers(m),this.upload.convertEventPropsToHandlers(m),this.readyState!==h.OPENED||O)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n instanceof s)P.ruid=n.ruid,A=n.type||"application/octet-stream";else if(n instanceof c){if(n.hasBlob()){var o=n.getBlob();P.ruid=o.ruid,A=o.type||"application/octet-stream"}}else"string"==typeof n&&(T="UTF-8",A="text/plain;charset=UTF-8",n=i.utf8_encode(n));this.withCredentials||(this.withCredentials=P.required_caps&&P.required_caps.send_browser_cookies&&!L),I=!S&&this.upload.hasEventListener(),N=!1,D=!n,S||(O=!0),u.call(this,n)},abort:function(){if(N=!0,S=!1,~e.inArray(n("readyState"),[h.UNSENT,h.OPENED,h.DONE]))n("readyState",h.UNSENT);else{if(n("readyState",h.DONE),O=!1,!k)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);k.getRuntime().exec.call(k,"XMLHttpRequest","abort",D),D=!0}},destroy:function(){k&&("function"===e.typeOf(k.destroy)&&k.destroy(),k=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}})}var p={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};f.prototype=n.instance;var m=["loadstart","progress","abort","error","load","timeout","loadend"],g=1,v=2;return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=n.instance,h}),i(O,[u,m,v,p],function(e,t,n,i){function r(){function i(){l=d=0,c=this.result=null}function o(t,n){var i=this;u=n,i.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(i.state,[r.IDLE,r.DONE])&&a.call(i)},999),i.bind("TransportingComplete",function(){d=l,i.state=r.DONE,c=null,i.result=u.exec.call(i,"Transporter","getAsBlob",t||"")},999),i.state=r.BUSY,i.trigger("TransportingStarted"),a.call(i)}function a(){var e=this,n,i=l-d;f>i&&(f=i),n=t.btoa(c.substr(d,f)),u.exec.call(e,"Transporter","receive",n,l)}var s,u,c,l,d,f;n.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,n,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),f=r.chunk_size,i.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,n,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,n,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),i.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),i.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=i.instance,r}),i(I,[u,f,h,T,S,g,v,O,d,p,y,w,m],function(e,t,n,i,r,o,a,s,u,c,l,d,f){function h(){function i(e){e||(e=this.getRuntime().exec.call(this,"Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name)}function c(t){var i=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);m.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new n.ImageError(n.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(i,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===i)/^data:[^;]*;base64,/.test(t)?c.call(this,new l(null,{data:t}),arguments[1]):v.apply(this,arguments);else{if("node"!==i||"img"!==t.nodeName.toLowerCase())throw new n.DOMException(n.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function m(t,n){var i=this.connectRuntime(t.ruid);this.ruid=i.uid,i.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(n)?!0:n)}function g(t,n){function i(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){i(t)}),n&&"string"==typeof n.required_caps&&(n.required_caps=o.parseCaps(n.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},n))):i(this.connectRuntime(t.ruid))}function v(e,t){var n=this,i;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){this.bind("Load Resize",function(){i.call(this)},999),this.convertEventPropsToHandlers(p),c.apply(this,arguments)},downsize:function(t){var i={width:this.width,height:this.height,crop:!1,preserveHeaders:!0};t="object"==typeof t?e.extend(i,t):e.extend(i,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]});try{if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);if(this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT)throw new n.ImageError(n.ImageError.MAX_RESOLUTION_ERR);this.getRuntime().exec.call(this,"Image","downsize",t.width,t.height,t.crop,t.preserveHeaders)}catch(r){this.trigger("error",r.code)}},crop:function(e,t,n){this.downsize(e,t,!0,n)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);return e||(e="image/jpeg"),"image/jpeg"!==e||t||(t=90),this.getRuntime().exec.call(this,"Image","getAsBlob",e,t)},getAsDataURL:function(e,t){if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);return this.getRuntime().exec.call(this,"Image","getAsDataURL",e,t)},getAsBinaryString:function(e,t){var n=this.getAsDataURL(e,t);return f.atob(n.substring(n.indexOf("base64,")+7))},embed:function(i){function r(){if(u.can("create_canvas")){var t=a.getAsCanvas();if(t)return i.appendChild(t),t=null,a.destroy(),void o.trigger("embedded")}var r=a.getAsDataURL(c,l);if(!r)throw new n.ImageError(n.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",r.length))i.innerHTML='',a.destroy(),o.trigger("embedded");else{var d=new s;d.bind("TransportingComplete",function(){v=o.connectRuntime(this.result.ruid),o.bind("Embedded",function(){e.extend(v.getShimContainer().style,{top:"0px",left:"0px",width:a.width+"px",height:a.height+"px"}),v=null},999),v.exec.call(o,"ImageView","display",this.result.uid,m,g),a.destroy()}),d.transport(f.atob(r.substring(r.indexOf("base64,")+7)),c,e.extend({},p,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:i}))}}var o=this,a,c,l,d,p=arguments[1]||{},m=this.width,g=this.height,v;try{if(!(i=t.get(i)))throw new n.DOMException(n.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);if(this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT)throw new n.ImageError(n.ImageError.MAX_RESOLUTION_ERR);if(c=p.type||this.type||"image/jpeg",l=p.quality||90,d="undefined"!==e.typeOf(p.crop)?p.crop:!1,p.width)m=p.width,g=p.height||m;else{var y=t.getSize(i);y.w&&y.h&&(m=y.w,g=y.h)}return a=new h,a.bind("Resize",function(){r.call(o)}),a.bind("Load",function(){a.downsize(m,g,d,!1)}),a.clone(this,!1),a}catch(w){this.trigger("error",w.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}})}var p=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=6500,h.MAX_RESIZE_HEIGHT=6500,h.prototype=c.instance,h}),i(D,[u,h,g,d],function(e,t,n,i){function r(t){var r=this,s=n.capTest,u=n.capTrue,c=e.extend({access_binary:s(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return r.can("access_binary")&&!!a.Image},display_media:s(i.can("create_canvas")||i.can("use_data_uri_over32kb")),do_cors:s(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:s(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==i.browser||i.version>9)}()),filter_by_extension:s(function(){return"Chrome"===i.browser&&i.version>=28||"IE"===i.browser&&i.version>=10}()),return_response_headers:u,return_response_type:function(e){return"json"===e&&window.JSON?!0:i.can("return_response_type",e)},return_status_code:u,report_upload_progress:s(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return r.can("access_binary")&&i.can("create_canvas")},select_file:function(){return i.can("use_fileinput")&&window.File},select_folder:function(){return r.can("select_file")&&"Chrome"===i.browser&&i.version>=21},select_multiple:function(){return!(!r.can("select_file")||"Safari"===i.browser&&"Windows"===i.os||"iOS"===i.os&&i.verComp(i.osVersion,"7.0.4","<"))},send_binary_string:s(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:s(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||r.can("send_binary_string")},slice_blob:s(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return r.can("slice_blob")&&r.can("send_multipart")},summon_file_dialog:s(function(){return"Firefox"===i.browser&&i.version>=4||"Opera"===i.browser&&i.version>=12||"IE"===i.browser&&i.version>=10||!!~e.inArray(i.browser,["Chrome","Safari"])}()),upload_filesize:u},arguments[2]);n.call(this,t,arguments[1]||o,c),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html5",a={};return n.addConstructor(o,r),a}),i(N,[D,y],function(e,t){function n(){function e(e,t,n){var i;if(!window.File.prototype.slice)return(i=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?i.call(e,t,n):null;try{return e.slice(),e.slice(t,n)}catch(r){return e.slice(t,n-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=n}),i(L,[u],function(e){function t(){this.returnValue=!1}function n(){this.cancelBubble=!0}var i={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=n,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),i.hasOwnProperty(o[r])||(i[o[r]]={}),l=i[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,n,o){var a,s;if(n=n.toLowerCase(),t[r]&&i[t[r]]&&i[t[r]][n]){a=i[t[r]][n];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(n,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+n,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete i[t[r]][n],e.isEmptyObj(i[t[r]])){delete i[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,n){t&&t[r]&&e.each(i[t[r]],function(e,i){a(t,i,n)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),i(M,[D,u,f,L,l,d],function(e,t,n,i,r,o){function a(){var e=[],a;t.extend(this,{init:function(s){var u=this,c=u.getRuntime(),l,d,f,h,p,m;a=s,e=[],f=a.accept.mimes||r.extList2mimes(a.accept,c.can("filter_by_extension")),d=c.getShimContainer(),d.innerHTML='",l=n.get(c.uid),t.extend(l.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=n.get(a.browse_button),c.can("summon_file_dialog")&&("static"===n.getStyle(h,"position")&&(h.style.position="relative"),p=parseInt(n.getStyle(h,"z-index"),10)||1,h.style.zIndex=p,d.style.zIndex=p-1,i.addEvent(h,"click",function(e){var t=n.get(c.uid);t&&!t.disabled&&t.click(),e.preventDefault()},u.uid)),m=c.can("summon_file_dialog")?h:d,i.addEvent(m,"mouseover",function(){u.trigger("mouseenter")},u.uid),i.addEvent(m,"mouseout",function(){u.trigger("mouseleave")},u.uid),i.addEvent(m,"mousedown",function(){u.trigger("mousedown")},u.uid),i.addEvent(n.get(a.container),"mouseup",function(){u.trigger("mouseup")},u.uid),l.onchange=function g(){if(e=[],a.directory?t.each(this.files,function(t){"."!==t.name&&e.push(t)}):e=[].slice.call(this.files),"IE"!==o.browser&&"IEMobile"!==o.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=g}u.trigger("change")},u.trigger({type:"ready",async:!0}),d=null},getFiles:function(){return e},disable:function(e){var t=this.getRuntime(),i;(i=n.get(t.uid))&&(i.disabled=!!e)},destroy:function(){var t=this.getRuntime(),r=t.getShim(),o=t.getShimContainer();i.removeAllEvents(o,this.uid),i.removeAllEvents(a&&n.get(a.container),this.uid),i.removeAllEvents(a&&n.get(a.browse_button),this.uid),o&&(o.innerHTML=""),r.removeInstance(this.uid),e=a=o=r=null}})}return e.FileInput=a}),i(C,[D,u,f,L,l],function(e,t,n,i,r){function o(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var n=t.toArray(e.dataTransfer.types||[]);return-1!==t.inArray("Files",n)||-1!==t.inArray("public.file-url",n)||-1!==t.inArray("application/x-moz-file",n)}function o(e){for(var n=[],i=0;i=4&&u.version<7,f="Android Browser"===u.browser,m=!1;if(p=n.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),h=c(),h.open(n.method,n.url,n.async,n.user,n.password),r instanceof o)r.isDetached()&&(m=!0),r=r.getSource();else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),m=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return void e.call(s,n,r);if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}h.upload?(n.withCredentials&&(h.withCredentials=!0),h.addEventListener("load",function(e){s.trigger(e)}),h.addEventListener("error",function(e){s.trigger(e)}),h.addEventListener("progress",function(e){s.trigger(e)}),h.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):h.onreadystatechange=function v(){switch(h.readyState){case 1:break;case 2:break;case 3:var e,t;try{i.hasSameOrigin(n.url)&&(e=h.getResponseHeader("Content-Length")||0),h.responseText&&(t=h.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:h.onreadystatechange=function(){},s.trigger(0===h.status?"error":"load")}},t.isEmptyObj(n.headers)||t.each(n.headers,function(e,t){h.setRequestHeader(t,e)}),""!==n.responseType&&"responseType"in h&&("json"!==n.responseType||u.can("return_response_type","json")?h.responseType=n.responseType:h.responseType="text"),m?h.sendAsBinary?h.sendAsBinary(r):!function(){for(var e=new Uint8Array(r.length),t=0;ta;a++)i|=o.charCodeAt(e+a)<s;s++)o+=String.fromCharCode(t>>Math.abs(a+8*s)&255);n(o,e,i)}var r=!1,o;return{II:function(e){return e===t?r:void(r=e)},init:function(e){r=!1,o=e},SEGMENT:function(e,t,i){switch(arguments.length){case 1:return o.substr(e,o.length-e-1);case 2:return o.substr(e,t);case 3:n(i,e,t);break;default:return o}},BYTE:function(t){return e(t,1)},SHORT:function(t){return e(t,2)},LONG:function(n,r){return r===t?e(n,4):void i(n,r,4)},SLONG:function(t){var n=e(t,4);return n>2147483647?n-4294967296:n},STRING:function(t,n){var i="";for(n+=t;n>t;t++)i+=String.fromCharCode(e(t,1));return i}}}}),i(k,[P],function(e){return function t(n){var i=[],r,o,a,s=0;if(r=new e,r.init(n),65496===r.SHORT(0)){for(o=2;o<=n.length;)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;s=r.SHORT(o+2)+2,a>=65505&&65519>=a&&i.push({hex:a,name:"APP"+(15&a),start:o,length:s,segment:r.SEGMENT(o,s)}),o+=s}return r.init(null),{headers:i,restore:function(e){var t,n;for(r.init(e),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,t=i.length;t>n;n++)r.SEGMENT(o,0,i[n].segment),o+=i[n].length;return e=r.SEGMENT(),r.init(null),e},strip:function(e){var n,i,o;for(i=new t(e),n=i.headers,i.purge(),r.init(e),o=n.length;o--;)r.SEGMENT(n[o].start,n[o].length,"");return e=r.SEGMENT(),r.init(null),e},get:function(e){for(var t=[],n=0,r=i.length;r>n;n++)i[n].name===e.toUpperCase()&&t.push(i[n].segment);return t},set:function(e,t){var n=[],r,o,a;for("string"==typeof t?n.push(t):n=t,r=o=0,a=i.length;a>r&&(i[r].name===e.toUpperCase()&&(i[r].segment=n[o],i[r].length=n[o].length,o++),!(o>=n.length));r++);},purge:function(){i=[],r.init(null),r=null}}}}}),i(U,[u,P],function(e,n){return function i(){function i(e,n){var i=a.SHORT(e),r,o,s,u,d,f,h,p,m=[],g={};for(r=0;i>r;r++)if(h=f=e+12*r+2,s=n[a.SHORT(h)],s!==t){switch(u=a.SHORT(h+=2),d=a.LONG(h+=2),h+=4,m=[],u){case 1:case 7:for(d>4&&(h=a.LONG(h)+c.tiffHeader),o=0;d>o;o++)m[o]=a.BYTE(h+o);break;case 2:d>4&&(h=a.LONG(h)+c.tiffHeader),g[s]=a.STRING(h,d-1);continue;case 3:for(d>2&&(h=a.LONG(h)+c.tiffHeader),o=0;d>o;o++)m[o]=a.SHORT(h+2*o);break;case 4:for(d>1&&(h=a.LONG(h)+c.tiffHeader),o=0;d>o;o++)m[o]=a.LONG(h+4*o);break;case 5:for(h=a.LONG(h)+c.tiffHeader,o=0;d>o;o++)m[o]=a.LONG(h+4*o)/a.LONG(h+4*o+4);break;case 9:for(h=a.LONG(h)+c.tiffHeader,o=0;d>o;o++)m[o]=a.SLONG(h+4*o);break;case 10:for(h=a.LONG(h)+c.tiffHeader,o=0;d>o;o++)m[o]=a.SLONG(h+4*o)/a.SLONG(h+4*o+4);break;default:continue}p=1==d?m[0]:m,l.hasOwnProperty(s)&&"object"!=typeof p?g[s]=l[s][p]:g[s]=p}return g}function r(){var e=c.tiffHeader;return a.II(18761==a.SHORT(e)),42!==a.SHORT(e+=2)?!1:(c.IFD0=c.tiffHeader+a.LONG(e+=2),u=i(c.IFD0,s.tiff),"ExifIFDPointer"in u&&(c.exifIFD=c.tiffHeader+u.ExifIFDPointer,delete u.ExifIFDPointer),"GPSInfoIFDPointer"in u&&(c.gpsIFD=c.tiffHeader+u.GPSInfoIFDPointer,delete u.GPSInfoIFDPointer),!0)}function o(e,t,n){var i,r,o,u=0;if("string"==typeof t){var l=s[e.toLowerCase()];for(var d in l)if(l[d]===t){t=d;break}}i=c[e.toLowerCase()+"IFD"],r=a.SHORT(i);for(var f=0;r>f;f++)if(o=i+12*f+2,a.SHORT(o)==t){u=o+8;break}return u?(a.LONG(u,n),!0):!1}var a,s,u,c={},l;return a=new n,s={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion", -40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire.",1:"Flash fired.",5:"Strobe return light not detected.",7:"Strobe return light detected.",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},{init:function(e){return c={tiffHeader:10},e!==t&&e.length?(a.init(e),65505===a.SHORT(0)&&"EXIF\x00"===a.STRING(4,5).toUpperCase()?r():!1):!1},TIFF:function(){return u},EXIF:function(){var t;if(t=i(c.exifIFD,s.exif),t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n=65472&&65475>=t)return e+=5,{height:c.SHORT(e),width:c.SHORT(e+=2)};n=c.SHORT(e+=2),e+=n-2}return null}function s(){d&&l&&c&&(d.purge(),l.purge(),c.init(null),u=f=l=d=c=null)}var u,c,l,d,f,h;if(u=o,c=new i,c.init(u),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new n(o),d=new r,h=!!d.init(l.get("app1")[0]),f=a.call(this),e.extend(this,{type:"image/jpeg",size:u.length,width:f&&f.width||0,height:f&&f.height||0,setExif:function(t,n){return h?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,n),void l.set("app1",d.getBinary())):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):u=l.restore(u)},stripHeaders:function(e){return l.strip(e)},purge:function(){s.call(this)}}),h&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS()})}return o}),i(z,[h,u,P],function(e,t,n){function i(i){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:u.LONG(t),height:u.LONG(t+=4)}):null}function o(){u&&(u.init(null),s=d=c=l=u=null)}function a(e){var t,n,i,r;return t=u.LONG(e),n=u.STRING(e+=4,4),i=e+=4,r=u.LONG(e+t),{length:t,type:n,start:i,CRC:r}}var s,u,c,l,d;s=i,u=new n,u.init(s),function(){var t=0,n=0,i=[35152,20039,3338,6666];for(n=0;ng;){for(var v=g+f>a?a-g:f,y=0;o>y;){var w=y+f>o?o-y:f;p.clearRect(0,0,f,f),p.drawImage(e,-y,-g);var E=y*s/o+c<<0,_=Math.ceil(w*s/o),x=g*u/a/m+l<<0,b=Math.ceil(v*u/a/m);d.drawImage(h,0,0,w,v,E,x,_,b),y+=f}g+=f}h=p=null}function t(e){var t=e.naturalWidth,n=e.naturalHeight;if(t*n>1048576){var i=document.createElement("canvas");i.width=i.height=1;var r=i.getContext("2d");return r.drawImage(e,-t+1,0),0===r.getImageData(0,0,1,1).data[3]}return!1}function n(e,t,n){var i=document.createElement("canvas");i.width=1,i.height=n;var r=i.getContext("2d");r.drawImage(e,0,0);for(var o=r.getImageData(0,0,1,n).data,a=0,s=n,u=n;u>a;){var c=o[4*(u-1)+3];0===c?s=u:a=u,u=s+a>>1}i=null;var l=u/n;return 0===l?1:l}return{isSubsampled:t,renderTo:e}}),i(X,[D,u,h,m,w,G,q,l,d],function(e,t,n,i,r,o,a,s,u){function c(){function e(){if(!E&&!y)throw new n.ImageError(n.DOMException.INVALID_STATE_ERR);return E||y}function c(e){return i.atob(e.substring(e.indexOf("base64,")+7))}function l(e,t){return"data:"+(t||"")+";base64,"+i.btoa(e)}function d(e){var t=this;y=new Image,y.onerror=function(){g.call(this),t.trigger("error",n.ImageError.WRONG_FORMAT)},y.onload=function(){t.trigger("load")},y.src=/^data:[^;]*;base64,/.test(e)?e:l(e,x.type)}function f(e,t){var i=this,r;return window.FileReader?(r=new FileReader,r.onload=function(){t(this.result)},r.onerror=function(){i.trigger("error",n.ImageError.WRONG_FORMAT)},r.readAsDataURL(e),void 0):t(e.getAsDataURL())}function h(n,i,r,o){var a=this,s,u,c=0,l=0,d,f,h,g;if(R=o,g=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1,-1!==t.inArray(g,[5,6,7,8])){var v=n;n=i,i=v}return d=e(),r?(n=Math.min(n,d.width),i=Math.min(i,d.height),s=Math.max(n/d.width,i/d.height)):s=Math.min(n/d.width,i/d.height),s>1&&!r&&o?void this.trigger("Resize"):(E||(E=document.createElement("canvas")),f=Math.round(d.width*s),h=Math.round(d.height*s),r?(E.width=n,E.height=i,f>n&&(c=Math.round((f-n)/2)),h>i&&(l=Math.round((h-i)/2))):(E.width=f,E.height=h),R||m(E.width,E.height,g),p.call(this,d,E,-c,-l,f,h),this.width=E.width,this.height=E.height,b=!0,void a.trigger("Resize"))}function p(e,t,n,i,r,o){if("iOS"===u.OS)a.renderTo(e,t,{width:r,height:o,x:n,y:i});else{var s=t.getContext("2d");s.drawImage(e,n,i,r,o)}}function m(e,t,n){switch(n){case 5:case 6:case 7:case 8:E.width=t,E.height=e;break;default:E.width=e,E.height=t}var i=E.getContext("2d");switch(n){case 2:i.translate(e,0),i.scale(-1,1);break;case 3:i.translate(e,t),i.rotate(Math.PI);break;case 4:i.translate(0,t),i.scale(1,-1);break;case 5:i.rotate(.5*Math.PI),i.scale(1,-1);break;case 6:i.rotate(.5*Math.PI),i.translate(0,-t);break;case 7:i.rotate(.5*Math.PI),i.translate(e,-t),i.scale(-1,1);break;case 8:i.rotate(-.5*Math.PI),i.translate(-e,0)}}function g(){w&&(w.purge(),w=null),_=y=E=x=null,b=!1}var v=this,y,w,E,_,x,b=!1,R=!0;t.extend(this,{loadFromBlob:function(e){var t=this,i=t.getRuntime(),r=arguments.length>1?arguments[1]:!0;if(!i.can("access_binary"))throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);return x=e,e.isDetached()?(_=e.getSource(),void d.call(this,_)):void f.call(this,e.getSource(),function(e){r&&(_=c(e)),d.call(t,e)})},loadFromImage:function(e,t){this.meta=e.meta,x=new r(null,{name:e.name,size:e.size,type:e.type}),d.call(this,t?_=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t=this.getRuntime(),n;return!w&&_&&t.can("access_image_binary")&&(w=new o(_)),n={width:e().width||0,height:e().height||0,type:x.type||s.getFileMime(x.name),size:_&&_.length||x.size||0,name:x.name||"",meta:w&&w.meta||this.meta||{}}},downsize:function(){h.apply(this,arguments)},getAsCanvas:function(){return E&&(E.id=this.uid+"_canvas"),E},getAsBlob:function(e,t){return e!==this.type&&h.call(this,this.width,this.height,!1),new r(null,{name:x.name||"",type:e,data:v.getAsBinaryString.call(this,e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return y.src;if("image/jpeg"!==e)return E.toDataURL("image/png");try{return E.toDataURL("image/jpeg",t/100)}catch(n){return E.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return _||(_=c(v.getAsDataURL(e,t))),_;if("image/jpeg"!==e)_=c(v.getAsDataURL(e,t));else{var n;t||(t=90);try{n=E.toDataURL("image/jpeg",t/100)}catch(i){n=E.toDataURL("image/jpeg")}_=c(n),w&&(_=w.stripHeaders(_),R&&(w.meta&&w.meta.exif&&w.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),_=w.writeHeaders(_)),w.purge(),w=null)}return b=!1,_},destroy:function(){v=null,g.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),i(j,[u,d,f,h,g],function(e,t,n,i,r){function o(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(n){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function a(a){var c=this,l;a=e.extend({swf_url:t.swf_url},a),r.call(this,a,s,{access_binary:function(e){return e&&"browser"===c.mode},access_image_binary:function(e){return e&&"browser"===c.mode},display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===c.mode},resize_image:r.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===c.mode},return_status_code:function(t){return"browser"===c.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:function(e){return e&&"browser"===c.mode},send_browser_cookies:function(e){return e&&"browser"===c.mode},send_custom_headers:function(e){return e&&"browser"===c.mode},send_multipart:r.capTrue,slice_blob:function(e){return e&&"browser"===c.mode},stream_upload:function(e){return e&&"browser"===c.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===c.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),o()<10&&(this.mode=!1),e.extend(this,{getShim:function(){return n.get(this.uid)},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec(this.uid,e,t,n)},init:function(){var n,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),n='',"IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=n,r=o=null):o.innerHTML=n,l=setTimeout(function(){c&&!c.initialized&&c.trigger("Error",new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){e.call(c),clearTimeout(l),a=l=e=c=null}}(this.destroy)},u)}var s="flash",u={};return r.addConstructor(s,a),u}),i(V,[j,y],function(e,t){var n={slice:function(e,n,i,r){var o=this.getRuntime();return 0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),e=o.shimExec.call(this,"Blob","slice",n,i,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=n}),i(W,[j],function(e){var t={init:function(e){this.getRuntime().shimExec.call(this,"FileInput","init",{name:e.name,accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=t}),i(Y,[j,m],function(e,t){function n(e,n){switch(n){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var i="",r={read:function(e,t){var r=this,o=r.getRuntime();return"readAsDataURL"===e&&(i="data:"+(t.type||"")+";base64,"),r.bind("Progress",function(t,r){r&&(i+=n(r,e))}),o.shimExec.call(this,"FileReader","readAsBase64",t.uid)},getResult:function(){return i},destroy:function(){i=null}};return e.FileReader=r}),i($,[j,m],function(e,t){function n(e,n){switch(n){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var i={read:function(e,t){var i,r=this.getRuntime();return(i=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(i="data:"+(t.type||"")+";base64,"+i),n(i,e,t.type)):null}};return e.FileReaderSync=i}),i(J,[j,u,y,w,T,A,O],function(e,t,n,i,r,o,a){var s={send:function(e,i){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,i)}function s(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),i=null,r()}function u(e,t){var n=new a;n.bind("TransportingComplete",function(){t(this.result)}),n.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),i instanceof o){var d;if(i.each(function(e,t){e instanceof n?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),i.hasBlob()){var f=i.getBlob();f.isDetached()?u(f,function(e){f.destroy(),s(d,e)}):s(d,f)}else i=null,r()}else i instanceof n?i.isDetached()?u(i,function(e){i.destroy(),i=e.uid,r()}):(i=i.uid,r()):r()},getResponse:function(e){var n,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new i(a.uid,o),"blob"===e)return o;try{if(n=new r,~t.inArray(e,["","text"]))return n.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(n.readAsText(o))}finally{o.destroy()}}return null},abort:function(e){var t=this.getRuntime();t.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=s}),i(Z,[j,y],function(e,t){var n={getAsBlob:function(e){var n=this.getRuntime(),i=n.shimExec.call(this,"Transporter","getAsBlob",e);return i?new t(n.uid,i):null}};return e.Transporter=n}),i(K,[j,u,O,y,T],function(e,t,n,i,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(i,"Image","loadFromBlob",e.uid),i=r=null}var i=this,r=i.getRuntime();if(e.isDetached()){var o=new n;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getAsBlob:function(e,t){var n=this.getRuntime(),r=n.shimExec.call(this,"Image","getAsBlob",e,t);return r?new i(n.uid,r):null},getAsDataURL:function(){var e=this.getRuntime(),t=e.Image.getAsBlob.apply(this,arguments),n;return t?(n=new r,n.readAsDataURL(t)):null}};return e.Image=o}),i(Q,[u,d,f,h,g],function(e,t,n,i,r){function o(e){var t=!1,n=null,i,r,o,a,s,u=0;try{try{n=new ActiveXObject("AgControl.AgControl"),n.IsVersionSupported(e)&&(t=!0),n=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(i=l.description,"1.0.30226.2"===i&&(i="2.0.30226.2"),r=i.split(".");r.length>3;)r.pop();for(;r.length<4;)r.push(0);for(o=e.split(".");o.length>4;)o.pop();do a=parseInt(o[u],10),s=parseInt(r[u],10),u++;while(u=a&&!isNaN(a)&&(t=!0)}}}catch(d){t=!1}return t}function a(a){var c=this,l;a=e.extend({xap_url:t.xap_url},a),r.call(this,a,s,{access_binary:r.capTrue,access_image_binary:r.capTrue,display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:r.capTrue,resize_image:r.capTrue,return_response_headers:function(e){return e&&"client"===c.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===c.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:r.capTrue,send_browser_cookies:function(e){return e&&"browser"===c.mode},send_custom_headers:function(e){return e&&"client"===c.mode},send_multipart:r.capTrue,slice_blob:r.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:r.capTrue,use_http_method:function(t){return"client"===c.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),o("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return n.get(this.uid).content.Moxie},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec(this.uid,e,t,n)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='',l=setTimeout(function(){c&&!c.initialized&&c.trigger("Error",new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(c),clearTimeout(l),a=l=e=c=null}}(this.destroy)},u)}var s="silverlight",u={};return r.addConstructor(s,a),u}),i(ee,[Q,u,V],function(e,t,n){return e.Blob=t.extend({},n)}),i(te,[Q],function(e){var t={init:function(e){function t(e){for(var t="",n=0;no;o++)n=t.keys[o],s=t[n],s&&(/^(\d|[1-9]\d+)$/.test(s)?s=parseInt(s,10):/^\d*\.\d+$/.test(s)&&(s=parseFloat(s)),i.meta[e][n]=s)}),i.width=parseInt(r.width,10),i.height=parseInt(r.height,10),i.size=parseInt(r.size,10),i.type=r.type,i.name=r.name,i}})}),i(ue,[u,h,g,d],function(e,t,n,i){function r(t){var r=this,s=n.capTest,u=n.capTrue;n.call(this,t,o,{access_binary:s(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:s(a.Image&&(i.can("create_canvas")||i.can("use_data_uri_over32kb"))),do_cors:!1,drag_and_drop:!1,filter_by_extension:s(function(){return"Chrome"===i.browser&&i.version>=28||"IE"===i.browser&&i.version>=10}()),resize_image:function(){return a.Image&&r.can("access_binary")&&i.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return i.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return r.can("select_file")},summon_file_dialog:s(function(){return"Firefox"===i.browser&&i.version>=4||"Opera"===i.browser&&i.version>=12||!!~e.inArray(i.browser,["Chrome","Safari"])}()),upload_filesize:u,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html4",a={};return n.addConstructor(o,r),a}),i(ce,[ue,u,f,L,l,d],function(e,t,n,i,r,o){function a(){function e(){var r=this,l=r.getRuntime(),d,f,h,p,m,g;g=t.guid("uid_"),d=l.getShimContainer(),a&&(h=n.get(a+"_form"),h&&t.extend(h.style,{top:"100%"})),p=document.createElement("form"),p.setAttribute("id",g+"_form"),p.setAttribute("method","post"),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),t.extend(p.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=document.createElement("input"),m.setAttribute("id",g),m.setAttribute("type","file"),m.setAttribute("name",c.name||"Filedata"),m.setAttribute("accept",u.join(",")),t.extend(m.style,{fontSize:"999px",opacity:0}),p.appendChild(m),d.appendChild(p),t.extend(m.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===o.browser&&o.version<10&&t.extend(m.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),m.onchange=function(){var t;this.value&&(t=this.files?this.files[0]:{name:this.value},s=[t],this.onchange=function(){},e.call(r),r.bind("change",function i(){var e=n.get(g),t=n.get(g+"_form"),o;r.unbind("change",i),r.files.length&&e&&t&&(o=r.files[0],e.setAttribute("id",o.uid),t.setAttribute("id",o.uid+"_form"),t.setAttribute("target",o.uid+"_iframe")),e=t=null},998),m=p=null,r.trigger("change"))},l.can("summon_file_dialog")&&(f=n.get(c.browse_button),i.removeEvent(f,"click",r.uid),i.addEvent(f,"click",function(e){m&&!m.disabled&&m.click(),e.preventDefault()},r.uid)),a=g,d=h=f=null}var a,s=[],u=[],c;t.extend(this,{init:function(t){var o=this,a=o.getRuntime(),s;c=t,u=t.accept.mimes||r.extList2mimes(t.accept,a.can("filter_by_extension")),s=a.getShimContainer(),function(){var e,r,u;e=n.get(t.browse_button),a.can("summon_file_dialog")&&("static"===n.getStyle(e,"position")&&(e.style.position="relative"),r=parseInt(n.getStyle(e,"z-index"),10)||1,e.style.zIndex=r,s.style.zIndex=r-1),u=a.can("summon_file_dialog")?e:s,i.addEvent(u,"mouseover",function(){o.trigger("mouseenter")},o.uid),i.addEvent(u,"mouseout",function(){o.trigger("mouseleave")},o.uid),i.addEvent(u,"mousedown",function(){o.trigger("mousedown")},o.uid),i.addEvent(n.get(t.container),"mouseup",function(){o.trigger("mouseup")},o.uid),e=null}(),e.call(this),s=null,o.trigger({type:"ready",async:!0})},getFiles:function(){return s},disable:function(e){var t;(t=n.get(a))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),r=e.getShimContainer();i.removeAllEvents(r,this.uid),i.removeAllEvents(c&&n.get(c.container),this.uid),i.removeAllEvents(c&&n.get(c.browse_button),this.uid),r&&(r.innerHTML=""),t.removeInstance(this.uid),a=s=u=c=r=t=null}})}return e.FileInput=a}),i(le,[ue,F],function(e,t){return e.FileReader=t}),i(de,[ue,u,f,R,h,L,y,A],function(e,t,n,i,r,o,a,s){function u(){function e(e){var t=this,i,r,a,s,u=!1;if(l){if(i=l.id.replace(/_iframe$/,""),r=n.get(i+"_form")){for(a=r.getElementsByTagName("input"),s=a.length;s--;)switch(a[s].getAttribute("type")){case"hidden":a[s].parentNode.removeChild(a[s]);break;case"file":u=!0}a=[],u||r.parentNode.removeChild(r),r=null}setTimeout(function(){o.removeEvent(l,"load",t.uid),l.parentNode&&l.parentNode.removeChild(l);var n=t.getRuntime().getShimContainer();n.children.length||n.parentNode.removeChild(n),n=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,f){function h(){var n=m.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='',l=r.firstChild,n.appendChild(l),o.addEvent(l,"load",function(){var n;try{n=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(n.title)?u=n.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(n.body.innerHTML),p.trigger({type:"progress",loaded:c.length,total:c.length}),w&&p.trigger({type:"uploadprogress",loaded:w.size||1025,total:w.size||1025}))}catch(r){if(!i.hasSameOrigin(d.url))return void e.call(p,function(){p.trigger("error")});u=404}e.call(p,function(){p.trigger("load")})},p.uid)}var p=this,m=p.getRuntime(),g,v,y,w;if(u=c=null,f instanceof s&&f.hasBlob()){if(w=f.getBlob(),g=w.uid,y=n.get(g),v=n.get(g+"_form"),!v)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else g=t.guid("uid_"),v=document.createElement("form"),v.setAttribute("id",g+"_form"),v.setAttribute("method",d.method),v.setAttribute("enctype","multipart/form-data"),v.setAttribute("encoding","multipart/form-data"),v.setAttribute("target",g+"_iframe"),m.getShimContainer().appendChild(v);f instanceof s&&f.each(function(e,n){if(e instanceof a)y&&y.setAttribute("name",n);else{var i=document.createElement("input");t.extend(i,{type:"hidden",name:n,value:e}),y?v.insertBefore(i,y):v.appendChild(i)}}),v.setAttribute("action",d.url),h(),v.submit(),p.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(n){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),i(fe,[ue,X],function(e,t){return e.Image=t}),a([u,c,l,d,f,h,p,m,g,v,y,w,E,_,x,b,R,T,A,S,O,I,L])}(this);;(function(e){"use strict";var t={},n=e.moxie.core.utils.Basic.inArray;return function r(e){var i,s;for(i in e)s=typeof e[i],s==="object"&&!~n(i,["Exceptions","Env","Mime"])?r(e[i]):s==="function"&&(t[i]=e[i])}(e.moxie),t.Env=e.moxie.core.utils.Env,t.Mime=e.moxie.core.utils.Mime,t.Exceptions=e.moxie.core.Exceptions,e.mOxie=t,e.o||(e.o=t),t})(this); +!function(e,t){"use strict";function n(e,t){for(var n,i=[],r=0;r0&&n(o,function(n,o){n!==r&&(e(i[o])===e(n)&&~a(e(n),["array","object"])?t(i[o],n):i[o]=n)})}),i},n=function(e,t){var n,i,r,o;if(e){try{n=e.length}catch(a){n=o}if(n===o){for(i in e)if(e.hasOwnProperty(i)&&t(e[i],i)===!1)return}else for(r=0;n>r;r++)if(t(e[r],r)===!1)return}},i=function(t){var n;if(!t||"object"!==e(t))return!0;for(n in t)return!1;return!0},r=function(t,n){function i(r){"function"===e(t[r])&&t[r](function(e){++rn;n++)if(t[n]===e)return n}return-1},s=function(t,n){var i=[];"array"!==e(t)&&(t=[t]),"array"!==e(n)&&(n=[n]);for(var r in t)-1===a(t[r],n)&&i.push(t[r]);return i.length?i:!1},u=function(e,t){var i=[];return n(e,function(e){-1!==a(e,t)&&i.push(e)}),i.length?i:null},c=function(e){var t,n=[];for(t=0;ti;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}(),d=function(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""):e},f=function(e){if("string"!=typeof e)return e;var t={t:1099511627776,g:1073741824,m:1048576,k:1024},n;return e=/^([0-9\.]+)([tmgk]?)$/.exec(e.toLowerCase().replace(/[^0-9\.tmkg]/g,"")),n=e[2],e=+e[1],t.hasOwnProperty(n)&&(e*=t[n]),Math.floor(e)},h=function(t){var n=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=n.shift();return"undefined"!==e(t)?t:""})};return{guid:l,typeOf:e,extend:t,each:n,isEmptyObj:i,inSeries:r,inParallel:o,inArray:a,arrayDiff:s,arrayIntersect:u,toArray:c,trim:d,sprintf:h,parseSizeStr:f}}),i(c,[u],function(e){function t(e,t,n){var i=0,r=0,o=0,a={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},s=function(e){return e=(""+e).replace(/[_\-+]/g,"."),e=e.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,"."),e.length?e.split("."):[-8]},u=function(e){return e?isNaN(e)?a[e]||-7:parseInt(e,10):0};for(e=s(e),t=s(t),r=Math.max(e.length,t.length),i=0;r>i;i++)if(e[i]!=t[i]){if(e[i]=u(e[i]),t[i]=u(t[i]),e[i]t[i]){o=1;break}}if(!n)return o;switch(n){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var n=function(e){var t="",n="?",i="function",r="undefined",o="object",a="major",s="model",u="name",c="type",l="vendor",d="version",f="architecture",h="console",p="mobile",m="tablet",g={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},v={rgx:function(){for(var t,n=0,a,s,u,c,l,d,f=arguments;n0?2==c.length?typeof c[1]==i?t[c[0]]=c[1].call(this,d):t[c[0]]=c[1]:3==c.length?typeof c[1]!==i||c[1].exec&&c[1].test?t[c[0]]=d?d.replace(c[1],c[2]):e:t[c[0]]=d?c[1].call(this,d,c[2]):e:4==c.length&&(t[c[0]]=d?c[3].call(this,d.replace(c[1],c[2])):e):t[c]=d?d:e;break}if(l)break}return t},str:function(t,i){for(var r in i)if(typeof i[r]===o&&i[r].length>0){for(var a=0;a=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(n){var i=[].slice.call(arguments);return i.shift(),"function"===e.typeOf(t[n])?t[n].apply(this,i):!!t[n]}}(),r={can:i,browser:n.browser.name,version:parseFloat(n.browser.major),os:n.os.name,osVersion:n.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return r.OS=r.os,r}),i(l,[u],function(e){var t={};return{addI18n:function(n){return e.extend(t,n)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var n=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=n.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),i(d,[u,l],function(e,t){var n="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",i={mimes:{},extensions:{},addMimeType:function(e){var t=e.split(/,/),n,i,r;for(n=0;n=0;o--)if(r[o].fn===i){r.splice(o,1);break}}else r=[];r.length||(delete e[this.uid][t],n.isEmptyObj(e[this.uid])&&delete e[this.uid])}},removeAllEventListeners:function(){e[this.uid]&&delete e[this.uid]},dispatchEvent:function(i){var r,o,a,s,u={},c=!0,l;if("string"!==n.typeOf(i)){if(s=i,"string"!==n.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);i=s.type,s.total!==l&&s.loaded!==l&&(u.total=s.total,u.loaded=s.loaded),u.async=s.async||!1}if(-1!==i.indexOf("::")?!function(e){r=e[0],i=e[1]}(i.split("::")):r=this.uid,i=i.toLowerCase(),o=e[r]&&e[r][i]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),u.type=i,a.unshift(u);var d=[];n.each(o,function(e){a[0].target=e.scope,d.push(u.async?function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}:function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&n.inSeries(d,function(e){c=!e})}return c},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===n.typeOf(this[t])&&this[t].apply(this,arguments)}),n.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===n.typeOf(t[e])&&(t[e]=null)})}})}return i.instance=new i,i}),i(m,[c,u,f,p],function(e,t,n,i){function r(e,i,o,s,u){var c=this,l,d=t.guid(i+"_"),f=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(f=r.getMode(s,e.preferred_caps,f)),l=function(){var e={};return{exec:function(t,n,i,r){return l[n]&&(e[t]||(e[t]={context:this,instance:new l[n]}),e[t].instance[i])?e[t].instance[i].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var n=this;t.each(e,function(e,i){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),n.removeInstance(i)})}}}(),t.extend(this,{initialized:!1,uid:d,type:i,mode:r.getMode(s,e.required_caps,f),shimid:d+"_container",clients:0,options:e,can:function(e,n){var i=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(n)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],i))return!1;return!0}return"function"===t.typeOf(i[e])?i[e].call(this,n):n===i[e]},getShimContainer:function(){var e,i=n.get(this.shimid);return i||(e=this.options.container?n.get(this.options.container):document.body,i=document.createElement("div"),i.id=this.shimid,i.className="moxie-shim moxie-shim-"+this.type,t.extend(i.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(i),e=null),i},getShim:function(){return l},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec.call(this,this.uid,e,t,n)},exec:function(e,t){var n=[].slice.call(arguments,2);return c[e]&&c[e][t]?c[e][t].apply(this,n):c.shimExec.apply(this,arguments)},destroy:function(){if(c){var e=n.get(this.shimid);e&&e.parentNode.removeChild(e),l&&l.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=c=l=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=i.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var n={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){n[e]=!0}),n)},r.can=function(e,t){var n,i=r.getConstructor(e),o;return i?(n=new i({required_caps:t}),o=n.mode,n.destroy(),!!o):!1},r.thatCan=function(e,t){var n=(t||r.order).split(/\s*,\s*/);for(var i in n)if(r.can(n[i],e))return n[i];return null},r.getMode=function(e,n,i){var r=null;if("undefined"===t.typeOf(i)&&(i="browser"),n&&!t.isEmptyObj(e)){if(t.each(n,function(n,i){if(e.hasOwnProperty(i)){var o=e[i](n);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(i,r)?i:r[0];if(r===!1)return!1}return i},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),i(g,[c,h,u,m],function(e,t,n,i){return function r(){var e;n.extend(this,{connectRuntime:function(r){function o(n){var s,u;return n.length?(s=n.shift().toLowerCase(),(u=i.getConstructor(s))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,a.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(n)}),e.mode?void e.init():void e.trigger("Error")):void o(n)):(a.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),void(e=null))}var a=this,s;if("string"===n.typeOf(r)?s=r:"string"===n.typeOf(r.ruid)&&(s=r.ruid),s){if(e=i.getRuntime(s))return e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||i.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null}})}}),i(v,[u,c,d,f,h,p,l,m,g],function(e,t,n,i,r,o,a,s,u){function c(t){var o=this,c,d,f;if(-1!==e.inArray(e.typeOf(t),["string","node"])&&(t={browse_button:t}),d=i.get(t.browse_button),!d)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR);f={accept:[{title:a.translate("All Files"),extensions:"*"}],name:"file",multiple:!1,required_caps:!1,container:d.parentNode||document.body},t=e.extend({},f,t),"string"==typeof t.required_caps&&(t.required_caps=s.parseCaps(t.required_caps)),"string"==typeof t.accept&&(t.accept=n.mimes2extList(t.accept)),c=i.get(t.container),c||(c=document.body),"static"===i.getStyle(c,"position")&&(c.style.position="relative"),c=d=null,u.call(o),e.extend(o,{uid:e.guid("uid_"),ruid:null,shimid:null,files:null,init:function(){o.bind("RuntimeInit",function(n,r){o.ruid=r.uid,o.shimid=r.shimid,o.bind("Ready",function(){o.trigger("Refresh")},999),o.bind("Refresh",function(){var n,o,a,s;a=i.get(t.browse_button),s=i.get(r.shimid),a&&(n=i.getPos(a,i.get(t.container)),o=i.getSize(a),s&&e.extend(s.style,{top:n.y+"px",left:n.x+"px",width:o.w+"px",height:o.h+"px"})),s=a=null}),r.exec.call(o,"FileInput","init",t)}),o.connectRuntime(e.extend({},t,{required_caps:{select_file:!0}}))},disable:function(t){var n=this.getRuntime();n&&n.exec.call(this,"FileInput","disable","undefined"===e.typeOf(t)?!0:t)},refresh:function(){o.trigger("Refresh")},destroy:function(){var t=this.getRuntime();t&&(t.exec.call(this,"FileInput","destroy"),this.disconnectRuntime()),"array"===e.typeOf(this.files)&&e.each(this.files,function(e){e.destroy()}),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","change","cancel","mouseenter","mouseleave","mousedown","mouseup"];return c.prototype=o.instance,c}),i(w,[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},n=function(e,n){if("function"==typeof window.atob)return n?t(window.atob(e)):window.atob(e);var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r,o,a,s,u,c,l,d,f=0,h=0,p="",m=[];if(!e)return e;e+="";do s=i.indexOf(e.charAt(f++)),u=i.indexOf(e.charAt(f++)),c=i.indexOf(e.charAt(f++)),l=i.indexOf(e.charAt(f++)),d=s<<18|u<<12|c<<6|l,r=d>>16&255,o=d>>8&255,a=255&d,64==c?m[h++]=String.fromCharCode(r):64==l?m[h++]=String.fromCharCode(r,o):m[h++]=String.fromCharCode(r,o,a);while(f>18&63,u=d>>12&63,c=d>>6&63,l=63&d,m[h++]=i.charAt(s)+i.charAt(u)+i.charAt(c)+i.charAt(l);while(fa;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return i.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return i.call(this,"readAsDataURL",e)},readAsText:function(e){return i.call(this,"readAsText",e)}})}}),i(A,[h,u,y],function(e,t,n){function i(){var e,i=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof n?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):i.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(n){t.each(i,function(e){n(e.value,e.name)}),e&&n(e.value,e.name)},destroy:function(){e=null,i=[]}})}return i}),i(T,[u,h,p,w,x,m,R,y,S,A,c,d],function(e,t,n,i,r,o,a,s,u,c,l,d){function f(){this.uid=e.guid("uid_")}function h(){function n(e,t){return w.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?w[e]:v[e]:void(l.can("define_property")?w[e]=t:v[e]=t):void 0}function u(t){function i(){k&&(k.destroy(),k=null),s.dispatchEvent("loadend"),s=null}function r(r){k.bind("LoadStart",function(e){n("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),O&&s.upload.dispatchEvent(e)}),k.bind("Progress",function(e){n("readyState")!==h.LOADING&&(n("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),k.bind("UploadProgress",function(e){O&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),k.bind("Load",function(t){n("readyState",h.DONE),n("status",Number(r.exec.call(k,"XMLHttpRequest","getStatus")||0)),n("statusText",p[n("status")]||""),n("response",r.exec.call(k,"XMLHttpRequest","getResponse",n("responseType"))),~e.inArray(n("responseType"),["text",""])?n("responseText",n("response")):"document"===n("responseType")&&n("responseXML",n("response")),B=r.exec.call(k,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),n("status")>0?(O&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(N=!0,s.dispatchEvent("error")),i()}),k.bind("Abort",function(e){s.dispatchEvent(e),i()}),k.bind("Error",function(e){N=!0,n("readyState",h.DONE),s.dispatchEvent("readystatechange"),D=!0,s.dispatchEvent(e),i()}),r.exec.call(k,"XMLHttpRequest","send",{url:E,method:_,async:y,user:x,password:R,headers:b,mimeType:A,encoding:S,responseType:s.responseType,withCredentials:s.withCredentials,options:H},t)}var s=this;M=(new Date).getTime(),k=new a,"string"==typeof H.required_caps&&(H.required_caps=o.parseCaps(H.required_caps)),H.required_caps=e.extend({},H.required_caps,{return_response_type:s.responseType}),t instanceof c&&(H.required_caps.send_multipart=!0),e.isEmptyObj(b)||(H.required_caps.send_custom_headers=!0),L||(H.required_caps.do_cors=!0),H.ruid?r(k.connectRuntime(H)):(k.bind("RuntimeInit",function(e,t){r(t)}),k.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),k.connectRuntime(H))}function g(){n("responseText",""),n("responseXML",null),n("response",null),n("status",0),n("statusText",""),M=C=null}var v=this,w={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},y=!0,E,_,b={},x,R,S=null,A=null,T=!1,I=!1,O=!1,D=!1,N=!1,L=!1,M,C,F=null,P=null,H={},k,B="",G;e.extend(this,w,{uid:e.guid("uid_"),upload:new f,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||i.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(_=o.toUpperCase()),~e.inArray(_,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=i.utf8_encode(a),l=r.parseUrl(a),L=r.hasSameOrigin(l),E=r.resolveUrl(a),(u||c)&&!L)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(x=u||l.user,R=c||l.pass,y=s||!0,y===!1&&(n("timeout")||n("withCredentials")||""!==n("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);T=!y,I=!1,b={},g.call(this),n("readyState",h.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(n("readyState")!==h.OPENED||I)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||i.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(b[r]?b[r]+=", "+o:b[r]=o,!0)},getAllResponseHeaders:function(){return B||""},getResponseHeader:function(t){return t=t.toLowerCase(),N||~e.inArray(t,["set-cookie","set-cookie2"])?null:B&&""!==B&&(G||(G={},e.each(B.split(/\r\n/),function(t){var n=t.split(/:\s+/);2===n.length&&(n[0]=e.trim(n[0]),G[n[0].toLowerCase()]={header:n[0],value:e.trim(n[1])})})),G.hasOwnProperty(t))?G[t].header+": "+G[t].value:null},overrideMimeType:function(i){var r,o;if(~e.inArray(n("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i=e.trim(i.toLowerCase()),/;/.test(i)&&(r=i.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(i=r[1],r[2]&&(o=r[2])),!d.mimes[i])throw new t.DOMException(t.DOMException.SYNTAX_ERR);F=i,P=o},send:function(n,r){if(H="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==h.OPENED||I)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n instanceof s)H.ruid=n.ruid,A=n.type||"application/octet-stream";else if(n instanceof c){if(n.hasBlob()){var o=n.getBlob();H.ruid=o.ruid,A=o.type||"application/octet-stream"}}else"string"==typeof n&&(S="UTF-8",A="text/plain;charset=UTF-8",n=i.utf8_encode(n));this.withCredentials||(this.withCredentials=H.required_caps&&H.required_caps.send_browser_cookies&&!L),O=!T&&this.upload.hasEventListener(),N=!1,D=!n,T||(I=!0),u.call(this,n)},abort:function(){if(N=!0,T=!1,~e.inArray(n("readyState"),[h.UNSENT,h.OPENED,h.DONE]))n("readyState",h.UNSENT);else{if(n("readyState",h.DONE),I=!1,!k)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);k.getRuntime().exec.call(k,"XMLHttpRequest","abort",D),D=!0}},destroy:function(){k&&("function"===e.typeOf(k.destroy)&&k.destroy(),k=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(m.concat(["readystatechange"])),this.upload.handleEventProps(m)}var p={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};f.prototype=n.instance;var m=["loadstart","progress","abort","error","load","timeout","loadend"],g=1,v=2;return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=n.instance,h}),i(I,[u,w,g,p],function(e,t,n,i){function r(){function i(){l=d=0,c=this.result=null}function o(t,n){var i=this;u=n,i.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(i.state,[r.IDLE,r.DONE])&&a.call(i)},999),i.bind("TransportingComplete",function(){d=l,i.state=r.DONE,c=null,i.result=u.exec.call(i,"Transporter","getAsBlob",t||"")},999),i.state=r.BUSY,i.trigger("TransportingStarted"),a.call(i)}function a(){var e=this,n,i=l-d;f>i&&(f=i),n=t.btoa(c.substr(d,f)),u.exec.call(e,"Transporter","receive",n,l)}var s,u,c,l,d,f;n.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,n,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),f=r.chunk_size,i.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,n,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,n,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),i.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),i.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=i.instance,r}),i(O,[u,f,h,S,T,m,g,I,c,p,y,E,w],function(e,t,n,i,r,o,a,s,u,c,l,d,f){function h(){function i(e){e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name)}function c(t){var i=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);m.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new n.ImageError(n.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(i,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===i)/^data:[^;]*;base64,/.test(t)?c.call(this,new l(null,{data:t}),arguments[1]):v.apply(this,arguments);else{if("node"!==i||"img"!==t.nodeName.toLowerCase())throw new n.DOMException(n.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function m(t,n){var i=this.connectRuntime(t.ruid);this.ruid=i.uid,i.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(n)?!0:n)}function g(t,n){function i(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){i(t)}),n&&"string"==typeof n.required_caps&&(n.required_caps=o.parseCaps(n.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},n))):i(this.connectRuntime(t.ruid))}function v(e,t){var n=this,i;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},downsize:function(t){var i={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:!1};t="object"==typeof t?e.extend(i,t):e.extend(i,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]});try{if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);if(this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT)throw new n.ImageError(n.ImageError.MAX_RESOLUTION_ERR);this.exec("Image","downsize",t.width,t.height,t.crop,t.preserveHeaders)}catch(r){this.trigger("error",r.code)}},crop:function(e,t,n){this.downsize(e,t,!0,n)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var n=this.getAsDataURL(e,t);return f.atob(n.substring(n.indexOf("base64,")+7))},embed:function(i,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return i.appendChild(l),l=null,o.destroy(),void a.trigger("embedded")}var d=o.getAsDataURL(t,r);if(!d)throw new n.ImageError(n.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))i.innerHTML='',o.destroy(),a.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",function(){c=a.connectRuntime(this.result.ruid),a.bind("Embedded",function(){e.extend(c.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),c=null},999),c.exec.call(a,"ImageView","display",this.result.uid,width,height),o.destroy()}),h.transport(f.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:i})}}var a=this,c;r=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r||{});try{if(!(i=t.get(i)))throw new n.DOMException(n.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT;var l=new h;return l.bind("Resize",function(){o.call(this,r.type,r.quality)}),l.bind("Load",function(){l.downsize(r)}),this.meta.thumb&&this.meta.thumb.width>=r.width&&this.meta.thumb.height>=r.height?l.load(this.meta.thumb.data):l.clone(this,!1),l}catch(d){this.trigger("error",d.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(p),this.bind("Load Resize",function(){i.call(this)},999)}var p=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=8192,h.MAX_RESIZE_HEIGHT=8192,h.prototype=c.instance,h}),i(D,[u,h,m,c],function(e,t,n,i){function r(t){var r=this,s=n.capTest,u=n.capTrue,c=e.extend({access_binary:s(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return r.can("access_binary")&&!!a.Image},display_media:s(i.can("create_canvas")||i.can("use_data_uri_over32kb")),do_cors:s(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:s(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==i.browser||i.version>9)}()),filter_by_extension:s(function(){return"Chrome"===i.browser&&i.version>=28||"IE"===i.browser&&i.version>=10||"Safari"===i.browser&&i.version>=7}()),return_response_headers:u,return_response_type:function(e){return"json"===e&&window.JSON?!0:i.can("return_response_type",e)},return_status_code:u,report_upload_progress:s(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return r.can("access_binary")&&i.can("create_canvas")},select_file:function(){return i.can("use_fileinput")&&window.File},select_folder:function(){return r.can("select_file")&&"Chrome"===i.browser&&i.version>=21},select_multiple:function(){return!(!r.can("select_file")||"Safari"===i.browser&&"Windows"===i.os||"iOS"===i.os&&i.verComp(i.osVersion,"7.0.0",">")&&i.verComp(i.osVersion,"8.0.0","<"))},send_binary_string:s(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:s(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||r.can("send_binary_string")},slice_blob:s(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return r.can("slice_blob")&&r.can("send_multipart")},summon_file_dialog:function(){return r.can("select_file")&&("Firefox"===i.browser&&i.version>=4||"Opera"===i.browser&&i.version>=12||"IE"===i.browser&&i.version>=10||!!~e.inArray(i.browser,["Chrome","Safari"]))},upload_filesize:u},arguments[2]);n.call(this,t,arguments[1]||o,c),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html5",a={};return n.addConstructor(o,r),a}),i(N,[u],function(e){function t(){this.returnValue=!1}function n(){this.cancelBubble=!0}var i={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=n,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),i.hasOwnProperty(o[r])||(i[o[r]]={}),l=i[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,n,o){var a,s;if(n=n.toLowerCase(),t[r]&&i[t[r]]&&i[t[r]][n]){a=i[t[r]][n];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(n,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+n,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete i[t[r]][n],e.isEmptyObj(i[t[r]])){delete i[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,n){t&&t[r]&&e.each(i[t[r]],function(e,i){a(t,i,n)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),i(L,[D,E,u,f,N,d,c],function(e,t,n,i,r,o,a){function s(){var e;n.extend(this,{init:function(s){var u=this,c=u.getRuntime(),l,d,f,h,p,m;e=s,f=e.accept.mimes||o.extList2mimes(e.accept,c.can("filter_by_extension")),d=c.getShimContainer(),d.innerHTML='",l=i.get(c.uid),n.extend(l.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=i.get(e.browse_button),c.can("summon_file_dialog")&&("static"===i.getStyle(h,"position")&&(h.style.position="relative"),p=parseInt(i.getStyle(h,"z-index"),10)||1,h.style.zIndex=p,d.style.zIndex=p-1,r.addEvent(h,"click",function(e){var t=i.get(c.uid);t&&!t.disabled&&t.click(),e.preventDefault()},u.uid)),m=c.can("summon_file_dialog")?h:d,r.addEvent(m,"mouseover",function(){u.trigger("mouseenter")},u.uid),r.addEvent(m,"mouseout",function(){u.trigger("mouseleave")},u.uid),r.addEvent(m,"mousedown",function(){u.trigger("mousedown")},u.uid),r.addEvent(i.get(e.container),"mouseup",function(){u.trigger("mouseup")},u.uid),l.onchange=function g(i){if(u.files=[],n.each(this.files,function(n){var i="";return e.directory&&"."==n.name?!0:(n.webkitRelativePath&&(i="/"+n.webkitRelativePath.replace(/^\//,"")),n=new t(c.uid,n),n.relativePath=i,void u.files.push(n))}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var r=this.cloneNode(!0);this.parentNode.replaceChild(r,this),r.onchange=g}u.files.length&&u.trigger("change")},u.trigger({type:"ready",async:!0}),d=null},disable:function(e){var t=this.getRuntime(),n;(n=i.get(t.uid))&&(n.disabled=!!e)},destroy:function(){var t=this.getRuntime(),n=t.getShim(),o=t.getShimContainer();r.removeAllEvents(o,this.uid),r.removeAllEvents(e&&i.get(e.container),this.uid),r.removeAllEvents(e&&i.get(e.browse_button),this.uid),o&&(o.innerHTML=""),n.removeInstance(this.uid),e=o=n=null}})}return e.FileInput=s}),i(M,[D,y],function(e,t){function n(){function e(e,t,n){var i;if(!window.File.prototype.slice)return(i=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?i.call(e,t,n):null;try{return e.slice(),e.slice(t,n)}catch(r){return e.slice(t,n-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=n}),i(C,[D,E,u,f,N,d],function(e,t,n,i,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=n.toArray(e.dataTransfer.types||[]);return-1!==n.inArray("Files",t)||-1!==n.inArray("public.file-url",t)||-1!==n.inArray("application/x-moz-file",t)}function a(e,n){if(u(e)){var i=new t(g,e);i.relativePath=n||"",h.push(i)}}function s(e){for(var t=[],i=0;i=4&&u.version<7,f="Android Browser"===u.browser,m=!1;if(p=n.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),h=c(),h.open(n.method,n.url,n.async,n.user,n.password),r instanceof o)r.isDetached()&&(m=!0),r=r.getSource();else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),m=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return void e.call(s,n,r);if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}h.upload?(n.withCredentials&&(h.withCredentials=!0),h.addEventListener("load",function(e){s.trigger(e)}),h.addEventListener("error",function(e){s.trigger(e)}),h.addEventListener("progress",function(e){s.trigger(e)}),h.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):h.onreadystatechange=function v(){switch(h.readyState){case 1:break;case 2:break;case 3:var e,t;try{i.hasSameOrigin(n.url)&&(e=h.getResponseHeader("Content-Length")||0),h.responseText&&(t=h.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:h.onreadystatechange=function(){},s.trigger(0===h.status?"error":"load")}},t.isEmptyObj(n.headers)||t.each(n.headers,function(e,t){h.setRequestHeader(t,e)}),""!==n.responseType&&"responseType"in h&&("json"!==n.responseType||u.can("return_response_type","json")?h.responseType=n.responseType:h.responseType="text"),m?h.sendAsBinary?h.sendAsBinary(r):!function(){for(var e=new Uint8Array(r.length),t=0;ta;a++)i|=o.charCodeAt(e+a)<s;s++)o+=String.fromCharCode(t>>Math.abs(a+8*s)&255);n(o,e,i)}var r=!1,o;return{II:function(e){return e===t?r:void(r=e)},init:function(e){r=!1,o=e},SEGMENT:function(e,t,i){switch(arguments.length){case 1:return o.substr(e,o.length-e-1);case 2:return o.substr(e,t);case 3:n(i,e,t);break;default:return o}},BYTE:function(t){return e(t,1)},SHORT:function(t){return e(t,2)},LONG:function(n,r){return r===t?e(n,4):void i(n,r,4)},SLONG:function(t){var n=e(t,4);return n>2147483647?n-4294967296:n},STRING:function(t,n){var i="";for(n+=t;n>t;t++)i+=String.fromCharCode(e(t,1));return i},length:function(){return o.length}}}}),i(k,[H],function(e){return function t(n){var i=[],r,o,a,s=0;if(r=new e,r.init(n),65496===r.SHORT(0)){for(o=2;o<=n.length;)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;s=r.SHORT(o+2)+2,a>=65505&&65519>=a&&i.push({hex:a,name:"APP"+(15&a),start:o,length:s,segment:r.SEGMENT(o,s)}),o+=s}return r.init(null),{headers:i,restore:function(e){var t,n;for(r.init(e),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,t=i.length;t>n;n++)r.SEGMENT(o,0,i[n].segment),o+=i[n].length;return e=r.SEGMENT(),r.init(null),e},strip:function(e){var n,i,o;for(i=new t(e),n=i.headers,i.purge(),r.init(e),o=n.length;o--;)r.SEGMENT(n[o].start,n[o].length,"");return e=r.SEGMENT(),r.init(null),e},get:function(e){for(var t=[],n=0,r=i.length;r>n;n++)i[n].name===e.toUpperCase()&&t.push(i[n].segment);return t},set:function(e,t){var n=[],r,o,a;for("string"==typeof t?n.push(t):n=t,r=o=0,a=i.length;a>r&&(i[r].name===e.toUpperCase()&&(i[r].segment=n[o],i[r].length=n[o].length,o++),!(o>=n.length));r++);},purge:function(){i=[],r.init(null),r=null}}}}}),i(B,[u,H],function(e,n){return function i(){function i(e,n){var i=a.SHORT(e),r,o,s,u,d,f,h,p,m=[],g={};for(r=0;i>r;r++)if(h=f=e+12*r+2,s=n[a.SHORT(h)],s!==t){switch(u=a.SHORT(h+=2),d=a.LONG(h+=2),h+=4,m=[],u){case 1:case 7:for(d>4&&(h=a.LONG(h)+c.tiffHeader),o=0;d>o;o++)m[o]=a.BYTE(h+o);break;case 2:d>4&&(h=a.LONG(h)+c.tiffHeader),g[s]=a.STRING(h,d-1);continue;case 3:for(d>2&&(h=a.LONG(h)+c.tiffHeader),o=0;d>o;o++)m[o]=a.SHORT(h+2*o);break;case 4:for(d>1&&(h=a.LONG(h)+c.tiffHeader),o=0;d>o;o++)m[o]=a.LONG(h+4*o);break;case 5:for(h=a.LONG(h)+c.tiffHeader,o=0;d>o;o++)m[o]=a.LONG(h+8*o)/a.LONG(h+8*o+4);break;case 9:for(h=a.LONG(h)+c.tiffHeader,o=0;d>o;o++)m[o]=a.SLONG(h+4*o);break;case 10:for(h=a.LONG(h)+c.tiffHeader,o=0;d>o;o++)m[o]=a.SLONG(h+8*o)/a.SLONG(h+8*o+4);break;default:continue}p=1==d?m[0]:m,l.hasOwnProperty(s)&&"object"!=typeof p?g[s]=l[s][p]:g[s]=p}return g}function r(){var e=c.tiffHeader;if(a.II(18761==a.SHORT(e)),42!==a.SHORT(e+=2))return!1;c.IFD0=c.tiffHeader+a.LONG(e+=2),u=i(c.IFD0,s.tiff),"ExifIFDPointer"in u&&(c.exifIFD=c.tiffHeader+u.ExifIFDPointer,delete u.ExifIFDPointer),"GPSInfoIFDPointer"in u&&(c.gpsIFD=c.tiffHeader+u.GPSInfoIFDPointer, +delete u.GPSInfoIFDPointer);var t=a.LONG(c.IFD0+12*a.SHORT(c.IFD0)+2);return t&&(c.IFD1=c.tiffHeader+t),!0}function o(e,t,n){var i,r,o,u=0;if("string"==typeof t){var l=s[e.toLowerCase()];for(var d in l)if(l[d]===t){t=d;break}}i=c[e.toLowerCase()+"IFD"],r=a.SHORT(i);for(var f=0;r>f;f++)if(o=i+12*f+2,a.SHORT(o)==t){u=o+8;break}return u?(a.LONG(u,n),!0):!1}var a,s,u,c={},l;return a=new n,s={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire.",1:"Flash fired.",5:"Strobe return light not detected.",7:"Strobe return light detected.",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},{init:function(e){return c={tiffHeader:10},e!==t&&e.length?(a.init(e),65505===a.SHORT(0)&&"EXIF\x00"===a.STRING(4,5).toUpperCase()?r():!1):!1},TIFF:function(){return u},EXIF:function(){var t=null;if(c.exifIFD&&(t=i(c.exifIFD,s.exif),t.ExifVersion&&"array"===e.typeOf(t.ExifVersion))){for(var n=0,r="";n=65472&&65475>=n)return t+=5,{height:e.SHORT(t),width:e.SHORT(t+=2)};i=e.SHORT(t+=2),t+=i-2}return null}function s(){var e=f.thumb(),t=new i,n;return e&&(t.init(e),n=a(t),t.init(null),n)?(n.data=e,n):null}function u(){f&&d&&l&&(f.purge(),d.purge(),l.init(null),c=h=d=f=l=null)}var c,l,d,f,h,p;if(c=o,l=new i,l.init(c),65496!==l.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);d=new n(o),f=new r,p=!!f.init(d.get("app1")[0]),h=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length,width:h&&h.width||0,height:h&&h.height||0,setExif:function(t,n){return p?("object"===e.typeOf(t)?e.each(t,function(e,t){f.setExif(t,e)}):f.setExif(t,n),void d.set("app1",f.getBinary())):!1},writeHeaders:function(){return arguments.length?d.restore(arguments[0]):c=d.restore(c)},stripHeaders:function(e){return d.strip(e)},purge:function(){u.call(this)}}),p&&(this.meta={tiff:f.TIFF(),exif:f.EXIF(),gps:f.GPS(),thumb:s()})}return o}),i(U,[h,u,H],function(e,t,n){function i(i){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:u.LONG(t),height:u.LONG(t+=4)}):null}function o(){u&&(u.init(null),s=d=c=l=u=null)}function a(e){var t,n,i,r;return t=u.LONG(e),n=u.STRING(e+=4,4),i=e+=4,r=u.LONG(e+t),{length:t,type:n,start:i,CRC:r}}var s,u,c,l,d;s=i,u=new n,u.init(s),function(){var t=0,n=0,i=[35152,20039,3338,6666];for(n=0;ng;){for(var v=g+f>a?a-g:f,w=0;o>w;){var y=w+f>o?o-w:f;p.clearRect(0,0,f,f),p.drawImage(e,-w,-g);var E=w*s/o+c<<0,_=Math.ceil(y*s/o),b=g*u/a/m+l<<0,x=Math.ceil(v*u/a/m);d.drawImage(h,0,0,y,v,E,b,_,x),w+=f}g+=f}h=p=null}function t(e){var t=e.naturalWidth,n=e.naturalHeight;if(t*n>1048576){var i=document.createElement("canvas");i.width=i.height=1;var r=i.getContext("2d");return r.drawImage(e,-t+1,0),0===r.getImageData(0,0,1,1).data[3]}return!1}function n(e,t,n){var i=document.createElement("canvas");i.width=1,i.height=n;var r=i.getContext("2d");r.drawImage(e,0,0);for(var o=r.getImageData(0,0,1,n).data,a=0,s=n,u=n;u>a;){var c=o[4*(u-1)+3];0===c?s=u:a=u,u=s+a>>1}i=null;var l=u/n;return 0===l?1:l}return{isSubsampled:t,renderTo:e}}),i(X,[D,u,h,w,y,E,z,q,d,c],function(e,t,n,i,r,o,a,s,u,c){function l(){function e(){if(!_&&!y)throw new n.ImageError(n.DOMException.INVALID_STATE_ERR);return _||y}function l(e){return i.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+i.btoa(e)}function f(e){var t=this;y=new Image,y.onerror=function(){v.call(this),t.trigger("error",n.ImageError.WRONG_FORMAT)},y.onload=function(){t.trigger("load")},y.src="data:"==e.substr(0,5)?e:d(e,x.type)}function h(e,t){var i=this,r;return window.FileReader?(r=new FileReader,r.onload=function(){t(this.result)},r.onerror=function(){i.trigger("error",n.ImageError.WRONG_FORMAT)},r.readAsDataURL(e),void 0):t(e.getAsDataURL())}function p(n,i,r,o){var a=this,s,u,c=0,l=0,d,f,h,p;if(S=o,p=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1,-1!==t.inArray(p,[5,6,7,8])){var v=n;n=i,i=v}return d=e(),r?(n=Math.min(n,d.width),i=Math.min(i,d.height),s=Math.max(n/d.width,i/d.height)):s=Math.min(n/d.width,i/d.height),s>1&&!r&&o?void this.trigger("Resize"):(_||(_=document.createElement("canvas")),f=Math.round(d.width*s),h=Math.round(d.height*s),r?(_.width=n,_.height=i,f>n&&(c=Math.round((f-n)/2)),h>i&&(l=Math.round((h-i)/2))):(_.width=f,_.height=h),S||g(_.width,_.height,p),m.call(this,d,_,-c,-l,f,h),this.width=_.width,this.height=_.height,R=!0,void a.trigger("Resize"))}function m(e,t,n,i,r,o){if("iOS"===c.OS)s.renderTo(e,t,{width:r,height:o,x:n,y:i});else{var a=t.getContext("2d");a.drawImage(e,n,i,r,o)}}function g(e,t,n){switch(n){case 5:case 6:case 7:case 8:_.width=t,_.height=e;break;default:_.width=e,_.height=t}var i=_.getContext("2d");switch(n){case 2:i.translate(e,0),i.scale(-1,1);break;case 3:i.translate(e,t),i.rotate(Math.PI);break;case 4:i.translate(0,t),i.scale(1,-1);break;case 5:i.rotate(.5*Math.PI),i.scale(1,-1);break;case 6:i.rotate(.5*Math.PI),i.translate(0,-t);break;case 7:i.rotate(.5*Math.PI),i.translate(e,-t),i.scale(-1,1);break;case 8:i.rotate(-.5*Math.PI),i.translate(-e,0)}}function v(){E&&(E.purge(),E=null),b=y=_=x=null,R=!1}var w=this,y,E,_,b,x,R=!1,S=!0;t.extend(this,{loadFromBlob:function(e){var t=this,i=t.getRuntime(),r=arguments.length>1?arguments[1]:!0;if(!i.can("access_binary"))throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);return x=e,e.isDetached()?(b=e.getSource(),void f.call(this,b)):void h.call(this,e.getSource(),function(e){r&&(b=l(e)),f.call(t,e)})},loadFromImage:function(e,t){this.meta=e.meta,x=new o(null,{name:e.name,size:e.size,type:e.type}),f.call(this,t?b=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t=this.getRuntime(),n;return!E&&b&&t.can("access_image_binary")&&(E=new a(b)),n={width:e().width||0,height:e().height||0,type:x.type||u.getFileMime(x.name),size:b&&b.length||x.size||0,name:x.name||"",meta:E&&E.meta||this.meta||{}},n.meta.thumb&&(n.meta.thumb.data=new r(null,{type:"image/jpeg",data:n.meta.thumb.data})),n},downsize:function(){p.apply(this,arguments)},getAsCanvas:function(){return _&&(_.id=this.uid+"_canvas"),_},getAsBlob:function(e,t){return e!==this.type&&p.call(this,this.width,this.height,!1),new o(null,{name:x.name||"",type:e,data:w.getAsBinaryString.call(this,e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!R)return y.src;if("image/jpeg"!==e)return _.toDataURL("image/png");try{return _.toDataURL("image/jpeg",t/100)}catch(n){return _.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!R)return b||(b=l(w.getAsDataURL(e,t))),b;if("image/jpeg"!==e)b=l(w.getAsDataURL(e,t));else{var n;t||(t=90);try{n=_.toDataURL("image/jpeg",t/100)}catch(i){n=_.toDataURL("image/jpeg")}b=l(n),E&&(b=E.stripHeaders(b),S&&(E.meta&&E.meta.exif&&E.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),b=E.writeHeaders(b)),E.purge(),E=null)}return R=!1,b},destroy:function(){w=null,v.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=l}),i(j,[u,c,f,h,m],function(e,t,n,i,r){function o(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(n){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function a(e){var i=n.get(e);i&&"OBJECT"==i.nodeName&&("IE"===t.browser?(i.style.display="none",function r(){4==i.readyState?s(e):setTimeout(r,10)}()):i.parentNode.removeChild(i))}function s(e){var t=n.get(e);if(t){for(var i in t)"function"==typeof t[i]&&(t[i]=null);t.parentNode.removeChild(t)}}function u(s){var u=this,d;s=e.extend({swf_url:t.swf_url},s),r.call(this,s,c,{access_binary:function(e){return e&&"browser"===u.mode},access_image_binary:function(e){return e&&"browser"===u.mode},display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===u.mode},resize_image:r.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===u.mode},return_status_code:function(t){return"browser"===u.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:function(e){return e&&"browser"===u.mode},send_browser_cookies:function(e){return e&&"browser"===u.mode},send_custom_headers:function(e){return e&&"browser"===u.mode},send_multipart:r.capTrue,slice_blob:function(e){return e&&"browser"===u.mode},stream_upload:function(e){return e&&"browser"===u.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===u.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),o()<10&&(this.mode=!1),e.extend(this,{getShim:function(){return n.get(this.uid)},shimExec:function(e,t){var n=[].slice.call(arguments,2);return u.getShim().exec(this.uid,e,t,n)},init:function(){var n,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),n='',"IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=n,r=o=null):o.innerHTML=n,d=setTimeout(function(){u&&!u.initialized&&u.trigger("Error",new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){a(u.uid),e.call(u),clearTimeout(d),s=d=e=u=null}}(this.destroy)},l)}var c="flash",l={};return r.addConstructor(c,u),l}),i(V,[j,E,u],function(e,t,n){var i={init:function(e){var i=this,r=this.getRuntime();this.bind("Change",function(){var e=r.shimExec.call(i,"FileInput","getFiles");i.files=[],n.each(e,function(e){i.files.push(new t(r.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{name:e.name,accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=i}),i(W,[j,y],function(e,t){var n={slice:function(e,n,i,r){var o=this.getRuntime();return 0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),e=o.shimExec.call(this,"Blob","slice",n,i,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=n}),i(Y,[j,w],function(e,t){function n(e,n){switch(n){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var i={read:function(e,t){var i=this;return i.result="","readAsDataURL"===e&&(i.result="data:"+(t.type||"")+";base64,"),i.bind("Progress",function(t,r){r&&(i.result+=n(r,e))},999),i.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=i}),i($,[j,w],function(e,t){function n(e,n){switch(n){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var i={read:function(e,t){var i,r=this.getRuntime();return(i=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(i="data:"+(t.type||"")+";base64,"+i),n(i,e,t.type)):null}};return e.FileReaderSync=i}),i(J,[j,u,y,E,S,A,I],function(e,t,n,i,r,o,a){var s={send:function(e,i){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,i)}function s(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),i=null,r()}function u(e,t){var n=new a;n.bind("TransportingComplete",function(){t(this.result)}),n.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),i instanceof o){var d;if(i.each(function(e,t){e instanceof n?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),i.hasBlob()){var f=i.getBlob();f.isDetached()?u(f,function(e){f.destroy(),s(d,e)}):s(d,f)}else i=null,r()}else i instanceof n?i.isDetached()?u(i,function(e){i.destroy(),i=e.uid,r()}):(i=i.uid,r()):r()},getResponse:function(e){var n,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new i(a.uid,o),"blob"===e)return o;try{if(n=new r,~t.inArray(e,["","text"]))return n.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(n.readAsText(o))}finally{o.destroy()}}return null},abort:function(e){var t=this.getRuntime();t.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=s}),i(Z,[j,y],function(e,t){var n={getAsBlob:function(e){var n=this.getRuntime(),i=n.shimExec.call(this,"Transporter","getAsBlob",e);return i?new t(n.uid,i):null}};return e.Transporter=n}),i(K,[j,u,I,y,S],function(e,t,n,i,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(i,"Image","loadFromBlob",e.uid),i=r=null}var i=this,r=i.getRuntime();if(e.isDetached()){var o=new n;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return t.meta&&t.meta.thumb&&(t.meta.thumb.data=new i(e.uid,t.meta.thumb.data)),t},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getAsBlob:function(e,t){var n=this.getRuntime(),r=n.shimExec.call(this,"Image","getAsBlob",e,t);return r?new i(n.uid,r):null},getAsDataURL:function(){var e=this.getRuntime(),t=e.Image.getAsBlob.apply(this,arguments),n;return t?(n=new r,n.readAsDataURL(t)):null}};return e.Image=o}),i(Q,[u,c,f,h,m],function(e,t,n,i,r){function o(e){var t=!1,n=null,i,r,o,a,s,u=0;try{try{n=new ActiveXObject("AgControl.AgControl"),n.IsVersionSupported(e)&&(t=!0),n=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(i=l.description,"1.0.30226.2"===i&&(i="2.0.30226.2"),r=i.split(".");r.length>3;)r.pop();for(;r.length<4;)r.push(0);for(o=e.split(".");o.length>4;)o.pop();do a=parseInt(o[u],10),s=parseInt(r[u],10),u++;while(u=a&&!isNaN(a)&&(t=!0)}}}catch(d){t=!1}return t}function a(a){var c=this,l;a=e.extend({xap_url:t.xap_url},a),r.call(this,a,s,{access_binary:r.capTrue,access_image_binary:r.capTrue,display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:r.capTrue,resize_image:r.capTrue,return_response_headers:function(e){return e&&"client"===c.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===c.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:r.capTrue,send_browser_cookies:function(e){return e&&"browser"===c.mode},send_custom_headers:function(e){return e&&"client"===c.mode},send_multipart:r.capTrue,slice_blob:r.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:r.capTrue,use_http_method:function(t){return"client"===c.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),o("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return n.get(this.uid).content.Moxie},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec(this.uid,e,t,n)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='',l=setTimeout(function(){c&&!c.initialized&&c.trigger("Error",new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(c),clearTimeout(l),a=l=e=c=null}}(this.destroy)},u)}var s="silverlight",u={};return r.addConstructor(s,a),u}),i(ee,[Q,E,u],function(e,t,n){var i={init:function(e){function i(e){for(var t="",n=0;ni;i++)n=t.keys[i],s=t[n],s&&(/^(\d|[1-9]\d+)$/.test(s)?s=parseInt(s,10):/^\d*\.\d+$/.test(s)&&(s=parseFloat(s)),r.meta[e][n]=s)}),r.meta&&r.meta.thumb&&(r.meta.thumb.data=new n(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r}})}),i(ue,[u,h,m,c],function(e,t,n,i){function r(t){var r=this,s=n.capTest,u=n.capTrue;n.call(this,t,o,{access_binary:s(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:s(a.Image&&(i.can("create_canvas")||i.can("use_data_uri_over32kb"))),do_cors:!1,drag_and_drop:!1,filter_by_extension:s(function(){return"Chrome"===i.browser&&i.version>=28||"IE"===i.browser&&i.version>=10||"Safari"===i.browser&&i.version>=7}()),resize_image:function(){return a.Image&&r.can("access_binary")&&i.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return i.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return r.can("select_file")},summon_file_dialog:function(){return r.can("select_file")&&("Firefox"===i.browser&&i.version>=4||"Opera"===i.browser&&i.version>=12||"IE"===i.browser&&i.version>=10||!!~e.inArray(i.browser,["Chrome","Safari"]))},upload_filesize:u,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html4",a={};return n.addConstructor(o,r),a}),i(ce,[ue,E,u,f,N,d,c],function(e,t,n,i,r,o,a){function s(){function e(){var o=this,l=o.getRuntime(),d,f,h,p,m,g;g=n.guid("uid_"),d=l.getShimContainer(),s&&(h=i.get(s+"_form"),h&&n.extend(h.style,{top:"100%"})),p=document.createElement("form"),p.setAttribute("id",g+"_form"),p.setAttribute("method","post"),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),n.extend(p.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=document.createElement("input"),m.setAttribute("id",g),m.setAttribute("type","file"),m.setAttribute("name",c.name||"Filedata"),m.setAttribute("accept",u.join(",")),n.extend(m.style,{fontSize:"999px",opacity:0}),p.appendChild(m),d.appendChild(p),n.extend(m.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.version<10&&n.extend(m.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),m.onchange=function(){var n;if(this.value){if(this.files){if(n=this.files[0],0===n.size)return void p.parentNode.removeChild(p)}else n={name:this.value};n=new t(l.uid,n),this.onchange=function(){},e.call(o),o.files=[n],m.setAttribute("id",n.uid),p.setAttribute("id",n.uid+"_form"),o.trigger("change"),m=p=null}},l.can("summon_file_dialog")&&(f=i.get(c.browse_button),r.removeEvent(f,"click",o.uid),r.addEvent(f,"click",function(e){m&&!m.disabled&&m.click(),e.preventDefault()},o.uid)),s=g,d=h=f=null}var s,u=[],c;n.extend(this,{init:function(t){var n=this,a=n.getRuntime(),s;c=t,u=t.accept.mimes||o.extList2mimes(t.accept,a.can("filter_by_extension")),s=a.getShimContainer(),function(){var e,o,u;e=i.get(t.browse_button),a.can("summon_file_dialog")&&("static"===i.getStyle(e,"position")&&(e.style.position="relative"),o=parseInt(i.getStyle(e,"z-index"),10)||1,e.style.zIndex=o,s.style.zIndex=o-1),u=a.can("summon_file_dialog")?e:s,r.addEvent(u,"mouseover",function(){n.trigger("mouseenter")},n.uid),r.addEvent(u,"mouseout",function(){n.trigger("mouseleave")},n.uid),r.addEvent(u,"mousedown",function(){n.trigger("mousedown")},n.uid),r.addEvent(i.get(t.container),"mouseup",function(){n.trigger("mouseup")},n.uid),e=null}(),e.call(this),s=null,n.trigger({type:"ready",async:!0})},disable:function(e){var t;(t=i.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),n=e.getShimContainer();r.removeAllEvents(n,this.uid),r.removeAllEvents(c&&i.get(c.container),this.uid),r.removeAllEvents(c&&i.get(c.browse_button),this.uid),n&&(n.innerHTML=""),t.removeInstance(this.uid),s=u=c=n=t=null}})}return e.FileInput=s}),i(le,[ue,F],function(e,t){return e.FileReader=t}),i(de,[ue,u,f,x,h,N,y,A],function(e,t,n,i,r,o,a,s){function u(){function e(e){var t=this,i,r,a,s,u=!1;if(l){if(i=l.id.replace(/_iframe$/,""),r=n.get(i+"_form")){for(a=r.getElementsByTagName("input"),s=a.length;s--;)switch(a[s].getAttribute("type")){case"hidden":a[s].parentNode.removeChild(a[s]);break;case"file":u=!0}a=[],u||r.parentNode.removeChild(r),r=null}setTimeout(function(){o.removeEvent(l,"load",t.uid),l.parentNode&&l.parentNode.removeChild(l);var n=t.getRuntime().getShimContainer();n.children.length||n.parentNode.removeChild(n),n=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,f){function h(){var n=m.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='',l=r.firstChild,n.appendChild(l),o.addEvent(l,"load",function(){var n;try{n=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(n.title)?u=n.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(n.body.innerHTML),p.trigger({type:"progress",loaded:c.length,total:c.length}),y&&p.trigger({type:"uploadprogress",loaded:y.size||1025,total:y.size||1025}))}catch(r){if(!i.hasSameOrigin(d.url))return void e.call(p,function(){p.trigger("error")});u=404}e.call(p,function(){p.trigger("load")})},p.uid)}var p=this,m=p.getRuntime(),g,v,w,y;if(u=c=null,f instanceof s&&f.hasBlob()){if(y=f.getBlob(),g=y.uid,w=n.get(g),v=n.get(g+"_form"),!v)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else g=t.guid("uid_"),v=document.createElement("form"),v.setAttribute("id",g+"_form"),v.setAttribute("method",d.method),v.setAttribute("enctype","multipart/form-data"),v.setAttribute("encoding","multipart/form-data"),m.getShimContainer().appendChild(v);v.setAttribute("target",g+"_iframe"),f instanceof s&&f.each(function(e,n){if(e instanceof a)w&&w.setAttribute("name",n);else{var i=document.createElement("input");t.extend(i,{type:"hidden",name:n,value:e}),w?v.insertBefore(i,w):v.appendChild(i)}}),v.setAttribute("action",d.url),h(),v.submit(),p.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(n){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),i(fe,[ue,X],function(e,t){return e.Image=t}),a([u,c,l,d,f,h,p,m,g,v,w,y,E,_,b,x,R,S,A,T,I,O,N])}(this);;(function(e){"use strict";var t={},n=e.moxie.core.utils.Basic.inArray;return function r(e){var i,s;for(i in e)s=typeof e[i],s==="object"&&!~n(i,["Exceptions","Env","Mime"])?r(e[i]):s==="function"&&(t[i]=e[i])}(e.moxie),t.Env=e.moxie.core.utils.Env,t.Mime=e.moxie.core.utils.Mime,t.Exceptions=e.moxie.core.Exceptions,e.mOxie=t,e.o||(e.o=t),t})(this); /** * Plupload - multi-runtime File Uploader - * v2.1.3 + * v2.1.4 * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. @@ -23,6 +23,6 @@ this.result=null,-1===e.inArray(this.readyState,[s.EMPTY,s.DONE])&&(this.readySt * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing * - * Date: 2015-05-11 + * Date: 2015-05-25 */ -;(function(e,t,n){function s(e){function r(e,t,r){var i={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};i[e]?n[i[e]]=t:r||(n[e]=t)}var t=e.required_features,n={};if(typeof t=="string")o.each(t.split(/\s*,\s*/),function(e){r(e,!0)});else if(typeof t=="object")o.each(t,function(e,t){r(t,e)});else if(t===!0){e.chunk_size>0&&(n.slice_blob=!0);if(e.resize.enabled||!e.multipart)n.send_binary_string=!0;o.each(e,function(e,t){r(t,!!e,!0)})}return n}var r=e.setTimeout,i={},o={VERSION:"2.1.3",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:t.mimes,ua:t.ua,typeOf:t.typeOf,extend:t.extend,guid:t.guid,get:function(n){var r=[],i;t.typeOf(n)!=="array"&&(n=[n]);var s=n.length;while(s--)i=t.get(n[s]),i&&r.push(i);return r.length?r:null},each:t.each,getPos:t.getPos,getSize:t.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},n=/[<>&\"\']/g;return e?(""+e).replace(n,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:t.toArray,inArray:t.inArray,addI18n:t.addI18n,translate:t.translate,isEmptyObj:t.isEmptyObj,hasClass:t.hasClass,addClass:t.addClass,removeClass:t.removeClass,getStyle:t.getStyle,addEvent:t.addEvent,removeEvent:t.removeEvent,removeAllEvents:t.removeAllEvents,cleanName:function(e){var t,n;n=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"];for(t=0;t0?"&":"?")+n),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===n||/\D/.test(e))return o.translate("N/A");var r=Math.pow(1024,4);return e>r?t(e/r,1)+" "+o.translate("tb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("gb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("mb"):e>1024?Math.round(e/1024)+" "+o.translate("kb"):e+" "+o.translate("b")},parseSize:t.parseSizeStr,predictRuntime:function(e,n){var r,i;return r=new o.Uploader(e),i=t.Runtime.thatCan(r.getOption().required_features,n||e.runtimes),r.destroy(),i},addFileFilter:function(e,t){i[e]=t}};o.addFileFilter("mime_types",function(e,t,n){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:o.FILE_EXTENSION_ERROR,message:o.translate("File extension error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("max_file_size",function(e,t,n){var r;e=o.parseSize(e),t.size!==r&&e&&t.size>e?(this.trigger("Error",{code:o.FILE_SIZE_ERROR,message:o.translate("File size error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("prevent_duplicates",function(e,t,n){if(e){var r=this.files.length;while(r--)if(t.name===this.files[r].name&&t.size===this.files[r].size){this.trigger("Error",{code:o.FILE_DUPLICATE_ERROR,message:o.translate("Duplicate file error."),file:t}),n(!1);return}}n(!0)}),o.Uploader=function(e){function g(){var e,t=0,n;if(this.state==o.STARTED){for(n=0;n0?Math.ceil(e.loaded/e.size*100):100,b()}function b(){var e,t;d.reset();for(e=0;e0?Math.ceil(d.uploaded/f.length*100):0:(d.bytesPerSec=Math.ceil(d.loaded/((+(new Date)-p||1)/1e3)),d.percent=d.size>0?Math.ceil(d.loaded/d.size*100):0)}function w(){var e=c[0]||h[0];return e?e.getRuntime().uid:!1}function E(e,n){if(e.ruid){var r=t.Runtime.getInfo(e.ruid);if(r)return r.can(n)}return!1}function S(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",O),this.bind("BeforeUpload",C),this.bind("UploadFile",k),this.bind("UploadProgress",L),this.bind("StateChanged",A),this.bind("QueueChanged",b),this.bind("Error",_),this.bind("FileUploaded",M),this.bind("Destroy",D)}function x(e,n){var r=this,i=0,s=[],u={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:l,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};o.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(u[t]=e[t])}),e.browse_button&&o.each(e.browse_button,function(n){s.push(function(s){var a=new t.FileInput(o.extend({},u,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:n}));a.onready=function(){var e=t.Runtime.getInfo(this.ruid);t.extend(r.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),i++,c.push(this),s()},a.onchange=function(){r.addFile(this.files)},a.bind("mouseenter mouseleave mousedown mouseup",function(r){v||(e.browse_button_hover&&("mouseenter"===r.type?t.addClass(n,e.browse_button_hover):"mouseleave"===r.type&&t.removeClass(n,e.browse_button_hover)),e.browse_button_active&&("mousedown"===r.type?t.addClass(n,e.browse_button_active):"mouseup"===r.type&&t.removeClass(n,e.browse_button_active)))}),a.bind("mousedown",function(){r.trigger("Browse")}),a.bind("error runtimeerror",function(){a=null,s()}),a.init()})}),e.drop_element&&o.each(e.drop_element,function(e){s.push(function(n){var s=new t.FileDrop(o.extend({},u,{drop_zone:e}));s.onready=function(){var e=t.Runtime.getInfo(this.ruid);r.features.dragdrop=e.can("drag_and_drop"),i++,h.push(this),n()},s.ondrop=function(){r.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,n()}),s.init()})}),t.inSeries(s,function(){typeof n=="function"&&n(i)})}function T(e,r,i){var s=new t.Image;try{s.onload=function(){if(r.width>this.width&&r.height>this.height&&r.quality===n&&r.preserve_headers&&!r.crop)return this.destroy(),i(e);s.downsize(r.width,r.height,r.crop,r.preserve_headers)},s.onresize=function(){i(this.getAsBlob(e.type,r.quality)),this.destroy()},s.onerror=function(){i(e)},s.load(e)}catch(o){i(e)}}function N(e,n,r){function f(e,t,n){var r=a[e];switch(e){case"max_file_size":e==="max_file_size"&&(a.max_file_size=a.filters.max_file_size=t);break;case"chunk_size":if(t=o.parseSize(t))a[e]=t,a.send_file_name=!0;break;case"multipart":a[e]=t,t||(a.send_file_name=!0);break;case"unique_names":a[e]=t,t&&(a.send_file_name=!0);break;case"filters":o.typeOf(t)==="array"&&(t={mime_types:t}),n?o.extend(a.filters,t):a.filters=t,t.mime_types&&(a.filters.mime_types.regexp=function(e){var t=[];return o.each(e,function(e){o.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(a.filters.mime_types));break;case"resize":n?o.extend(a.resize,t,{enabled:!0}):a.resize=t;break;case"prevent_duplicates":a.prevent_duplicates=a.filters.prevent_duplicates=!!t;break;case"browse_button":case"drop_element":t=o.get(t);case"container":case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":a[e]=t,n||(u=!0);break;default:a[e]=t}n||i.trigger("OptionChanged",e,t,r)}var i=this,u=!1;typeof e=="object"?o.each(e,function(e,t){f(t,e,r)}):f(e,n,r),r?(a.required_features=s(o.extend({},a)),l=s(o.extend({},a,{required_features:!0}))):u&&(i.trigger("Destroy"),x.call(i,a,function(e){e?(i.runtime=t.Runtime.getInfo(w()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})}))}function C(e,t){if(e.settings.unique_names){var n=t.name.match(/\.([^.]+)$/),r="part";n&&(r=n[1]),t.target_name=t.id+"."+r}}function k(e,n){function h(){u-->0?r(p,1e3):(n.loaded=f,e.trigger("Error",{code:o.HTTP_ERROR,message:o.translate("HTTP Error."),file:n,response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()}))}function p(){var d,v,g={},y;if(n.status!==o.UPLOADING||e.state===o.STOPPED)return;e.settings.send_file_name&&(g.name=n.target_name||n.name),s&&a.chunks&&c.size>s?(y=Math.min(s,c.size-f),d=c.slice(f,f+y)):(y=c.size,d=c),s&&a.chunks&&(e.settings.send_chunk_number?(g.chunk=Math.ceil(f/s),g.chunks=Math.ceil(c.size/s)):(g.offset=f,g.total=c.size)),m=new t.XMLHttpRequest,m.upload&&(m.upload.onprogress=function(t){n.loaded=Math.min(n.size,f+t.loaded),e.trigger("UploadProgress",n)}),m.onload=function(){if(m.status>=400){h();return}u=e.settings.max_retries,y=c.size?(n.size!=n.origSize&&(c.destroy(),c=null),e.trigger("UploadProgress",n),n.status=o.DONE,e.trigger("FileUploaded",n,{response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()})):r(p,1)},m.onerror=function(){h()},m.onloadend=function(){this.destroy(),m=null},e.settings.multipart&&a.multipart?(m.open("post",i,!0),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),v=new t.FormData,o.each(o.extend(g,e.settings.multipart_params),function(e,t){v.append(t,e)}),v.append(e.settings.file_data_name,d),m.send(v,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(i=o.buildUrl(e.settings.url,o.extend(g,e.settings.multipart_params)),m.open("post",i,!0),m.setRequestHeader("Content-Type","application/octet-stream"),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),m.send(d,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url}))}var i=e.settings.url,s=e.settings.chunk_size,u=e.settings.max_retries,a=e.features,f=0,c;n.loaded&&(f=n.loaded=s?s*Math.floor(n.loaded/s):0),c=n.getSource(),e.settings.resize.enabled&&E(c,"send_binary_string")&&!!~t.inArray(c.type,["image/jpeg","image/png"])?T.call(this,c,e.settings.resize,function(e){c=e,n.size=e.size,p()}):p()}function L(e,t){y(t)}function A(e){if(e.state==o.STARTED)p=+(new Date);else if(e.state==o.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==o.UPLOADING&&(e.files[t].status=o.QUEUED,b())}function O(){m&&m.abort()}function M(e){b(),r(function(){g.call(e)},1)}function _(e,t){t.code===o.INIT_ERROR?e.destroy():t.file&&(t.file.status=o.FAILED,y(t.file),e.state==o.STARTED&&(e.trigger("CancelUpload"),r(function(){g.call(e)},1)))}function D(e){e.stop(),o.each(f,function(e){e.destroy()}),f=[],c.length&&(o.each(c,function(e){e.destroy()}),c=[]),h.length&&(o.each(h,function(e){e.destroy()}),h=[]),l={},v=!1,p=m=null,d.reset()}var u=o.guid(),a,f=[],l={},c=[],h=[],p,d,v=!1,m;a={runtimes:t.Runtime.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},send_file_name:!0,send_chunk_number:!0},N.call(this,e,null,!0),d=new o.QueueProgress,o.extend(this,{id:u,uid:u,state:o.STOPPED,features:{},runtime:null,files:f,settings:a,total:d,init:function(){var e=this;typeof a.preinit=="function"?a.preinit(e):o.each(a.preinit,function(t,n){e.bind(n,t)}),S.call(this);if(!a.browse_button||!a.url){this.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")});return}x.call(this,a,function(n){typeof a.init=="function"?a.init(e):o.each(a.init,function(t,n){e.bind(n,t)}),n?(e.runtime=t.Runtime.getInfo(w()).type,e.trigger("Init",{runtime:e.runtime}),e.trigger("PostInit")):e.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})},setOption:function(e,t){N.call(this,e,t,!this.runtime)},getOption:function(e){return e?a[e]:a},refresh:function(){c.length&&o.each(c,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=o.STARTED&&(this.state=o.STARTED,this.trigger("StateChanged"),g.call(this))},stop:function(){this.state!=o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){v=arguments[0]!==n?arguments[0]:!0,c.length&&o.each(c,function(e){e.disable(v)}),this.trigger("DisableBrowse",v)},getFile:function(e){var t;for(t=f.length-1;t>=0;t--)if(f[t].id===e)return f[t]},addFile:function(e,n){function c(e,n){var r=[];t.each(s.settings.filters,function(t,n){i[n]&&r.push(function(r){i[n].call(s,t,e,function(e){r(!e)})})}),t.inSeries(r,n)}function h(e){var i=t.typeOf(e);if(e instanceof t.File){if(!e.ruid&&!e.isDetached()){if(!l)return!1;e.ruid=l,e.connectRuntime(l)}h(new o.File(e))}else e instanceof t.Blob?(h(e.getSource()),e.destroy()):e instanceof o.File?(n&&(e.name=n),u.push(function(t){c(e,function(n){n||(f.push(e),a.push(e),s.trigger("FileFiltered",e)),r(t,1)})})):t.inArray(i,["file","blob"])!==-1?h(new t.File(null,e)):i==="node"&&t.typeOf(e.files)==="filelist"?t.each(e.files,h):i==="array"&&(n=null,t.each(e,h))}var s=this,u=[],a=[],l;l=w(),h(e),u.length&&t.inSeries(u,function(){a.length&&s.trigger("FilesAdded",a)})},removeFile:function(e){var t=typeof e=="string"?e:e.id;for(var n=f.length-1;n>=0;n--)if(f[n].id===t)return this.splice(n,1)[0]},splice:function(e,t){var r=f.splice(e===n?0:e,t===n?f.length:t),i=!1;return this.state==o.STARTED&&(o.each(r,function(e){if(e.status===o.UPLOADING)return i=!0,!1}),i&&this.stop()),this.trigger("FilesRemoved",r),o.each(r,function(e){e.destroy()}),i&&this.start(),r},bind:function(e,t,n){var r=this;o.Uploader.prototype.bind.call(this,e,function(){var e=[].slice.call(arguments);return e.splice(0,1,r),t.apply(this,e)},0,n)},destroy:function(){this.trigger("Destroy"),a=d=null,this.unbindAll()}})},o.Uploader.prototype=t.EventTarget.instance,o.File=function(){function n(n){o.extend(this,{id:o.guid(),name:n.name||n.fileName,type:n.type||"",size:n.size||n.fileSize,origSize:n.size||n.fileSize,loaded:0,percent:0,status:o.QUEUED,lastModifiedDate:n.lastModifiedDate||(new Date).toLocaleString(),getNative:function(){var e=this.getSource().getSource();return t.inArray(t.typeOf(e),["blob","file"])!==-1?e:null},getSource:function(){return e[this.id]?e[this.id]:null},destroy:function(){var t=this.getSource();t&&(t.destroy(),delete e[this.id])}}),e[this.id]=n}var e={};return n}(),o.QueueProgress=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},e.plupload=o})(window,mOxie); \ No newline at end of file +;(function(e,t,n){function s(e){function r(e,t,r){var i={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};i[e]?n[i[e]]=t:r||(n[e]=t)}var t=e.required_features,n={};if(typeof t=="string")o.each(t.split(/\s*,\s*/),function(e){r(e,!0)});else if(typeof t=="object")o.each(t,function(e,t){r(t,e)});else if(t===!0){e.chunk_size>0&&(n.slice_blob=!0);if(e.resize.enabled||!e.multipart)n.send_binary_string=!0;o.each(e,function(e,t){r(t,!!e,!0)})}return n}var r=e.setTimeout,i={},o={VERSION:"2.1.4",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:t.mimes,ua:t.ua,typeOf:t.typeOf,extend:t.extend,guid:t.guid,get:function(n){var r=[],i;t.typeOf(n)!=="array"&&(n=[n]);var s=n.length;while(s--)i=t.get(n[s]),i&&r.push(i);return r.length?r:null},each:t.each,getPos:t.getPos,getSize:t.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},n=/[<>&\"\']/g;return e?(""+e).replace(n,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:t.toArray,inArray:t.inArray,addI18n:t.addI18n,translate:t.translate,isEmptyObj:t.isEmptyObj,hasClass:t.hasClass,addClass:t.addClass,removeClass:t.removeClass,getStyle:t.getStyle,addEvent:t.addEvent,removeEvent:t.removeEvent,removeAllEvents:t.removeAllEvents,cleanName:function(e){var t,n;n=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"];for(t=0;t0?"&":"?")+n),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===n||/\D/.test(e))return o.translate("N/A");var r=Math.pow(1024,4);return e>r?t(e/r,1)+" "+o.translate("tb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("gb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("mb"):e>1024?Math.round(e/1024)+" "+o.translate("kb"):e+" "+o.translate("b")},parseSize:t.parseSizeStr,predictRuntime:function(e,n){var r,i;return r=new o.Uploader(e),i=t.Runtime.thatCan(r.getOption().required_features,n||e.runtimes),r.destroy(),i},addFileFilter:function(e,t){i[e]=t}};o.addFileFilter("mime_types",function(e,t,n){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:o.FILE_EXTENSION_ERROR,message:o.translate("File extension error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("max_file_size",function(e,t,n){var r;e=o.parseSize(e),t.size!==r&&e&&t.size>e?(this.trigger("Error",{code:o.FILE_SIZE_ERROR,message:o.translate("File size error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("prevent_duplicates",function(e,t,n){if(e){var r=this.files.length;while(r--)if(t.name===this.files[r].name&&t.size===this.files[r].size){this.trigger("Error",{code:o.FILE_DUPLICATE_ERROR,message:o.translate("Duplicate file error."),file:t}),n(!1);return}}n(!0)}),o.Uploader=function(e){function g(){var e,t=0,n;if(this.state==o.STARTED){for(n=0;n0?Math.ceil(e.loaded/e.size*100):100,b()}function b(){var e,t;d.reset();for(e=0;e0?Math.ceil(d.uploaded/f.length*100):0:(d.bytesPerSec=Math.ceil(d.loaded/((+(new Date)-p||1)/1e3)),d.percent=d.size>0?Math.ceil(d.loaded/d.size*100):0)}function w(){var e=c[0]||h[0];return e?e.getRuntime().uid:!1}function E(e,n){if(e.ruid){var r=t.Runtime.getInfo(e.ruid);if(r)return r.can(n)}return!1}function S(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",O),this.bind("BeforeUpload",C),this.bind("UploadFile",k),this.bind("UploadProgress",L),this.bind("StateChanged",A),this.bind("QueueChanged",b),this.bind("Error",_),this.bind("FileUploaded",M),this.bind("Destroy",D)}function x(e,n){var r=this,i=0,s=[],u={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:l,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};o.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(u[t]=e[t])}),e.browse_button&&o.each(e.browse_button,function(n){s.push(function(s){var a=new t.FileInput(o.extend({},u,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:n}));a.onready=function(){var e=t.Runtime.getInfo(this.ruid);t.extend(r.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),i++,c.push(this),s()},a.onchange=function(){r.addFile(this.files)},a.bind("mouseenter mouseleave mousedown mouseup",function(r){v||(e.browse_button_hover&&("mouseenter"===r.type?t.addClass(n,e.browse_button_hover):"mouseleave"===r.type&&t.removeClass(n,e.browse_button_hover)),e.browse_button_active&&("mousedown"===r.type?t.addClass(n,e.browse_button_active):"mouseup"===r.type&&t.removeClass(n,e.browse_button_active)))}),a.bind("mousedown",function(){r.trigger("Browse")}),a.bind("error runtimeerror",function(){a=null,s()}),a.init()})}),e.drop_element&&o.each(e.drop_element,function(e){s.push(function(n){var s=new t.FileDrop(o.extend({},u,{drop_zone:e}));s.onready=function(){var e=t.Runtime.getInfo(this.ruid);r.features.dragdrop=e.can("drag_and_drop"),i++,h.push(this),n()},s.ondrop=function(){r.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,n()}),s.init()})}),t.inSeries(s,function(){typeof n=="function"&&n(i)})}function T(e,r,i){var s=new t.Image;try{s.onload=function(){if(r.width>this.width&&r.height>this.height&&r.quality===n&&r.preserve_headers&&!r.crop)return this.destroy(),i(e);s.downsize(r.width,r.height,r.crop,r.preserve_headers)},s.onresize=function(){i(this.getAsBlob(e.type,r.quality)),this.destroy()},s.onerror=function(){i(e)},s.load(e)}catch(o){i(e)}}function N(e,n,r){function f(e,t,n){var r=a[e];switch(e){case"max_file_size":e==="max_file_size"&&(a.max_file_size=a.filters.max_file_size=t);break;case"chunk_size":if(t=o.parseSize(t))a[e]=t,a.send_file_name=!0;break;case"multipart":a[e]=t,t||(a.send_file_name=!0);break;case"unique_names":a[e]=t,t&&(a.send_file_name=!0);break;case"filters":o.typeOf(t)==="array"&&(t={mime_types:t}),n?o.extend(a.filters,t):a.filters=t,t.mime_types&&(a.filters.mime_types.regexp=function(e){var t=[];return o.each(e,function(e){o.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(a.filters.mime_types));break;case"resize":n?o.extend(a.resize,t,{enabled:!0}):a.resize=t;break;case"prevent_duplicates":a.prevent_duplicates=a.filters.prevent_duplicates=!!t;break;case"browse_button":case"drop_element":t=o.get(t);case"container":case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":a[e]=t,n||(u=!0);break;default:a[e]=t}n||i.trigger("OptionChanged",e,t,r)}var i=this,u=!1;typeof e=="object"?o.each(e,function(e,t){f(t,e,r)}):f(e,n,r),r?(a.required_features=s(o.extend({},a)),l=s(o.extend({},a,{required_features:!0}))):u&&(i.trigger("Destroy"),x.call(i,a,function(e){e?(i.runtime=t.Runtime.getInfo(w()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})}))}function C(e,t){if(e.settings.unique_names){var n=t.name.match(/\.([^.]+)$/),r="part";n&&(r=n[1]),t.target_name=t.id+"."+r}}function k(e,n){function h(){u-->0?r(p,1e3):(n.loaded=f,e.trigger("Error",{code:o.HTTP_ERROR,message:o.translate("HTTP Error."),file:n,response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()}))}function p(){var d,v,g={},y;if(n.status!==o.UPLOADING||e.state===o.STOPPED)return;e.settings.send_file_name&&(g.name=n.target_name||n.name),s&&a.chunks&&c.size>s?(y=Math.min(s,c.size-f),d=c.slice(f,f+y)):(y=c.size,d=c),s&&a.chunks&&(e.settings.send_chunk_number?(g.chunk=Math.ceil(f/s),g.chunks=Math.ceil(c.size/s)):(g.offset=f,g.total=c.size)),m=new t.XMLHttpRequest,m.upload&&(m.upload.onprogress=function(t){n.loaded=Math.min(n.size,f+t.loaded),e.trigger("UploadProgress",n)}),m.onload=function(){if(m.status>=400){h();return}u=e.settings.max_retries,y=c.size?(n.size!=n.origSize&&(c.destroy(),c=null),e.trigger("UploadProgress",n),n.status=o.DONE,e.trigger("FileUploaded",n,{response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()})):r(p,1)},m.onerror=function(){h()},m.onloadend=function(){this.destroy(),m=null},e.settings.multipart&&a.multipart?(m.open("post",i,!0),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),v=new t.FormData,o.each(o.extend(g,e.settings.multipart_params),function(e,t){v.append(t,e)}),v.append(e.settings.file_data_name,d),m.send(v,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(i=o.buildUrl(e.settings.url,o.extend(g,e.settings.multipart_params)),m.open("post",i,!0),m.setRequestHeader("Content-Type","application/octet-stream"),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),m.send(d,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url}))}var i=e.settings.url,s=e.settings.chunk_size,u=e.settings.max_retries,a=e.features,f=0,c;n.loaded&&(f=n.loaded=s?s*Math.floor(n.loaded/s):0),c=n.getSource(),e.settings.resize.enabled&&E(c,"send_binary_string")&&!!~t.inArray(c.type,["image/jpeg","image/png"])?T.call(this,c,e.settings.resize,function(e){c=e,n.size=e.size,p()}):p()}function L(e,t){y(t)}function A(e){if(e.state==o.STARTED)p=+(new Date);else if(e.state==o.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==o.UPLOADING&&(e.files[t].status=o.QUEUED,b())}function O(){m&&m.abort()}function M(e){b(),r(function(){g.call(e)},1)}function _(e,t){t.code===o.INIT_ERROR?e.destroy():t.code===o.HTTP_ERROR&&(t.file.status=o.FAILED,y(t.file),e.state==o.STARTED&&(e.trigger("CancelUpload"),r(function(){g.call(e)},1)))}function D(e){e.stop(),o.each(f,function(e){e.destroy()}),f=[],c.length&&(o.each(c,function(e){e.destroy()}),c=[]),h.length&&(o.each(h,function(e){e.destroy()}),h=[]),l={},v=!1,p=m=null,d.reset()}var u=o.guid(),a,f=[],l={},c=[],h=[],p,d,v=!1,m;a={runtimes:t.Runtime.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},send_file_name:!0,send_chunk_number:!0},N.call(this,e,null,!0),d=new o.QueueProgress,o.extend(this,{id:u,uid:u,state:o.STOPPED,features:{},runtime:null,files:f,settings:a,total:d,init:function(){var e=this;typeof a.preinit=="function"?a.preinit(e):o.each(a.preinit,function(t,n){e.bind(n,t)}),S.call(this);if(!a.browse_button||!a.url){this.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")});return}x.call(this,a,function(n){typeof a.init=="function"?a.init(e):o.each(a.init,function(t,n){e.bind(n,t)}),n?(e.runtime=t.Runtime.getInfo(w()).type,e.trigger("Init",{runtime:e.runtime}),e.trigger("PostInit")):e.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})},setOption:function(e,t){N.call(this,e,t,!this.runtime)},getOption:function(e){return e?a[e]:a},refresh:function(){c.length&&o.each(c,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=o.STARTED&&(this.state=o.STARTED,this.trigger("StateChanged"),g.call(this))},stop:function(){this.state!=o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){v=arguments[0]!==n?arguments[0]:!0,c.length&&o.each(c,function(e){e.disable(v)}),this.trigger("DisableBrowse",v)},getFile:function(e){var t;for(t=f.length-1;t>=0;t--)if(f[t].id===e)return f[t]},addFile:function(e,n){function c(e,n){var r=[];t.each(s.settings.filters,function(t,n){i[n]&&r.push(function(r){i[n].call(s,t,e,function(e){r(!e)})})}),t.inSeries(r,n)}function h(e){var i=t.typeOf(e);if(e instanceof t.File){if(!e.ruid&&!e.isDetached()){if(!l)return!1;e.ruid=l,e.connectRuntime(l)}h(new o.File(e))}else e instanceof t.Blob?(h(e.getSource()),e.destroy()):e instanceof o.File?(n&&(e.name=n),u.push(function(t){c(e,function(n){n||(f.push(e),a.push(e),s.trigger("FileFiltered",e)),r(t,1)})})):t.inArray(i,["file","blob"])!==-1?h(new t.File(null,e)):i==="node"&&t.typeOf(e.files)==="filelist"?t.each(e.files,h):i==="array"&&(n=null,t.each(e,h))}var s=this,u=[],a=[],l;l=w(),h(e),u.length&&t.inSeries(u,function(){a.length&&s.trigger("FilesAdded",a)})},removeFile:function(e){var t=typeof e=="string"?e:e.id;for(var n=f.length-1;n>=0;n--)if(f[n].id===t)return this.splice(n,1)[0]},splice:function(e,t){var r=f.splice(e===n?0:e,t===n?f.length:t),i=!1;return this.state==o.STARTED&&(o.each(r,function(e){if(e.status===o.UPLOADING)return i=!0,!1}),i&&this.stop()),this.trigger("FilesRemoved",r),o.each(r,function(e){e.destroy()}),i&&this.start(),r},bind:function(e,t,n){var r=this;o.Uploader.prototype.bind.call(this,e,function(){var e=[].slice.call(arguments);return e.splice(0,1,r),t.apply(this,e)},0,n)},destroy:function(){this.trigger("Destroy"),a=d=null,this.unbindAll()}})},o.Uploader.prototype=t.EventTarget.instance,o.File=function(){function n(n){o.extend(this,{id:o.guid(),name:n.name||n.fileName,type:n.type||"",size:n.size||n.fileSize,origSize:n.size||n.fileSize,loaded:0,percent:0,status:o.QUEUED,lastModifiedDate:n.lastModifiedDate||(new Date).toLocaleString(),getNative:function(){var e=this.getSource().getSource();return t.inArray(t.typeOf(e),["blob","file"])!==-1?e:null},getSource:function(){return e[this.id]?e[this.id]:null},destroy:function(){var t=this.getSource();t&&(t.destroy(),delete e[this.id])}}),e[this.id]=n}var e={};return n}(),o.QueueProgress=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},e.plupload=o})(window,mOxie); \ No newline at end of file diff --git a/js/plupload.min.js b/js/plupload.min.js index 6a209d7ca..b6e305103 100644 --- a/js/plupload.min.js +++ b/js/plupload.min.js @@ -1,6 +1,6 @@ /** * Plupload - multi-runtime File Uploader - * v2.1.3 + * v2.1.4 * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. @@ -8,6 +8,6 @@ * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing * - * Date: 2015-05-11 + * Date: 2015-05-25 */ -;(function(e,t,n){function s(e){function r(e,t,r){var i={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};i[e]?n[i[e]]=t:r||(n[e]=t)}var t=e.required_features,n={};if(typeof t=="string")o.each(t.split(/\s*,\s*/),function(e){r(e,!0)});else if(typeof t=="object")o.each(t,function(e,t){r(t,e)});else if(t===!0){e.chunk_size>0&&(n.slice_blob=!0);if(e.resize.enabled||!e.multipart)n.send_binary_string=!0;o.each(e,function(e,t){r(t,!!e,!0)})}return n}var r=e.setTimeout,i={},o={VERSION:"2.1.3",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:t.mimes,ua:t.ua,typeOf:t.typeOf,extend:t.extend,guid:t.guid,get:function(n){var r=[],i;t.typeOf(n)!=="array"&&(n=[n]);var s=n.length;while(s--)i=t.get(n[s]),i&&r.push(i);return r.length?r:null},each:t.each,getPos:t.getPos,getSize:t.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},n=/[<>&\"\']/g;return e?(""+e).replace(n,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:t.toArray,inArray:t.inArray,addI18n:t.addI18n,translate:t.translate,isEmptyObj:t.isEmptyObj,hasClass:t.hasClass,addClass:t.addClass,removeClass:t.removeClass,getStyle:t.getStyle,addEvent:t.addEvent,removeEvent:t.removeEvent,removeAllEvents:t.removeAllEvents,cleanName:function(e){var t,n;n=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"];for(t=0;t0?"&":"?")+n),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===n||/\D/.test(e))return o.translate("N/A");var r=Math.pow(1024,4);return e>r?t(e/r,1)+" "+o.translate("tb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("gb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("mb"):e>1024?Math.round(e/1024)+" "+o.translate("kb"):e+" "+o.translate("b")},parseSize:t.parseSizeStr,predictRuntime:function(e,n){var r,i;return r=new o.Uploader(e),i=t.Runtime.thatCan(r.getOption().required_features,n||e.runtimes),r.destroy(),i},addFileFilter:function(e,t){i[e]=t}};o.addFileFilter("mime_types",function(e,t,n){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:o.FILE_EXTENSION_ERROR,message:o.translate("File extension error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("max_file_size",function(e,t,n){var r;e=o.parseSize(e),t.size!==r&&e&&t.size>e?(this.trigger("Error",{code:o.FILE_SIZE_ERROR,message:o.translate("File size error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("prevent_duplicates",function(e,t,n){if(e){var r=this.files.length;while(r--)if(t.name===this.files[r].name&&t.size===this.files[r].size){this.trigger("Error",{code:o.FILE_DUPLICATE_ERROR,message:o.translate("Duplicate file error."),file:t}),n(!1);return}}n(!0)}),o.Uploader=function(e){function g(){var e,t=0,n;if(this.state==o.STARTED){for(n=0;n0?Math.ceil(e.loaded/e.size*100):100,b()}function b(){var e,t;d.reset();for(e=0;e0?Math.ceil(d.uploaded/f.length*100):0:(d.bytesPerSec=Math.ceil(d.loaded/((+(new Date)-p||1)/1e3)),d.percent=d.size>0?Math.ceil(d.loaded/d.size*100):0)}function w(){var e=c[0]||h[0];return e?e.getRuntime().uid:!1}function E(e,n){if(e.ruid){var r=t.Runtime.getInfo(e.ruid);if(r)return r.can(n)}return!1}function S(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",O),this.bind("BeforeUpload",C),this.bind("UploadFile",k),this.bind("UploadProgress",L),this.bind("StateChanged",A),this.bind("QueueChanged",b),this.bind("Error",_),this.bind("FileUploaded",M),this.bind("Destroy",D)}function x(e,n){var r=this,i=0,s=[],u={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:l,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};o.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(u[t]=e[t])}),e.browse_button&&o.each(e.browse_button,function(n){s.push(function(s){var a=new t.FileInput(o.extend({},u,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:n}));a.onready=function(){var e=t.Runtime.getInfo(this.ruid);t.extend(r.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),i++,c.push(this),s()},a.onchange=function(){r.addFile(this.files)},a.bind("mouseenter mouseleave mousedown mouseup",function(r){v||(e.browse_button_hover&&("mouseenter"===r.type?t.addClass(n,e.browse_button_hover):"mouseleave"===r.type&&t.removeClass(n,e.browse_button_hover)),e.browse_button_active&&("mousedown"===r.type?t.addClass(n,e.browse_button_active):"mouseup"===r.type&&t.removeClass(n,e.browse_button_active)))}),a.bind("mousedown",function(){r.trigger("Browse")}),a.bind("error runtimeerror",function(){a=null,s()}),a.init()})}),e.drop_element&&o.each(e.drop_element,function(e){s.push(function(n){var s=new t.FileDrop(o.extend({},u,{drop_zone:e}));s.onready=function(){var e=t.Runtime.getInfo(this.ruid);r.features.dragdrop=e.can("drag_and_drop"),i++,h.push(this),n()},s.ondrop=function(){r.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,n()}),s.init()})}),t.inSeries(s,function(){typeof n=="function"&&n(i)})}function T(e,r,i){var s=new t.Image;try{s.onload=function(){if(r.width>this.width&&r.height>this.height&&r.quality===n&&r.preserve_headers&&!r.crop)return this.destroy(),i(e);s.downsize(r.width,r.height,r.crop,r.preserve_headers)},s.onresize=function(){i(this.getAsBlob(e.type,r.quality)),this.destroy()},s.onerror=function(){i(e)},s.load(e)}catch(o){i(e)}}function N(e,n,r){function f(e,t,n){var r=a[e];switch(e){case"max_file_size":e==="max_file_size"&&(a.max_file_size=a.filters.max_file_size=t);break;case"chunk_size":if(t=o.parseSize(t))a[e]=t,a.send_file_name=!0;break;case"multipart":a[e]=t,t||(a.send_file_name=!0);break;case"unique_names":a[e]=t,t&&(a.send_file_name=!0);break;case"filters":o.typeOf(t)==="array"&&(t={mime_types:t}),n?o.extend(a.filters,t):a.filters=t,t.mime_types&&(a.filters.mime_types.regexp=function(e){var t=[];return o.each(e,function(e){o.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(a.filters.mime_types));break;case"resize":n?o.extend(a.resize,t,{enabled:!0}):a.resize=t;break;case"prevent_duplicates":a.prevent_duplicates=a.filters.prevent_duplicates=!!t;break;case"browse_button":case"drop_element":t=o.get(t);case"container":case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":a[e]=t,n||(u=!0);break;default:a[e]=t}n||i.trigger("OptionChanged",e,t,r)}var i=this,u=!1;typeof e=="object"?o.each(e,function(e,t){f(t,e,r)}):f(e,n,r),r?(a.required_features=s(o.extend({},a)),l=s(o.extend({},a,{required_features:!0}))):u&&(i.trigger("Destroy"),x.call(i,a,function(e){e?(i.runtime=t.Runtime.getInfo(w()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})}))}function C(e,t){if(e.settings.unique_names){var n=t.name.match(/\.([^.]+)$/),r="part";n&&(r=n[1]),t.target_name=t.id+"."+r}}function k(e,n){function h(){u-->0?r(p,1e3):(n.loaded=f,e.trigger("Error",{code:o.HTTP_ERROR,message:o.translate("HTTP Error."),file:n,response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()}))}function p(){var d,v,g={},y;if(n.status!==o.UPLOADING||e.state===o.STOPPED)return;e.settings.send_file_name&&(g.name=n.target_name||n.name),s&&a.chunks&&c.size>s?(y=Math.min(s,c.size-f),d=c.slice(f,f+y)):(y=c.size,d=c),s&&a.chunks&&(e.settings.send_chunk_number?(g.chunk=Math.ceil(f/s),g.chunks=Math.ceil(c.size/s)):(g.offset=f,g.total=c.size)),m=new t.XMLHttpRequest,m.upload&&(m.upload.onprogress=function(t){n.loaded=Math.min(n.size,f+t.loaded),e.trigger("UploadProgress",n)}),m.onload=function(){if(m.status>=400){h();return}u=e.settings.max_retries,y=c.size?(n.size!=n.origSize&&(c.destroy(),c=null),e.trigger("UploadProgress",n),n.status=o.DONE,e.trigger("FileUploaded",n,{response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()})):r(p,1)},m.onerror=function(){h()},m.onloadend=function(){this.destroy(),m=null},e.settings.multipart&&a.multipart?(m.open("post",i,!0),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),v=new t.FormData,o.each(o.extend(g,e.settings.multipart_params),function(e,t){v.append(t,e)}),v.append(e.settings.file_data_name,d),m.send(v,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(i=o.buildUrl(e.settings.url,o.extend(g,e.settings.multipart_params)),m.open("post",i,!0),m.setRequestHeader("Content-Type","application/octet-stream"),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),m.send(d,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url}))}var i=e.settings.url,s=e.settings.chunk_size,u=e.settings.max_retries,a=e.features,f=0,c;n.loaded&&(f=n.loaded=s?s*Math.floor(n.loaded/s):0),c=n.getSource(),e.settings.resize.enabled&&E(c,"send_binary_string")&&!!~t.inArray(c.type,["image/jpeg","image/png"])?T.call(this,c,e.settings.resize,function(e){c=e,n.size=e.size,p()}):p()}function L(e,t){y(t)}function A(e){if(e.state==o.STARTED)p=+(new Date);else if(e.state==o.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==o.UPLOADING&&(e.files[t].status=o.QUEUED,b())}function O(){m&&m.abort()}function M(e){b(),r(function(){g.call(e)},1)}function _(e,t){t.code===o.INIT_ERROR?e.destroy():t.file&&(t.file.status=o.FAILED,y(t.file),e.state==o.STARTED&&(e.trigger("CancelUpload"),r(function(){g.call(e)},1)))}function D(e){e.stop(),o.each(f,function(e){e.destroy()}),f=[],c.length&&(o.each(c,function(e){e.destroy()}),c=[]),h.length&&(o.each(h,function(e){e.destroy()}),h=[]),l={},v=!1,p=m=null,d.reset()}var u=o.guid(),a,f=[],l={},c=[],h=[],p,d,v=!1,m;a={runtimes:t.Runtime.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},send_file_name:!0,send_chunk_number:!0},N.call(this,e,null,!0),d=new o.QueueProgress,o.extend(this,{id:u,uid:u,state:o.STOPPED,features:{},runtime:null,files:f,settings:a,total:d,init:function(){var e=this;typeof a.preinit=="function"?a.preinit(e):o.each(a.preinit,function(t,n){e.bind(n,t)}),S.call(this);if(!a.browse_button||!a.url){this.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")});return}x.call(this,a,function(n){typeof a.init=="function"?a.init(e):o.each(a.init,function(t,n){e.bind(n,t)}),n?(e.runtime=t.Runtime.getInfo(w()).type,e.trigger("Init",{runtime:e.runtime}),e.trigger("PostInit")):e.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})},setOption:function(e,t){N.call(this,e,t,!this.runtime)},getOption:function(e){return e?a[e]:a},refresh:function(){c.length&&o.each(c,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=o.STARTED&&(this.state=o.STARTED,this.trigger("StateChanged"),g.call(this))},stop:function(){this.state!=o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){v=arguments[0]!==n?arguments[0]:!0,c.length&&o.each(c,function(e){e.disable(v)}),this.trigger("DisableBrowse",v)},getFile:function(e){var t;for(t=f.length-1;t>=0;t--)if(f[t].id===e)return f[t]},addFile:function(e,n){function c(e,n){var r=[];t.each(s.settings.filters,function(t,n){i[n]&&r.push(function(r){i[n].call(s,t,e,function(e){r(!e)})})}),t.inSeries(r,n)}function h(e){var i=t.typeOf(e);if(e instanceof t.File){if(!e.ruid&&!e.isDetached()){if(!l)return!1;e.ruid=l,e.connectRuntime(l)}h(new o.File(e))}else e instanceof t.Blob?(h(e.getSource()),e.destroy()):e instanceof o.File?(n&&(e.name=n),u.push(function(t){c(e,function(n){n||(f.push(e),a.push(e),s.trigger("FileFiltered",e)),r(t,1)})})):t.inArray(i,["file","blob"])!==-1?h(new t.File(null,e)):i==="node"&&t.typeOf(e.files)==="filelist"?t.each(e.files,h):i==="array"&&(n=null,t.each(e,h))}var s=this,u=[],a=[],l;l=w(),h(e),u.length&&t.inSeries(u,function(){a.length&&s.trigger("FilesAdded",a)})},removeFile:function(e){var t=typeof e=="string"?e:e.id;for(var n=f.length-1;n>=0;n--)if(f[n].id===t)return this.splice(n,1)[0]},splice:function(e,t){var r=f.splice(e===n?0:e,t===n?f.length:t),i=!1;return this.state==o.STARTED&&(o.each(r,function(e){if(e.status===o.UPLOADING)return i=!0,!1}),i&&this.stop()),this.trigger("FilesRemoved",r),o.each(r,function(e){e.destroy()}),i&&this.start(),r},bind:function(e,t,n){var r=this;o.Uploader.prototype.bind.call(this,e,function(){var e=[].slice.call(arguments);return e.splice(0,1,r),t.apply(this,e)},0,n)},destroy:function(){this.trigger("Destroy"),a=d=null,this.unbindAll()}})},o.Uploader.prototype=t.EventTarget.instance,o.File=function(){function n(n){o.extend(this,{id:o.guid(),name:n.name||n.fileName,type:n.type||"",size:n.size||n.fileSize,origSize:n.size||n.fileSize,loaded:0,percent:0,status:o.QUEUED,lastModifiedDate:n.lastModifiedDate||(new Date).toLocaleString(),getNative:function(){var e=this.getSource().getSource();return t.inArray(t.typeOf(e),["blob","file"])!==-1?e:null},getSource:function(){return e[this.id]?e[this.id]:null},destroy:function(){var t=this.getSource();t&&(t.destroy(),delete e[this.id])}}),e[this.id]=n}var e={};return n}(),o.QueueProgress=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},e.plupload=o})(window,mOxie); \ No newline at end of file +;(function(e,t,n){function s(e){function r(e,t,r){var i={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};i[e]?n[i[e]]=t:r||(n[e]=t)}var t=e.required_features,n={};if(typeof t=="string")o.each(t.split(/\s*,\s*/),function(e){r(e,!0)});else if(typeof t=="object")o.each(t,function(e,t){r(t,e)});else if(t===!0){e.chunk_size>0&&(n.slice_blob=!0);if(e.resize.enabled||!e.multipart)n.send_binary_string=!0;o.each(e,function(e,t){r(t,!!e,!0)})}return n}var r=e.setTimeout,i={},o={VERSION:"2.1.4",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:t.mimes,ua:t.ua,typeOf:t.typeOf,extend:t.extend,guid:t.guid,get:function(n){var r=[],i;t.typeOf(n)!=="array"&&(n=[n]);var s=n.length;while(s--)i=t.get(n[s]),i&&r.push(i);return r.length?r:null},each:t.each,getPos:t.getPos,getSize:t.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},n=/[<>&\"\']/g;return e?(""+e).replace(n,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:t.toArray,inArray:t.inArray,addI18n:t.addI18n,translate:t.translate,isEmptyObj:t.isEmptyObj,hasClass:t.hasClass,addClass:t.addClass,removeClass:t.removeClass,getStyle:t.getStyle,addEvent:t.addEvent,removeEvent:t.removeEvent,removeAllEvents:t.removeAllEvents,cleanName:function(e){var t,n;n=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"];for(t=0;t0?"&":"?")+n),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===n||/\D/.test(e))return o.translate("N/A");var r=Math.pow(1024,4);return e>r?t(e/r,1)+" "+o.translate("tb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("gb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("mb"):e>1024?Math.round(e/1024)+" "+o.translate("kb"):e+" "+o.translate("b")},parseSize:t.parseSizeStr,predictRuntime:function(e,n){var r,i;return r=new o.Uploader(e),i=t.Runtime.thatCan(r.getOption().required_features,n||e.runtimes),r.destroy(),i},addFileFilter:function(e,t){i[e]=t}};o.addFileFilter("mime_types",function(e,t,n){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:o.FILE_EXTENSION_ERROR,message:o.translate("File extension error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("max_file_size",function(e,t,n){var r;e=o.parseSize(e),t.size!==r&&e&&t.size>e?(this.trigger("Error",{code:o.FILE_SIZE_ERROR,message:o.translate("File size error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("prevent_duplicates",function(e,t,n){if(e){var r=this.files.length;while(r--)if(t.name===this.files[r].name&&t.size===this.files[r].size){this.trigger("Error",{code:o.FILE_DUPLICATE_ERROR,message:o.translate("Duplicate file error."),file:t}),n(!1);return}}n(!0)}),o.Uploader=function(e){function g(){var e,t=0,n;if(this.state==o.STARTED){for(n=0;n0?Math.ceil(e.loaded/e.size*100):100,b()}function b(){var e,t;d.reset();for(e=0;e0?Math.ceil(d.uploaded/f.length*100):0:(d.bytesPerSec=Math.ceil(d.loaded/((+(new Date)-p||1)/1e3)),d.percent=d.size>0?Math.ceil(d.loaded/d.size*100):0)}function w(){var e=c[0]||h[0];return e?e.getRuntime().uid:!1}function E(e,n){if(e.ruid){var r=t.Runtime.getInfo(e.ruid);if(r)return r.can(n)}return!1}function S(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",O),this.bind("BeforeUpload",C),this.bind("UploadFile",k),this.bind("UploadProgress",L),this.bind("StateChanged",A),this.bind("QueueChanged",b),this.bind("Error",_),this.bind("FileUploaded",M),this.bind("Destroy",D)}function x(e,n){var r=this,i=0,s=[],u={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:l,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};o.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(u[t]=e[t])}),e.browse_button&&o.each(e.browse_button,function(n){s.push(function(s){var a=new t.FileInput(o.extend({},u,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:n}));a.onready=function(){var e=t.Runtime.getInfo(this.ruid);t.extend(r.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),i++,c.push(this),s()},a.onchange=function(){r.addFile(this.files)},a.bind("mouseenter mouseleave mousedown mouseup",function(r){v||(e.browse_button_hover&&("mouseenter"===r.type?t.addClass(n,e.browse_button_hover):"mouseleave"===r.type&&t.removeClass(n,e.browse_button_hover)),e.browse_button_active&&("mousedown"===r.type?t.addClass(n,e.browse_button_active):"mouseup"===r.type&&t.removeClass(n,e.browse_button_active)))}),a.bind("mousedown",function(){r.trigger("Browse")}),a.bind("error runtimeerror",function(){a=null,s()}),a.init()})}),e.drop_element&&o.each(e.drop_element,function(e){s.push(function(n){var s=new t.FileDrop(o.extend({},u,{drop_zone:e}));s.onready=function(){var e=t.Runtime.getInfo(this.ruid);r.features.dragdrop=e.can("drag_and_drop"),i++,h.push(this),n()},s.ondrop=function(){r.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,n()}),s.init()})}),t.inSeries(s,function(){typeof n=="function"&&n(i)})}function T(e,r,i){var s=new t.Image;try{s.onload=function(){if(r.width>this.width&&r.height>this.height&&r.quality===n&&r.preserve_headers&&!r.crop)return this.destroy(),i(e);s.downsize(r.width,r.height,r.crop,r.preserve_headers)},s.onresize=function(){i(this.getAsBlob(e.type,r.quality)),this.destroy()},s.onerror=function(){i(e)},s.load(e)}catch(o){i(e)}}function N(e,n,r){function f(e,t,n){var r=a[e];switch(e){case"max_file_size":e==="max_file_size"&&(a.max_file_size=a.filters.max_file_size=t);break;case"chunk_size":if(t=o.parseSize(t))a[e]=t,a.send_file_name=!0;break;case"multipart":a[e]=t,t||(a.send_file_name=!0);break;case"unique_names":a[e]=t,t&&(a.send_file_name=!0);break;case"filters":o.typeOf(t)==="array"&&(t={mime_types:t}),n?o.extend(a.filters,t):a.filters=t,t.mime_types&&(a.filters.mime_types.regexp=function(e){var t=[];return o.each(e,function(e){o.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(a.filters.mime_types));break;case"resize":n?o.extend(a.resize,t,{enabled:!0}):a.resize=t;break;case"prevent_duplicates":a.prevent_duplicates=a.filters.prevent_duplicates=!!t;break;case"browse_button":case"drop_element":t=o.get(t);case"container":case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":a[e]=t,n||(u=!0);break;default:a[e]=t}n||i.trigger("OptionChanged",e,t,r)}var i=this,u=!1;typeof e=="object"?o.each(e,function(e,t){f(t,e,r)}):f(e,n,r),r?(a.required_features=s(o.extend({},a)),l=s(o.extend({},a,{required_features:!0}))):u&&(i.trigger("Destroy"),x.call(i,a,function(e){e?(i.runtime=t.Runtime.getInfo(w()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})}))}function C(e,t){if(e.settings.unique_names){var n=t.name.match(/\.([^.]+)$/),r="part";n&&(r=n[1]),t.target_name=t.id+"."+r}}function k(e,n){function h(){u-->0?r(p,1e3):(n.loaded=f,e.trigger("Error",{code:o.HTTP_ERROR,message:o.translate("HTTP Error."),file:n,response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()}))}function p(){var d,v,g={},y;if(n.status!==o.UPLOADING||e.state===o.STOPPED)return;e.settings.send_file_name&&(g.name=n.target_name||n.name),s&&a.chunks&&c.size>s?(y=Math.min(s,c.size-f),d=c.slice(f,f+y)):(y=c.size,d=c),s&&a.chunks&&(e.settings.send_chunk_number?(g.chunk=Math.ceil(f/s),g.chunks=Math.ceil(c.size/s)):(g.offset=f,g.total=c.size)),m=new t.XMLHttpRequest,m.upload&&(m.upload.onprogress=function(t){n.loaded=Math.min(n.size,f+t.loaded),e.trigger("UploadProgress",n)}),m.onload=function(){if(m.status>=400){h();return}u=e.settings.max_retries,y=c.size?(n.size!=n.origSize&&(c.destroy(),c=null),e.trigger("UploadProgress",n),n.status=o.DONE,e.trigger("FileUploaded",n,{response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()})):r(p,1)},m.onerror=function(){h()},m.onloadend=function(){this.destroy(),m=null},e.settings.multipart&&a.multipart?(m.open("post",i,!0),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),v=new t.FormData,o.each(o.extend(g,e.settings.multipart_params),function(e,t){v.append(t,e)}),v.append(e.settings.file_data_name,d),m.send(v,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(i=o.buildUrl(e.settings.url,o.extend(g,e.settings.multipart_params)),m.open("post",i,!0),m.setRequestHeader("Content-Type","application/octet-stream"),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),m.send(d,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url}))}var i=e.settings.url,s=e.settings.chunk_size,u=e.settings.max_retries,a=e.features,f=0,c;n.loaded&&(f=n.loaded=s?s*Math.floor(n.loaded/s):0),c=n.getSource(),e.settings.resize.enabled&&E(c,"send_binary_string")&&!!~t.inArray(c.type,["image/jpeg","image/png"])?T.call(this,c,e.settings.resize,function(e){c=e,n.size=e.size,p()}):p()}function L(e,t){y(t)}function A(e){if(e.state==o.STARTED)p=+(new Date);else if(e.state==o.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==o.UPLOADING&&(e.files[t].status=o.QUEUED,b())}function O(){m&&m.abort()}function M(e){b(),r(function(){g.call(e)},1)}function _(e,t){t.code===o.INIT_ERROR?e.destroy():t.code===o.HTTP_ERROR&&(t.file.status=o.FAILED,y(t.file),e.state==o.STARTED&&(e.trigger("CancelUpload"),r(function(){g.call(e)},1)))}function D(e){e.stop(),o.each(f,function(e){e.destroy()}),f=[],c.length&&(o.each(c,function(e){e.destroy()}),c=[]),h.length&&(o.each(h,function(e){e.destroy()}),h=[]),l={},v=!1,p=m=null,d.reset()}var u=o.guid(),a,f=[],l={},c=[],h=[],p,d,v=!1,m;a={runtimes:t.Runtime.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},send_file_name:!0,send_chunk_number:!0},N.call(this,e,null,!0),d=new o.QueueProgress,o.extend(this,{id:u,uid:u,state:o.STOPPED,features:{},runtime:null,files:f,settings:a,total:d,init:function(){var e=this;typeof a.preinit=="function"?a.preinit(e):o.each(a.preinit,function(t,n){e.bind(n,t)}),S.call(this);if(!a.browse_button||!a.url){this.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")});return}x.call(this,a,function(n){typeof a.init=="function"?a.init(e):o.each(a.init,function(t,n){e.bind(n,t)}),n?(e.runtime=t.Runtime.getInfo(w()).type,e.trigger("Init",{runtime:e.runtime}),e.trigger("PostInit")):e.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})},setOption:function(e,t){N.call(this,e,t,!this.runtime)},getOption:function(e){return e?a[e]:a},refresh:function(){c.length&&o.each(c,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=o.STARTED&&(this.state=o.STARTED,this.trigger("StateChanged"),g.call(this))},stop:function(){this.state!=o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){v=arguments[0]!==n?arguments[0]:!0,c.length&&o.each(c,function(e){e.disable(v)}),this.trigger("DisableBrowse",v)},getFile:function(e){var t;for(t=f.length-1;t>=0;t--)if(f[t].id===e)return f[t]},addFile:function(e,n){function c(e,n){var r=[];t.each(s.settings.filters,function(t,n){i[n]&&r.push(function(r){i[n].call(s,t,e,function(e){r(!e)})})}),t.inSeries(r,n)}function h(e){var i=t.typeOf(e);if(e instanceof t.File){if(!e.ruid&&!e.isDetached()){if(!l)return!1;e.ruid=l,e.connectRuntime(l)}h(new o.File(e))}else e instanceof t.Blob?(h(e.getSource()),e.destroy()):e instanceof o.File?(n&&(e.name=n),u.push(function(t){c(e,function(n){n||(f.push(e),a.push(e),s.trigger("FileFiltered",e)),r(t,1)})})):t.inArray(i,["file","blob"])!==-1?h(new t.File(null,e)):i==="node"&&t.typeOf(e.files)==="filelist"?t.each(e.files,h):i==="array"&&(n=null,t.each(e,h))}var s=this,u=[],a=[],l;l=w(),h(e),u.length&&t.inSeries(u,function(){a.length&&s.trigger("FilesAdded",a)})},removeFile:function(e){var t=typeof e=="string"?e:e.id;for(var n=f.length-1;n>=0;n--)if(f[n].id===t)return this.splice(n,1)[0]},splice:function(e,t){var r=f.splice(e===n?0:e,t===n?f.length:t),i=!1;return this.state==o.STARTED&&(o.each(r,function(e){if(e.status===o.UPLOADING)return i=!0,!1}),i&&this.stop()),this.trigger("FilesRemoved",r),o.each(r,function(e){e.destroy()}),i&&this.start(),r},bind:function(e,t,n){var r=this;o.Uploader.prototype.bind.call(this,e,function(){var e=[].slice.call(arguments);return e.splice(0,1,r),t.apply(this,e)},0,n)},destroy:function(){this.trigger("Destroy"),a=d=null,this.unbindAll()}})},o.Uploader.prototype=t.EventTarget.instance,o.File=function(){function n(n){o.extend(this,{id:o.guid(),name:n.name||n.fileName,type:n.type||"",size:n.size||n.fileSize,origSize:n.size||n.fileSize,loaded:0,percent:0,status:o.QUEUED,lastModifiedDate:n.lastModifiedDate||(new Date).toLocaleString(),getNative:function(){var e=this.getSource().getSource();return t.inArray(t.typeOf(e),["blob","file"])!==-1?e:null},getSource:function(){return e[this.id]?e[this.id]:null},destroy:function(){var t=this.getSource();t&&(t.destroy(),delete e[this.id])}}),e[this.id]=n}var e={};return n}(),o.QueueProgress=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},e.plupload=o})(window,mOxie); \ No newline at end of file