User:Segjin/monobook.js

From Wiki
Revision as of 06:26, 11 December 2005 by Segjin (talk | contribs)
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
var hashTable = new Object();

function setCookie(name, value, expires, path, domain, secure) {
	document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "");
}

function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);

	if (begin == -1) {
		begin = dc.indexOf(prefix);

		if (begin != 0) return null;
	} else {
		begin += 2;
	}

	var end = document.cookie.indexOf(";", begin);

	if (end == -1) {
		end = dc.length;
	}

	return unescape(dc.substring(begin + prefix.length, end));
}

function deleteCookie(name, path, domain) {
	if (getCookie(name)) {
		document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "; expires=Thu, 01-Jan-7000:00:01 GMT";
	}
}

function toggleSearch() {
	var objSearch = document.getElementById("p-search");
	var header = objSearch.getElementsByTagName("h5")[0];
	var div = objSearch.getElementsByTagName("div")[0];
	var indicator;

	if (div.style.display == "none") {
		div.style.display = "block";
		indicator = "hide";
	} else {
		div.style.display = "none";
		indicator = "show";
	}

	setSearchIndicator(indicator);
}

function setSearchIndicator(indicator) {
	var navLink = document.getElementById("searchToggler");

	if (navLink) {
		navLink.innerHTML = indicator;
	} else {
		var objSearch = document.getElementById("p-search");
		var header = objSearch.getElementsByTagName("h5")[0];
		header.innerHTML += ("&nbsp;<span id='toggleSearch'>[<a href='javascript:toggleSearch();'><span id='searchToggler'>" + indicator + "</span></a>]</span>");
	}

	setCookie("searchIndicator", indicator);
}

function GetText(obj) {

	if (obj.title) 
		return obj.title;
	else if (obj.alt) 
		return obj.alt; 
	else if (obj.innerText) 
		return obj.innerText; 
	else if (obj.textContent) 
		return obj.textContent
	else 
		return obj.innerHTML;
}

function ChildCount(obj) {
	var count = 0;

	if (obj.children) {
		count = obj.children.length;
	} else if (obj.childNodes) {
		for (var i = 0; i < obj.childNodes.length; i++) {
			if (obj.childNodes[i].nodeType == 1) {
				count++;
			}
		}
	}

	return count;
}

function SetupSearch() {
	toggleSearch()
}

function MoveFooter() {
	var footer = document.getElementById('footer');
	var content = document.getElementById('column-content');
	
	footer.parentNode.removeChild(footer);
	content.appendChild(footer);
}

function MoveActions() {
	var contents = document.getElementById('column-content');
	var tabs = document.getElementById('p-cactions');
	
	tabs.parentNode.removeChild(tabs);
	contents.insertBefore(tabs, contents.firstChild);
}

function MoveLogo() {
	var logo = document.getElementById('p-logo');
	var content = document.getElementsByTagName('BODY')[0];
	
	logo.parentNode.removeChild(logo);
	content.insertBefore(logo, content.firstChild);
}

function AddBottomImage() {
	var footer = document.getElementById('globalWrapper');
	var footerImage = document.getElementById('footerImage');

	if (!footerImage) {
		footer.innerHTML += "<img id='footerImage' src='/images/land2.jpg' width='799' height='144' />";
	}
}

function ModifyCactions() {
	var div = document.getElementById('p-cactions');
	var li = div.getElementsByTagName('li');
	var spacer = "<img src='/images/star_spacer.gif' width='30' height='20' border='0'>";

	if (li) {
		if (li.length) {
			var i;
			for (i = 0; i < (li.length - 1); i++) {
				li[i].innerHTML = li[i].innerHTML + spacer;
			}
		}
	}
}

function MangleImages() {
	var images = document.getElementsByTagName('IMG');

	if (images) {
		if (images.length) {
			for (var i = 0; i < images.length; i++) {
				MangleImage(images[i]);
			}
		} else {
			MangleImage(images);
		}
	}
}

function MangleImage(image) {
	if (image) {
		if (image.alt && (image.alt.length > 0) && (!image.title || image.title.length == 0)) {
			image.title = image.alt;
		}
	}
}

function MangleLinks() {
	var links = document.getElementsByTagName('A');

	if (links) {
		if (links.length) {
			for (var i = 0; i < links.length; i++) {
				MangleLink(links[i]);
			}
		} else {
			MangleLink(links);
		}
	}
}

