function updateTime() {
	var timediv = document.getElementById("time");
	var d = new Date();
	timediv.innerHTML = d.getFullYear() + '-' +
			    (d.getMonth() + 1) + '-' +
			    d.getDate() + '&nbsp;' +
			    (d.getHours() < 10 ? '0' : '') + d.getHours() + ':' +
			    (d.getMinutes() < 10 ? '0' : '') + d.getMinutes() + ':' +
			    (d.getSeconds() < 10 ? '0' : '') + d.getSeconds();
	setTimeout("updateTime()",1000);
}

setTimeout("updateTime()",100);

console = document.getElementById("console_content");
consolebutton = document.getElementById("consolebutton");
consolevisible = false;
consolelines = 0;

function printConsole(str) {
	if (consolelines == 4) {
		console.removeChild(console.firstChild);
		console.removeChild(console.firstChild);
	} else {
		consolelines++;
	}
	t = document.createTextNode(str);
	console.appendChild(t);
	t = document.createElement("br");
	console.appendChild(t);
}

function keyHandler(e) {
	switch (e.keyCode) {
	case 192:
		toggleConsole();
		break;
	}
}

function toggleConsole() {
	consolevisible = !consolevisible;
	var ci = document.getElementById('console_input');
	if (consolevisible) {
		consolebutton.className = "active";
		slidein('top','console',50);
		// This is delayed so that the trigger key doesn't get input.
		setTimeout('document.getElementById("console_input").focus()',1);
	} else {
		consolebutton.className = "disabled";
		slideout('top','console',50);
	}
	ci.value = '';
}

turbo = false;
turbobutton = document.getElementById("turbobutton");

function toggleTurbo() {
	turbo = !turbo;
	if (turbo) {
		turbobutton.className = "active";
	} else {
		turbobutton.className = "disabled";
	}
}

stylesout = false;
stylesbutton = document.getElementById("stylesbutton");

function toggleStyles() {
	stylesout = !stylesout;
	if (stylesout) {
		stylesbutton.className = "active";
		slidein('right','styles',30);
	} else {
		stylesbutton.className = "disabled";
		slideout('right','styles',30);
	}
}

loadingpages = 0;

function loadComponent(url, targetid) {
	if (!turbo)
		return true;
	var req = new XMLHttpRequest(); // OOOOOH!
	var target = document.getElementById(targetid);
	if (!target) {
		alert("Could not find target '" + targetid + "'");
		return true;
	}

	var ac = "?";
	if (url.indexOf("?") != -1)
		ac = "&";

	req.open("GET",url + ac + "component=1",true);
	req.onreadystatechange = function() {
		switch (req.readyState) {
		case 1:
			if (loadingpages == 0)
				startSNBlink();
			loadingpages++;
			break;
		case 2:
			loadingpages--;
			if (loadingpages == 0)
				stopSNBlink();
			break;
		case 4:
			target.innerHTML = req.responseText;
			printConsole("Finished loading '" + url + "'");

			break;
		}
	}
	printConsole("Loading '" + url + "' to '" + targetid + "'");
	req.send(null);
	return false;
}

current_theme = '';

function setTheme(baseurl) {
	if (!turbo)
		return;
	if (baseurl != current_theme) {
		if (baseurl == '/')
			baseurl = '';
		current_theme = baseurl;
		loadComponent(baseurl + "/sidebar.php", "sidebar");
		cssblock = document.getElementById("cssblock");
		applyStyle(baseurl + "/default.css");
		printConsole("Set Theme to '" + baseurl + "'");
	}
}

var current_style;

function applyStyle(url) {
	cssblock = document.getElementById("cssblock");
	while (cssblock.firstChild)
		cssblock.removeChild(cssblock.firstChild);
	cssblock.appendChild(document.createTextNode("@import url(" + url + ");"));
	current_style = url;
}

function saveStyle() {
	document.cookie = "style=" + current_style;
}

/*
blinktimer = null;
blinkcount = 0.0;
blinkstring = "bytex64.net";
blinkchars = new Array();
blinkdiv = document.getElementById("sitename");

// Remove the text
blinkdiv.removeChild(blinkdiv.firstChild);
// And push in new span characters
for (n = 0; n < blinkstring.length; n++) {
	c = document.createElement("span");
	c.innerHTML = blinkstring[n];
	blinkchars.push(c);
	blinkdiv.appendChild(c);
}

function SNBlink() {
	for (n = 0; n < blinkstring.length; n++) {
		c = Math.floor((Math.sin(blinkcount + n) + 1.0) * 128);
		blinkchars[n].setAttribute("style","color: rgb(" + c + "," + c +",0)");
	}
	blinkcount += 0.5;
	blinktimer = setTimeout("SNBlink()", 100);
}

function startSNBlink() {
	SNBlink();
}

function stopSNBlink() {
	clearTimeout(blinktimer);
	for (n = 0; n < blinkchars.length; n++)
		blinkchars[n].removeAttribute("style");
}
*/

function show(id) {
	document.getElementById(id).style.removeProperty('display');
}

function hide(id) {
	document.getElementById(id).style.setProperty('display','none','');
}

function showV(id) {
	document.getElementById(id).style.setProperty('visibility','visible','');
}

function hideV(id) {
	document.getElementById(id).style.setProperty('visibility','hidden','');
}

function clearV(id) {
	document.getElementById(id).style.removeProperty('visibility');
}

function sidebar_out() {
	sidebar = document.getElementById("sidebar");
	content = document.getElementById("content");

	sidebar.style.setProperty('display','none','');
	content.style.setProperty('margin-left','0','');
	show('sidebarhider+');
}

function sidebar_in() {
	sidebar = document.getElementById("sidebar");
	content = document.getElementById("content");

	sidebar.style.removeProperty('display');
	content.style.setProperty('margin-left','205px','');
	hide('sidebarhider+');
}

var slide_elem = null;

function slidein(dir,id,steps) {
	if (!slide_elem) {
		slide_elem = document.getElementById(id);
		slide_elem.style.setProperty(dir,-steps + '%','');
		slide_elem.style.removeProperty('display');
		return slidein(dir,null,steps);
	} else {
		if (steps <= 0) {
			slide_elem.style.setProperty(dir,0,'');
			slide_elem = null;
			return;
		}
		slide_elem.style.setProperty(dir,-steps + '%','');
		setTimeout('slidein(\'' + dir + '\',null,' + (steps - 3) + ')',20);
	}
}

var out_max = 0;

function slideout(dir,id,steps) {
	if (!slide_elem) {
		slide_elem = document.getElementById(id);
		out_max = steps;
		return slideout(dir,null,steps);
	} else {
		if (steps <= 0) {
			slide_elem.style.setProperty('display','none','');
			slide_elem = null;
			out_max = 0;
			return;
		}
		slide_elem.style.setProperty(dir,(steps - out_max) + "%",'');
		setTimeout('slideout(\'' + dir + '\',null,' + (steps - 3) + ')',20);
	}
}
