
var GBCMS = {
	Version: '1.0',
	_cache: new Array(),
	_docInitMethods: new Array(),

	echo: function(str) {
		alert(str);
	},

	require: function(libraryName) {
		// borrowed from scriptacuolous.js
		document.write('<script src="'+libraryName+'" type="text/javascript"><\/script>');
	},

	addDocInitMethod: function(m) {
		GBCMS._docInitMethods.push(m);
	},

	docInit: function() {
		for(var i=0; i<GBCMS._docInitMethods.length; i++) {
			eval(GBCMS._docInitMethods[i]);
		}
		Event.stopObserving(window,'load',GBCMS._cache['docInitCall']);
		GBCMS._cache['docInitCall'] = null;
	},

	dialogOpen: function(addr,name,w,h) {
		if(!addr) { return false; }
		if(!w) { w = 100; }
		if(w == 'max') { w = screen.availWidth; }
		if(!h) { h = 100; }
		if(h == 'max') { h = screen.availHeight; }
		if(name == '') { name = 'gbcmsDialogWindow'; }

		var win = window.open(addr,name,"width="+w+",height="+h+",scrollbars=1,toolbar=0,location=0,directories=0,status=0,menubar=0,resizable=0,dependent=1",true);
		win.focus();

		x = (screen.availWidth - w) / 2;
		y = (screen.availHeight - h) / 2;
		win.resizeTo(w,h);
		win.moveTo(x,y);
	},

	init: function() {
		GBCMS._cache['docInitCall'] = GBCMS.docInit;
		Event.observe(window,'load',GBCMS._cache['docInitCall']);
	},

	// Ajax request
	ajaxUpdate: function(container_id, url, params, opts) {
		var method = 'get';
		if(opts && opts.method != '') {
			method = opts.method;
		}

//		$(container_id).innerHTML = 'Loading...';

		new Ajax.Updater(container_id, url, {
			method: method,
			parameters: params,
			evalScripts: true,
			onException: function(oRequest, oException) {
				$(container_id).innerHTML = 'ERROR! '+oException;
			},
			onComplete: function() {
//				if(GBCMSTooltip) {
//					GBCMSTooltip.init($(container_id));
//				}
			}
		});
	}
}

GBCMS.init();
