function buildLink( url, mods, supressWarning ) {
  if(!url.length) url=CmdUtils.getSelection();
  if(!url.match(/^((ht|f)tp(s?)\:\/\/|~\/|\/)?([\w]+:\w+@)?([a-zA-Z]{1}([\w\-]+\.)+([\w]{2,5}))(:[\d]{1,5})?((\/?\w+\/)+|\/?)(\w+\.[\w]{3,4})?((\?\w+=\w+)?(&\w+=\w+)*)?/)) {
  	if(!supressWarning) displayMessage('That doesn\'t look like a URL.  Please select a URL and try again.');
  	return;
  }
  var caption=url;
  if(mods && mods.as && mods.as.text && mods.as.text.length) caption=mods.as.text;
  var link='<a href="'+url+'">'+caption+'</a>';
  return link;
}
function linkify( url, mods ) {
  var link=buildLink( url, mods, false );
  CmdUtils.setSelection( link );
  CmdUtils.setLastResult( link );
}

CmdUtils.CreateCommand({
  name: "linkify",
  description: "Turns a plain-text URL into a hyperlink",
  help: "You can quickly and easily change a plain-text URL into a clickable link",
  takes: {"URL to link": noun_arb_text},
  modifiers: {as: noun_arb_text},
  homepage: "http://next.gen.nz/ubiquity/linkify/",
  author: {name: "Paul Nicholls", homepage: "http://fubar.school.nz/techblog/"},
  execute: function( directObj, mods ) {
    linkify( directObj.text, mods );
  },

  preview: function( pblock, directObj, mods ) {
    var sample=buildLink( directObj.text, mods, true );
    pblock.innerHTML = "Replaces the selected URL with a link to the URL:<br/><br/>"+((sample==undefined)?"":sample);
  }
})


