


function class__GravinessSystem__(window) {
	var className = "GravinessSystem";

	var F = window[className] = function() {};

	// for debug
	window.errorMessage = function() {
		return window.location.protocol != "file:"
			? function(message) {window.alert(message);}
			: function(message) {};
	}();

	// initialize window.onload listener
	{
		var ws = new Object();
		ws.loaded = false;
		ws.onloadListeners = null;

		window.isLoaded = function() {
			return ws.loaded;
		};

		window.addOnloadListener = function(listener) {
			if (!Boolean(listener) || typeof listener != "function")
				return void(window.errorMessage("IllegalArgumentsException"
					+ "@window#addOnloadListener(Listener)"));

			if (ws.loaded)
				return void(window.errorMessage("IllegalStateException"
					+ "@window#addOnloadListener(Listener)"));

			if (ws.onloadListeners === null)
				ws.onloadListeners = new Array();

			ws.onloadListeners.push(listener);
		};

		window.removeOnloadListener = function(listener) {
			if (!Boolean(listener) || typeof listener != "function")
				return void(window.errorMessage("IllegalArgumentsException"
					+ "@window#removeOnloadListener(Listener)"));

			if (ws.loaded)
				return void(window.errorMessage("IllegalStateException"
					+ "@window#addOnloadListener(Listener)"));

			if (ws.onloadListeners === null)
				return false;

			var ls = ws.onloadListeners;
			for (var i = 0; i < ls.length; i++) {
				if (ls[i] == listener) {
					ls[i] = null;
					return true;
				}
			}

			return false;
		};

		window.onload = function() {
			ws.loaded = true;

			if (ws.onloadListeners === null)
				return;

			var ls = ws.onloadListeners;
			for (var i = 0; i < ls.length; i++) {
				if (ls[i] !== null) {
					ls[i]();
				}
			}

			ws.onloadListeners = null;
		};
	}
} class__GravinessSystem__(window);




