User:Lupin/sandbox/taralPatch

--- d/popupsdev.js.wiki	2005-12-09 17:30:12.000000000 -0500 +++ ../User:Lupin/popupsdev.js	2005-12-09 17:21:10.000000000 -0500 @@ -2479,43 +2478,48 @@ function makeOverDraggable { Drag.start=function (e) { if (!e.shiftKey) return; Drag.originalStart.apply(this, [e]); return false; } Drag.init(over); }; function mouseOverWikiLink { return mouseOverWikiLink2(this); }; -function mouseOverWikiLink2(a) { +window.mouseOverWikiLink2=function(a) { // FIXME: should not generate the HTML until the delay has elapsed, //       and then popup immediately. Can be a CPU hog otherwise. log('mouseOverWikiLink: a='+a+', window.currentLink='+window.currentLink); // try not to duplicate effort if (a==window.currentLink) return; window.currentLink=a; if (typeof over != undef && over != null      && typeof over.dragging != undef && over.dragging) return; - // increment global counter now - popupIdNumber++; -  if (getValueOf('simplePopups') && window.popupStructure===null) { // reset *default value* of popupStructure log ('simplePopups is true and no popupStructure selected. Defaulting to "original"'); newOption('popupStructure', "'original'"); } + +  a.popup_display_timer=setTimeout(function { displayPopup(a); }, 100 ); + +}; +window.displayPopup=function(a) { + // increment global counter now + clearTimeout(a.popup_display_timer); + popupIdNumber++; var html = popupHTML(a); var article=articleFromAnchor(a); var oldid=oldidFromAnchor(a); if (popupImageTimer != null) { clearInterval(popupImageTimer); counter=0; }  // keep this (or fix other refs) @@ -2960,32 +2965,38 @@ function fuzzyCursorOffOver(fuzz) { window.fuzzyCursorOff=function(fuzz) { return fuzzyCursorOffOver(fuzz) && fuzzyCursorOffMenus(fuzz); } // seems that fuzzyCursorOff should precede mouseOutWikiLink in the source // or sometimes during page loads, errors are generated var stopPopupTimer=null; -function mouseOutWikiLink { +window.mouseOutWikiLink=function (a) { + if (a && typeof a.popup_display_timer !== undef) { +   clearTimeout(a.popup_display_timer); +   delete a.popup_display_timer; + }   if (typeof over != undef &&  over && over.dragging) return null; if (fuzzyCursorOff(5)) { if (window.stopPopupTimer) { clearInterval(window.stopPopupTimer); window.stopPopupTimer=null; }    killPopup; return; } + // at this point, we've left the link but remain within the popup + // so we call this function again until we leave the popup. if (!window.stopPopupTimer) -   window.stopPopupTimer=setInterval("mouseOutWikiLink", 500); +   window.stopPopupTimer=setInterval(mouseOutWikiLink, 500); }; function killPopup { // o3_showingsticky should be defined in overlib.js  //if ( typeof o3_showingsticky != "undefined" && o3_showingsticky == 0 ) { if (getValueOf('popupShortcutKeys')) rmPopupShortcuts; cClick; window.currentLink=null; abortAllDownloads; stopImagesDownloading;