/*
 * url.js
 *
 */
var Url = {
  params: null,
  defaults: {},
  
  set_defaults: function(options) {
    options = options || {};
    
    for(var key in options) {
      Url.defaults[key] = options[key];
      if(Url.params && !Url.params[key]) Url.params[key] = options[key];
    }
  },
  
  set_params: function(options) {
    options = options || {};
    Url.params = jQuery.extend({}, Url.defaults);
    var url = window.location.href;

    if ( (match = /^[^\?]*\?([^#]*).*$/.exec(url)) && (params = match[1].split("&")) ) {
      for (i = 0; i < params.length; i++) {
        key = params[i].split("=")[0];
        value = params[i].split("=")[1];
        Url.params[key] = value;
      }
    }
    
    for(var key in options) {
      Url.params[key] = options[key];
    }
  },
  
  get_params: function() {
    if(!Url.params) { Url.set_params(); }
    return Url.params;
  },
  
  get_param: function(param) {
    value = Url.get_params()[param];
    return value ? value : "";
  },
  
  new_url: function(object, url) {
    var base_url = (url ? url : window.location.href).split("?")[0];
    var merged_object = jQuery.extend({}, Url.get_params(), object);
    var params = [];
    for(var key in merged_object) {
      params.push(key+"="+merged_object[key]);
    }
    return base_url + "?" + params.join("&");
  }
}
