var BuzzLoader = function() {

	var buzzLoaded = false;

	var loadStack = {
		p1:[],p2:[],p3:[],p4:[],p5:[],p6:[],p7:[],p8:[],p9:[],p10:[],user:[]
	};

	var execLoadStack = function() {
		var i;
		for ( i=1; i<=10; i++)
		{
			loadStack[ 'p' + i ].each(
				function (loadable) {
					try {
						loadable();
					} catch(e) {
						//console.error(e + loadable);
					}
				}
			)
		}

		buzzLoaded = true;

		loadStack[ 'user' ].each(
			function (loadable) {
				loadable();
			}
		)

	};

	return {
		waitForDOM: function() {
			if(Prototype.Browser.IE) {
				if (!$('buzz-body'))
				{
					setTimeout('BuzzLoader.waitForDOM();', 100);
				}
				else
				{
					execLoadStack();
				}
			} else {
				document.observe('dom:loaded', execLoadStack);
			}

		},
		callLoaded: function( fn ) {
			if (buzzLoaded)
			{
				fn();
			}
			else
			{
				loadStack[ 'user' ].push( fn );
			}
		},
		register: function( fn, priority )
		{
			if (priority > 10 || priority < 1)
				return 0;
			loadStack[ 'p' + priority ].push( fn );
			return 1;
		},
		register_injection: function( url, priority )
		{
			return BuzzLoader.register( function() {
				BF_XSS.swift_injection( url );
			}, priority);
			
		}
	};
}();

BuzzLoader.waitForDOM();
