(function() {
  var Realius = {
    // public
    configure: function(hsh) {
      for (var property in hsh) {
        if (hsh.hasOwnProperty(property)) {
          Realius.config[property] = hsh[property];
        }
      }
    },
    
    // private
    config: {
      version: "0.0.1",
      return_to: window.location.href //URL to return to after a user signs-up/signs-in 
    }    
  };
  window.Realius = Realius;
  
  var script_name_regex = /embed\.js(\?.*)?$/;

  function loadJS(url) {
    document.write('<script type="text/javascript" src="'+url+'"><\/script>');
  }
  
  function loadCSS(url) {
    document.write('<link rel="stylesheet" href="'+ url + '" type="text/css" />');
  }

  function findScriptLocation() {
    var scripts = document.getElementsByTagName("script");
    for(var i = 0, len = scripts.length; i < len; i++) {
      var s = scripts[i];
      if (s.src && s.src.match(script_name_regex)) {
        return s.src;
      }
    }
  }
  
  function parseParams(url) {
    var paramString = url.split("?")[1] || "";
    var result = {}, entries = paramString.split("&");
    for(var i = 0, len = entries.length; i < len; i++) {
      var parts = entries[i].split("=");
      result[decodeURIComponent(parts[0])] = decodeURIComponent(parts[1]);
    }
    return result;
  }

  var script_src = findScriptLocation();
  if (script_src) {
    var params = parseParams(script_src);
    params.format = params.format || "triggered";
    Realius.configure(params);
    
    var path = script_src.replace(script_name_regex,'');
    Realius.configure({
      script_src: script_src,
      script_path: path,
      host: (path.match(/^(\w+:\/\/[^\/]+)?/)[1] || '')
    });
    
    Realius.jQueryFromRealius = !window.jQuery;
    if (Realius.jQueryFromRealius) {
      loadJS("http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js");
    }
    loadJS(path + "embedded_client/"+ params.format + ".js?version=" + Realius.config.version);
  }
})();