﻿function BodyLoadEvent(func, args)
{
	this.func = func;
	this.args = typeof args == 'undefined' ? [] : args;
}

function BodyLoadEventManager()
{
	this.events = [];
	this.savedBodyLoad = typeof window.onload == 'function' ? window.onload : null;
}

BodyLoadEventManager.prototype.add = function(event, args)
{
	switch (typeof event)
	{
		case 'function':
			this.events[this.events.length] = new BodyLoadEvent(event, args);
			break;
		case 'object':
			this.events[this.events.length] = event;
			break;
	}
}

BodyLoadEventManager.prototype.callEvents = function()
{
	if (bodyLoadEventManager.savedBodyLoad != null) { bodyLoadEventManager.savedBodyLoad(); }
	for (var i = 0; i < bodyLoadEventManager.events.length; i++)
	{
		var event = bodyLoadEventManager.events[i];
		event.func.apply(null, event.args);
	}
}

var bodyLoadEventManager = new BodyLoadEventManager();
window.onload = bodyLoadEventManager.callEvents;


