MediaWiki:Gadget-piitabdropdownmenu.js
From PinataIsland.info, the Viva Piñata wiki
Note: After saving, 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)
- Internet Explorer: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
/********************************************************************* ** ***WARNING: GLOBAL GADGET FILE*** ** ** any changes to this file will affect many users ** ** please discuss changes on the talk page or at ** ** [[Wikipedia talk:Gadget]] before editing ** ** (consider dropping the script author a note as well...) ** ** ** ********************************************************************** ** Script: Drop-down menus ** ** Version: 4.40g ** ** Author: Haza-w ** ** Documentation: [[User:Haza-w/Drop-down menus]] ** ** ** *********************************************************************/ // "Fail gracefully" if skin not supported switch (skin) { case 'modern': case 'monobook': // Global variables var _cactions = { menus: [], mouse: null, timer: [] }; // Find absolute position of element function findPos(eid,offset) { var obj = document.getElementById(eid), pos = [0,0]; do with (obj) { pos[0] += offsetLeft; pos[1] += offsetTop; } while (obj = obj.offsetParent); pos[0] += offset[0]; pos[1] += offset[1]; return pos; } // Create menu div element function createMenu(mid,html) { var menu = document.createElement('div'); with (menu) { id = mid; className = 'ca-menu'; style.display = 'none'; } menu.onmouseover = function () {showMenu(mid)}; menu.onmouseout = function () {hideMenu(mid)}; var elements = { ul: document.createElement('ul'), li: null, a: null, txt: null }; with (elements) { for (var i = 0; i < html.length; i++) if (html[i].length) { li = document.createElement('li'); li.id = html[i][0]; a = document.createElement('a'); a.href = html[i][2]; txt = document.createTextNode(html[i][1]); a.appendChild(txt); li.appendChild(a); ul.appendChild(li); } menu.appendChild(ul); } document.body.appendChild(menu); return mid; } // Create cactions LI tab function createTab(cid,mid,ltxt) { var elements = { li: document.createElement('li'), a: document.createElement('a'), txt: document.createTextNode(ltxt) }; with (elements) { li.id = cid; a.href = '#'; a.onmouseover = function () {showMenu(mid,findPos(cid,[-10,20]))}; a.onmouseout = function () {hideMenu(mid)}; a.appendChild(txt); li.appendChild(a); } return elements.li; } // CSS hide elements function hideElements(elements,conditionals) { if (typeof(conditionals) == 'undefined') { for (var i = 0; i < elements.length; i++) if (document.getElementById(elements[i])) document.getElementById(elements[i]).style.display = 'none'; } else for (var i = 0; i < elements.length; i++) if (document.getElementById(elements[i])) { document.getElementById(elements[i]).style.display = 'none'; if (conditionals[i]) document.getElementById(conditionals[i]).style.display = 'none'; } } // Show/hide menu functions function showMenu(mid,pos) { with (_cactions) { mouse = mid; if (pos) for (var i = 0; i < menus.length; i++) { if (timer[menus[i]]) { clearTimeout(timer[menus[i]]); timer[menus[i]] = null; } if (mid.replace(/-[^-]+$/,'') == menus[i]) continue; document.getElementById(menus[i]).style.display = 'none'; } if (!timer[mid]) with (document.getElementById(mid).style) { display = ''; if (pos) { left = pos[0]+'px'; top = pos[1]+'px'; } } else { clearTimeout(timer[mid]); timer[mid] = null; } } } function hideMenu(mid) { with (_cactions) { if (mid == mouse.replace(/-[^-]+$/,'')) timer[mid] = null; if (timer[mid]) { timer[mid] = null; document.getElementById(mid).style.display = 'none'; if (mid == mouse && mid.search(/opt-.*-/) != -1) document.getElementById(mid.replace(/-[^-]+$/,'')).style.display = 'none'; } else timer[mid] = setTimeout('hideMenu(\''+mid+'\');',400); } } // Delink element function removeLink(eid) { var element = document.getElementById(eid); if (!element.getElementsByTagName('a').length) return false; var a = element.getElementsByTagName('a')[0]; element.appendChild(a.removeChild(a.firstChild)); element.removeChild(a); element.className = 'ca-disabled'; } // Page options hook addOnloadHook(function () { if (!wgCanonicalSpecialPageName) { with (_cactions) { menus[menus.length] = createMenu('opt-piinav',Array( ['c-pii-home', 'Home >', wgScript+'?title=Main_Page'], ['c-pii-classic', 'Classic >', wgScript+'?title=Viva_Piñata:_Classic'], ['c-pii-tip', 'Trouble in Paradise >', wgScript+'?title=Viva_Piñata:_Trouble_in_Paradise'], ['c-pii-pp', 'Pocket Paradise >', wgScript+'?title=Viva_Piñata:_Pocket_Paradise'], ['c-pii-pa', 'Party Animals >', wgScript+'?title=Viva_Piñata:_Party_Animals'], ['c-pii-tv', 'Television series >', wgScript+'?title=Television_series'], ['c-pii-help', 'Help >', wgScript+'?title=Help:Contents'] )); menus[menus.length] = createMenu('opt-piinav-home',Array( ['c-pii-home-plants', 'Plants', wgScript+'?title=Plants'], ['c-pii-home-species', 'Species', wgScript+'?title=Species'], ['c-pii-home-achievements', 'Achievements', wgScript+'?title=Achievements'], ['c-pii-home-shops', 'Shops', wgScript+'?title=Shop'], ['c-pii-home-fertilizer', 'Fertilizing', wgScript+'?title=Fertilizer'], ['c-pii-home-tinker', 'Tinkering', wgScript+'?title=Transformation'], ['c-pii-home-popular', 'Popular articles', wgScript+'?title=Main_Page'] )); menus[menus.length] = createMenu('opt-piinav-tv',Array( ['c-pii-tv-episodes', 'Episode guide', wgScript+'?title=List_of_Viva_Piñata_episodes'], ['c-pii-tv-song', 'Theme song', wgScript+'?title=Theme_Song'], ['c-pii-tv-all', 'All articles', wgScript+'?title=Category:Television_Series'] )); menus[menus.length] = createMenu('opt-piinav-classic',Array( ['c-pii-classic-plants', 'Plants', wgScript+'?title=List_of_Viva_Piñata:_Classic_plants'], ['c-pii-classic-species', 'Species', wgScript+'?title=List_of_Viva_Piñata:_Classic_species'], ['c-pii-classic-popular', 'Popular articles', wgScript+'?title=Viva_Piñata:_Classic'], ['c-pii-classic-all', 'All articles', wgScript+'?title=Category:Classic'] )); menus[menus.length] = createMenu('opt-piinav-tip',Array( ['c-pii-tip-plants', 'Plants', wgScript+'?title=List_of_Viva_Piñata:_Trouble_in_Paradise_plants'], ['c-pii-tip-species', 'Species', wgScript+'?title=List_of_Viva_Piñata:_Trouble_in_Paradise_species'], ['c-pii-tip-amber', 'Amber gem', wgScript+'?title=Amber_gem'], ['c-pii-tip-bone', 'Bone', wgScript+'?title=Bone'], ['c-pii-tip-famous', 'Famous piñata', wgScript+'?title=Famous_piñata'], ['c-pii-tip-medal', 'Gold combat medal', wgScript+'?title=Combat_medal'], ['c-pii-tip-pv', 'Piñata Vision', wgScript+'?title=Piñata_Vision'], ['c-pii-tip-popular', 'Popular articles', wgScript+'?title=Viva_Piñata:_Trouble_in_Paradise'], ['c-pii-tip-all', 'All articles', wgScript+'?title=Category:Trouble_in_Paradise'] )); menus[menus.length] = createMenu('opt-piinav-pp',Array( ['c-pii-pp-plants', 'Plants', wgScript+'?title=List_of_Viva_Piñata:_Pocket_Paradise_plants'], ['c-pii-pp-species', 'Species', wgScript+'?title=List_of_Viva_Piñata:_Pocket_Paradise_species'], ['c-pii-pp-popular', 'Popular articles', wgScript+'?title=Viva_Piñata:_Pocket_Paradise'], ['c-pii-pp-all', 'All articles', wgScript+'?title=Category:Pocket_Paradise'] )); menus[menus.length] = createMenu('opt-piinav-pa',Array( ['c-pii-pa-achievements', 'Achievements', wgScript+'?title=Achievements'], ['c-pii-pa-events', 'Challenge events', wgScript+'?title=Challenge_Events'], ['c-pii-pa-tracks', 'Racetracks', wgScript+'?title=Racetracks'], ['c-pii-pa-all', 'All articles', wgScript+'?title=Category:Party_Animals'] )); menus[menus.length] = createMenu('opt-piinav-help',Array( ['c-pii-help-faq', 'Frequently asked questions', wgScript+'?title=Frequently_Asked_Questions'], ['c-pii-help-common', 'Other questions', wgScript+'?title=Category:Commonly_asked_questions'], ['c-pii-help-tips', 'Tips and strategies', wgScript+'?title=Category:Gameplay_Tips'], ['c-pii-help-search', 'Search the site', 'http://pinataisland.info/forum/search.php'], ['c-pii-help-guides', 'Printable guides', wgScript+'?title=Printable_Pinata_Guides'] )); document.getElementById('p-cactions').getElementsByTagName('div')[0].getElementsByTagName('ul')[0].appendChild(createTab('ca-pii-nav','opt-piinav','Nav')); document.getElementById('p-navigation').getElementsByTagName('div')[0].getElementsByTagName('ul')[0].appendChild(createTab('p-pii-nav','opt-piinav','Navigation >')); } var eid = document.getElementById('n-Classic'); if (eid) { eid.onmouseover = function () {showMenu('opt-piinav-classic',findPos('n-Classic',[40,0]))}; eid.onmouseout = function () {hideMenu('opt-piinav-classic')}; if (typeof eid.getElementsByTagName('a')[0].textContent == 'string') eid.getElementsByTagName('a')[0].textContent += ' >'; if (typeof eid.getElementsByTagName('a')[0].innerText == 'string') eid.getElementsByTagName('a')[0].innerText += ' >'; } document.getElementById('c-pii-home').onmouseover = function () {showMenu('opt-piinav-home',findPos('c-pii-home',[40,0]))}; document.getElementById('c-pii-home').onmouseout = function () {hideMenu('opt-piinav-home')}; // document.getElementById('c-pii-home').style.fontWeight = 'bold'; document.getElementById('c-pii-tv').onmouseover = function () {showMenu('opt-piinav-tv',findPos('c-pii-tv',[40,0]))}; document.getElementById('c-pii-tv').onmouseout = function () {hideMenu('opt-piinav-tv')}; // document.getElementById('c-pii-tv').style.fontWeight = 'bold'; document.getElementById('c-pii-classic').onmouseover = function () {showMenu('opt-piinav-classic',findPos('c-pii-classic',[40,0]))}; document.getElementById('c-pii-classic').onmouseout = function () {hideMenu('opt-piinav-classic')}; // document.getElementById('c-pii-classic').style.fontWeight = 'bold'; document.getElementById('c-pii-tip').onmouseover = function () {showMenu('opt-piinav-tip',findPos('c-pii-tip',[40,0]))}; document.getElementById('c-pii-tip').onmouseout = function () {hideMenu('opt-piinav-tip')}; // document.getElementById('c-pii-tip').style.fontWeight = 'bold'; document.getElementById('c-pii-pp').onmouseover = function () {showMenu('opt-piinav-pp',findPos('c-pii-pp',[40,0]))}; document.getElementById('c-pii-pp').onmouseout = function () {hideMenu('opt-piinav-pp')}; // document.getElementById('c-pii-pp').style.fontWeight = 'bold'; document.getElementById('c-pii-pa').onmouseover = function () {showMenu('opt-piinav-pa',findPos('c-pii-pa',[40,0]))}; document.getElementById('c-pii-pa').onmouseout = function () {hideMenu('opt-piinav-pa')}; // document.getElementById('c-pii-pa').style.fontWeight = 'bold'; document.getElementById('c-pii-help').onmouseover = function () {showMenu('opt-piinav-help',findPos('c-pii-help',[40,0]))}; document.getElementById('c-pii-help').onmouseout = function () {hideMenu('opt-piinav-help')}; // document.getElementById('c-pii-help').style.fontWeight = 'bold'; // document.getElementById('c-pii-help-search').style.fontWeight = 'bold'; } } ); }