function getXML(query) {
	if (window.XMLHttpRequest)
		var req = new XMLHttpRequest();
	else if (window.ActiveXObject)
		var req = new ActiveXObject('Microsoft.XMLHTTP');
	req.onreadystatechange = function() {
		if (req.readyState == 4 && req.status == 200 && req.responseXML) {
			var nodes = req.responseXML.firstChild.childNodes;
			var n = nodes.length;
			// alert(n);
		    for (i = 0; i < n; i++) {
		    	/*
		    	if (nodes[i].nodeName != 'news' && nodes[i].nodeName != 'banner')
					alert(nodes[i].nodeName + ' = ' + nodes[i].firstChild.data.substr(0,80));
				*/
				if (nodes[i].nodeName == 'startNews')
					startNews();
				else if (nodes[i].nodeName == 'loadContent')
					loadContent(nodes[i].firstChild.data);
				else if (nodes[i].nodeName == 'loadBook')
					loadBook(nodes[i].firstChild.data);
				else if (nodes[i].nodeName == 'loadSticker')
					loadSticker();
				else if (nodes[i].nodeName == 'loadSubscribe')
					loadSubscribe(nodes[i].firstChild.data);
				else if (nodes[i].nodeName == 'loadRequest')
					loadRequest(nodes[i].firstChild.data);
				else if (nodes[i].nodeName == 'loadID')
					loadID(nodes[i].firstChild.data);
				else if (nodes[i].nodeName == 'loadFindBox')
					loadFindBox(nodes[i].firstChild.data);
				else if (nodes[i].nodeName == 'openFindButton')
					openFindButton();
				else if (nodes[i].nodeName == 'find')
					document.getElementById('find').value = nodes[i].firstChild.data;
				else if (nodes[i].nodeName == 'sort')
					document.getElementById('sort').value = nodes[i].firstChild.data;
				else if (nodes[i].nodeName == 'offset')
					document.getElementById('offset').value = nodes[i].firstChild.data;
				else if (nodes[i].nodeName == 'bookPref')
					document.getElementById('bookPref').selectedIndex = nodes[i].firstChild.data;
				else if (nodes[i].nodeName == 'textPref')
					document.getElementById('textPref').selectedIndex = nodes[i].firstChild.data;
				else if (nodes[i].nodeName == 'warnPref')
					document.getElementById('warnPref').selectedIndex = nodes[i].firstChild.data;
				else if (nodes[i].nodeName == 'newsPref')
					document.getElementById('newsPref').selectedIndex = nodes[i].firstChild.data;
				else if (nodes[i].nodeName == 'visible')
					document.getElementById(nodes[i].firstChild.data).style.visibility = 'visible';
				else if (nodes[i].nodeName == 'hidden')
					document.getElementById(nodes[i].firstChild.data).style.visibility = 'hidden';
				else
					document.getElementById(nodes[i].nodeName).innerHTML = nodes[i].firstChild.data;
			}
			// document.getElementById('status').innerHTML = '';
		}
	}
	// document.getElementById('status').innerHTML = 'loading... [<a href="xml.php?' + query + '">debug</a>]';
	req.open('GET', 'xml.php?' + query + '&screen=' + getScreen());
	req.send(null);
}

