
(function() {
	var scripts = document.getElementsByTagName("script");
	var src = scripts[ scripts.length - 1 ].src;
	var home = src.split("/").slice(0, -2).join("/") + "/";
	
	function loadJS(name)
	{
		document.write('<script src="' + home + 'js/' + name + '" type="text/javascript"></script>');
	}
	
	function loadCSS(name)
	{
	 	var link = document.createElement("link")
  		link.setAttribute("rel", "stylesheet")
  		link.setAttribute("type", "text/css")
  		link.setAttribute("href", home + "css/" + name)
		document.getElementsByTagName("head")[0].appendChild(link);
	}
	
	loadJS("clamato.js");
	loadJS("jquery.js");
	loadJS("jquery-ui.js");
	loadJS("jquery.textarea.js");
	loadJS("jquery.flot.js");
	loadCSS("browse.css");
	
	window.loadClamato = function(files, init, deploy, libs)
	{
		clamato["@deployMode"] = !!deploy;
		clamato.wrap("Event", jQuery.Event);

		clamato.finishLoading = function()
		{
			var compiler;
			var nocache = "";
			
			if(deploy)
				compiler = clamato;
			else
			{
				nocache = '?' + (new Date()).getTime();
				compiler = window.frames["bootstrap"].clamato;
			}
				
			function load_array(array) {
				if(array.length == 0)
				{
					if(!deploy)
						clamato._setup();
					if(init)
					{
						compiler._filename_("init");
						var x = "<Clamato> - main\n\t@root := " + init + ".";
						eval(compiler._compile_(x));
					}
					return clamato._main();
				}
					
				var url = array.shift();
				$.ajax({
					url: url + nocache,
					success: function(text) {
						compiler._filename_(url);
						eval(compiler._compile_(text));
						load_array(array);
					},
					dataType: 'text'
				});
			}
		
			compiler._setup();
			load_array(files);	
		}
		
		if(deploy)
		{
			if(libs != false)
				loadJS("libs.js");
			document.write('<script type="text/javascript">clamato.finishLoading()</script>');
			window.print = function(x) {};
		}
		else
		{
			window.print = function(x) {console.log(x)};
			
			if(libs != false)
			{
				var libnames = ["lib.st", "peg.st", "parser.st", "web.st", "build.st", "browse.st", "workspace.st"];
				for(var i = 0; i < libnames.length; i++)
					files.unshift(home + "lib/" + libnames[i]);
			}
		
			document.write('<iframe name="bootstrap" src="" width="0" height="0" frameborder="0"></iframe>')
			
			var frame = window.frames["bootstrap"].document;
			frame.write('<script src="' + home + 'js/bootstrap.js" type="text/javascript"></script>');
			frame.write('<script type="text/javascript">parent.clamato.finishLoading()</script>')
		}		
	}
})();
