| (function () { | 
|   | 
|     var utils = UM.utils, | 
|         browser = UM.browser, | 
|         Base = { | 
|         checkURL: function (url) { | 
|             if(!url)    return false; | 
|             url = utils.trim(url); | 
|             if (url.length <= 0) { | 
|                 return false; | 
|             } | 
|             if (url.search(/http:\/\/|https:\/\//) !== 0) { | 
|                 url += 'http://'; | 
|             } | 
|   | 
|             url=url.replace(/\?[\s\S]*$/,""); | 
|   | 
|             if (!/(.gif|.jpg|.jpeg|.png)$/i.test(url)) { | 
|                 return false; | 
|             } | 
|             return url; | 
|         }, | 
|         getAllPic: function (sel, $w, editor) { | 
|             var me = this, | 
|                 arr = [], | 
|                 $imgs = $(sel, $w); | 
|   | 
|             $.each($imgs, function (index, node) { | 
|                 $(node).removeAttr("width").removeAttr("height"); | 
|   | 
| //                if (node.width > editor.options.initialFrameWidth) { | 
| //                    me.scale(node, editor.options.initialFrameWidth - | 
| //                        parseInt($(editor.body).css("padding-left"))  - | 
| //                        parseInt($(editor.body).css("padding-right"))); | 
| //                } | 
|   | 
|                 return arr.push({ | 
|                     _src: node.src, | 
|                     src: node.src | 
|                 }); | 
|             }); | 
|   | 
|             return arr; | 
|         }, | 
|         scale: function (img, max, oWidth, oHeight) { | 
|             var width = 0, height = 0, percent, ow = img.width || oWidth, oh = img.height || oHeight; | 
|             if (ow > max || oh > max) { | 
|                 if (ow >= oh) { | 
|                     if (width = ow - max) { | 
|                         percent = (width / ow).toFixed(2); | 
|                         img.height = oh - oh * percent; | 
|                         img.width = max; | 
|                     } | 
|                 } else { | 
|                     if (height = oh - max) { | 
|                         percent = (height / oh).toFixed(2); | 
|                         img.width = ow - ow * percent; | 
|                         img.height = max; | 
|                     } | 
|                 } | 
|             } | 
|   | 
|             return this; | 
|         }, | 
|         close: function ($img) { | 
|   | 
|             $img.css({ | 
|                 top: ($img.parent().height() - $img.height()) / 2, | 
|                 left: ($img.parent().width()-$img.width())/2 | 
|             }).prev().on("click",function () { | 
|   | 
|                 if ( $(this).parent().remove().hasClass("edui-image-upload-item") ) { | 
|                     //显示图片计数-1 | 
|                     Upload.showCount--; | 
|                     Upload.updateView(); | 
|                 } | 
|   | 
|             }); | 
|   | 
|             return this; | 
|         }, | 
|         createImgBase64: function (img, file, $w) { | 
|             if (browser.webkit) { | 
|                 //Chrome8+ | 
|                 img.src = window.webkitURL.createObjectURL(file); | 
|             } else if (browser.gecko) { | 
|                 //FF4+ | 
|                 img.src = window.URL.createObjectURL(file); | 
|             } else { | 
|                 //实例化file reader对象 | 
|                 var reader = new FileReader(); | 
|                 reader.onload = function (e) { | 
|                     img.src = this.result; | 
|                     $w.append(img); | 
|                 }; | 
|                 reader.readAsDataURL(file); | 
|             } | 
|         }, | 
|         callback: function (editor, $w, url, state) { | 
|   | 
|             if (state == "SUCCESS") { | 
|                 //显示图片计数+1 | 
|                 Upload.showCount++; | 
|                 var $img = $("<img src='" + editor.options.imagePath + url + "' class='edui-image-pic' />"), | 
|                     $item = $("<div class='edui-image-item edui-image-upload-item'><div class='edui-image-close'></div></div>").append($img); | 
|   | 
|                 if ($(".edui-image-upload2", $w).length < 1) { | 
|                     $(".edui-image-content", $w).append($item); | 
|   | 
|                     Upload.render(".edui-image-content", 2) | 
|                         .config(".edui-image-upload2"); | 
|                 } else { | 
|                     $(".edui-image-upload2", $w).before($item).show(); | 
|                 } | 
|   | 
|                 $img.on("load", function () { | 
|                     Base.scale(this, 120); | 
|                     Base.close($(this)); | 
|                     $(".edui-image-content", $w).focus(); | 
|                 }); | 
|   | 
|             } else { | 
|                 currentDialog.showTip( state ); | 
|                 window.setTimeout( function () { | 
|   | 
|                     currentDialog.hideTip(); | 
|   | 
|                 }, 3000 ); | 
|             } | 
|   | 
|             Upload.toggleMask(); | 
|   | 
|         } | 
|     }; | 
|   | 
|     /* | 
|      * 本地上传 | 
|      * */ | 
|     var Upload = { | 
|         showCount: 0, | 
|         uploadTpl: '<div class="edui-image-upload%%">' + | 
|             '<span class="edui-image-icon"></span>' + | 
|             '<form class="edui-image-form" method="post" enctype="multipart/form-data" target="up">' + | 
|             '<input style=\"filter: alpha(opacity=0);\" class="edui-image-file" type="file" hidefocus name="upfile" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/>' + | 
|             '</form>' + | 
|   | 
|             '</div>', | 
|         init: function (editor, $w) { | 
|             var me = this; | 
|   | 
|             me.editor = editor; | 
|             me.dialog = $w; | 
|             me.render(".edui-image-local", 1); | 
|             me.config(".edui-image-upload1"); | 
|             me.submit(); | 
|             me.drag(); | 
|   | 
|             $(".edui-image-upload1").hover(function () { | 
|                 $(".edui-image-icon", this).toggleClass("hover"); | 
|             }); | 
|   | 
|             if (!(UM.browser.ie && UM.browser.version <= 9)) { | 
|                 $(".edui-image-dragTip", me.dialog).css("display", "block"); | 
|             } | 
|   | 
|   | 
|             return me; | 
|         }, | 
|         render: function (sel, t) { | 
|             var me = this; | 
|   | 
|             $(sel, me.dialog).append($(me.uploadTpl.replace(/%%/g, t))); | 
|   | 
|             return me; | 
|         }, | 
|         config: function (sel) { | 
|             var me = this, | 
|                 url=me.editor.options.imageUrl; | 
|   | 
|             url=url + (url.indexOf("?") == -1 ? "?" : "&") + "editorid="+me.editor.id;//初始form提交地址; | 
|   | 
|             $("form", $(sel, me.dialog)).attr("action", url); | 
|   | 
|             return me; | 
|         }, | 
|         uploadComplete: function(r){ | 
|             var me = this; | 
|             try{ | 
|                 var json = eval('('+r+')'); | 
|                 Base.callback(me.editor, me.dialog, json.url, json.state); | 
|             }catch (e){ | 
|                 var lang = me.editor.getLang('image'); | 
|                 Base.callback(me.editor, me.dialog, '', (lang && lang.uploadError) || 'Error!'); | 
|             } | 
|         }, | 
|         submit: function (callback) { | 
|   | 
|             var me = this, | 
|                 input = $( '<input style="filter: alpha(opacity=0);" class="edui-image-file" type="file" hidefocus="" name="upfile" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp">'), | 
|                 input = input[0]; | 
|   | 
|             $(me.dialog).delegate( ".edui-image-file", "change", function ( e ) { | 
|   | 
|                 if ( !this.parentNode ) { | 
|                     return; | 
|                 } | 
|   | 
|                 $('<iframe name="up"  style="display: none"></iframe>').insertBefore(me.dialog).on('load', function(){ | 
|                     var r = this.contentWindow.document.body.innerHTML; | 
|                     if(r == '')return; | 
|                     me.uploadComplete(r); | 
|                     $(this).unbind('load'); | 
|                     $(this).remove(); | 
|   | 
|                 }); | 
|   | 
|                 $(this).parent()[0].submit(); | 
|                 Upload.updateInput( input ); | 
|                 me.toggleMask("Loading...."); | 
|                 callback && callback(); | 
|   | 
|             }); | 
|   | 
|             return me; | 
|         }, | 
|         //更新input | 
|         updateInput: function ( inputField ) { | 
|   | 
|             $( ".edui-image-file", this.dialog ).each( function ( index, ele ) { | 
|   | 
|                 ele.parentNode.replaceChild( inputField.cloneNode( true ), ele ); | 
|   | 
|             } ); | 
|   | 
|         }, | 
|         //更新上传框 | 
|         updateView: function () { | 
|   | 
|             if ( Upload.showCount !== 0 ) { | 
|                 return; | 
|             } | 
|   | 
|             $(".edui-image-upload2", this.dialog).hide(); | 
|             $(".edui-image-dragTip", this.dialog).show(); | 
|             $(".edui-image-upload1", this.dialog).show(); | 
|   | 
|         }, | 
|         drag: function () { | 
|             var me = this; | 
|             //做拽上传的支持 | 
|             if (!UM.browser.ie9below) { | 
|                 me.dialog.find('.edui-image-content').on('drop',function (e) { | 
|   | 
|                     //获取文件列表 | 
|                     var fileList = e.originalEvent.dataTransfer.files; | 
|                     var img = document.createElement('img'); | 
|                     var hasImg = false; | 
|                     $.each(fileList, function (i, f) { | 
|                         if (/^image/.test(f.type)) { | 
|                             //创建图片的base64 | 
|                             Base.createImgBase64(img, f, me.dialog); | 
|   | 
|                             var xhr = new XMLHttpRequest(); | 
|                             xhr.open("post", me.editor.getOpt('imageUrl') + "?type=ajax", true); | 
|                             xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); | 
|   | 
|                             //模拟数据 | 
|                             var fd = new FormData(); | 
|                             fd.append(me.editor.getOpt('imageFieldName'), f); | 
|   | 
|                             xhr.send(fd); | 
|                             xhr.addEventListener('load', function (e) { | 
|                                 var r = e.target.response, json; | 
|                                 me.uploadComplete(r); | 
|                                 if (i == fileList.length - 1) { | 
|                                     $(img).remove() | 
|                                 } | 
|                             }); | 
|                             hasImg = true; | 
|                         } | 
|                     }); | 
|                     if (hasImg) { | 
|                         e.preventDefault(); | 
|                         me.toggleMask("Loading...."); | 
|                     } | 
|   | 
|                 }).on('dragover', function (e) { | 
|                         e.preventDefault(); | 
|                     }); | 
|             } | 
|         }, | 
|         toggleMask: function (html) { | 
|             var me = this; | 
|   | 
|             var $mask = $(".edui-image-mask", me.dialog); | 
|             if (html) { | 
|                 if (!(UM.browser.ie && UM.browser.version <= 9)) { | 
|                     $(".edui-image-dragTip", me.dialog).css( "display", "none" ); | 
|                 } | 
|                 $(".edui-image-upload1", me.dialog).css( "display", "none" ); | 
|                 $mask.addClass("edui-active").html(html); | 
|             } else { | 
|   | 
|                 $mask.removeClass("edui-active").html(); | 
|   | 
|                 if ( Upload.showCount > 0 ) { | 
|                     return me; | 
|                 } | 
|   | 
|                 if (!(UM.browser.ie && UM.browser.version <= 9) ){ | 
|                     $(".edui-image-dragTip", me.dialog).css("display", "block"); | 
|                 } | 
|                 $(".edui-image-upload1", me.dialog).css( "display", "block" ); | 
|             } | 
|   | 
|             return me; | 
|         } | 
|     }; | 
|   | 
|     /* | 
|      * 网络图片 | 
|      * */ | 
|     var NetWork = { | 
|         init: function (editor, $w) { | 
|             var me = this; | 
|   | 
|             me.editor = editor; | 
|             me.dialog = $w; | 
|   | 
|             me.initEvt(); | 
|         }, | 
|         initEvt: function () { | 
|             var me = this, | 
|                 url, | 
|                 $ele = $(".edui-image-searchTxt", me.dialog); | 
|   | 
|             $(".edui-image-searchAdd", me.dialog).on("click", function () { | 
|                 url = Base.checkURL($ele.val()); | 
|   | 
|                 if (url) { | 
|   | 
|                     $("<img src='" + url + "' class='edui-image-pic' />").on("load", function () { | 
|   | 
|   | 
|   | 
|                         var $item = $("<div class='edui-image-item'><div class='edui-image-close'></div></div>").append(this); | 
|   | 
|                         $(".edui-image-searchRes", me.dialog).append($item); | 
|   | 
|                         Base.scale(this, 120); | 
|   | 
|                         $item.width($(this).width()); | 
|   | 
|                         Base.close($(this)); | 
|   | 
|                         $ele.val(""); | 
|                     }); | 
|                 } | 
|             }) | 
|                 .hover(function () { | 
|                     $(this).toggleClass("hover"); | 
|                 }); | 
|         } | 
|     }; | 
|   | 
|     var $tab = null, | 
|         currentDialog = null; | 
|   | 
|     UM.registerWidget('image', { | 
|         tpl: "<link rel=\"stylesheet\" type=\"text/css\" href=\"<%=image_url%>image.css\">" + | 
|             "<div class=\"edui-image-wrapper\">" + | 
|             "<ul class=\"edui-tab-nav\">" + | 
|             "<li class=\"edui-tab-item edui-active\"><a data-context=\".edui-image-local\" class=\"edui-tab-text\"><%=lang_tab_local%></a></li>" + | 
|             "<li  class=\"edui-tab-item\"><a data-context=\".edui-image-JimgSearch\" class=\"edui-tab-text\"><%=lang_tab_imgSearch%></a></li>" + | 
|             "</ul>" + | 
|             "<div class=\"edui-tab-content\">" + | 
|             "<div class=\"edui-image-local edui-tab-pane edui-active\">" + | 
|             "<div class=\"edui-image-content\"></div>" + | 
|             "<div class=\"edui-image-mask\"></div>" + | 
|             "<div class=\"edui-image-dragTip\"><%=lang_input_dragTip%></div>" + | 
|             "</div>" + | 
|             "<div class=\"edui-image-JimgSearch edui-tab-pane\">" + | 
|             "<div class=\"edui-image-searchBar\">" + | 
|             "<table><tr><td><input class=\"edui-image-searchTxt\" type=\"text\"></td>" + | 
|             "<td><div class=\"edui-image-searchAdd\"><%=lang_btn_add%></div></td></tr></table>" + | 
|             "</div>" + | 
|             "<div class=\"edui-image-searchRes\"></div>" + | 
|             "</div>" + | 
|             "</div>" + | 
|             "</div>", | 
|         initContent: function (editor, $dialog) { | 
|             var lang = editor.getLang('image')["static"], | 
|                 opt = $.extend({}, lang, { | 
|                     image_url: UMEDITOR_CONFIG.UMEDITOR_HOME_URL + 'dialogs/image/' | 
|                 }); | 
|   | 
|             Upload.showCount = 0; | 
|   | 
|             if (lang) { | 
|                 var html = $.parseTmpl(this.tpl, opt); | 
|             } | 
|   | 
|             currentDialog = $dialog.edui(); | 
|   | 
|             this.root().html(html); | 
|   | 
|         }, | 
|         initEvent: function (editor, $w) { | 
|             $tab = $.eduitab({selector: ".edui-image-wrapper"}) | 
|                 .edui().on("beforeshow", function (e) { | 
|                     e.stopPropagation(); | 
|                 }); | 
|   | 
|             Upload.init(editor, $w); | 
|   | 
|             NetWork.init(editor, $w); | 
|         }, | 
|         buttons: { | 
|             'ok': { | 
|                 exec: function (editor, $w) { | 
|                     var sel = "", | 
|                         index = $tab.activate(); | 
|   | 
|                     if (index == 0) { | 
|                         sel = ".edui-image-content .edui-image-pic"; | 
|                     } else if (index == 1) { | 
|                         sel = ".edui-image-searchRes .edui-image-pic"; | 
|                     } | 
|   | 
|                     var list = Base.getAllPic(sel, $w, editor); | 
|   | 
|                     if (index != -1) { | 
|                         editor.execCommand('insertimage', list); | 
|                     } | 
|                 } | 
|             }, | 
|             'cancel': {} | 
|         }, | 
|         width: 700, | 
|         height: 408 | 
|     }, function (editor, $w, url, state) { | 
|         Base.callback(editor, $w, url, state) | 
|     }) | 
| })(); |