function dreamfly_init () {
	var pagesWidget = document.getElementById('pages');
	if (pagesWidget) {
		for (var i = 0; i < pagesWidget.childNodes.length; i += 1) {
			var pagesList = pagesWidget.childNodes[i];
			if (pagesList.nodeName == 'UL') {
				growOneWordItems(pagesList.childNodes);
				break;
			}
		}
	}
	
	var sidebar = document.getElementById('sidebar');
	if (sidebar) {
		for (var i = 0; i < sidebar.childNodes.length; i += 1) {
			var widgetsList = sidebar.childNodes[i];
			if (widgetsList.nodeName == 'UL') {
				for (var j = 0; j < widgetsList.childNodes.length; j += 1) {
					var nextWidget = widgetsList.childNodes[j];
					if (nextWidget.nodeName == 'LI' && nextWidget.className.indexOf('widget_categories') != -1) {
						for (var k = 0; k < nextWidget.childNodes.length; k += 1) {
							var categoriesList = nextWidget.childNodes[k];
							if (categoriesList.nodeName == 'UL') {
								growOneWordItems(categoriesList.childNodes);
								break;
							}
						}
					}
				}
				break;
			}
		}
	}
}

function dreamfly_toggle_bw () {
	document.body.toggleClass('bw');

	var allCanvases = document.getElementsByTagName('canvas');
	for (var i = 0; i < allCanvases.length; i += 1) {
		if (allCanvases[i].className.indexOfWord('invertible') != -1) {
			Pixastic.process(allCanvases[i], 'invert');
		}
	}

	var allImages = document.getElementsByTagName('img');
	for (var i = 0; i < allImages.length; i += 1) {
		if (allImages[i].className.indexOfWord('invertible') != -1) {
			Pixastic.process(allImages[i], 'invert');
		}
	}
}

function growOneWordItems (nodes) {
	for (var j = 0; j < nodes.length; j += 1) {
		var nextNode = nodes[j];
		if (nextNode.nodeName == 'LI') {
			for (var k = 0; k < nextNode.childNodes.length; k += 1) {
				var nextLink = nextNode.childNodes[k];
				if (nextLink.nodeName == 'A') {
					if (nextLink.childNodes[0].nodeValue.indexOf(' ') == -1) {
						nextLink.style.fontSize = '18px';
						nextLink.style.paddingTop = '2px';
						nextLink.style.lineHeight = '30px';
					}
					break;
				}
			}
		}
	}
}

String.prototype.indexOfWord = function (name) {
	if (this == name) return 0;

	i = this.indexOf(name);
	if (i == 0 && this.charAt(name.length) == ' ') return 0;
	
	name = ' ' + name;
	i = this.indexOf(name);
	while (i != -1) {
		if (i + name.length == this.length) return i+1;
		else if (this.charAt(i + name.length) == ' ') return i+1;
		
		i = this.indexOf(name, i+1);
	}
	return -1;
}

Element.prototype.toggleClass = function (name) {
	if (this.className == '') this.className = name;
	else if (this.className == name) this.className = '';
	else {
		i = this.className.indexOfWord(name);
		if (i == -1) this.className += ' ' + name;
		else if (i == 0) this.className = this.className.substr(3);
		else this.className = this.className.substr(0, i-1) + this.className.substr(i+2);
	}
}
