text: /*
   Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
   For licensing, see LICENSE.md or http://ckeditor.com/license
  */
  
  (function() {
      CKEDITOR.dialog.add("link", function(g) {
          var n=CKEDITOR.plugins.link, p=function() {
              var a=this.getDialog(), b=a.getContentElement("target", "popupFeatures"), a=a.getContentElement("target", "linkTargetName"), m=this.getValue();
              if(b&&a)switch(b=b.getElement(), b.hide(), a.setValue(""), m) {
                  case "frame": a.setLabel(g.lang.link.targetFrameName);
                  a.getElement().show();
                  break;
                  case "popup": b.show();
                  a.setLabel(g.lang.link.targetPopupName);
                  a.getElement().show();
                  break;
                  default: a.setValue(m), a.getElement().hide()
              }
          }
          , f=function(a) {
              a.target&&this.setValue(a.target[this.id]||"")
          }
          , h=function(a) {
              a.advanced&&this.setValue(a.advanced[this.id]||"")
          }
          , k=function(a) {
              a.target||(a.target= {}
              );
              a.target[this.id]=this.getValue()||""
          }
          , l=function(a) {
              a.advanced||(a.advanced= {}
              );
              a.advanced[this.id]=this.getValue()||""
          }
          , c=g.lang.common, b=g.lang.link, d;
          return {
              title:b.title, minWidth:350, minHeight:230, contents:[ {
                  id:"info", label:b.info, title:b.info, elements:[ {
                      id:"linkType", type:"select", label:b.type, "default":"url", items:[[b.toUrl, "url"], [b.toAnchor, "anchor"], [b.toEmail, "email"]], onChange:function() {
                          var a=this.getDialog(), b=["urlOptions", "anchorOptions", "emailOptions"], m=this.getValue(), e=a.definition.getContents("upload"), e=e&&e.hidden;
                          "url"==m?(g.config.linkShowTargetTab&&a.showPage("target"), e||a.showPage("upload")): (a.hidePage("target"), e||a.hidePage("upload"));
                          for(e=0;
                          e<b.length;
                          e++) {
                              var c=a.getContentElement("info", b[e]);
                              c&&(c=c.getElement().getParent().getParent(), b[e]==m+"Options"?c.show(): c.hide())
                          }
                          a.layout()
                      }
                      , setup:function(a) {
                          this.setValue(a.type|| "url")
                      }
                      , commit:function(a) {
                          a.type=this.getValue()
                      }
                  }
                  , {
                      type:"vbox", id:"urlOptions", children:[ {
                          type:"hbox", widths:["25%", "75%"], children:[ {
                              id:"protocol", type:"select", label:c.protocol, "default":"http://", items:[["http://‎", "http://"], ["https://‎", "https://"], ["ftp://‎", "ftp://"], ["news://‎", "news://"], [b.other, ""]], setup:function(a) {
                                  a.url&&this.setValue(a.url.protocol||"")
                              }
                              , commit:function(a) {
                                  a.url||(a.url= {}
                                  );
                                  a.url.protocol=this.getValue()
                              }
                          }
                          , {
                              type:"text", id:"url", label:c.url, required:!0, onLoad:function() {
                                  this.allowOnChange=!0
                              }
                              , onKeyUp:function() {
                                  this.allowOnChange=!1;
                                  var a=this.getDialog().getContentElement("info", "protocol"), b=this.getValue(), m=/^((javascript: )|[#\/\.\?])/i, c=/^(http|https|ftp|news): \/\/(?=.)/i.exec(b);
                                  c?(this.setValue(b.substr(c[0].length)), a.setValue(c[0].toLowerCase())): m.test(b)&&a.setValue("");
                                  this.allowOnChange=!0
                              }
                              , onChange:function() {
                                  if(this.allowOnChange)this.onKeyUp()
                              }
                              , validate:function() {
                                  var a=this.getDialog();
                                  return a.getContentElement("info", "linkType")&&"url"!=a.getValueOf("info", "linkType")? !0: !g.config.linkJavaScriptLinksAllowed&&/javascript\: /.test(this.getValue())?(alert(c.invalidValue), !1): this.getDialog().fakeObj?!0: CKEDITOR.dialog.validate.notEmpty(b.noUrl).apply(this)
                              }
                              , setup:function(a) {
                                  this.allowOnChange=!1;
                                  a.url&&this.setValue(a.url.url);
                                  this.allowOnChange=!0
                              }
                              , commit:function(a) {
                                  this.onChange();
                                  a.url||(a.url= {}
                                  );
                                  a.url.url=this.getValue();
                                  this.allowOnChange=!1
                              }
                          }
                          ], setup:function() {
                              this.getDialog().getContentElement("info", "linkType")||this.getElement().show()
                          }
                      }
                      , {
                          type: "button", id: "browse", hidden: "true", filebrowser: "info:url", label: c.browseServer
                      }
                      ]
                  }
                  , {
                      type:"vbox", id:"anchorOptions", width:260, align:"center", padding:0, children:[ {
                          type:"fieldset", id:"selectAnchorText", label:b.selectAnchor, setup:function() {
                              d=n.getEditorAnchors(g);
                              this.getElement()[d&&d.length?"show": "hide"]()
                          }
                          , children:[ {
                              type:"hbox", id:"selectAnchor", children:[ {
                                  type: "select", id: "anchorName", "default": "", label: b.anchorName, style: "width: 100%;", items:[[""]], setup:function(a) {
                                      this.clear();
                                      this.add("");
                                      if(d)for(var b=0;
                                      b<d.length;
                                      b++)d[b].name&&this.add(d[b].name);
                                      a.anchor&&this.setValue(a.anchor.name);
                                      (a=this.getDialog().getContentElement("info", "linkType"))&&"email"==a.getValue()&&this.focus()
                                  }
                                  , commit:function(a) {
                                      a.anchor||(a.anchor= {}
                                      );
                                      a.anchor.name=this.getValue()
                                  }
                              }
                              , {
                                  type: "select", id: "anchorId", "default": "", label: b.anchorId, style: "width: 100%;", items:[[""]], setup:function(a) {
                                      this.clear();
                                      this.add("");
                                      if(d)for(var b=0;
                                      b<d.length;
                                      b++)d[b].id&&this.add(d[b].id);
                                      a.anchor&&this.setValue(a.anchor.id)
                                  }
                                  , commit:function(a) {
                                      a.anchor|| (a.anchor= {}
                                      );
                                      a.anchor.id=this.getValue()
                                  }
                              }
                              ], setup:function() {
                                  this.getElement()[d&&d.length?"show": "hide"]()
                              }
                          }
                          ]
                      }
                      , {
                          type: "html", id: "noAnchors", style: "text-align: center;", html:'\x3cdiv role\x3d"note" tabIndex\x3d"-1"\x3e'+CKEDITOR.tools.htmlEncode(b.noAnchors)+"\x3c/div\x3e", focus:!0, setup:function() {
                              this.getElement()[d&&d.length?"hide": "show"]()
                          }
                      }
                      ], setup:function() {
                          this.getDialog().getContentElement("info", "linkType")||this.getElement().hide()
                      }
                  }
                  , {
                      type:"vbox", id:"emailOptions", padding:1, children:[ {
                          type:"text", id:"emailAddress", label:b.emailAddress, required:!0, validate:function() {
                              var a=this.getDialog();
                              return a.getContentElement("info", "linkType")&&"email"==a.getValueOf("info", "linkType")?CKEDITOR.dialog.validate.notEmpty(b.noEmail).apply(this): !0
                          }
                          , setup:function(a) {
                              a.email&&this.setValue(a.email.address);
                              (a=this.getDialog().getContentElement("info", "linkType"))&&"email"==a.getValue()&&this.select()
                          }
                          , commit:function(a) {
                              a.email||(a.email= {}
                              );
                              a.email.address=this.getValue()
                          }
                      }
                      , {
                          type:"text", id:"emailSubject", label:b.emailSubject, setup:function(a) {
                              a.email&&this.setValue(a.email.subject)
                          }
                          , commit:function(a) {
                              a.email||(a.email= {}
                              );
                              a.email.subject=this.getValue()
                          }
                      }
                      , {
                          type:"textarea", id:"emailBody", label:b.emailBody, rows:3, "default":"", setup:function(a) {
                              a.email&&this.setValue(a.email.body)
                          }
                          , commit:function(a) {
                              a.email||(a.email= {}
                              );
                              a.email.body=this.getValue()
                          }
                      }
                      ], setup:function() {
                          this.getDialog().getContentElement("info", "linkType")||this.getElement().hide()
                      }
                  }
                  ]
              }
              , {
                  id:"target", requiredContent:"a[target]", label:b.target, title:b.target, elements:[ {
                      type:"hbox", widths:["50%", "50%"], children:[ {
                          type: "select", id: "linkTargetType", label: c.target, "default": "notSet", style: "width : 100%;", items:[[c.notSet, "notSet"], [b.targetFrame, "frame"], [b.targetPopup, "popup"], [c.targetNew, "_blank"], [c.targetTop, "_top"], [c.targetSelf, "_self"], [c.targetParent, "_parent"]], onChange:p, setup:function(a) {
                              a.target&&this.setValue(a.target.type||"notSet");
                              p.call(this)
                          }
                          , commit:function(a) {
                              a.target||(a.target= {}
                              );
                              a.target.type=this.getValue()
                          }
                      }
                      , {
                          type:"text", id:"linkTargetName", label:b.targetFrameName, "default":"", setup:function(a) {
                              a.target&&this.setValue(a.target.name)
                          }
                          , commit:function(a) {
                              a.target||(a.target= {}
                              );
                              a.target.name=this.getValue().replace(/([^\x00-\x7F]|\s)/gi, "")
                          }
                      }
                      ]
                  }
                  , {
                      type:"vbox", width:"100%", align:"center", padding:2, id:"popupFeatures", children:[ {
                          type:"fieldset", label:b.popupFeatures, children:[ {
                              type:"hbox", children:[ {
                                  type: "checkbox", id: "resizable", label: b.popupResizable, setup: f, commit: k
                              }
                              , {
                                  type: "checkbox", id: "status", label: b.popupStatusBar, setup: f, commit: k
                              }
                              ]
                          }
                          , {
                              type:"hbox", children:[ {
                                  type: "checkbox", id: "location", label: b.popupLocationBar, setup: f, commit: k
                              }
                              , {
                                  type: "checkbox", id: "toolbar", label: b.popupToolbar, setup: f, commit: k
                              }
                              ]
                          }
                          , {
                              type:"hbox", children:[ {
                                  type: "checkbox", id: "menubar", label: b.popupMenuBar, setup: f, commit: k
                              }
                              , {
                                  type: "checkbox", id: "fullscreen", label: b.popupFullScreen, setup: f, commit: k
                              }
                              ]
                          }
                          , {
                              type:"hbox", children:[ {
                                  type: "checkbox", id: "scrollbars", label: b.popupScrollBars, setup: f, commit: k
                              }
                              , {
                                  type: "checkbox", id: "dependent", label: b.popupDependent, setup: f, commit: k
                              }
                              ]
                          }
                          , {
                              type:"hbox", children:[ {
                                  type: "text", widths: ["50%", "50%"], labelLayout: "horizontal", label: c.width, id: "width", setup: f, commit: k
                              }
                              , {
                                  type: "text", labelLayout: "horizontal", widths: ["50%", "50%"], label: b.popupLeft, id: "left", setup: f, commit: k
                              }
                              ]
                          }
                          , {
                              type:"hbox", children:[ {
                                  type: "text", labelLayout: "horizontal", widths: ["50%", "50%"], label: c.height, id: "height", setup: f, commit: k
                              }
                              , {
                                  type: "text", labelLayout: "horizontal", label: b.popupTop, widths: ["50%", "50%"], id: "top", setup: f, commit: k
                              }
                              ]
                          }
                          ]
                      }
                      ]
                  }
                  ]
              }
              , {
                  id:"upload", label:b.upload, title:b.upload, hidden:!0, filebrowser:"uploadButton", elements:[ {
                      type: "file", id: "upload", label: c.upload, style: "height:40px", size: 29
                  }
                  , {
                      type: "fileButton", id: "uploadButton", label: c.uploadSubmit, filebrowser: "info:url", "for": ["upload", "upload"]
                  }
                  ]
              }
              , {
                  id:"advanced", label:b.advanced, title:b.advanced, elements:[ {
                      type:"vbox", padding:1, children:[ {
                          type:"hbox", widths:["45%", "35%", "20%"], children:[ {
                              type: "text", id: "advId", requiredContent: "a[id]", label: b.id, setup: h, commit: l
                          }
                          , {
                              type: "select", id: "advLangDir", requiredContent: "a[dir]", label: b.langDir, "default": "", style: "width:110px", items: [[c.notSet, ""], [b.langDirLTR, "ltr"], [b.langDirRTL, "rtl"]], setup: h, commit: l
                          }
                          , {
                              type: "text", id: "advAccessKey", requiredContent: "a[accesskey]", width: "80px", label: b.acccessKey, maxLength: 1, setup: h, commit: l
                          }
                          ]
                      }
                      , {
                          type:"hbox", widths:["45%", "35%", "20%"], children:[ {
                              type: "text", label: b.name, id: "advName", requiredContent: "a[name]", setup: h, commit: l
                          }
                          , {
                              type: "text", label: b.langCode, id: "advLangCode", requiredContent: "a[lang]", width: "110px", "default": "", setup: h, commit: l
                          }
                          , {
                              type: "text", label: b.tabIndex, id: "advTabIndex", requiredContent: "a[tabindex]", width: "80px", maxLength: 5, setup: h, commit: l
                          }
                          ]
                      }
                      ]
                  }
                  , {
                      type:"vbox", padding:1, children:[ {
                          type:"hbox", widths:["45%", "55%"], children:[ {
                              type: "text", label: b.advisoryTitle, requiredContent: "a[title]", "default": "", id: "advTitle", setup: h, commit: l
                          }
                          , {
                              type: "text", label: b.advisoryContentType, requiredContent: "a[type]", "default": "", id: "advContentType", setup: h, commit: l
                          }
                          ]
                      }
                      , {
                          type:"hbox", widths:["45%", "55%"], children:[ {
                              type: "text", label: b.cssClasses, requiredContent: "a(cke-xyz)", "default": "", id: "advCSSClasses", setup: h, commit: l
                          }
                          , {
                              type: "text", label: b.charset, requiredContent: "a[charset]", "default": "", id: "advCharset", setup: h, commit: l
                          }
                          ]
                      }
                      , {
                          type:"hbox", widths:["45%", "55%"], children:[ {
                              type: "text", label: b.rel, requiredContent: "a[rel]", "default": "", id: "advRel", setup: h, commit: l
                          }
                          , {
                              type:"text", label:b.styles, requiredContent:"a{cke-xyz}", "default": "", id: "advStyles", validate: CKEDITOR.dialog.validate.inlineStyle(g.lang.common.invalidInlineStyle), setup: h, commit: l
                          }
                          ]
                      }
                      ]
                  }
                  ]
              }
              ], onShow:function() {
                  var a=this.getParentEditor(), b=a.getSelection(), c=null;
                  (c=n.getSelectedLink(a))&&c.hasAttribute("href")?b.getSelectedElement()||b.selectElement(c): c=null;
                  a=n.parseLinkAttributes(a, c);
                  this._.selectedElement=c;
                  this.setupContent(a)
              }
              , onOk:function() {
                  var a= {}
                  ;
                  this.commitContent(a);
                  var b=g.getSelection(), c=n.getLinkAttributes(g, a);
                  if(this._.selectedElement) {
                      var e=this._.selectedElement, d=e.data("cke-saved-href"), f=e.getHtml();
                      e.setAttributes(c.set);
                      e.removeAttributes(c.removed);
                      if(d==f||"email"==a.type&&-1!=f.indexOf("@"))e.setHtml("email"==a.type?a.email.address: c.set["data-cke-saved-href"]), b.selectElement(e);
                      delete this._.selectedElement
                  }
                  else b=b.getRanges()[0], b.collapsed&&(a=new CKEDITOR.dom.text("email"==a.type?a.email.address:c.set["data-cke-saved-href"], g.document), b.insertNode(a), b.selectNodeContents(a)), c=new CKEDITOR.style( {
                      element: "a", attributes: c.set
                  }
                  ), c.type=CKEDITOR.STYLE_INLINE, c.applyToRange(b, g), b.select()
              }
              , onLoad:function() {
                  g.config.linkShowAdvancedTab|| this.hidePage("advanced");
                  g.config.linkShowTargetTab||this.hidePage("target")
              }
              , onFocus:function() {
                  var a=this.getContentElement("info", "linkType");
                  a&&"url"==a.getValue()&&(a=this.getContentElement("info", "url"), a.select())
              }
          }
      }
      )
  }
  
  )();
  