/* too far beyond - all mine 
	+ every sausage has two ends, but, at least, one begin. this is the begin +
*/


var w54= {}; w54._baseurl= document.getElementsByTagName('script'); 

w54.isiex= document.all || navigator.userAgent.toLowerCase().indexOf("msie")> -1 || navigator.userAgent.toLowerCase().indexOf("opera")> -1;
w54.isopera= navigator.userAgent.toLowerCase().indexOf("opera")> -1;
w54.isrealiex= w54.isiex && !w54.isopera;

w54._dependancy= {
	'ajax': ['utils/register'],
	'ajax/interval': ['ajax'],
	'ajax/evalload': ['ajax'],
	'ajax/chainload': ['ajax'],
	'compat/extension': ['compat/scriptaculous'],
	'compat/prototype': ['compat', 'ajax', 'utils/position', 'xwindow/position'],
	'compat/scriptaculous': ['compat/prototype'],
	'cookie': ['core'],
	'csscontrols': ['utils/html'],
	'efx2': ['utils/position'],
	'efx/combined': ['efx2'],
	'efx/direct': ['efx/combined'],
	'galaxy/utils': ['galaxy', 'utils/element'],
	'galaxy/table': ['galaxy', 'utils/element', 'ajax'],
	'galaxy/calendar': ['utils/date', 'galaxy', 'utils/event', 'utils/element'],
	'utils/html': ['utils/element', 'utils/event'],
	'utils/position': ['utils/element', 'utils/register'],
	'xwindow/position': ['xwindow', 'utils/register'],
	'galaxy': ['utils/html', 'utils/position'],
	'event': ['element'],
	'query': ['core'],
	'xwindow': ['galaxy', 'efx2'],
	
	'all': function() {
		var x= [];
		for (var str in w54._dependancy) {
			if (str== 'all' || str.indexOf('compat')> -1) continue;
			x.push(str);
		}
		x= x.concat(['debug', 'utils/updater', 'utils/date', 'utils/styles']);
		return x;
	}
};

var $REQUIRE= function(l) {
	var map= arguments[1]|| w54;
	if (map._loaded && map._loaded[l]) return;
	if (map._dependancy[l]) {
		var req= map._dependancy[l];
		if (typeof(req)== 'function') {
			map._dependancy._tmp= req();
			$REQUIRE('_tmp', map);
			map._loaded[l]= true;
			map._dependancy._tmp= null;
			return;
		} else
			for (var i= 0; i< req.length; i++)
				$REQUIRE(req[i], map);
	}
	if (l!= '_tmp')
		document.write('<script type="text/javascript" src="'+ map._baseurl+ '/'+ l+ '.js"></script>');
	if (!map._loaded) map._loaded= {};
	map._loaded[l]= true;
};

for (var i= 0; w54._baseurl && i< w54._baseurl.length; i++) 
	if (/(.*)w54\.js(\?[a-z0-9\-,\.]*|)$/.test(w54._baseurl[i].src)) {
		w54._baseurl= RegExp.$1+ 'w54';
		
		// -- load required core-modules
		$REQUIRE('core'); $REQUIRE('utils'); $REQUIRE('utils/element'); $REQUIRE('utils/event');
		
		// -- load user modules
		var load= (RegExp.$2!= '')? RegExp.$2.substring(1).split(','): [];
		for (var j= 0; j< load.length; j++)
			$REQUIRE(load[j].replace(/[\.\-]/g, '/'));
		break;
	}

// $REQUIRE!!
var $ERR= function() {}; // -- dummy..
