var AngularRouteBuilder = function(routeProvider, pages, profiles, currentProfile) {
  this.routeProvider = routeProvider;
  this.pages = pages;
  this.profiles = profiles;

  for (var i = 0; i < profiles.length; ++i) {
    var current = profiles[i];
    if (current.id == currentProfile) {
      this.profiles = this.profiles.slice(i);
      break;
    }
  }
};

AngularRouteBuilder.prototype.otherwise = function(options) {
  this.routeProvider.otherwise(options);
};

AngularRouteBuilder.prototype.route = function(path, pagename) {
  // Lookup the page, matching our lists of profiles.
  var pair = this.pages.get(pagename, this.profiles);
  if (!pair) {
    throw Error('Unknown page: ' + pagename);
  }

  // Create the route.
  var foundProfile = pair[0];
  var page = pair[1];
  var templateUrl = foundProfile.templatePath + page.templateName;

  var options = jQuery.extend({}, page.flags || {});
  options['templateUrl'] = templateUrl;
  options['reloadOnSearch'] = false;
  options['controller'] = page.controller;

  this.routeProvider.when(path, options);
  return this;
};