function loadPage() {
	// alert('parent.frames[0].location.href = ' + parent.frames[0].location.href + ' top.location.search = ' + top.location.search + ' document.URL = ' + document.URL + ' document.referrer = ' + document.referrer);
	if (document.referrer.substr(0, 16) != 'http://textz.com' && document.referrer.substr(0, 16) != 'http://textz.org' && document.referrer.substr(0,16) != 'http://localhost')
		top.location.href = 'http://textz.com';
	else {
		var split = document.URL.split('?');
		var n = split.length;
		if (n == 1)
			var query = 0;
		else {
			split.shift();
			var query = split.join('?');
			if (!query)
				var ref = true;
			else if (isURL(query)) {
				var url = query;
				/*
				getXML('action=referral&url=' + url);
				top.location.href = url;
				*/
				if (document.referrer.substr(0, 16) == 'http://textz.com')
					getXML('action=referrer&url=' + url);
				else {
					getXML('action=referral&url=' + url);
					top.location.href = url;
				}
				var ref = true;
			}
		}
		if (!ref) {
			document.getElementById('status').innerHTML = 'loading...';
			// load Control, Control starts News and loads FindBox, FindBox loads Content, Content loads Book or ID
			loadControl(query);
			loadLogo();
			loadButton();
			startBanner();
			loadMenu();
			loadMore();
			loadFindButton();
			loadFindBoxHelp();
			loadControlHelp();
			loadConnect();
			loadConnectHelp();
			loadContact();
			loadContactHelp();
			loadPress();
			loadCases();
			loadStore();
			loadFeeds();
			loadSubscribe();
			loadSubscribeHelp();
			loadWarning();
		}
	}
}

function content() {
	loadContent();
}

function connect() {
	openConnect();
}

function control() {
	openControl();
}

function concept() {
	loadConcept();
}

function context() {
	loadContext();
}

function contact() {
	openContact();
}

function press() {
	openPress();
}

function cases() {
	openCases();
}

function store() {
	openStore();
}

function feeds() {
	openFeeds();
}

function newsletter() {
	openSubscribe();
}

function loadNews() {
	newsMode = document.getElementById('newsPref').value;
	getXML('action=loadNews&mode=' + newsMode);
}

function startNews() {
	loadNews();
	newsInterval = window.setInterval('loadNews()', 10000);
}

function stopNews() {
	window.clearInterval(newsInterval);
	newsInterval = false;
	document.getElementById('news').innerHTML = '';
}

function loadDialog() {
	document.getElementById('info').style.visibility = 'hidden';
	document.getElementById('dialog').style.visibility = 'visible';
}

function loadInfo() {
	document.getElementById('dialog').style.visibility = 'hidden';
	document.getElementById('info').style.visibility = 'visible';
}

function loadLogo() {
	getXML('action=loadLogo');
}

function loadButton() {
	getXML('action=loadButton');
}

function loadBanner() {
	getXML('action=loadBanner');
}

function startBanner() {
	loadBanner();
	bannerInterval = window.setInterval('loadBanner()', 15000);
}

function loadMenu() {
	getXML('action=loadMenu');
}

function loadMore() {
	getXML('action=loadMore');
}

function more() {
	document.getElementById('menu').style.visibility = 'hidden';
	document.getElementById('more').style.visibility = 'visible';
}

function less() {
	document.getElementById('more').style.visibility = 'hidden';
	document.getElementById('menu').style.visibility = 'visible';
}

