var ObjectManager = {
	Flush: function () {
		var loadedLen = ObjectManager.Loaded.length;
		if(loadedLen > 0) {
			ObjectManager.Loaded[loadedLen - 1].forEach(function (el) {
				var ext = el.substr(el.lastIndexOf(".") + 1);
				cssQuery("head")[0].removeChild((ext == "js")?cssQuery("script[src=" + el + "]")[0]:cssQuery("link[href=" + el + "]")[0]);
			});
			ObjectManager.Loaded.splice(loadedLen - 1, 1);
		}
	},
	Load: function () {
		var batch = [];
		var Obj, head = cssQuery("head")[0], script = cssQuery("script", head)[0];
		Array.forEach(ObjectManager.Load.arguments, function (el) {
			var persist = (el.indexOf(":persist") != -1);
			var ext = el.substr(el.lastIndexOf(".") + 1).replace(":persist", "");
			var source = (persist)?el.substr(0, el.indexOf(":persist")):el;
			switch (ext) {
				case "js":
					Obj = document.createElement("script");
					Obj.type = "text/javascript";
					Obj.src = source;
					break;
				case "css":
					Obj = document.createElement("link");
					Obj.type = "text/css";
					Obj.href = source;
					Obj.rel = "stylesheet";
					break;
			}
			if(!persist) batch.push(el);
			head.insertBefore(Obj, script);
		});
		if(batch.length > 0) ObjectManager.Loaded.push(batch);
	},
	Loaded: [],
	ScriptExists: function (src) {
		return (cssQuery("script[src=" + src + "]").length > 0);
	},
	WaitOnScript: function (script, execute) {
		if(eval("typeof " + script) == "undefined") window.setTimeout(function () {
			ObjectManager.WaitOnScript(script, execute);
		}, 10);
		else execute();
	}
}