var cli = new Object();
cli.lib = new Object();

function init_script(isrc) {
	var head = document.getElementsByTagName("head")[0];
	var scriptObj = document.createElement("script");

	scriptObj.setAttribute("type", "text/javascript");
	scriptObj.setAttribute("src", isrc);

	head.appendChild(scriptObj);
}

cli.command = function () {
	var cmdpar = cli.gui.inputfield.value;

	var tokens = cmdpar.split(" ");
	var args = new Array();

	for (i = 0; i < tokens.length; i++) {
		if (tokens[i] != "") {

			if (tokens[0] != "set" && tokens[0] != "settings") {
				var j = 1;
				while (cli.config.urls[j]) { // replace search result numbers
					if (tokens[i] == j) {
						tokens[i] = cli.config.urls[j];
						if (i == 0) args.push("open"); // number shortcut
					}
					j++;
				}
			}

			args.push(tokens[i]);
		}
	}

	var searcher;

	for (key in cli.modules.list) {
		if (cli.lib.in_array(cli.modules.list[key].aliases, args[0])) {
			searcher = cli.modules.list[key];
			args[0] = searcher.name;
			break;
		}
	}

	if (args.length == 0 && cli.config.moreobj && cli.config.moreobj.hasmore) {
		searcher = cli.modules.list["more"];
		args[0] = "more";
	}

	// output.innerHTML += searcher.aliases;  
	//   output.innerHTML += "COMMAND:"+delim+"/"+cmdstr+"/"+args+".<br/>"; // debug
	var cmdstrnew = args.join(" ");

	if (encodeURIComponent(cmdstrnew) != cli.lib.get("q") && cmdstrnew != "more" && cmdstrnew != "logout") window.location.hash = "#" + encodeURIComponent(cmdstrnew);

	cli.gui.out("<div class='input'><span class='less'>" + cli.gui.prompt + "</span>" + cmdstrnew.replace(/</g, "&lt;") + "</div>");
	if (cmdstrnew != "") {
		cli.keyboard.hist[cli.keyboard.hist.length] = cmdstrnew;
		cli.keyboard.histpos = cli.keyboard.hist.length;
	}

	var cmd = "";

	if (!searcher) {
		searcher = cli.modules.list[cli.config.mode]; // default searcher = mode
	}
	else {
		for (i = 0; i < args.length - 1; i++) args[i] = args[i + 1];
		args.pop();
	}

	//more
	if (window['searcher.more'] && args.length > 0) this.config.moreobj = searcher;

	if (args.length == 0 && (window['searcher.mode'] && searcher.mode)) {
		cli.config.mode = searcher.name;
		cli.gui.updateprompt();
	}
	else {
		if (searcher !== undefined) 
			searcher.call(args);
	}

	cli.gui.scroll();
	cli.gui.inputfield.value = '';

	cli.gui.focusinput();

	return false;
}

cli.onload = function (e, username) {

	var ifrlogin = false;

	try {
		if (parent.cli != cli) {
			var bodyel = document.getElementById('body');
			bodyel.innerHTML = "";
			cli = parent.cli;
			ifrlogin = true;
		}
	}
	catch(e) { alert('shit broke yo'); }

	cli.gui.init();

	if (!username && (ifrlogin || document.cookie.indexOf("loggedin") != -1)) {
		return;
	}
	else {
		if (cli.ajax.iscontext(e)) {
			cli.config.user = username;
			//try {
			var d = cli.gui.el("clilogin");
			var p = cli.gui.el("cliloginparent");
			if (d && p) {
				cli.gui.outputel.removeChild(cli.gui.outputel.lastChild);
			}
			// }
			// catch(e){}
		}
	}
	if (username && username != "guest") cli.lib.cookie.set("loggedin", "1", 365);
	cli.set.init();
}

cli.getquery = function () {
	var query = ""
	if (cli.lib.get("q")) {
		query = cli.lib.get("q");
	}
	query += " ";
	if (query != " " && query.substr(0, 6) != "login " && query.substr(0, 4) != "set " && query.substr(0, 9) != "settings ") cli.gui.inputfield.value = query.substr(0, query.length); //.replace(/</g, "&lt;"); 
	else cli.gui.inputfield.value = "";
	cli.gui.updateprompt();
	cli.gui.showinput();
	cli.gui.focusinput();

	if (cli.gui.inputfield.value != "") {
		cli.command();
	}
	
	cli.ajax.query("http://ill.cc/lib/userinit.php?t=1");
	cli.gui.outln('<span style="color: #fff">Welcome to <strong>ill.cc</strong>. To begin type <span style="color:#32A9FF">help</span>, <span style="color:#32A9FF">man</span> or <span style="color:#32A9FF">?</span> below for a list of commands.</span><br/>');
	
}
cli.welcome = function (s) {
	cli.gui.outln(s);
	cli.gui.outln('');
	cli.gui.updateprompt();
	cli.gui.showinput();
	cli.gui.focusinput();
}

if (typeof window.addEventListener !== 'undefined') {
	window.addEventListener('load', cli.onload, false);
}
else if (typeof window.attachEvent !== 'undefined') {
	window.attachEvent('onload', cli.onload);
}
