User:Atelaes/viewSwitching.js

From Wiktionary, the free dictionary
Jump to navigation Jump to search

Note – after saving, you may have to bypass your browser’s cache to see the changes.

  • Mozilla / Firefox / Safari: hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (Command-R on a Macintosh);
  • Konqueror and Chrome: click Reload or press F5;
  • Opera: clear the cache in Tools → Preferences;
  • Internet Explorer: hold Ctrl while clicking Refresh, or press Ctrl-F5.

function viewSwitching(section) {
	var vsHiddens = section.getElementsByClassName('hideme');
	var vsShowns = section.getElementsByClassName('showme');
	var vsShow = 'more ▼';
	var vsHide = 'less ▲';
	var vsToggle = newNode('a', {href: 'javascript:(function(){})()'}, '');
	var vsButtonPlace = section.getElementsByClassName('putButtonHere')[0];
	vsButtonPlace.insertBefore(vsToggle);
	var vsCategory;
	var vsClasses = section.className.split(/\s+/);
	for (var i=0; i < vsClasses.length; i++) {
		var vsClass = vsClasses[i];
		if (vsClass.split('-')[0] == 'vsClass') {
			vsCategory = vsClass.split('-')[1];
			}	
		}
	vsCategory = (vsCategory || 'others');
	vsToggle.onclick = VisibilityToggles.register(vsCategory,
		function show() {
			vsToggle.innerHTML = vsHide;
			for (var i = 0; i < vsShowns.length; ++i) {
				vsShowns[i].style.display = 'none';
			}
			for (var i = 0; i < vsHiddens.length; ++i) {
				vsHiddens[i].style.display = 'block';
			}
		},
		function hide() {
			vsToggle.innerHTML = vsShow;
			for (var i = 0; i < vsShowns.length; ++i) {
				vsShowns[i].style.display = 'block';
			}
			for (var i = 0; i < vsHiddens.length; ++i) {
				vsHiddens[i].style.display = 'none';
			}
	});
}

jQuery(document).ready(function () {
	var vsSwitchers = document.getElementsByClassName('vsSwitcher');
	for (var i = 0; i < vsSwitchers.length; ++i) {
		viewSwitching(vsSwitchers[i]); 
	}
})