library utilities;
import "dart:html";
import "../../../testharness.dart";

// Start the bidding at 42 for no particular reason.
var lastID = 42;

String canonicalize(String url) {
  var id = ++lastID;
  document.body.appendHtml("<a id='$id' href='$url'></a>", treeSanitizer: new NullTreeSanitizer());
  Element elem = document.getElementById(id.toString());
  String res = (elem as AnchorElement).href;
//  print("'$url'=>'$res'");
  return res;
}

void setBaseURL(url) {
    // Remove any existing base elements.
    var existingBase = document.getElementsByTagName('base');
    while (existingBase.length) {
        var element = existingBase[0];
        element.remove();
    }

    // Add a new base element.
    document.body.appendHtml('<base href="$url">', treeSanitizer: new NullTreeSanitizer());
}

List segments(String url) {
  var id = ++lastID;
  String idstr=id.toString();
  document.body.appendHtml("<a id='$idstr' href='$url'></a>", treeSanitizer: new NullTreeSanitizer());
  var elmt = document.getElementById(idstr);
  return [
    elmt.protocol,
    elmt.hostname,
    elmt.port,
    elmt.pathname,
    elmt.search,
    elmt.hash
  ];
}
