var RumbleUI = Class.create();
RumbleUI = {
  Version: "1.0.0",
  REQUIRED_SCRIPTACULOUS: "1.8.0",

  require: function(libraryName) {
	  // inserting via DOM fails in Safari 2.0, so brute force approach
	  document.write("<script type=\"text/javascript\" src=\"" + libraryName + "\"><\/script>");
  },

  load: function() {

	  function convertVersionString(versionString) {
		  var r = versionString.split(".");
		  return parseInt(r[0]) * 100000 + parseInt(r[1]) * 1000 + parseInt(r[2]);
	  }

	  if ((typeof Scriptaculous == "undefined")
	      || (typeof Effect == "undefined")
	      || (convertVersionString(Scriptaculous.Version) < convertVersionString(RumbleUI.REQUIRED_SCRIPTACULOUS))) {
		  throw ("RumbleUI requires the script.aculo.us framework >= " + RumbleUI.REQUIRED_SCRIPTACULOUS);
	  }

	  $$("script[src]")
	      .findAll(function(s) {
		      return (s.src && s.src.match(/rumble\.js(\?.*)?$/));
	      })
	      .each(
	          function(s) {
		          var path = s.src.replace(/rumble\.js(\?.*)?$/, '');
		          var includes = s.src.match(/\?.*load=([a-z\/,]*)/);
		          (includes ? includes[1]
		              : "error,extend,ui/page/basic,ui/page/main,ui/page/box,ui/page/thebox,ui/page/dragdrop,ui/page/innerswap,ui/form/basic,ui/form/main,ui/form/datetime,ui/form/fileupload,ui/form/richtext,ui/embed,cookie")
		              .split(",").each(function(include) {
			              RumbleUI.require(path + include + ".js?v={VERSION-NUMBER}");
		              });
	          });
  }
}

RumbleUI.load();