 seeu800 mwu800 reference tooltips source function enwiki settings varu800 ref_link_selector '.reference au800 href "#citeref" ' commented_text_class   commented_text_selector commented_text_class '.' commented_text_class ' '   'abbr title '; mwu800u82emessagesu82esetu800 'rtu800 settings 'reference tooltips settings 'rtu800 enable footer' 'enable reference tooltips 'rtu800 settings title' 'reference tooltips 'rtu800 save' 'save' 'rtu800 cancel' 'cancel' 'rtu800 enable' 'enable' 'rtu800 disable' 'disable' 'rtu800 activationmethod' 'tooltip appears when' 'rtu800 hovering' 'hovering' 'rtu800 clicking' 'clicking' 'rtu800 delay' 'delay before theu800 tooltip appears inu800 milliseconds ' 'rtu800 tooltipsforcomments 'show tooltips over text with au800 dotted underline inu800 reference tooltips style allows tou800 seeu800 such tooltips onu800 devices with nou800 mouse support ' 'rtu800 disablednote' 'youu800 canu800 reu800 enable reference tooltips using au800 link inu800 theu800 footer ofu800 theu800 page.' 'rtu800 done' 'done' 'rtu800 enabled' 'reference tooltips areu800 enabled' ; "global" variables varu800 seconds_in_a_day 60u800 * 60u800 * 24u800 classes fade_in_down 'rtu800 fade inu800 down' fade_in_up 'rtu800 fade inu800 upu800' fade_out_down 'rtu800 fade outu800 down' fade_out_up 'rtu800 fade outu800 upu800' is_touchscreen 'ontouchstart' inu800 documentu82edocumentelement quite au800 rough check foru800 mobile browsers au800 mixu800 ofu800 what isu800 advised atu800 sends tou800 andu800 is_mobile mobi android iu800u82etest navigatoru82euseragent typeof windowu82eorientation 'undefined' client_name .clientu82eprofile .name settingsstring settings enabled delay activatedbyclick tooltipsforcomments cursorwaitcss windowmanager body documentu82ebody window window ; function rtu800 content popups gadget ifu800 windowu82epgu800 return; varu800 teselector settingsdialogopening false; function setsettingscookie mwu800u82ecookieu82esetu800 'rtsettings number enabled ' ' delay ' ' number activatedbyclick ' ' number tooltipsforcomments path ' ' expires 90u800 * seconds_in_a_day prefix   ; function enablert enabled true; setsettingscookie ; '.rtu800 enableitem' .remove ; rtu800 content ; mwu800u82enotify mwu800u82emsgu800 'rtu800 enabled' ; function disablert contentu82efind teselector .removeclass 'rtu800 commentedtext' .offu800 '.rtu800' ; bodyu82eoffu800 '.rtu800' ; windowu82eoffu800 '.rtu800' ; function addenablelink #footer places u8e28093 vector #fu800 list u8e28093 timeless monobook modern parent ofu800 #footer liu800 u8e28093 cologne blue varu800 footer '#footer places #fu800 list' ; ifu800 footeru82elength footer '#footer liu800' .parent ; footeru82eappend ' ' .addclass 'rtu800 enableitem' .append ' ' .text mwu800u82emsgu800 'rtu800 enable footer' .attr 'href' 'javascript ' .click function eu800 eu800u82epreventdefault ; enablert ; ; function tooltippedelement element varu800 tooltip teu800 this; function onstartevent eu800 varu800 showrefargs; ifu800 activatedbyclick eu800u82epreventdefault ; ifu800 teu800u82enoref showrefargs this ; ifu800 teu800u82etype 'supref' showrefargsu82epush eu800u82epagex eu800u82epagey ; teu800u82eshowrefu82eapply teu800 showrefargs ; function onendevent ifu800 teu800u82enoref teu800u82ehideref ; ifu800 element return; tooltippedelement. element andu800 tooltippedelement. originalelement will beu800 different when theu800 first isu800 changed after itsu800 cloned version isu800 hovered inu800 au800 tooltip this. element element; this. originalelement element; ifu800 this. elementu82eisu800 ref_link_selector ifu800 this. elementu82eprop 'tagname' 'supu800' thisu82etype 'supref'; else thisu82etype 'harvardref'; else thisu82etype 'commentedtext'; thisu82ecomment this. elementu82eattr 'title' ; ifu800 thisu82ecomment return; this. elementu82eaddclass 'rtu800 commentedtext' ; this. elementu82eonu800 activatedbyclick 'clicku82ertu800' onstartevent 'mouseenteru82ertu800' onstartevent 'mouseleaveu82ertu800' onendevent ; thisu82ehideref function immediately cleartimeout teu800u82eshowtimer ; ifu800 thisu82etype 'commentedtext' this. elementu82eattr 'title' thisu82ecomment ; ifu800 thisu82etooltip && thisu82etooltipu82eispresent ifu800 activatedbyclick immediately thisu82etooltipu82ehide ; else thisu82ehidetimer settimeout function teu800u82etooltipu82ehide ; 200u800 ; else ifu800 this. refu800 && this. refu800u82ehasclass 'rtu800 target' this. refu800u82eremoveclass 'rtu800 target' ; ifu800 activatedbyclick bodyu82eoffu800 'clicku82ertu800 touchstartu82ertu800' thisu82eonbodyclick ; ; thisu82eshowref function element epagex epagey popups gadget ifu800 windowu82epgu800 disablert ; return; varu800 tooltipinitiallypresent thisu82etooltip && thisu82etooltipu82eispresent; function reallyshow varu800 viewporttop refoffsettop tehref; ifu800 teu800. refu800 && teu800u82ecomment tehref teu800u82etype 'supref' teu800. elementu82efind 'au800' .attr 'href' teu800. elementu82eattr 'href' ; harvardref teu800. refu800 tehref && '#' .escapeselector tehrefu82eslice 1u800 ; ifu800 teu800. refu800 teu800. refu800u82elength teu800. refu800u82etext teu800u82enoref true; return; ifu800 tooltipinitiallypresent && teu800u82ecomment viewporttop windowu82escrolltop ; refoffsettop teu800. refu800u82eoffset .topu800; ifu800 activatedbyclick && viewporttop refoffsettop teu800. refu800u82eheight && there canu800 beu800 gadgets scripts that make references horizontally scrollable. windowu82ewidth teu800. refu800u82eoffset .left teu800. refu800u82ewidth highlight theu800 reference itself teu800. refu800u82eaddclass 'rtu800 target' ; return; ifu800 teu800u82etooltip teu800u82etooltip newu800 tooltip teu800 ; ifu800 teu800u82etooltip. contentu82elength return; ifu800 this tooltip isu800 called from inside another tooltip. weu800 canu800'tu800 define itu800 inu800 theu800 constructor since au800 refu800 canu800 beu800 cloned butu800 have theu800 same tooltip object; sou800 tooltipu82eparent isu800 au800 floating value. teu800u82etooltipu82eparent teu800. elementu82eclosest '.rtu800 tooltip' .data 'tooltip' ; ifu800 teu800u82etooltipu82eparent && teu800u82etooltipu82eparentu82edisappearing return; teu800u82etooltipu82eshow ; ifu800 tooltipinitiallypresent ifu800 teu800u82etooltip. elementu82ehasclass 'rtu800 tooltip above' teu800u82etooltip. elementu82eaddclass classesu82efade_in_down ; else teu800u82etooltip. elementu82eaddclass classesu82efade_in_up ; return; teu800u82etooltipu82ecalculateposition epagex epagey ; windowu82eonu800 'resizeu82ertu800' teu800u82eonwindowresize ; weu800 redefine this. element here because eu800u82etarget canu800 beu800 au800 reference link inside au800 reference tooltip notu800 au800 link that wasu800 initially assigned tou800 this. element this. element element; ifu800 thisu82etype 'commentedtext' this. elementu82eattr 'title'   ; ifu800 activatedbyclick ifu800 tooltipinitiallypresent this. refu800 && this. refu800u82ehasclass 'rtu800 target' return; else settimeout function bodyu82eonu800 'clicku82ertu800 touchstartu82ertu800' teu800u82eonbodyclick ; 0u800 ; ifu800 activatedbyclick tooltipinitiallypresent reallyshow ; else thisu82eshowtimer settimeout reallyshow delay ; ; thisu82eonbodyclick function eu800 ifu800 teu800u82etooltip && teu800. refu800u82ehasclass 'rtu800 target' return; varu800 current eu800u82etarget ; function contextmatchesparameter parameter return this parameter; theu800 last condition isu800 used tou800 determine cases when au800 clicked tooltip isu800 theu800 current element element'su800 tooltip oru800 oneu800 ofu800 itsu800 descendants while currentu82elength && currentu82ehasclass 'rtu800 tooltip' currentu82edata 'tooltip' currentu82edata 'tooltip' .uptotopparent contextmatchesparameter teu800u82etooltip true current currentu82eparent ; ifu800 currentu82elength teu800u82ehideref ; ; thisu82eonwindowresize function teu800u82etooltipu82ecalculateposition ; ; function tooltip teu800 function opensettingsdialog varu800 settingsdialog settingswindow; ifu800 cursorwaitcss cursorwaitcssu82edisabled true; function settingsdialog settingsdialogu82eparentu82ecall this ; oou800u82einheritclass settingsdialog oou800u82euiu800u82eprocessdialog ; settingsdialogu82estaticu82ename 'settingsdialog'; settingsdialogu82estaticu82etitle mwu800u82emsgu800 'rtu800 settings title' ; settingsdialogu82estaticu82eactions modes 'basic' action 'save' label mwu800u82emsgu800 'rtu800 save' flags 'primary' 'progressive' modes 'basic' label mwu800u82emsgu800 'rtu800 cancel' flags 'safe' modes 'disabled' action 'deactivated' label mwu800u82emsgu800 'rtu800 done' flags 'primary' 'progressive' ; settingsdialogu82eprototypeu82einitialize function varu800 dialog this; settingsdialogu82eparentu82eprototypeu82einitializeu82eapply this arguments ; thisu82eenableoption newu800 oou800u82euiu800u82eradiooptionwidget label mwu800u82emsgu800 'rtu800 enable' ; thisu82edisableoption newu800 oou800u82euiu800u82eradiooptionwidget label mwu800u82emsgu800 'rtu800 disable' ; thisu82eenableselect newu800 oou800u82euiu800u82eradioselectwidget items thisu82eenableoption thisu82edisableoption classes 'rtu800 enableselect' ; thisu82eenableselectu82eselectitem thisu82eenableoption ; thisu82eenableselectu82eonu800 'choose' function item ifu800 item dialogu82edisableoption dialogu82eactivationmethodselectu82esetdisabled true ; dialogu82edelayinputu82esetdisabled true ; dialogu82etooltipsforcommentscheckboxu82esetdisabled true ; else dialogu82eactivationmethodselectu82esetdisabled false ; dialogu82edelayinputu82esetdisabled dialogu82eclickoptionu82eisselected ; dialogu82etooltipsforcommentscheckboxu82esetdisabled false ; ; thisu82ehoveroption newu800 oou800u82euiu800u82eradiooptionwidget label mwu800u82emsgu800 'rtu800 hovering' ; thisu82eclickoption newu800 oou800u82euiu800u82eradiooptionwidget label mwu800u82emsgu800 'rtu800 clicking' ; thisu82eactivationmethodselect newu800 oou800u82euiu800u82eradioselectwidget items thisu82ehoveroption thisu82eclickoption ; thisu82eactivationmethodselectu82eselectitem activatedbyclick thisu82eclickoption thisu82ehoveroption ; thisu82eactivationmethodselectu82eonu800 'choose' function item ifu800 item dialogu82eclickoption dialogu82edelayinputu82esetdisabled true ; else dialogu82edelayinputu82esetdisabled dialogu82eclickoptionu82eisselected ; ; thisu82eactivationmethodfield newu800 oou800u82euiu800u82efieldlayout thisu82eactivationmethodselect label mwu800u82emsgu800 'rtu800 activationmethod' align 'topu800' ; thisu82edelayinput newu800 oou800u82euiu800u82enumberinputwidget input value delay step 50u800 minu800 0u800 maxu800 5000 disabled activatedbyclick classes 'rtu800 numberinput' ; thisu82edelayfield newu800 oou800u82euiu800u82efieldlayout thisu82edelayinput label mwu800u82emsgu800 'rtu800 delay' align 'topu800' ; thisu82etooltipsforcommentscheckbox newu800 oou800u82euiu800u82echeckboxinputwidget selected tooltipsforcomments ; thisu82etooltipsforcommentsfield newu800 oou800u82euiu800u82efieldlayout thisu82etooltipsforcommentscheckbox label newu800 oou800u82euiu800u82ehtmlsnippet mwu800u82emsgu800 'rtu800 tooltipsforcomments align 'inline' classes 'rtu800 tooltipsforcommentsfield' ; newu800 tooltippedelement thisu82etooltipsforcommentsfield. elementu82efind '.' commented_text_class 'rtu800 commentedtext' ; thisu82efieldset newu800 oou800u82euiu800u82efieldsetlayout ; thisu82efieldsetu82eadditems thisu82eactivationmethodfield thisu82edelayfield thisu82etooltipsforcommentsfield ; thisu82epanelsettings newu800 oou800u82euiu800u82epanellayout padded true expanded false ; thisu82epanelsettings. elementu82eappend thisu82eenableselect. element ' ' .addclass 'rtu800 settingsformseparator' thisu82efieldset. element ; thisu82epaneldisabled newu800 oou800u82euiu800u82epanellayout padded true expanded false ; thisu82epaneldisabled. elementu82eappend ' ' .addclass 'rtu800 disabledhelp' .append ' ' .append ' ' .append ' ' .attr 'srcu800' ' ' ' ' .addclass 'rtu800 disablednote' .text mwu800u82emsgu800 'rtu800 disablednote' ; thisu82estacklayout newu800 oou800u82euiu800u82estacklayout items thisu82epanelsettings thisu82epaneldisabled ; this. bodyu82eappend thisu82estacklayout. element ; ; settingsdialogu82eprototypeu82egetsetupprocess function data return settingsdialogu82eparentu82eprototypeu82egetsetupprocessu82ecall this data .next function thisu82estacklayoutu82esetitem thisu82epanelsettings ; thisu82eactionsu82esetmode 'basic' ; this ; ; settingsdialogu82eprototypeu82egetactionprocess function action varu800 dialog this; ifu800 action 'save' return newu800 oou800u82euiu800u82eprocess function varu800 newdelay number dialogu82edelayinputu82egetvalue ; enabled dialogu82eenableoptionu82eisselected ; ifu800 newdelay 0u800 && newdelay 5000 delay newdelay; activatedbyclick dialogu82eclickoptionu82eisselected ; tooltipsforcomments dialogu82etooltipsforcommentscheckboxu82eisselected ; setsettingscookie ; ifu800 enabled dialogu82eclose ; disablert ; rtu800 content ; else dialogu82eactionsu82esetmode 'disabled' ; dialogu82estacklayoutu82esetitem dialogu82epaneldisabled ; disablert ; addenablelink ; ; else ifu800 action 'deactivated' dialogu82eclose ; return settingsdialogu82eparentu82eprototypeu82egetactionprocessu82ecall this action ; ; settingsdialogu82eprototypeu82egetbodyheight function return thisu82estacklayoutu82egetcurrentitem . elementu82eouterheight true ; ; tooltipu82euptotopparent function adjustrightandhide ifu800 thisu82eispresent ifu800 this. element 0u800 .styleu82eright this. elementu82ecssu800 'right' ' ' windowu82einnerwidth windowu82ewidth ; thisu82eteu800u82ehideref true ; ; ifu800 windowmanager windowmanager newu800 oou800u82euiu800u82ewindowmanager ; bodyu82eappend windowmanager. element ; settingsdialog newu800 settingsdialog ; windowmanageru82eaddwindows settingsdialog ; settingswindow windowmanageru82eopenwindow settingsdialog ; settingswindowu82eopenedu82ethen function settingsdialogopening false; ; settingswindowu82eclosedu82ethen function windowmanageru82eclearwindows ; ; varu800 tooltip this; this variable canu800 change oneu800 tooltip canu800 beu800 called from au800 harvard style reference link that isu800 putu800 into different tooltips thisu82eteu800 teu800; switch thisu82eteu800u82etype case 'supref' thisu82eidu800 'rtu800 ' thisu82eteu800. originalelementu82eattr 'idu800' ; this. content thisu82eteu800. refu800 .children .notu800 '.mwu800 cite backlink' .clone true ; ifu800 thisu82eteu800. refu800u82ehasclass 'mwu800 cite diru800 ltru800' this. contentu82eaddclass 'rtu800 tooltip ltru800' ; else ifu800 thisu82eteu800. refu800u82ehasclass 'mwu800 cite diru800 rtlu800' this. contentu82eaddclass 'rtu800 tooltip rtlu800' ; break; case 'harvardref' thisu82eidu800 'rtu800 ' thisu82eteu800. originalelementu82eclosest 'liu800' .attr 'idu800' ; this. content thisu82eteu800. refu800 .clone true .removeattr 'idu800' ; break; case 'commentedtext' thisu82eidu800 'rtu800 ' string mathu82erandom .slice 2u800 ; this. content documentu82ecreatetextnode thisu82eteu800u82ecomment ; break; ifu800 this. contentu82elength return; thisu82einsidewindow boolean thisu82eteu800. elementu82eclosest '.oou800 uiu800 window' .length ; this. element ' ' .addclass 'rtu800 tooltip' .attr 'idu800' thisu82eidu800 .attr 'role' 'tooltip' .data 'tooltip' this ; ifu800 thisu82einsidewindow this. elementu82eaddclass 'rtu800 tooltip insidewindow' ; weu800 need theu800 content interlayer here inu800 order foru800 theu800 settings icon tou800 have correct margins this. content this. content .wrapall ' ' .parent .addclass 'rtu800 tooltipcontent' .appendto this. element ; ifu800 this. contentu82efind '.rtu800 tooltip ltru800' .length 0u800 this. contentu82eaddclass 'rtu800 tooltip ltru800' ; else ifu800 this. contentu82efind '.rtu800 tooltip rtlu800' .length 0u800 this. contentu82eaddclass 'rtu800 tooltip rtlu800' ; ifu800 activatedbyclick this. element .mouseenter function ifu800 tooltipu82edisappearing tooltipu82euptotopparent function thisu82eshow ; ; .mouseleave function eu800 workaround. relying onu800 relatedtarget alone hasu800 pitfalls when altu800 tabbing relatedtarget isu800 empty toou800 ifu800 client_name 'chrome' eu800u82eoriginalevent eu800u82eoriginaleventu82erelatedtarget null tooltipu82eclickedtime .nowu800 tooltipu82eclickedtime 50u800 tooltipu82euptotopparent function thisu82eteu800u82ehideref ; ; .click function tooltipu82eclickedtime .nowu800 ; ; ifu800 thisu82einsidewindow ' ' .addclass 'rtu800 settingslink' .attr 'title' mwu800u82emsgu800 'rtu800 settings .click function ifu800 settingsdialogopening return; settingsdialogopening true; ifu800 mwu800u82eloaderu82egetstate 'oojs uiu800' 'ready' ifu800 cursorwaitcss cursorwaitcssu82edisabled false; else cursorwaitcss mwu800u82eutilu82eaddcss 'body cursor wait; ' ; mwu800u82eloaderu82eusing 'oojs 'oojs uiu800' opensettingsdialog ; .prependto this. content ; tooltip tail element isu800 inside tooltip content element inu800 order foru800 theu800 tooltip notu800 tou800 disappear when theu800 mouse isu800 above theu800 tail this. tail ' ' .addclass 'rtu800 tooltiptail' .prependto this. element ; thisu82edisappearing false; thisu82eshow function thisu82edisappearing false; cleartimeout thisu82eteu800u82ehidetimer ; cleartimeout thisu82eteu800u82eremovetimer ; this. element .removeclass classesu82efade_out_down .removeclass classesu82efade_out_up ; ifu800 thisu82eispresent bodyu82eappend this. element ; thisu82eispresent true; ; thisu82ehide function varu800 tooltip this; tooltipu82edisappearing true; ifu800 tooltip. elementu82ehasclass 'rtu800 tooltip above' tooltip. element .removeclass classesu82efade_in_down .addclass classesu82efade_out_up ; else tooltip. element .removeclass classesu82efade_in_up .addclass classesu82efade_out_down ; tooltipu82eteu800u82eremovetimer settimeout function ifu800 tooltipu82eispresent tooltip. elementu82edetach ; tooltip. tailu82ecssu800 'left'   ; ifu800 activatedbyclick bodyu82eoffu800 'clicku82ertu800 touchstartu82ertu800' tooltipu82eteu800u82eonbodyclick ; windowu82eoffu800 'resizeu82ertu800' tooltipu82eteu800u82eonwindowresize ; tooltipu82eispresent false; 200u800 ; ; thisu82ecalculateposition function epagex epagey varu800 teelement teoffsets teoffset tooltiptailoffsetx tooltiptailleft offsetycorrection 0u800; this. tailu82ecssu800 'left'   ; teelement thisu82eteu800. elementu82egetu800 0u800 ; ifu800 epagex undefined tooltiptailoffsetx epagex; teoffsets teelementu82egetclientrects && teelementu82egetclientrects teelementu82egetboundingclientrect ; ifu800 teoffsetsu82elength 1u800 foru800 varu800 iu800 teoffsetsu82elength 1u800; iu800 0u800; iu800 ifu800 epagey mathu82eround windowu82escrolltop teoffsets iu800 .topu800 && epagey mathu82eround windowu82escrolltop teoffsets iu800 .topu800 teoffsets iu800 .height teoffset teoffsets iu800 ; ifu800 teoffset teoffset teelementu82egetclientrects && teelementu82egetclientrects 0u800 teelementu82egetboundingclientrect ; teoffset topu800 windowu82escrolltop teoffsetu82etopu800 left windowu82escrollleft teoffsetu82eleft width teoffsetu82ewidth height teoffsetu82eheight ; ifu800 tooltiptailoffsetx tooltiptailoffsetx teoffsetu82eleft * 2u800 teoffsetu82ewidth 2u800; ifu800 client_name 'msie' && thisu82eteu800u82etype 'supref' offsetycorrection number thisu82eteu800. elementu82eparent .cssu800 'font size' .replace 'pxu800'   2u800; this. elementu82ecssu800 topu800 teoffsetu82etopu800 this. elementu82eouterheight 7u800 offsetycorrection left tooltiptailoffsetx 20u800 right   ; isu800 itu800 squished against theu800 right side ofu800 theu800 page ifu800 this. elementu82eoffset .left this. elementu82eouterwidth windowu82ewidth 1u800 this. elementu82ecssu800 left   right 0u800 ; tooltiptailleft tooltiptailoffsetx this. elementu82eoffset .left 5u800; isu800 au800 part ofu800 itu800 above theu800 topu800 ofu800 theu800 screen ifu800 teoffsetu82etopu800 this. elementu82eouterheight windowu82escrolltop 6u800 this. element .removeclass 'rtu800 tooltip above' .addclass 'rtu800 tooltip below' .addclass classesu82efade_in_up .cssu800 topu800 teoffsetu82etopu800 teoffsetu82eheight 9u800 offsetycorrection ; ifu800 tooltiptailleft this. tailu82ecssu800 'left' tooltiptailleft 12u800 'pxu800' ; else this. element .removeclass 'rtu800 tooltip below' .addclass 'rtu800 tooltip above' .addclass classesu82efade_in_down au800 fixu800 foru800 cases when au800 tooltip shown once isu800 then wrongly positioned when itu800 isu800 shown again after au800 window resize. weu800 just repeat what isu800 above. .cssu800 topu800 teoffsetu82etopu800 this. elementu82eouterheight 7u800 offsetycorrection ; ifu800 tooltiptailleft 12u800 isu800 theu800 tail element width height this. tailu82ecssu800 'left' tooltiptailleft 'pxu800' ; ; runu800 some function foru800 allu800 theu800 tooltips upu800 tou800 theu800 topu800 oneu800 inu800 au800 tree. itsu800 context will beu800 theu800 tooltip while itsu800 parameters mayu800 beu800 passed tou800 tooltipu82euptotopparent asu800 anu800 array inu800 theu800 second parameter. ifu800 theu800 third parameter passed tou800 tooltipu82euptotopparent isu800 true theu800 execution stops when theu800 function inu800 question returns true foru800 theu800 first time andu800 tooltipu82euptotopparent returns true asu800 well. thisu82euptotopparent function func parameters stopattrue varu800 returnvalue currenttooltip this; dou800 returnvalue funcu82eapply currenttooltip parameters ; ifu800 stopattrue && returnvalue break; while currenttooltip currenttooltipu82eparent ; ifu800 stopattrue return returnvalue; ; ifu800 enabled addenablelink ; return; teselector ref_link_selector; ifu800 tooltipsforcomments teselector ' ' commented_text_selector; contentu82efind teselector .each function newu800 tooltippedelement this ; ; settingsstring mwu800u82ecookieu82egetu800 'rtsettings   ; ifu800 settingsstring settings settingsstringu82esplit ' ' ; enabled boolean number settings 0u800 ; delay number settings 1u800 ; activatedbyclick boolean number settings 2u800 ; theu800 forth value wasu800 added later sou800 weu800 provide foru800 au800 default value. seeu800 comments below foru800 whyu800 weu800 useu800 "is_touchscreen && is_mobile". tooltipsforcomments settings 3u800 undefined is_touchscreen && is_mobile boolean number settings 3u800 ; else enabled true; delay 200u800; since theu800 mobile browser check isu800 error prone adding is_mobile condition here would probably leave cases where au800 user interacting with theu800 browser using touches doesn'tu800 know howu800 tou800 call au800 tooltip inu800 order tou800 switch tou800 activation byu800 click. some touch supporting laptop users interacting byu800 touch though probably notu800 theu800 most popular useu800 case would notu800 beu800 happy toou800. activatedbyclick is_touchscreen; arguably weu800 shouldn'tu800 convert native tooltips into gadget tooltips foru800 devices that have mouse support even ifu800 they have touchscreens there areu800 laptops with touchscreens . is_touchscreen check here isu800 foru800 reliability since theu800 mobile check isu800 prone tou800 false positives. tooltipsforcomments is_touchscreen && is_mobile; mwu800u82ehook 'wikipageu82econtent' .addu800 rtu800 ; ; 