home *** CD-ROM | disk | FTP | other *** search
/ Revista do CD-ROM 123 / cdrom123.iso / essenc / extens / nlinkp / LinkPreview.xpi / chrome / linkpreview.jar / content / linkpreview.xul < prev    next >
Encoding:
Extensible Markup Language  |  2004-11-18  |  5.3 KB  |  231 lines

  1. <?xml version="1.0"?>
  2.  
  3. <overlay id="linkpreview"
  4. xmlns:html = "http://www.w3.org/1999/xhtml"
  5. xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  6.  
  7.  
  8.  <script type="application/x-javascript">
  9.  
  10.  <![CDATA[
  11.     var img;
  12.     var timout;
  13.     var canshow;
  14.     var combined=false;
  15.     var imgleft,imgtop;
  16.     var hrefsite="";
  17.  
  18.     function ShowPreview()
  19.     {
  20.         if (!canshow) canshow=true;
  21.         else
  22.         {
  23.             if (combined && img.width<100)
  24.             {
  25.                 img.src="http://thumbnails.alexa.com/image_server.cgi?size=small&url="+hrefsite;
  26.             }
  27.             if (img.width>100 && img.src.search("alexa")<0)
  28.                 img.border=1;
  29.             var body=window._content.document.body;
  30.             var toph=body.scrollTop+body.clientHeight;
  31.             var topw=body.scrollLeft+body.clientWidth;
  32.  
  33.             if (imgtop+img.height>toph)
  34.             {
  35.                 imgtop=imgtop-20-img.height;
  36.                 img.style.top=imgtop+"px";
  37.             }
  38.             if (imgleft+img.width>topw)
  39.             {
  40.                 imgleft=imgleft-20-img.width;
  41.                 img.style.left=imgleft+"px";
  42.             }
  43.             img.style.visibility="visible";
  44.         }
  45.     }
  46.  
  47.     function LoadPreview()
  48.     {
  49.  
  50.         if (!canshow) canshow=true;
  51.         else ShowPreview();
  52.     }
  53.  
  54.   function FirePreview(url,event)
  55.     {
  56.         img.border=0;
  57.         canshow=false;
  58.         window._content.document.body.appendChild(img);
  59.         if (combined)
  60.         {
  61.             img.src="http://open.thumbshots.org/image.pxf?url="+hrefsite;
  62.         }
  63.         else
  64.             img.src=url+hrefsite;
  65.         img.style.position="absolute";
  66.         img.style.textTop="true";
  67.         img.style.zIndex="10";
  68.  
  69.         imgleft=event.pageX+20;
  70.         imgtop=event.pageY+20;
  71.         img.style.left=imgleft+"px";
  72.         img.style.top =imgtop+"px";
  73.         if (timout)
  74.             clearTimeout(timout);
  75.  
  76.         timout=setTimeout("ShowPreview();",1000);
  77.     }
  78.  
  79.     function closeAd()
  80.     {
  81.         if (timout)
  82.             clearTimeout(timout);
  83.         try {
  84.             if (img)
  85.             {
  86.                 img.src="about:blank";
  87.                 img.style.visibility="hidden";
  88.                 window._content.document.body.removeChild(img);
  89.             }
  90.         }
  91.         catch (ex){}
  92.         document.getElementById("statusbar-display").label="Done";
  93.     }
  94.  
  95.     function mouseover(event)
  96.     {
  97.         try{
  98.             var node=event.originalTarget;
  99.             while (node.protocol==null)
  100.             {
  101.                 node = node.parentNode;
  102.                 if (node==null)
  103.                 {
  104.                     closeAd();
  105.                     return true;
  106.                 }
  107.             }
  108.             curhost=window._content.location.hostname;
  109.             if (node.hostname==curhost)
  110.             {
  111.                 closeAd();
  112.                 return true;
  113.             }
  114.             hrefsite=node.href;
  115.             hrefsite=unescape(hrefsite);
  116.             hrefsite=hrefsite.toLowerCase();
  117.             var pos=hrefsite.lastIndexOf("http:");
  118.             if (pos!=-1)
  119.                 hrefsite=hrefsite.substr(pos);
  120.             else
  121.                 hrefsite=node.protocol+"//"+node.hostname+node.pathname;
  122.             hrefsite=hrefsite.toLowerCase();
  123.             var searchstr="";
  124.             combined=false;
  125.             if (hrefsite.indexOf("javascript:")!=-1)
  126.             {
  127.                 closeAd();
  128.                 return true;
  129.             }
  130.             if (hrefsite.indexOf("mailto:")!=-1)
  131.             {
  132.                 hrefsite="chrome://linkpreview/content/mail.png";
  133.             }
  134.             else
  135.             {
  136.                 const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  137.                 try
  138.                 {
  139.                     combined=preferencesService.getBoolPref("linkpreview.combined");
  140.                     if (combined==false)
  141.                         searchstr=preferencesService.getCharPref("linkpreview.string");
  142.                 }
  143.                 catch(ex)
  144.                 {
  145.                     combined=true;
  146.                 }
  147.             }
  148.             FirePreview(searchstr,event);
  149.         }
  150.         catch (ex) {}
  151.     }
  152.  
  153.     function linkpreviewContext()
  154.     {
  155.         const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  156.         var element=document.getElementById("idlinkpreview");
  157.         var context;
  158.         try
  159.         {
  160.             context=preferencesService.getBoolPref("linkpreview.addcontextmenu");
  161.         }
  162.         catch(ex)
  163.         {
  164.             element.hidden=true;
  165.             return;
  166.         }
  167.  
  168.         if (context=0 || !context)
  169.         {
  170.             element.hidden=true;
  171.             return;
  172.         }
  173.         element.hidden=false;
  174.  
  175.         var enabl=preferencesService.getBoolPref("linkpreview.enabled");
  176.         if (!enabl)
  177.         {
  178.             element.setAttribute("checked","false");
  179.             return;
  180.         }
  181.         element.setAttribute("checked","true");
  182.     }
  183.  
  184.  
  185.     function enablelinkpreview(element)
  186.     {
  187.       const checked = element.getAttribute("checked");
  188.       const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  189.         if (checked)
  190.         {
  191.           preferencesService.setBoolPref("linkpreview.enabled", true);
  192.           window.addEventListener("mouseover",mouseover,false);
  193.       }
  194.         else
  195.         {
  196.           preferencesService.setBoolPref("linkpreview.enabled", false);
  197.             window.removeEventListener("mouseover",mouseover,false);
  198.       }
  199.     }
  200.  
  201.  
  202.     function linkpreviewInit()
  203.     {
  204.          var menu = document.getElementById("contentAreaContextMenu");
  205.       menu.addEventListener("popupshowing",linkpreviewContext,false);
  206.         img=window._content.document.createElement("img");
  207.         img.addEventListener("load",LoadPreview,false);
  208.     }
  209.  
  210.     window.addEventListener("load", linkpreviewInit, false);
  211.     const preferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  212.     try{
  213.     if (preferencesService.getBoolPref("linkpreview.enabled"))
  214.         window.addEventListener("mouseover",mouseover,false);
  215.     }
  216.     catch(ex)
  217.     {
  218.         window.addEventListener("mouseover",mouseover,false);
  219.     }
  220.  
  221.     ]]>
  222.     </script>
  223.  
  224.  
  225.     <popup id="contentAreaContextMenu">
  226.         <menuitem id="idlinkpreview" label="LinkPreview" type="checkbox" oncommand="enablelinkpreview(this)"/>
  227.     </popup>
  228.  
  229.  
  230. </overlay>
  231.