function loadContent(query) {
	// does this get called twice when loading??
	var mode = document.getElementById('bookPref').value;
	var find = document.getElementById('find').value;
	var sort = document.getElementById('sort').value;
	if (!query && query != '0')
		query = 0;
	else {
		var offset = query;
		if (!isHash(offset))
			document.getElementById('offset').value = offset;
	}
	if (!isHash(offset)) {
		if (mode == 'shelf')
			var offset = document.getElementById('offset').value;
		else
			var offset = 0;
	}
	// alert(query+' ('+typeof(query)+')');
	/*
		if (offset == '' && document.getElementById('offset'))
			offset = document.getElementById('offset').value;
	*/
	// getXML('action=clearContent');
	document.getElementById('concept').style.visibility = 'hidden';
	document.getElementById('concept').style.overflow = 'hidden';
	document.getElementById('context').style.visibility = 'hidden';
	document.getElementById('press').style.visibility = 'hidden';
	if (mode == 'shelf') {
		document.getElementById('stack').style.visibility = 'hidden';
		document.getElementById('stack').style.overflow = 'hidden';
	}
	else if (mode == 'stack') {
		document.getElementById('shelf').style.visibility = 'hidden';
		document.getElementById('stack').style.overflow = 'hidden';
	}
	document.getElementById(mode).innerHTML = '';
	document.getElementById(mode).style.visibility = 'visible';
	document.getElementById(mode).style.overflow = 'scroll';

	if (document.getElementById('book').style.visibility == 'visible')
		closeBook();
	if (document.getElementById('warning').style.visibility == 'visible') {
		document.getElementById('warning').style.visibility = 'hidden';
		closeBook();
	}

	document.getElementById('status').innerHTML = 'loading...';
	// document.getElementById('status').innerHTML = '<a href="xml.php?action=loadContent&mode=' + mode + '&find=' + find + '&sort=' + sort + '&offset=' + offset + '">loading</a>...';
	// document.getElementById('status').innerHTML = 'loading...' + ' [<a href="xml.php?action=loadContent&find=' + find + '&sort=' + sort + '&offset=' + offset + '">debug</a>]';
	// document.getElementById('content').style.background = 'url(png/background.lightgrey.png)';
	getXML('action=loadContent&mode=' + mode + '&find=' + find + '&sort=' + sort + '&offset=' + offset);
	document.getElementById('disclaimer').style.visibility = 'hidden';
	document.getElementById('right').style.visibility = 'visible';
	document.getElementById('bottom').style.visibility = 'visible';
	document.getElementById(mode).style.overflow = 'scroll';
	changeBackground('semitransparent');
}

function loadFindButton() {
	getXML('action=loadFindButton');
}

function openFindButton() {
	// alert(document.getElementById('findBox') + '!!!' + document.getElementById('findBox').style.visibility + '!!!');
	if (document.getElementById('findBox').style.visibility != 'visible')
		document.getElementById('findButton').style.visibility = 'visible';
}

function loadFindBox(query) {
	getXML('action=loadFindBox&query=' + query);
}

function loadFindBoxHelp() {
	getXML('action=loadFindBoxHelp');
}

