மீடியாவிக்கி:Gadget-ReferenceTooltips.js
// See [[mw:Reference Tooltips]]
 
 window.pg || $(document).ready( function($) {
 
     // Make sure we are in article, project, or help namespace
     if ( $.inArray(mw.config.get('wgCanonicalNamespace'), [ '', 'Project', 'Help'] )) {
         function toggleRT(o){
             mw.loader.using(&quot;mediawiki.cookie&quot;,function(){
                     mw.cookie.set(&quot;RTsettings&quot;,o+&quot;|&quot;+ settings[1] + &quot;|&quot; + settings[2], {path:&quot;/&quot;,expires:90});
                     location.reload();
             })
         }
         var settings = document.cookie.split(&quot;RTsettings=&quot;)[1];
         settings = settings ? settings.split(&quot;;&quot;)[0].split(&quot;%7C&quot;) : [1, 200, +(&quot;ontouchstart&quot; in document.documentElement)];
         if( settings[0] == 0 ) {
             var footer = $(&quot;#footer-places, #f-list&quot;);
             if( footer.length === 0 ) {
                     footer = $(&quot;#footer li&quot;).parent();
             }
             footer.append($(&quot;&lt;li&gt;&quot;).append($(&quot;&lt;a&gt;&quot;).text(&quot;அடிச்சுட்டியைச் செயலாக்கம் செய்யவும்&quot;).attr(&quot;href&quot;,&quot;javascript:(function(){})()&quot;).click(function(){toggleRT(1)})));
             return;
         }
         var isTouchscreen = +settings[2],
             timerLength = isTouchscreen ? 0 : +settings[1],
             settingsMenu;
         $(&quot;.reference&quot;).each( function() {
             var tooltipNode, hideTimer, showTimer;
             function findRef( h ){
                     h = h.firstChild.getAttribute(&quot;href&quot;); h = h &amp;&amp; h.split(&quot;#&quot;); h = h &amp;&amp; h[1];
                     h = h &amp;&amp; document.getElementById( h );
                     h = h &amp;&amp; h.nodeName == &quot;LI&quot; &amp;&amp; h;
                     return h;
             }
             function hide( refLink ){
                     if( tooltipNode &amp;&amp; tooltipNode.parentNode == document.body ) {
                             hideTimer = setTimeout( function() {
                                     $(tooltipNode).animate({opacity: 0}, 100, function(){ document.body.removeChild( tooltipNode ) })
                             }, isTouchscreen ? 16 : 100)
                     } else {
                             var h = findRef( refLink );
                             h &amp;&amp; (h.style.border = &quot;&quot;);
                     }
             }
             function show(){
                     if( !tooltipNode.parentNode || tooltipNode.parentNode.nodeType === 11 ){
                             document.body.appendChild( tooltipNode );
                     }
                     $(tooltipNode).stop().animate({opacity: 1}, 100)
                     clearTimeout( hideTimer );
             }
             function openSettingsMenu(){
                     if( settingsMenu ) {
                             settingsMenu.dialog( &quot;open&quot; );
                     } else {
                             settingsMenu = $(&quot;&lt;form&gt;&quot;).append(
                                     $(&quot;&lt;button&gt;&quot;).css(&quot;width&quot;,&quot;100%&quot;).text(&quot;அடிச்சுட்டியைச் செயலிழக்கம் செய்யவும்&quot;).button().click(function(){toggleRT(0)}),
                                     &quot;&lt;br&gt;&quot;,
                                     $(&quot;&lt;small&gt;&quot;).text(&quot;ஒருமுறை செயலிழக்கம் செய்யப்பட்டால்,  அடிச்சுட்டியை பக்கத்தின் அடிப்பகுதியிலுள்ள இணைப்பின் மூலம் மீண்டும் செயலாக்கம் செய்யலாம்.&quot;),
                                     &quot;&lt;hr&gt;&quot;,
                                     $(&quot;&lt;label&gt;&quot;).text(&quot;அடிச்சுட்டி தோன்றுவதற்கு முன் தாமதம் (மில்லிவினாடிகளில்): &quot;).append($(&quot;&lt;input&gt;&quot;).attr({&quot;type&quot;:&quot;number&quot;,&quot;value&quot;:settings[1],step:50,min:0,max:5000})),
                                     &quot;&lt;br&gt;&quot;,
                                     $(&quot;&lt;span&gt;&quot;).text(&quot;அடிச்சுட்டி எப்போது தோன்ற வேண்டும்:&quot;),
                                     $(&quot;&lt;label&gt;&quot;).append(
                                             $(&quot;&lt;input&gt;&quot;).attr({&quot;type&quot;:&quot;radio&quot;, &quot;name&quot;:&quot;RTActivate&quot;, &quot;checked&quot;:settings[2]==0&amp;&amp;&quot;checked&quot;, &quot;disabled&quot;:&quot;ontouchstart&quot; in document.documentElement&amp;&amp;&quot;disabled&quot;}),
                                             &quot;மேலே செல்லும் போது&quot;
                                     ),
                                     $(&quot;&lt;label&gt;&quot;).append(
                                             $(&quot;&lt;input&gt;&quot;).attr({&quot;type&quot;:&quot;radio&quot;, &quot;name&quot;:&quot;RTActivate&quot;, &quot;checked&quot;:settings[2]==1&amp;&amp;&quot;checked&quot;}),
                                             &quot;சொடுக்கும்போது&quot;
                                     )
                             ).submit(function(e){e.preventDefault()}).dialog({modal:true,width:500,title:&quot;அடிச்சுட்டி விருப்பத்தேர்வுகள்&quot;,buttons:{&quot;அமைப்புகளைச் சேமி&quot;:function(){
                                     var a = this.getElementsByTagName(&quot;input&quot;),
                                             b = +a[0].value;
                                     mw.cookie.set(&quot;RTsettings&quot;,&quot;1|&quot;+ (b &gt; -1 &amp;&amp; b &lt; 5001 ? b : settings[1]) + (a[1].checked ? &quot;|0&quot; : &quot;|1&quot;), {path:&quot;/&quot;,expires:90});
                                     location.reload();
                             }}});
                     }
             }
             $(this)[ isTouchscreen ? 'click' : 'hover' ](function( e ){
                     var _this = this;
                     if( isTouchscreen ) {
                             e.preventDefault();
                             (tooltipNode &amp;&amp; tooltipNode.parentNode == document.body) || setTimeout( function(){
                                     $( document.body ).on(&quot;click touchstart&quot;, function( e ) {
                                             e = e || event;
                                             e = e.target || e.srcElement;
                                             for( ; e &amp;&amp; e.className!=&quot;referencetooltip&quot;; )
                                                     e = e.parentNode;
                                             if( !e ){
                                                     clearTimeout( showTimer );
                                                     hide( _this );
                                                     $(document.body).off(&quot;click touchstart&quot;, arguments.callee)
                                             }
                                     })
                             }, 0);
                     }
                     showTimer &amp;&amp; clearTimeout( showTimer );
                     showTimer = setTimeout( function() {
                             var h = findRef( _this );
                             if( !h ){return};
                             if( !isTouchscreen &amp;&amp; ( window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0 ) + $(window).height() &gt; $( h ).offset().top + h.offsetHeight ) {
                                     h.style.border = &quot;#080086 2px solid&quot;;
                                     return;
                             }
                             if(!tooltipNode){
                                     tooltipNode = document.createElement(&quot;ul&quot;);
                                     tooltipNode.className = &quot;referencetooltip&quot;;
                                     var c = tooltipNode.appendChild( h.cloneNode( true ) );
                                     try {
                                             if( c.firstChild.nodeName != &quot;A&quot; ) {
                                                     while( c.childNodes[1].nodeName == &quot;A&quot; &amp;&amp; c.childNodes[1].getAttribute( &quot;href&quot; ).indexOf(&quot;#cite_ref-&quot;) !== -1 ) {
                                                             do { c.removeChild( c.childNodes[1] ) } while ( c.childNodes[1].nodeValue == &quot; &quot; );
                                                     }
                                             }
                                     } catch (e) { mw.log(e) }
                                     c.removeChild( c.firstChild );
                                     $( tooltipNode.firstChild.insertBefore( document.createElement( &quot;span&quot; ), tooltipNode.firstChild.firstChild ) ).addClass(&quot;RTsettings&quot;).attr(&quot;title&quot;, &quot;அடிச்சுட்டி அமைப்புகள்&quot;).click(function(){
                                             mw.loader.using([&quot;mediawiki.cookie&quot;,&quot;jquery.ui&quot;], openSettingsMenu);
                                     })
                                     tooltipNode.appendChild( document.createElement( &quot;li&quot; ) );
                                     isTouchscreen || $(tooltipNode).hover(show, hide);
                             }
                             show();
                             var o = $(_this).offset(), oH = tooltipNode.offsetHeight;
                             $(tooltipNode).css({top: o.top - oH, left: o.left - 7 });
                             if( tooltipNode.offsetHeight &gt; oH ) { // is it squished against the right side of the page?
                                     $(tooltipNode).css({left:'auto',right:0});
                                     tooltipNode.lastChild.style.marginLeft = (o.left - tooltipNode.offsetLeft) + &quot;px&quot;;
                             }
                             if( o.top &lt; tooltipNode.offsetHeight ) { // is it above the top of the page?
                                     $(tooltipNode).addClass(&quot;RTflipped&quot;).css({top: o.top + 12});
                             } else if( tooltipNode.className === &quot;referencetooltip RTflipped&quot; ) { // cancel previous
                                     $(tooltipNode).removeClass(&quot;RTflipped&quot;);
                             }
                     }, timerLength);
             }, isTouchscreen ? undefined : function(){clearTimeout(showTimer); hide(this); } )
  
         } );
         
     }