var Site = Class.create({
  initialize: function(url) {
    this.url = url;
    this.pageMessagesContainer = 'pageMessagesContainer';
  },
  go: function(parameters) {
    document.location.href = this.url + (this.url.match(/\?/) == '?' ? "&" : "/?") + $H(parameters).toQueryString();
  },
  doRequest: function(opts, successCallback) {
    new Ajax.Request(this.url, {parameters: $H(opts).toQueryString(), onSuccess: successCallback});
  },
  clearPageMessages: function() {
    if ($(this.pageMessagesContainer)) {
      $(this.pageMessagesContainer).update();
    }
  },
  clearMessages: function(container) {
    if ($(container)) {
      $(container).update().hide();
    }
    else {
      alert("No container found: '" + container + "'");
    }
  },
  addPageMessage: function(message, type) {
    var message = new Element('p', {className: type}).update(message);
    $(this.pageMessagesContainer).insert(message);
    if (!$(this.pageMessagesContainer).visible()) {
      $(this.pageMessagesContainer).show();
    }
  },
  addMessage: function(message, type, containerId) {
    var message = new Element('p', {className: type}).update(message);
    if ($(containerId)) {
      if (!$(containerId).visible()) {
        $(containerId).show();
      }
      $(containerId).insert(message);
    }
    else {
      alert("No container: " + containerId);
    }
  },
  getUrl: function() {
    return this.url;
  }
});
