// test for MSIE
var msie = /MSIE/.test(navigator.userAgent);

(function(){
	// get current script element
	var scripts = document.getElementsByTagName("script");
	var curScript = scripts[ scripts.length - 1 ];
	var inScript = curScript.innerHTML.replace(/\r?\n/, '\n');
	
	// parse for #includes
	var includeRegex = /^\s*#include\s+(.*?)\s*?(?:\n|$)/, exScripts = [];
	for (var include; include = includeRegex.exec(inScript); inScript = inScript.replace(includeRegex, ''))
		exScripts.push(include[1]);
	
	// finalize
	if (!msie)
	{
		// create fragment
		var frag = document.createDocumentFragment();
		// add external scripts
		for (var i = 0; i < exScripts.length; i++)
		{
			var script = document.createElement('script');
			script.src = exScripts[i];
			frag.appendChild(script);
		}
		// add inline script
		var script = document.createElement('script');
		script.text = inScript;
		frag.appendChild(script);
		
		// insert into document
		curScript.parentNode.insertBefore(frag, curScript.nextSibling);
	}
	else
	{
		// add listen handler
		curScript.attachEvent('onreadystatechange', function () {
			if (curScript.currentSrc == curScript.src && (curScript.readyState == 'loaded' || curScript.readyState == 'complete'))
				if (!exScripts.length)
					eval(inScript);
				else
					curScript.currentSrc = curScript.src = exScripts.shift();
		});
		
		// begin cycle
		if (!exScripts.length)
			eval(inScript);
		else
			curScript.currentSrc = curScript.src = exScripts.shift();
	}
})();