text: (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)
      })
  })();
      