function MangleLink(link) {
	var statusText = "";

	if (link) {
		//link.className = "link"; 
		link.onmouseover = function() {
			hashTable[link] = new Array(link.style.color);
			link.style.color = '#FFFF99';

			if (ChildCount(link) == 0) {
				statusText = link.title = GetText(link);
			}

			window.status = statusText;
			return true;
		};

		link.onmouseout = function() {
			if (hashTable[link] && hashTable[link].length && hashTable[link].length > 0) {
				link.style.color = hashTable[link][0];
				hashTable[link] = null;
			}

			window.status = '';
			return true;
		};
	}
}

function MoveElement(elem, parent, before) { 
	if (before == null) {
		before = parent.firstChild; 
	} 
	elem.parentNode.removeChild(elem);
	parent.insertBefore(elem, before);
}

function MoveElements() { 
	var global = document.getElementById('globalWrapper'); 
	var logo = document.getElementById('p-logo'); 
	var columnContent = document.getElementById('column-content'); 
	var columnOne = document.getElementById('column-one'); 
	var actions = document.getElementById('p-cactions'); 
	var footer = document.getElementById('footer');
	
	var table;
	var table2;
	
	var row;
	var cell;
	
	// --------------------------
	// Table 2
	// --------------------------
	table2 = document.createElement('table');
	table2.setAttribute('id', 'table-content');
	table2.setAttribute('width', '100%');
	table2.appendChild(document.createElement('tbody'));
	table2.tBodies[0].appendChild(document.createElement('tr'));
	
	// Row 2, Cell 0
	cell = document.createElement('td');
	cell.setAttribute('id', 'cell-column-one');
	cell.setAttribute('valign', 'top');
	cell.setAttribute('width', '190');
	table2.tBodies[0].rows[0].appendChild(cell);
	MoveElement(columnOne, cell, null);
	
	// Row 2, Cell 1
	cell = document.createElement('td');
	cell.setAttribute('id', 'cell-column-content');
	cell.setAttribute('width', '99%');
	cell.setAttribute('valign', 'top');
	cell.setAttribute('align', 'left');
	table2.tBodies[0].rows[0].appendChild(cell);
	MoveElement(columnContent, cell, null);
	
	
	// --------------------------
	// Table 1
	// --------------------------	
	table = document.createElement('table');
	table.setAttribute('id', 'table-layout');
	table.setAttribute('width', '100%');	
	table.appendChild(document.createElement('tbody'));
	
	for (var i = 0; i < 5; i++)
		table.tBodies[0].appendChild(document.createElement('tr'));
	
	// Row 0, Cell 0
	cell = document.createElement('td');
	cell.setAttribute('id', 'cell-logo');
	cell.setAttribute('width', '100%');
	cell.setAttribute('valign', 'top');
	table.tBodies[0].rows[0].appendChild(cell);
	MoveElement(logo, cell, null);
	
	// Row 1, Cell 0
	cell = document.createElement('td');
	cell.setAttribute('id', 'cell-actions');
	cell.setAttribute('width', '100%');
	cell.setAttribute('valign', 'top');
	table.tBodies[0].rows[1].appendChild(cell);
	MoveElement(actions, cell, null);
	
	// Row 2, Cell 0
	cell = document.createElement('td');
	cell.setAttribute('id', 'cell-innertable');
	cell.setAttribute('width', '100%');
	cell.setAttribute('valign', 'top');
	cell.setAttribute('align', 'left');
	table.tBodies[0].rows[2].appendChild(cell);
	cell.appendChild(table2);
	
	// Row 3, Cell 0
	cell = document.createElement('td');
	cell.setAttribute('id', 'cell-footer');
	cell.setAttribute('width', '100%');
	cell.setAttribute('valign', 'top');
	table.tBodies[0].rows[3].appendChild(cell);
	MoveElement(footer, cell, null);
	
	// Row 4, Cell 0
	cell = document.createElement('td');
	cell.setAttribute('id', 'cell-footer-image');
	cell.setAttribute('width', '100%');
	cell.setAttribute('valign', 'top');
	table.tBodies[0].rows[4].appendChild(cell);
	cell.innerHTML = "<img id='footerImage' src='/images/land2.jpg' width='799' height='144' />";
		
	global.insertBefore(table, global.firstChild);
}

function PerformLoad() { 
	MoveElements(); 
	ModifyCactions();
	SetupSearch();
	MangleLinks();
	MangleImages();
}

if (window.addEventListener) { 
	window.addEventListener("load", PerformLoad, false);
} else if (window.attachEvent) { 
	window.attachEvent("onload", PerformLoad);
}