function openFindBoxHelp() {
	document.getElementById('openFindBoxHelpSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('findBox').style.visibility = 'hidden';
	document.getElementById('findBoxHelp').style.visibility = 'visible';
}

function closeFindBoxHelp() {
	document.getElementById('closeFindBoxHelpSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('findBoxHelp').style.visibility = 'hidden';
	document.getElementById('findBox').style.visibility = 'visible';
}

function loadConnect() {
	getXML('action=loadConnect');
}

function loadConnectHelp() {
	getXML('action=loadConnectHelp');
}

function openConnectHelp() {
	document.getElementById('connect').style.visibility = 'hidden';
	document.getElementById('connectHelp').style.visibility = 'visible';
}

function loadControl(query) {
	getXML('action=loadControl&query=' + query);
}

function submitControl() {
	var bookPref = document.getElementById('bookPref').value;
	var textPref = document.getElementById('textPref').value;
	var warnPref = document.getElementById('warnPref').value;
	var newsPref = document.getElementById('newsPref').value;
	if (bookPref == 'shelf' && document.getElementById('shelf').style.visibility == 'hidden')
		loadContent(0);
	if (bookPref == 'stack' && document.getElementById('stack').style.visibility == 'hidden')
		loadContent(0);
	if (newsPref != 'off') {
		if (!newsInterval)
			startNews();
		else if (newsPref != newsMode)
			loadNews();
	}
	if (newsPref == 'off' && newsInterval)
		stopNews();
	saveControl();
}

function saveControl() {
	var bookPref = document.getElementById('bookPref').value;
	var textPref = document.getElementById('textPref').value;
	var warnPref = document.getElementById('warnPref').value;
	var newsPref = document.getElementById('newsPref').value;
	getXML('action=saveControl&book=' + bookPref + '&text=' + textPref + '&warn=' + warnPref + '&news=' + newsPref);
}

function loadControlHelp() {
	getXML('action=loadControlHelp');
}

function openControlHelp() {
	document.getElementById('openControlHelpSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('control').style.visibility = 'hidden';
	document.getElementById('controlHelp').style.visibility = 'visible';
}

function closeControlHelp() {
	document.getElementById('closeControlHelpSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('controlHelp').style.visibility = 'hidden';
	document.getElementById('control').style.visibility = 'visible';
}

function loadConcept() {
	getXML('action=loadConcept');
	changeBackground('quartertransparent');
	document.getElementById('shelf').style.visibility = 'hidden';
	document.getElementById('shelf').style.overflow = 'hidden';
	document.getElementById('stack').style.visibility = 'hidden';
	document.getElementById('stack').style.overflow = 'hidden';
	document.getElementById('findButton').style.visibility = 'hidden';
	document.getElementById('findBox').style.visibility = 'hidden';
	document.getElementById('findBoxHelp').style.visibility = 'hidden';
	document.getElementById('context').style.visibility = 'hidden';
	document.getElementById('concept').style.visibility = 'visible';
	document.getElementById('concept').style.overflow = 'scroll';
	document.getElementById('press').style.visibility = 'hidden';
	document.getElementById('right').style.visibility = 'visible';
	document.getElementById('bottom').style.visibility = 'visible';
}

function loadContext() {
	getXML('action=loadContext');
	changeBackground('quartertransparent');
	document.getElementById('shelf').style.visibility = 'hidden';
	document.getElementById('shelf').style.overflow = 'hidden';
	document.getElementById('stack').style.visibility = 'hidden';
	document.getElementById('stack').style.overflow = 'hidden';
	document.getElementById('findButton').style.visibility = 'hidden';
	document.getElementById('findBox').style.visibility = 'hidden';
	document.getElementById('findBoxHelp').style.visibility = 'hidden';
	document.getElementById('concept').style.visibility = 'hidden';
	document.getElementById('concept').style.overflow = 'hidden';
	document.getElementById('context').style.visibility = 'visible';
	document.getElementById('press').style.visibility = 'hidden';
	document.getElementById('right').style.visibility = 'visible';
	document.getElementById('bottom').style.visibility = 'visible';
}

function loadContact() {
	getXML('action=loadContact');
}

function loadContactHelp() {
	getXML('action=loadContactHelp');
}

function openContactHelp() {
	document.getElementById('openContactHelpSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('contact').style.visibility = 'hidden';
	document.getElementById('contactHelp').style.visibility = 'visible';
}

function closeContactHelp() {
	document.getElementById('closeContactHelpSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('contactHelp').style.visibility = 'hidden';
	document.getElementById('contact').style.visibility = 'visible';
}

// rename to openBook (OR NOT)
function loadBook(id) {
	closeBoxes('book');
	document.getElementById('disclaimer').innerHTML = 'loading...';
	document.getElementById('disclaimer').style.visibility = 'visible';
	if (document.getElementById('warnPref').value == 'on')
		var mode = 'readBefore';
	else
		var mode = 'lookInside';
	getXML('action=loadBook&id=' + id + '&mode=' + mode);
	document.getElementById('findButton').style.visibility = 'hidden';
	if (document.getElementById('previous'))
		document.getElementById('previous').style.visibility = 'hidden';
	if (document.getElementById('next'))
		document.getElementById('next').style.visibility = 'hidden';
	document.getElementById('findBox').style.visibility = 'hidden';
	document.getElementById('status').style.visibility = 'hidden';
	document.getElementById(document.getElementById('bookPref').value + id).style.visibility = 'hidden';
	document.getElementById('book').style.visibility = 'visible';
	// document.getElementById('bottom').style.visibility = 'visible';
	// document.getElementById('content').style.overflow = 'hidden';
}

function closeBook() {
	// before closing (via closeBoxes) make sure it is open (fully loaded)
	if (document.getElementById('bookID')) {
		var id = document.getElementById('bookID').value;
		document.getElementById('book').innerHTML = '';
		document.getElementById('book').style.visibility = 'hidden';
		document.getElementById(document.getElementById('bookPref').value + id).style.visibility = 'visible';
	}
	document.getElementById('disclaimer').style.visibility = 'hidden';
	document.getElementById('status').style.visibility = 'visible';
	// document.getElementById('bottom').style.visibility = 'hidden';
	// document.getElementById('content').style.overflow = 'scroll';
	document.getElementById('findButton').style.visibility = 'visible';
	document.getElementById('previous').style.visibility = 'visible';
	document.getElementById('next').style.visibility = 'visible';
}

function loadSticker() {
	var id = document.getElementById('bookID').value;
	var mode = document.getElementById('bookMode').value;
	getXML('action=loadSticker&id=' + id + '&mode=' + mode);
}

function loadWarning() {
	getXML('action=loadWarning');
}

function cancelWarning() {
	var id = document.getElementById('bookID').value;
	document.getElementById('warnPref').value = 'on';
	if (document.getElementById('changeWarning').checked);
		document.getElementById('changeWarning').checked = false;
	document.getElementById('warning').style.visibility = 'hidden';
	document.getElementById(document.getElementById('bookPref').value + id).style.visibility = 'hidden';
	loadSticker();
}

function submitWarning() {
	var id = document.getElementById('bookID').value;
	document.getElementById('warning').style.visibility = 'hidden';
	document.getElementById(document.getElementById('bookPref').value + id).style.visibility = 'hidden';
	document.getElementById('bookMode').value = 'lookInside';
	loadSticker();
}

function changeWarning() {
	if (document.getElementById('warnPref').value == 'on')
		document.getElementById('warnPref').value = 'off';
	else
		document.getElementById('warnPref').value = 'on';
	saveControl();
}

function checkWarning() {
	if (!document.getElementById('changeWarning').checked)
		document.getElementById('changeWarning').checked = 'checked';
	else
		document.getElementById('changeWarning').checked = false;
	changeWarning();
}

function loadID(id) {
	getXML('action=loadID&id=' + id);
}

function mouseOver() {
	// getXML('action=mouseOver');
	document.getElementById('overlay').style.visibility = 'visible';
	// alert('OVER');
}

function mouseOut() {
	document.getElementById('overlay').style.visibility = 'hidden';
	// alert('OUT');
}

function mouseOverButton(button) {
	document.getElementById(button + 'Symbol').style.color = 'rgb(192,192,192)';
}

function mouseOutButton(button) {
	document.getElementById(button + 'Symbol').style.color = 'rgb(255,255,255)';
}

function openControl() {
	closeBoxes('control');
	document.getElementById('control').style.visibility = 'visible';
}

function closeControl() {
	document.getElementById('closeControlSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('control').style.visibility = 'hidden';
}

function openConnect() {
	closeBoxes('connect');
	document.getElementById('connect').style.visibility = 'visible';
}

function submitConnect() {
	document.getElementById('connectMessage').innerHTML = '<br/>';
	getXML('action=submitConnect');
}

function closeConnect() {
	document.getElementById('closeConnectSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('connect').style.visibility = 'hidden';
	document.getElementById('connectMessage').innerHTML = 'please login';
	document.getElementById('username').value = '';
	document.getElementById('password').value = '';
}

function loadContact() {
	getXML('action=loadContact');
}

function openContact() {
	closeBoxes('contact');
	document.getElementById('contact').style.visibility = 'visible';
	document.getElementById('submitContact').style.visibility = 'visible';
}

function closeContact() {
	document.getElementById('contact').style.visibility = 'hidden';
	document.getElementById('closeContactSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('contactMessage').innerHTML = 'please leave a message';
	document.getElementById('mail').value = '';
	document.getElementById('subject').value = '';
	document.getElementById('message').value = '';
	document.getElementById('submitContact').style.visibility = 'hidden';
}

function submitContact() {
	document.getElementById('contactMessage').innerHTML = '';
	document.getElementById('submitContactSymbol').style.color = 'rgb(255,255,255)';
	getXML('action=submitContact&mail=' + document.getElementById('mail').value + '&subject=' + document.getElementById('subject').value + '&message=' + document.getElementById('message').value);
}

function openFindBox() {
	closeBoxes('findBox');
	document.getElementById('openFindBoxSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('findButton').style.visibility = 'hidden';
	document.getElementById('findBox').style.visibility = 'visible';
}

function closeFindBox() {
	document.getElementById('closeFindBoxSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('findBox').style.visibility = 'hidden';
	document.getElementById('findButton').style.visibility = 'visible';
}

function openFindHelp() {
	document.getElementById('findBox').style.visibility = 'hidden';
	document.getElementById('findHelp').style.visibility = 'visible';
}

function closeFindHelp() {
	document.getElementById('findHelp').style.visibility = 'hidden';
	document.getElementById('findBox').style.visibility = 'visible';
}

function previous() {
	document.getElementById('offset').value = parseInt(document.getElementById('offset').value) - 100;
	loadContent();
}

function next() {
	document.getElementById('offset').value = parseInt(document.getElementById('offset').value) + 100;
	loadContent();
}

function loadPress() {
	getXML('action=loadPress');
}

function openPress() {
	changeBackground('quartertransparent');
	document.getElementById('shelf').style.visibility = 'hidden';
	document.getElementById('shelf').style.overflow = 'hidden';
	document.getElementById('stack').style.visibility = 'hidden';
	document.getElementById('stack').style.overflow = 'hidden';
	document.getElementById('findButton').style.visibility = 'hidden';
	document.getElementById('findBox').style.visibility = 'hidden';
	document.getElementById('findBoxHelp').style.visibility = 'hidden';
	document.getElementById('concept').style.visibility = 'hidden';
	document.getElementById('concept').style.overflow = 'hidden';
	document.getElementById('context').style.visibility = 'hidden';
	document.getElementById('press').style.visibility = 'visible';
	document.getElementById('right').style.visibility = 'visible';
	document.getElementById('bottom').style.visibility = 'visible';
	document.getElementById('status').innerHTML = '';
}

function loadCases() {
	getXML('action=loadCases');
}

function openCases() {
	// document.getElementById('closeCasesSymbol').style.color = 'rgb(255,255,255)';
	loadCases();
	closeBoxes('cases');
	document.getElementById('cases').style.visibility = 'visible';
}

function closeCases() {
	document.getElementById('cases').style.visibility = 'hidden';
}

function loadStore() {
	getXML('action=loadStore');
}

function openStore() {
	closeBoxes('store');
	document.getElementById('closeStoreSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('store').style.visibility = 'visible';
}

function closeStore() {
	document.getElementById('store').style.visibility = 'hidden';
}

function loadFeeds() {
	getXML('action=loadFeeds');
}

function openFeeds() {
	closeBoxes('feeds');	
	document.getElementById('closeFeedsSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('feeds').style.visibility = 'visible';
}

function closeFeeds() {
	document.getElementById('feeds').style.visibility = 'hidden';
}

function loadSubscribe(mail) {
	if (!mail)
		mail = '';
	getXML('action=loadSubscribe&mail=' + mail);
}

function openSubscribe() {
	closeBoxes('subscribe');
	document.getElementById('closeSubscribeSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('subscribe').style.visibility = 'visible';
}

function closeSubscribe() {
	document.getElementById('subscribe').style.visibility = 'hidden';
}

function submitSubscribe(mode, mail) {
	document.getElementById('subscribeMessage').innerHTML = '<br/><br/>';
	getXML('action=submitSubscribe&mode=' + mode + '&mail=' + mail);
}

function loadSubscribeHelp() {
	getXML('action=loadSubscribeHelp');
}

function openSubscribeHelp() {
	if (document.getElementById('shelf').style.visibility == 'visible' || document.getElementById('stack').style.visibility == 'visible')
		document.getElementById('subscribeHelp').style.background = "url('png/foreground.semitransparent.png')";
	else
		document.getElementById('subscribeHelp').style.background = "url('png/foreground.quartertransparent.png')";

	document.getElementById('subscribe').style.visibility = 'hidden';
	document.getElementById('subscribeHelp').style.visibility = 'visible';
}

function closeSubscribeHelp() {
	document.getElementById('subscribeHelp').style.visibility = 'hidden';
	document.getElementById('subscribe').style.visibility = 'visible';
}

function loadRequest(id) {
	// closeBoxes('request');
	getXML('action=loadRequest&id=' + id);
}

function closeRequest() {
	if (document.getElementById('request').style.visibility == 'visible') {
		document.getElementById('closeRequestSymbol').style.color = 'rgb(255,255,255)';
		document.getElementById('request').style.visibility = 'hidden';
	}
}

function closeBoxes(box) {
	if (box != 'connect')
		closeConnect();
	document.getElementById('connectHelp').style.visibility = 'hidden';
	if (box != 'control')
		closeControl();
	document.getElementById('controlHelp').style.visibility = 'hidden';
	if (box != 'contact')
		closeContact();
	document.getElementById('contactHelp').style.visibility = 'hidden';
	if (box != 'findBox' && document.getElementById('findBox').style.visibility == 'visible')
		closeFindBox();
	document.getElementById('findBoxHelp').style.visibility = 'hidden';
	if (box != 'cases')
		closeCases();
	if (box != 'store')
		closeStore();
	if (box != 'feeds')
		closeFeeds();
	if (box != 'subscribe')
		closeSubscribe();
	document.getElementById('subscribeHelp').style.visibility = 'hidden';
	if (box != 'request')
		closeRequest();
	if (box != 'book' && document.getElementById('book').style.visibility == 'visible')
		closeBook();
	if (document.getElementById('warning').style.visibility == 'visible') {
		document.getElementById('warning').style.visibility = 'hidden';
		closeBook();
	}
	// document.getElementById('info').style.visibility = 'hidden';
}

function changeBackground(background) {
	document.getElementById('connect').style.background = "url('png/foreground." + background + ".png')";
	document.getElementById('control').style.background = "url('png/foreground." + background + ".png')";
	document.getElementById('controlHelp').style.background = "url('png/foreground." + background + ".png')";
	document.getElementById('contact').style.background = "url('png/foreground." + background + ".png')";
	document.getElementById('contactHelp').style.background = "url('png/foreground." + background + ".png')";
	document.getElementById('cases').style.background = "url('png/foreground." + background + ".png')";
	document.getElementById('store').style.background = "url('png/foreground." + background + ".png')";
	document.getElementById('subscribe').style.background = "url('png/foreground." + background + ".png')";
	document.getElementById('subscribeHelp').style.background = "url('png/foreground." + background + ".png')";
}

function dontPanic() {
	window.open('http://piratecinema.org/depng/depng.php?' + 'http://textz.org/png/dontPanic.png', 'depng', 'left=' + ((screen.width - 336) / 2) + ',top=' + ((screen.height - 480) / 2) + ',width=' + 336 + ',height=' + 480 + ',menubar=no,location=no,toolbar=no,status=no,resizeable=yes');
}

function readBefore() {
	var id = document.getElementById('bookID').value;
	document.getElementById('book').style.visibility = 'hidden';
	document.getElementById(document.getElementById('bookPref').value + id).style.visibility = 'visible';
	document.getElementById('changeWarning').checked = false;
	document.getElementById('cancelWarningSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('submitWarningSymbol').style.color = 'rgb(255,255,255)';
	document.getElementById('warning').style.visibility = 'visible';
}

function lookInside(png) {
	if (document.getElementById('textPref').value == 'html' && document.getElementById('bookExtension').value == 'txt')
		window.open('http://rolux.net/txtReader/?http://rolux.net/depng/depng.php?' + png.replace("'", "%27"), 'txtReader', 'left=' + ((screen.width - 840) / 2) + ',top=' + ((screen.height - 646) / 2) + ',width=' + 840 + ',height=' + 646 + ',menubar=no,location=no,toolbar=no,status=no,resizeable=yes');
	else
		window.open('http://rolux.net/depng/depng.php?' + png.replace("'", "%27"), 'depng', 'left=' + ((screen.width - 336) / 2) + ',top=' + ((screen.height - 480) / 2) + ',width=' + 336 + ',height=' + 480 + ',menubar=no,location=no,toolbar=no,status=no,resizeable=yes');
}

function loadDocument(document) {
	if (document == 'walser/walser.php' || document == 'walser/walser.pl')
		document = document + '.txt';
	window.open('http://textz.org/index.html?http://textz.com/documents/' + document, 'document', 'left=' + ((screen.width - 800) / 2) + ',top=' + ((screen.height - 600) / 2) + ',width=' + 800 + ',height=' + 600 + ',menubar=yes,location=yes,toolbar=yes,status=yes,resizeable=yes');
	loadCases();
}

function textzFeed() {
	window.open('http://textz.org/index.html?http://textz.com/xml/textz.xml', 'feed', 'left=' + ((screen.width - 800) / 2) + ',top=' + ((screen.height - 600) / 2) + ',width=' + 800 + ',height=' + 600 + ',menubar=yes,location=yes,toolbar=yes,status=yes,resizeable=yes');
}

function newsFeed() {
	var language = document.getElementById('newsPref').value;
	if (language == 'off')
		language = 'english';
	window.open('http://textz.org/index.html?http://textz.com/xml/news.' + language + '.xml', 'feed', 'left=' + ((screen.width - 800) / 2) + ',top=' + ((screen.height - 600) / 2) + ',width=' + 800 + ',height=' + 600 + ',menubar=yes,location=yes,toolbar=yes,status=yes,resizeable=yes');
}

/*
function enterSite() {
	document.getElementById('dialog').style.visibility = 'hidden';
	document.getElementById('desktop').style.visibility = 'hidden';
	document.getElementById('logo').style.visibility = 'visible';
	document.getElementById('button').style.visibility = 'visible';
	document.getElementById('banner').style.visibility = 'visible';
	document.getElementById('menu').style.visibility = 'visible';
	document.getElementById('content').style.visibility = 'visible';
	document.getElementById('status').style.visibility = 'visible';
}

function leaveSite() {
	loadURL('http://amazon.com');
}

function loadURL(url) {
	getXML('action=loadURL&url=' + url);
	document.location.href = url;
}

function loadBlank() {
	// change the 50 later, when 'localhost/...' is removed
	getXML('action=loadPage&url=' + document.URL.substr(50));
}

function loadURL(url) {
	top.location.href = 'http://textz.org/?' + url;
}

*/

function getScreen() {
	return screen.width + 'x' + screen.height + 'x' + screen.colorDepth;
}

function isURL(string) {
	if (string.substr(0, 6) == 'ftp://')
		return true;
	if (string.substr(0, 7) == 'http://')
		return true;
	if (string.substr(0, 8) == 'https://')
		return true;
	return false;
}

function isHash(string) {
	string += '';
	if (string.length != 32)
		return false;
	var letter = '0123456789abcdef';
	for (i = 0; i < 32; i++) {
		var flag = false;
		for (j = 0; j < 16; j++) {
			if (string.charAt(i) == letter.charAt(j))
				flag = true;
		}
		if (!flag)
			return false;
	}
	return true;
}
