<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-20989390</id><updated>2011-07-13T07:21:09.416-07:00</updated><title type='text'>[Mozilla/Gecko] Firefox Greasemonkey Extensions</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fxgm.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fxgm.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>moPRoTG</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-20989390.post-113728440388736054</id><published>2006-01-14T16:20:00.000-08:00</published><updated>2006-01-14T16:20:06.893-08:00</updated><title type='text'>Google Send to Phone for Firefox</title><content type='html'>&lt;a href="http://toolbar.google.com/firefox/extensions/sendtophone/"&gt;Google Send to Phone for Firefox&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;  Google        &lt;br /&gt;Google Send to Phone  &lt;br /&gt;&lt;br /&gt;View screenshot&lt;br /&gt;Introduction&lt;br /&gt;&lt;br /&gt;Google Send to Phone for Firefox is an extension that enables you to send short text messages of web page content to your mobile phone. For example, you might text message yourself a phone number, an address, or directions that you find on the Web.&lt;br /&gt;Install Now&lt;br /&gt;&lt;br /&gt;Firefox Logogoogle-sendtophone.xpi&lt;br /&gt;How to Install&lt;br /&gt;&lt;br /&gt;1. Click the "google-sendtophone.xpi" link above. Be sure to review the Terms and Conditions and Privacy Notice.&lt;br /&gt;If this is your first time installing a Google Firefox extension, when you click "Agree and Install", the Firefox browser may display a notice in a bar across the top of the page. View screenshot&lt;br /&gt;&lt;br /&gt;If this notice appears, you will need to edit your browser options to allow the extension to be installed from Google:&lt;br /&gt;  1a.  Click "Edit Options..." in the bar. The Firefox "Allowed Sites" window will appear.&lt;br /&gt;  1b.  In this window, enter toolbar.google.com in the box under "Address of web site", if it's not already there. View screenshot&lt;br /&gt;  1c.  Click "Allow" to add Google to the list of allowed sites, then click "OK".&lt;br /&gt;  1d.  You will need to click "Agree and Install" a second time to begin installation.&lt;br /&gt;&lt;br /&gt;2. After clicking "Agree and Install", the Firefox software installation window will appear with Google Send to Phone listed. View screenshot&lt;br /&gt;&lt;br /&gt;3. Click the "Install Now" button. The Firefox extensions window will appear confirming installation. View screenshot&lt;br /&gt;&lt;br /&gt;4. Close the Firefox extensions window, then close all Firefox windows and restart the browser. If all went well, a cell phone icon Google Send to Phone icon will appear in the upper right corner of the browser. View screenshot&lt;br /&gt;How to Use&lt;br /&gt;&lt;br /&gt;Select some text and click the cell phone icon Google SMS icon in the upper right hand corner of the browser. This will open a new window where you can send the text you just selected as a text message.&lt;br /&gt;&lt;br /&gt;Fill in the number you wish to send the message to and select the appropriate carrier. Click the 'Send Message' button to send the message.&lt;br /&gt;&lt;br /&gt;For more info, see the FAQ.&lt;br /&gt;&lt;br /&gt;How to Uninstall&lt;br /&gt;&lt;br /&gt;In the Firefox browser, click "Tools" and select "Extensions". The Extensions window will appear.&lt;br /&gt;&lt;br /&gt;Click "Google Send to Phone", then click the "Uninstall" button.&lt;br /&gt;&lt;br /&gt;Click the "OK" button in the confirmation window. The Extensions window will confirm that Google Send to Phone has been uninstalled.&lt;br /&gt;&lt;br /&gt;Close the Extensions window, then close all Firefox windows and restart the browser.&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20989390-113728440388736054?l=fxgm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxgm.blogspot.com/feeds/113728440388736054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20989390&amp;postID=113728440388736054' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728440388736054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728440388736054'/><link rel='alternate' type='text/html' href='http://fxgm.blogspot.com/2006/01/google-send-to-phone-for-firefox.html' title='Google Send to Phone for Firefox'/><author><name>moPRoTG</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20989390.post-113728105621058982</id><published>2006-01-14T15:24:00.000-08:00</published><updated>2006-01-14T15:24:16.216-08:00</updated><title type='text'>Greasemonkey Userscript - Bloglines+GMail</title><content type='html'>&lt;a href="http://wickedgravity.frihost.net/Other/GM/bloglines+gmail.user.js"&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// Displays a box in Gmail with your Bloglines feeds &lt;br /&gt;// version 0.1&lt;br /&gt;// 2005-05-02&lt;br /&gt;// Copyright (c) 2005, Martin Sarsale - martin@malditainternet.com&lt;br /&gt;// Released under the GPL license&lt;br /&gt;// http://www.gnu.org/copyleft/gpl.html&lt;br /&gt;// --------------------------------------------------------------------&lt;br /&gt;// ==UserScript==&lt;br /&gt;// @name          Bloglines &lt;br /&gt;// @namespace     http://martin.malditainternet.com/greasemonkey/gmail+bloglines/&lt;br /&gt;// @include       https://gmail.google.com/*&lt;br /&gt;// @include       http://gmail.google.com/* &lt;br /&gt;// @include       http://mail.google.com/* &lt;br /&gt;// @include       https://mail.google.com/* &lt;br /&gt;// @include       http://gmail.google.com/gmail?logout&amp;hl=en &lt;br /&gt;// @include   https://www.google.com/accounts/ServiceLogin?service=mail*&lt;br /&gt;// @exclude       &lt;br /&gt;// @description  Displays a box in Gmail with your Bloglines feeds &lt;br /&gt;// ==/UserScript==&lt;br /&gt;&lt;br /&gt;(function(){&lt;br /&gt; var __items={};&lt;br /&gt; function cache_gotsubs(e){&lt;br /&gt;  GM_setValue('subs',e['responseText']);&lt;br /&gt;  GM_setValue('subs_updated',Date.parse(Date())/1000)&lt;br /&gt;  //GM_log/gci('getting data, subs_updated set to '+GM_getValue('subs_updated',0));&lt;br /&gt;  gotsubs(e);&lt;br /&gt; }&lt;br /&gt; function getcachedsubs(){&lt;br /&gt;  var v=GM_getValue('subs',null);&lt;br /&gt;  if (v){&lt;br /&gt;   updated=GM_getValue('subs_updated',0);&lt;br /&gt;   d=Date.parse(Date())/1000;&lt;br /&gt;   if ((d - updated) &amp;gt; 300){&lt;br /&gt;    //GM_log/gci('cache expired: '+(d - updated)+"("+d+" - "+updated+")");&lt;br /&gt;    return false;&lt;br /&gt;   }else{&lt;br /&gt;    return v;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt; function getsubs(){&lt;br /&gt;  v=getcachedsubs();&lt;br /&gt;  if (v){&lt;br /&gt;   gotsubs(v); &lt;br /&gt;   return true;&lt;br /&gt;  }&lt;br /&gt;  _getsubs();&lt;br /&gt; }&lt;br /&gt; function _getsubs(){&lt;br /&gt;  GM_xmlhttpRequest({'method':'GET','url':"http://rpc.bloglines.com/listsubs",'onload':cache_gotsubs});&lt;br /&gt; }&lt;br /&gt; function parsesubs(r){&lt;br /&gt;  parser=new DOMParser();&lt;br /&gt;  dom=parser.parseFromString(r,'text/xml');&lt;br /&gt;  outlines=dom.getElementsByTagName('outline');&lt;br /&gt;  subs=new Array();&lt;br /&gt;  for(i=0; i&amp;lt;outlines.length; i++){&lt;br /&gt;   if (outlines[i].getAttribute('type') != undefined ){&lt;br /&gt;    d={ 'title':outlines[i].getAttribute('title'), 'htmlUrl':outlines[i].getAttribute('htmlUrl'), 'type':outlines[i].getAttribute('type'), 'xmlUrl':outlines[i].getAttribute('xmlUrl'), 'BloglinesSubId':outlines[i].getAttribute('BloglinesSubId'), 'BloglinesUnread':outlines[i].getAttribute('BloglinesUnread') };&lt;br /&gt;    subs[subs.length]=d;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return subs;&lt;br /&gt; }&lt;br /&gt; function gotsubs(response){&lt;br /&gt;  if (typeof(response)=='object'){&lt;br /&gt;   data=response['responseText'];&lt;br /&gt;  }else{&lt;br /&gt;   data=response;&lt;br /&gt;  }&lt;br /&gt;  r=parsesubs(data);&lt;br /&gt;  r.sort(function(a,b){; var r=a['BloglinesUnread'] &amp;gt; b['BloglinesUnread']; if(r){return -1}else{return 1} });&lt;br /&gt;  addsubhtml_init();&lt;br /&gt;  for(i=0; i&amp;lt;r.length; i++){&lt;br /&gt;   addsubhtml(r[i]);  &lt;br /&gt;  }&lt;br /&gt;  addsubhtml_end();&lt;br /&gt; }&lt;br /&gt; function addsubhtml_end(){&lt;br /&gt;  ul=document.getElementById('bloglines_subs');&lt;br /&gt;  if (ul){&lt;br /&gt;   GM_setValue('subs_cached_html',ul.innerHTML);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function createbutton(str){&lt;br /&gt;   a=document.createElement('div');&lt;br /&gt;   a.appendChild(document.createTextNode(str))&lt;br /&gt;   a.style.backgroundColor='#dddddd';&lt;br /&gt;   a.style.borderStyle='outset';&lt;br /&gt;   a.style.borderColor='#eeeeee';&lt;br /&gt;   a.style.borderWidth='2px';&lt;br /&gt;   a.style.width='10px';&lt;br /&gt;   a.style.height='10px';&lt;br /&gt;   a.style.lineHeight='10px';&lt;br /&gt;   a.style.verticalAlign='middle';&lt;br /&gt;   a.style.textAlign='center';&lt;br /&gt;   a.style.fontSize='x-small';&lt;br /&gt;   a.style.fontWeight='bold';&lt;br /&gt;   a.style.position='absolute';&lt;br /&gt;   a.style.top='0px';&lt;br /&gt;   a.style.right='0px';&lt;br /&gt;   return a;&lt;br /&gt; }&lt;br /&gt; function addsubhtml_init(){&lt;br /&gt;  ul=document.getElementById('bloglines_subs');&lt;br /&gt;  ul.innerHTML='';&lt;br /&gt;  if (!document.getElementById('bloglines_reload')){&lt;br /&gt;   a=createbutton('R');&lt;br /&gt;   a.addEventListener('click',_getsubs,false);&lt;br /&gt;   a.id='bloglines_reload';&lt;br /&gt;   ul.parentNode.appendChild(a);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; function addsubhtml(d){&lt;br /&gt;  ul=document.getElementById('bloglines_subs');&lt;br /&gt;  li=document.createElement('li');&lt;br /&gt;  li.className='nl';&lt;br /&gt;  li.style.padding='0px';&lt;br /&gt;  li.style.margin='0px';&lt;br /&gt;  li.style.width='100%';&lt;br /&gt;  li.style.overflow='hidden';&lt;br /&gt;  &lt;br /&gt;  a=document.createElement('a');&lt;br /&gt;  a.id=d['BloglinesSubId'];&lt;br /&gt;  a.href='http://www.bloglines.com/myblogs_display?sub='+d['BloglinesSubId']+'&amp;site=0';&lt;br /&gt;  a.target='_blank';&lt;br /&gt;  txt=d['title']&lt;br /&gt;  a.style.fontSize='small';&lt;br /&gt;  if (d['BloglinesUnread']&amp;gt;0){&lt;br /&gt;   a.style.fontWeight='bold';&lt;br /&gt;   txt=txt+" ("+d['BloglinesUnread']+")";&lt;br /&gt;  }&lt;br /&gt;  a.appendChild(document.createTextNode(txt));&lt;br /&gt;  li.appendChild(a);&lt;br /&gt;  ul.appendChild(li);&lt;br /&gt; }&lt;br /&gt; function getsub(e){&lt;br /&gt;  id=e.target.id;&lt;br /&gt;  GM_xmlhttpRequest({'method':'GET','url':"http://rpc.bloglines.com/getitems?n=0&amp;s="+id,'onload':gotsub});&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; function gotsub(r){&lt;br /&gt;  var d=parsesub(r['responseText']);&lt;br /&gt;  for(var i=0; i&amp;lt;d.length; i++){&lt;br /&gt;   item=d[i];&lt;br /&gt;   __items[getText(item.getElementsByTagName('guid')[0])]=item;&lt;br /&gt;  }&lt;br /&gt;  for(i=0; i&amp;lt;d.length; i++){&lt;br /&gt;   item=d[i];&lt;br /&gt;   displaysubhtml(item);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function displaysubhtml(item){&lt;br /&gt;  li=document.createElement('li');&lt;br /&gt;  b=document.getElementById('items');&lt;br /&gt;  &lt;br /&gt;  a=document.createElement('a');&lt;br /&gt;  a.id=getText(item.getElementsByTagName('guid')[0]);&lt;br /&gt;  a.addEventListener('click',displayitem,false);&lt;br /&gt;  a.appendChild(document.createTextNode(getText(item.getElementsByTagName('title')[0])));&lt;br /&gt;  li.appendChild(a);&lt;br /&gt;  b.appendChild(li);&lt;br /&gt; }&lt;br /&gt; function displayitem(e){&lt;br /&gt;  id=e.target.id;&lt;br /&gt;  var item=__items[id];&lt;br /&gt;  displayitemhtml(item);&lt;br /&gt; }&lt;br /&gt; function displayitemhtml(item){&lt;br /&gt;  i=document.getElementById('item');&lt;br /&gt;  i.innerHTML=getText(item.getElementsByTagName('description')[0]);&lt;br /&gt; }&lt;br /&gt; function getText(e){&lt;br /&gt;  nodes=e.childNodes;&lt;br /&gt;  for (var i=0; i&amp;lt;nodes.length; i++){&lt;br /&gt;   if (nodes[i].nodeValue != null){&lt;br /&gt;    return nodes[i].nodeValue;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function parsesub(r){&lt;br /&gt;  parser=new DOMParser();&lt;br /&gt;  dom=parser.parseFromString(r,'text/xml');&lt;br /&gt;  r=dom.getElementsByTagName('item');&lt;br /&gt;  return r;&lt;br /&gt; }&lt;br /&gt; function checkifpresenthtml(){&lt;br /&gt;  d=document.getElementById('nt_9');&lt;br /&gt;  if (!d){&lt;br /&gt;   inithtml();&lt;br /&gt;   getsubs();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function switch_labels(){&lt;br /&gt;  for(i=0; i&amp;lt;window.labels_readed.length; i++){&lt;br /&gt;   label=window.labels_readed[i];&lt;br /&gt;   if (label.style.display != 'none'){&lt;br /&gt;    label.style.display='none';&lt;br /&gt;   }else{&lt;br /&gt;    label.style.display='block';&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function inithtml(){&lt;br /&gt;  bar=document.getElementById('nav');&lt;br /&gt;  if (bar){&lt;br /&gt;   document.styleSheets[0].insertRule('ul#bloglines_subs&amp;gt;li&amp;gt;a{text-decoration:none}',document.styleSheets[0].length);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   v=getcachedsubs();&lt;br /&gt;   if (v){&lt;br /&gt;    data=GM_getValue('subs_cached_html','');&lt;br /&gt;   }else{&lt;br /&gt;    data='';&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   invite=document.getElementById('nb_1');&lt;br /&gt;   if (invite){ invite.style.display='none'; }&lt;br /&gt;   document.getElementById('ds_spam').parentNode.style.display='none';&lt;br /&gt;   document.getElementById('ds_all').parentNode.style.display='none';&lt;br /&gt;   document.getElementById('ds_trash').parentNode.style.display='none';&lt;br /&gt;   document.getElementById('comp').parentNode.style.display='none';&lt;br /&gt;   &lt;br /&gt;   div=document.createElement('div');&lt;br /&gt;   div.style.paddingTop='0px';&lt;br /&gt;   div.id='nb_9';&lt;br /&gt;   html="&amp;lt;div style='width: 95%;padding:0px;position:relative'&amp;gt;&amp;lt;table width='100%' style='margin-top:0px;' cellspacing='0' cellpadding='0' bgcolor='#c3d9ff'&amp;gt; &amp;lt;tbody&amp;gt; &amp;lt;tr height='2'&amp;gt; &amp;lt;td class='tl'&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td class='tr'&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;/tbody&amp;gt; &amp;lt;/table&amp;gt; &amp;lt;div style='padding: 0pt 3px 1px; background: rgb(195, 217, 255) none repeat scroll 0%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;'&amp;gt; &amp;lt;div id='nt_9' class='s h'&amp;gt; &amp;lt;table cellspacing='0' cellpadding='0'&amp;gt; &amp;lt;tbody&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td style='vertical-align: top;' class='s h'&amp;gt; &amp;lt;img width='11' height='11' src='http://greasemonkeyed.com/gmail/images/opentriangle.gif' /&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td class='s'&amp;gt; Bloglines&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/tbody&amp;gt; &amp;lt;/table&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;table cellspacing='2' class='nb'&amp;gt; &amp;lt;tbody&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;&amp;lt;ul id='bloglines_subs' style='width:100%; margin:0px; padding:0px; list-style-type:none'&amp;gt;"+data+"&amp;lt;/ul&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;/tbody&amp;gt; &amp;lt;/table&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;table width='100%' cellspacing='0' cellpadding='0' bgcolor='#c3d9ff'&amp;gt; &amp;lt;tbody&amp;gt; &amp;lt;tr height='2'&amp;gt; &amp;lt;td class='bl'&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td class='br'&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;/tbody&amp;gt; &amp;lt;/table&amp;gt;&amp;lt;/div&amp;gt;";&lt;br /&gt;   div.innerHTML=html;&lt;br /&gt;   bar.appendChild(div);&lt;br /&gt;   return true;&lt;br /&gt;  }&lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt; function init(){&lt;br /&gt;  return inithtml();&lt;br /&gt; }&lt;br /&gt; if (window.location.href=='http://gmail.google.com/gmail?logout&amp;hl=en' || window.location.href.substr(0,57) == 'https://www.google.com/accounts/ServiceLogin?service=mail' ){&lt;br /&gt;  //GM_log/gci('logout');&lt;br /&gt;  GM_setValue('subs',null);&lt;br /&gt;  GM_setValue('subs_update',null);&lt;br /&gt;  GM_setValue('subs_cached_html',null);&lt;br /&gt; }else{&lt;br /&gt;  if(init()){&lt;br /&gt;   getsubs();&lt;br /&gt;   setInterval(checkifpresenthtml,1000);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;})()&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20989390-113728105621058982?l=fxgm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxgm.blogspot.com/feeds/113728105621058982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20989390&amp;postID=113728105621058982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728105621058982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728105621058982'/><link rel='alternate' type='text/html' href='http://fxgm.blogspot.com/2006/01/greasemonkey-userscript-bloglinesgmail_14.html' title='Greasemonkey Userscript - Bloglines+GMail'/><author><name>moPRoTG</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20989390.post-113728089614499782</id><published>2006-01-14T15:21:00.000-08:00</published><updated>2006-01-14T15:21:36.146-08:00</updated><title type='text'>Greasemonkey Userscript - Cookie Monster</title><content type='html'>&lt;a href="http://wickedgravity.frihost.net/Other/GM/CookieMonster.user.js"&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// ==UserScript==&lt;br /&gt;// @name          Cookie Monster&lt;br /&gt;// @namespace     http://derr.cc/userscripts&lt;br /&gt;// @description   Shows the contents of cookies&lt;br /&gt;// @include       * &lt;br /&gt;// @version       0.1&lt;br /&gt;// ==/UserScript==&lt;br /&gt;/*&lt;br /&gt; * CookieMonster.user.js&lt;br /&gt; * Robert J Derr &lt;robjderr@yahoo.com&gt;&lt;br /&gt; * Last Updated: 2005/04/21 by Robert J Derr&lt;br /&gt; *&lt;br /&gt; * This script is a heavily modified version of http://www.stilleye.com/expandArea.user.js&lt;br /&gt; */&lt;br /&gt;(function() {&lt;br /&gt;&lt;br /&gt; function setup() {&lt;br /&gt;  if (document.cookie == '') { return; }&lt;br /&gt;&lt;br /&gt;  var trigger = document.createElement("div");&lt;br /&gt;&lt;br /&gt;  var cookieText = document.createTextNode(document.cookie);&lt;br /&gt;  var triggerText = document.createTextNode("Cookie");&lt;br /&gt;&lt;br /&gt;  trigger.appendChild(triggerText);&lt;br /&gt;&lt;br /&gt;  with(trigger.style) {&lt;br /&gt;   position = "fixed";&lt;br /&gt;   left = bottom = "0px";&lt;br /&gt;   color = "black";&lt;br /&gt;   background = "white";&lt;br /&gt;   border = "1px solid";&lt;br /&gt;   padding = "3px";&lt;br /&gt;   font = "10px sans-serif";&lt;br /&gt;   cursor = "pointer";&lt;br /&gt;   MozOpacity = ".4";&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  document.body.appendChild(trigger);&lt;br /&gt;&lt;br /&gt;  trigger.onmouseover = function() {&lt;br /&gt;   with(this.style) {&lt;br /&gt;    MozOpacity = "1";&lt;br /&gt;   }&lt;br /&gt;   this.replaceChild(cookieText, triggerText);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  trigger.onmouseout = function() {&lt;br /&gt;   with(this.style) {&lt;br /&gt;    MozOpacity = ".4";&lt;br /&gt;   }&lt;br /&gt;   this.replaceChild(triggerText, cookieText);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  trigger.onclick = function() {&lt;br /&gt;   this.parentNode.removeChild(this);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; window.addEventListener("load", setup, false);&lt;br /&gt;})();&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20989390-113728089614499782?l=fxgm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxgm.blogspot.com/feeds/113728089614499782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20989390&amp;postID=113728089614499782' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728089614499782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728089614499782'/><link rel='alternate' type='text/html' href='http://fxgm.blogspot.com/2006/01/greasemonkey-userscript-cookie-monster.html' title='Greasemonkey Userscript - Cookie Monster'/><author><name>moPRoTG</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20989390.post-113728084732763788</id><published>2006-01-14T15:20:00.000-08:00</published><updated>2006-01-14T15:20:47.333-08:00</updated><title type='text'>Greasemonkey Userscript - Bloglines+GMail</title><content type='html'>&lt;a href="http://wickedgravity.frihost.net/Other/GM/bloglines+gmail.user.js"&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// Displays a box in Gmail with your Bloglines feeds &lt;br /&gt;// version 0.1&lt;br /&gt;// 2005-05-02&lt;br /&gt;// Copyright (c) 2005, Martin Sarsale - martin@malditainternet.com&lt;br /&gt;// Released under the GPL license&lt;br /&gt;// http://www.gnu.org/copyleft/gpl.html&lt;br /&gt;// --------------------------------------------------------------------&lt;br /&gt;// ==UserScript==&lt;br /&gt;// @name          Bloglines &lt;br /&gt;// @namespace     http://martin.malditainternet.com/greasemonkey/gmail+bloglines/&lt;br /&gt;// @include       https://gmail.google.com/*&lt;br /&gt;// @include       http://gmail.google.com/* &lt;br /&gt;// @include       http://mail.google.com/* &lt;br /&gt;// @include       https://mail.google.com/* &lt;br /&gt;// @include       http://gmail.google.com/gmail?logout&amp;hl=en &lt;br /&gt;// @include   https://www.google.com/accounts/ServiceLogin?service=mail*&lt;br /&gt;// @exclude       &lt;br /&gt;// @description  Displays a box in Gmail with your Bloglines feeds &lt;br /&gt;// ==/UserScript==&lt;br /&gt;&lt;br /&gt;(function(){&lt;br /&gt; var __items={};&lt;br /&gt; function cache_gotsubs(e){&lt;br /&gt;  GM_setValue('subs',e['responseText']);&lt;br /&gt;  GM_setValue('subs_updated',Date.parse(Date())/1000)&lt;br /&gt;  //GM_log/gci('getting data, subs_updated set to '+GM_getValue('subs_updated',0));&lt;br /&gt;  gotsubs(e);&lt;br /&gt; }&lt;br /&gt; function getcachedsubs(){&lt;br /&gt;  var v=GM_getValue('subs',null);&lt;br /&gt;  if (v){&lt;br /&gt;   updated=GM_getValue('subs_updated',0);&lt;br /&gt;   d=Date.parse(Date())/1000;&lt;br /&gt;   if ((d - updated) &gt; 300){&lt;br /&gt;    //GM_log/gci('cache expired: '+(d - updated)+"("+d+" - "+updated+")");&lt;br /&gt;    return false;&lt;br /&gt;   }else{&lt;br /&gt;    return v;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt; function getsubs(){&lt;br /&gt;  v=getcachedsubs();&lt;br /&gt;  if (v){&lt;br /&gt;   gotsubs(v); &lt;br /&gt;   return true;&lt;br /&gt;  }&lt;br /&gt;  _getsubs();&lt;br /&gt; }&lt;br /&gt; function _getsubs(){&lt;br /&gt;  GM_xmlhttpRequest({'method':'GET','url':"http://rpc.bloglines.com/listsubs",'onload':cache_gotsubs});&lt;br /&gt; }&lt;br /&gt; function parsesubs(r){&lt;br /&gt;  parser=new DOMParser();&lt;br /&gt;  dom=parser.parseFromString(r,'text/xml');&lt;br /&gt;  outlines=dom.getElementsByTagName('outline');&lt;br /&gt;  subs=new Array();&lt;br /&gt;  for(i=0; i&lt;outlines.length; i++){&lt;br /&gt;   if (outlines[i].getAttribute('type') != undefined ){&lt;br /&gt;    d={ 'title':outlines[i].getAttribute('title'), 'htmlUrl':outlines[i].getAttribute('htmlUrl'), 'type':outlines[i].getAttribute('type'), 'xmlUrl':outlines[i].getAttribute('xmlUrl'), 'BloglinesSubId':outlines[i].getAttribute('BloglinesSubId'), 'BloglinesUnread':outlines[i].getAttribute('BloglinesUnread') };&lt;br /&gt;    subs[subs.length]=d;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return subs;&lt;br /&gt; }&lt;br /&gt; function gotsubs(response){&lt;br /&gt;  if (typeof(response)=='object'){&lt;br /&gt;   data=response['responseText'];&lt;br /&gt;  }else{&lt;br /&gt;   data=response;&lt;br /&gt;  }&lt;br /&gt;  r=parsesubs(data);&lt;br /&gt;  r.sort(function(a,b){; var r=a['BloglinesUnread'] &gt; b['BloglinesUnread']; if(r){return -1}else{return 1} });&lt;br /&gt;  addsubhtml_init();&lt;br /&gt;  for(i=0; i&lt;r.length; i++){&lt;br /&gt;   addsubhtml(r[i]);  &lt;br /&gt;  }&lt;br /&gt;  addsubhtml_end();&lt;br /&gt; }&lt;br /&gt; function addsubhtml_end(){&lt;br /&gt;  ul=document.getElementById('bloglines_subs');&lt;br /&gt;  if (ul){&lt;br /&gt;   GM_setValue('subs_cached_html',ul.innerHTML);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function createbutton(str){&lt;br /&gt;   a=document.createElement('div');&lt;br /&gt;   a.appendChild(document.createTextNode(str))&lt;br /&gt;   a.style.backgroundColor='#dddddd';&lt;br /&gt;   a.style.borderStyle='outset';&lt;br /&gt;   a.style.borderColor='#eeeeee';&lt;br /&gt;   a.style.borderWidth='2px';&lt;br /&gt;   a.style.width='10px';&lt;br /&gt;   a.style.height='10px';&lt;br /&gt;   a.style.lineHeight='10px';&lt;br /&gt;   a.style.verticalAlign='middle';&lt;br /&gt;   a.style.textAlign='center';&lt;br /&gt;   a.style.fontSize='x-small';&lt;br /&gt;   a.style.fontWeight='bold';&lt;br /&gt;   a.style.position='absolute';&lt;br /&gt;   a.style.top='0px';&lt;br /&gt;   a.style.right='0px';&lt;br /&gt;   return a;&lt;br /&gt; }&lt;br /&gt; function addsubhtml_init(){&lt;br /&gt;  ul=document.getElementById('bloglines_subs');&lt;br /&gt;  ul.innerHTML='';&lt;br /&gt;  if (!document.getElementById('bloglines_reload')){&lt;br /&gt;   a=createbutton('R');&lt;br /&gt;   a.addEventListener('click',_getsubs,false);&lt;br /&gt;   a.id='bloglines_reload';&lt;br /&gt;   ul.parentNode.appendChild(a);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; function addsubhtml(d){&lt;br /&gt;  ul=document.getElementById('bloglines_subs');&lt;br /&gt;  li=document.createElement('li');&lt;br /&gt;  li.className='nl';&lt;br /&gt;  li.style.padding='0px';&lt;br /&gt;  li.style.margin='0px';&lt;br /&gt;  li.style.width='100%';&lt;br /&gt;  li.style.overflow='hidden';&lt;br /&gt;  &lt;br /&gt;  a=document.createElement('a');&lt;br /&gt;  a.id=d['BloglinesSubId'];&lt;br /&gt;  a.href='http://www.bloglines.com/myblogs_display?sub='+d['BloglinesSubId']+'&amp;site=0';&lt;br /&gt;  a.target='_blank';&lt;br /&gt;  txt=d['title']&lt;br /&gt;  a.style.fontSize='small';&lt;br /&gt;  if (d['BloglinesUnread']&gt;0){&lt;br /&gt;   a.style.fontWeight='bold';&lt;br /&gt;   txt=txt+" ("+d['BloglinesUnread']+")";&lt;br /&gt;  }&lt;br /&gt;  a.appendChild(document.createTextNode(txt));&lt;br /&gt;  li.appendChild(a);&lt;br /&gt;  ul.appendChild(li);&lt;br /&gt; }&lt;br /&gt; function getsub(e){&lt;br /&gt;  id=e.target.id;&lt;br /&gt;  GM_xmlhttpRequest({'method':'GET','url':"http://rpc.bloglines.com/getitems?n=0&amp;s="+id,'onload':gotsub});&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; function gotsub(r){&lt;br /&gt;  var d=parsesub(r['responseText']);&lt;br /&gt;  for(var i=0; i&lt;d.length; i++){&lt;br /&gt;   item=d[i];&lt;br /&gt;   __items[getText(item.getElementsByTagName('guid')[0])]=item;&lt;br /&gt;  }&lt;br /&gt;  for(i=0; i&lt;d.length; i++){&lt;br /&gt;   item=d[i];&lt;br /&gt;   displaysubhtml(item);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function displaysubhtml(item){&lt;br /&gt;  li=document.createElement('li');&lt;br /&gt;  b=document.getElementById('items');&lt;br /&gt;  &lt;br /&gt;  a=document.createElement('a');&lt;br /&gt;  a.id=getText(item.getElementsByTagName('guid')[0]);&lt;br /&gt;  a.addEventListener('click',displayitem,false);&lt;br /&gt;  a.appendChild(document.createTextNode(getText(item.getElementsByTagName('title')[0])));&lt;br /&gt;  li.appendChild(a);&lt;br /&gt;  b.appendChild(li);&lt;br /&gt; }&lt;br /&gt; function displayitem(e){&lt;br /&gt;  id=e.target.id;&lt;br /&gt;  var item=__items[id];&lt;br /&gt;  displayitemhtml(item);&lt;br /&gt; }&lt;br /&gt; function displayitemhtml(item){&lt;br /&gt;  i=document.getElementById('item');&lt;br /&gt;  i.innerHTML=getText(item.getElementsByTagName('description')[0]);&lt;br /&gt; }&lt;br /&gt; function getText(e){&lt;br /&gt;  nodes=e.childNodes;&lt;br /&gt;  for (var i=0; i&lt;nodes.length; i++){&lt;br /&gt;   if (nodes[i].nodeValue != null){&lt;br /&gt;    return nodes[i].nodeValue;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function parsesub(r){&lt;br /&gt;  parser=new DOMParser();&lt;br /&gt;  dom=parser.parseFromString(r,'text/xml');&lt;br /&gt;  r=dom.getElementsByTagName('item');&lt;br /&gt;  return r;&lt;br /&gt; }&lt;br /&gt; function checkifpresenthtml(){&lt;br /&gt;  d=document.getElementById('nt_9');&lt;br /&gt;  if (!d){&lt;br /&gt;   inithtml();&lt;br /&gt;   getsubs();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function switch_labels(){&lt;br /&gt;  for(i=0; i&lt;window.labels_readed.length; i++){&lt;br /&gt;   label=window.labels_readed[i];&lt;br /&gt;   if (label.style.display != 'none'){&lt;br /&gt;    label.style.display='none';&lt;br /&gt;   }else{&lt;br /&gt;    label.style.display='block';&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function inithtml(){&lt;br /&gt;  bar=document.getElementById('nav');&lt;br /&gt;  if (bar){&lt;br /&gt;   document.styleSheets[0].insertRule('ul#bloglines_subs&gt;li&gt;a{text-decoration:none}',document.styleSheets[0].length);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   v=getcachedsubs();&lt;br /&gt;   if (v){&lt;br /&gt;    data=GM_getValue('subs_cached_html','');&lt;br /&gt;   }else{&lt;br /&gt;    data='';&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   invite=document.getElementById('nb_1');&lt;br /&gt;   if (invite){ invite.style.display='none'; }&lt;br /&gt;   document.getElementById('ds_spam').parentNode.style.display='none';&lt;br /&gt;   document.getElementById('ds_all').parentNode.style.display='none';&lt;br /&gt;   document.getElementById('ds_trash').parentNode.style.display='none';&lt;br /&gt;   document.getElementById('comp').parentNode.style.display='none';&lt;br /&gt;   &lt;br /&gt;   div=document.createElement('div');&lt;br /&gt;   div.style.paddingTop='0px';&lt;br /&gt;   div.id='nb_9';&lt;br /&gt;   html="&lt;div style='width: 95%;padding:0px;position:relative'&gt;&lt;table width='100%' style='margin-top:0px;' cellspacing='0' cellpadding='0' bgcolor='#c3d9ff'&gt; &lt;tbody&gt; &lt;tr height='2'&gt; &lt;td class='tl'&gt; &lt;/td&gt; &lt;td class='tr'&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;div style='padding: 0pt 3px 1px; background: rgb(195, 217, 255) none repeat scroll 0%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;'&gt; &lt;div id='nt_9' class='s h'&gt; &lt;table cellspacing='0' cellpadding='0'&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td style='vertical-align: top;' class='s h'&gt; &lt;img width='11' height='11' src='http://greasemonkeyed.com/gmail/images/opentriangle.gif' /&gt; &lt;/td&gt; &lt;td class='s'&gt; Bloglines&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt; &lt;/div&gt; &lt;table cellspacing='2' class='nb'&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;ul id='bloglines_subs' style='width:100%; margin:0px; padding:0px; list-style-type:none'&gt;"+data+"&lt;/ul&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/div&gt; &lt;table width='100%' cellspacing='0' cellpadding='0' bgcolor='#c3d9ff'&gt; &lt;tbody&gt; &lt;tr height='2'&gt; &lt;td class='bl'&gt; &lt;/td&gt; &lt;td class='br'&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;&lt;/div&gt;";&lt;br /&gt;   div.innerHTML=html;&lt;br /&gt;   bar.appendChild(div);&lt;br /&gt;   return true;&lt;br /&gt;  }&lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt; function init(){&lt;br /&gt;  return inithtml();&lt;br /&gt; }&lt;br /&gt; if (window.location.href=='http://gmail.google.com/gmail?logout&amp;hl=en' || window.location.href.substr(0,57) == 'https://www.google.com/accounts/ServiceLogin?service=mail' ){&lt;br /&gt;  //GM_log/gci('logout');&lt;br /&gt;  GM_setValue('subs',null);&lt;br /&gt;  GM_setValue('subs_update',null);&lt;br /&gt;  GM_setValue('subs_cached_html',null);&lt;br /&gt; }else{&lt;br /&gt;  if(init()){&lt;br /&gt;   getsubs();&lt;br /&gt;   setInterval(checkifpresenthtml,1000);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;})()&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20989390-113728084732763788?l=fxgm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxgm.blogspot.com/feeds/113728084732763788/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20989390&amp;postID=113728084732763788' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728084732763788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728084732763788'/><link rel='alternate' type='text/html' href='http://fxgm.blogspot.com/2006/01/greasemonkey-userscript-bloglinesgmail.html' title='Greasemonkey Userscript - Bloglines+GMail'/><author><name>moPRoTG</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20989390.post-113728066636161928</id><published>2006-01-14T15:17:00.000-08:00</published><updated>2006-01-14T15:17:46.366-08:00</updated><title type='text'></title><content type='html'>&lt;a href="http://wickedgravity.frihost.net/Other/GM/bloglines+gmail.user.js"&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;// Displays a box in Gmail with your Bloglines feeds &lt;br /&gt;// version 0.1&lt;br /&gt;// 2005-05-02&lt;br /&gt;// Copyright (c) 2005, Martin Sarsale - martin@malditainternet.com&lt;br /&gt;// Released under the GPL license&lt;br /&gt;// http://www.gnu.org/copyleft/gpl.html&lt;br /&gt;// --------------------------------------------------------------------&lt;br /&gt;// ==UserScript==&lt;br /&gt;// @name          Bloglines &lt;br /&gt;// @namespace     http://martin.malditainternet.com/greasemonkey/gmail+bloglines/&lt;br /&gt;// @include       https://gmail.google.com/*&lt;br /&gt;// @include       http://gmail.google.com/* &lt;br /&gt;// @include       http://mail.google.com/* &lt;br /&gt;// @include       https://mail.google.com/* &lt;br /&gt;// @include       http://gmail.google.com/gmail?logout&amp;hl=en &lt;br /&gt;// @include   https://www.google.com/accounts/ServiceLogin?service=mail*&lt;br /&gt;// @exclude       &lt;br /&gt;// @description  Displays a box in Gmail with your Bloglines feeds &lt;br /&gt;// ==/UserScript==&lt;br /&gt;&lt;br /&gt;(function(){&lt;br /&gt; var __items={};&lt;br /&gt; function cache_gotsubs(e){&lt;br /&gt;  GM_setValue('subs',e['responseText']);&lt;br /&gt;  GM_setValue('subs_updated',Date.parse(Date())/1000)&lt;br /&gt;  //GM_log/gci('getting data, subs_updated set to '+GM_getValue('subs_updated',0));&lt;br /&gt;  gotsubs(e);&lt;br /&gt; }&lt;br /&gt; function getcachedsubs(){&lt;br /&gt;  var v=GM_getValue('subs',null);&lt;br /&gt;  if (v){&lt;br /&gt;   updated=GM_getValue('subs_updated',0);&lt;br /&gt;   d=Date.parse(Date())/1000;&lt;br /&gt;   if ((d - updated) &gt; 300){&lt;br /&gt;    //GM_log/gci('cache expired: '+(d - updated)+"("+d+" - "+updated+")");&lt;br /&gt;    return false;&lt;br /&gt;   }else{&lt;br /&gt;    return v;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt; function getsubs(){&lt;br /&gt;  v=getcachedsubs();&lt;br /&gt;  if (v){&lt;br /&gt;   gotsubs(v); &lt;br /&gt;   return true;&lt;br /&gt;  }&lt;br /&gt;  _getsubs();&lt;br /&gt; }&lt;br /&gt; function _getsubs(){&lt;br /&gt;  GM_xmlhttpRequest({'method':'GET','url':"http://rpc.bloglines.com/listsubs",'onload':cache_gotsubs});&lt;br /&gt; }&lt;br /&gt; function parsesubs(r){&lt;br /&gt;  parser=new DOMParser();&lt;br /&gt;  dom=parser.parseFromString(r,'text/xml');&lt;br /&gt;  outlines=dom.getElementsByTagName('outline');&lt;br /&gt;  subs=new Array();&lt;br /&gt;  for(i=0; i&lt;outlines.length; i++){&lt;br /&gt;   if (outlines[i].getAttribute('type') != undefined ){&lt;br /&gt;    d={ 'title':outlines[i].getAttribute('title'), 'htmlUrl':outlines[i].getAttribute('htmlUrl'), 'type':outlines[i].getAttribute('type'), 'xmlUrl':outlines[i].getAttribute('xmlUrl'), 'BloglinesSubId':outlines[i].getAttribute('BloglinesSubId'), 'BloglinesUnread':outlines[i].getAttribute('BloglinesUnread') };&lt;br /&gt;    subs[subs.length]=d;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt;  return subs;&lt;br /&gt; }&lt;br /&gt; function gotsubs(response){&lt;br /&gt;  if (typeof(response)=='object'){&lt;br /&gt;   data=response['responseText'];&lt;br /&gt;  }else{&lt;br /&gt;   data=response;&lt;br /&gt;  }&lt;br /&gt;  r=parsesubs(data);&lt;br /&gt;  r.sort(function(a,b){; var r=a['BloglinesUnread'] &gt; b['BloglinesUnread']; if(r){return -1}else{return 1} });&lt;br /&gt;  addsubhtml_init();&lt;br /&gt;  for(i=0; i&lt;r.length; i++){&lt;br /&gt;   addsubhtml(r[i]);  &lt;br /&gt;  }&lt;br /&gt;  addsubhtml_end();&lt;br /&gt; }&lt;br /&gt; function addsubhtml_end(){&lt;br /&gt;  ul=document.getElementById('bloglines_subs');&lt;br /&gt;  if (ul){&lt;br /&gt;   GM_setValue('subs_cached_html',ul.innerHTML);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function createbutton(str){&lt;br /&gt;   a=document.createElement('div');&lt;br /&gt;   a.appendChild(document.createTextNode(str))&lt;br /&gt;   a.style.backgroundColor='#dddddd';&lt;br /&gt;   a.style.borderStyle='outset';&lt;br /&gt;   a.style.borderColor='#eeeeee';&lt;br /&gt;   a.style.borderWidth='2px';&lt;br /&gt;   a.style.width='10px';&lt;br /&gt;   a.style.height='10px';&lt;br /&gt;   a.style.lineHeight='10px';&lt;br /&gt;   a.style.verticalAlign='middle';&lt;br /&gt;   a.style.textAlign='center';&lt;br /&gt;   a.style.fontSize='x-small';&lt;br /&gt;   a.style.fontWeight='bold';&lt;br /&gt;   a.style.position='absolute';&lt;br /&gt;   a.style.top='0px';&lt;br /&gt;   a.style.right='0px';&lt;br /&gt;   return a;&lt;br /&gt; }&lt;br /&gt; function addsubhtml_init(){&lt;br /&gt;  ul=document.getElementById('bloglines_subs');&lt;br /&gt;  ul.innerHTML='';&lt;br /&gt;  if (!document.getElementById('bloglines_reload')){&lt;br /&gt;   a=createbutton('R');&lt;br /&gt;   a.addEventListener('click',_getsubs,false);&lt;br /&gt;   a.id='bloglines_reload';&lt;br /&gt;   ul.parentNode.appendChild(a);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; function addsubhtml(d){&lt;br /&gt;  ul=document.getElementById('bloglines_subs');&lt;br /&gt;  li=document.createElement('li');&lt;br /&gt;  li.className='nl';&lt;br /&gt;  li.style.padding='0px';&lt;br /&gt;  li.style.margin='0px';&lt;br /&gt;  li.style.width='100%';&lt;br /&gt;  li.style.overflow='hidden';&lt;br /&gt;  &lt;br /&gt;  a=document.createElement('a');&lt;br /&gt;  a.id=d['BloglinesSubId'];&lt;br /&gt;  a.href='http://www.bloglines.com/myblogs_display?sub='+d['BloglinesSubId']+'&amp;site=0';&lt;br /&gt;  a.target='_blank';&lt;br /&gt;  txt=d['title']&lt;br /&gt;  a.style.fontSize='small';&lt;br /&gt;  if (d['BloglinesUnread']&gt;0){&lt;br /&gt;   a.style.fontWeight='bold';&lt;br /&gt;   txt=txt+" ("+d['BloglinesUnread']+")";&lt;br /&gt;  }&lt;br /&gt;  a.appendChild(document.createTextNode(txt));&lt;br /&gt;  li.appendChild(a);&lt;br /&gt;  ul.appendChild(li);&lt;br /&gt; }&lt;br /&gt; function getsub(e){&lt;br /&gt;  id=e.target.id;&lt;br /&gt;  GM_xmlhttpRequest({'method':'GET','url':"http://rpc.bloglines.com/getitems?n=0&amp;s="+id,'onload':gotsub});&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt; function gotsub(r){&lt;br /&gt;  var d=parsesub(r['responseText']);&lt;br /&gt;  for(var i=0; i&lt;d.length; i++){&lt;br /&gt;   item=d[i];&lt;br /&gt;   __items[getText(item.getElementsByTagName('guid')[0])]=item;&lt;br /&gt;  }&lt;br /&gt;  for(i=0; i&lt;d.length; i++){&lt;br /&gt;   item=d[i];&lt;br /&gt;   displaysubhtml(item);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function displaysubhtml(item){&lt;br /&gt;  li=document.createElement('li');&lt;br /&gt;  b=document.getElementById('items');&lt;br /&gt;  &lt;br /&gt;  a=document.createElement('a');&lt;br /&gt;  a.id=getText(item.getElementsByTagName('guid')[0]);&lt;br /&gt;  a.addEventListener('click',displayitem,false);&lt;br /&gt;  a.appendChild(document.createTextNode(getText(item.getElementsByTagName('title')[0])));&lt;br /&gt;  li.appendChild(a);&lt;br /&gt;  b.appendChild(li);&lt;br /&gt; }&lt;br /&gt; function displayitem(e){&lt;br /&gt;  id=e.target.id;&lt;br /&gt;  var item=__items[id];&lt;br /&gt;  displayitemhtml(item);&lt;br /&gt; }&lt;br /&gt; function displayitemhtml(item){&lt;br /&gt;  i=document.getElementById('item');&lt;br /&gt;  i.innerHTML=getText(item.getElementsByTagName('description')[0]);&lt;br /&gt; }&lt;br /&gt; function getText(e){&lt;br /&gt;  nodes=e.childNodes;&lt;br /&gt;  for (var i=0; i&lt;nodes.length; i++){&lt;br /&gt;   if (nodes[i].nodeValue != null){&lt;br /&gt;    return nodes[i].nodeValue;&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function parsesub(r){&lt;br /&gt;  parser=new DOMParser();&lt;br /&gt;  dom=parser.parseFromString(r,'text/xml');&lt;br /&gt;  r=dom.getElementsByTagName('item');&lt;br /&gt;  return r;&lt;br /&gt; }&lt;br /&gt; function checkifpresenthtml(){&lt;br /&gt;  d=document.getElementById('nt_9');&lt;br /&gt;  if (!d){&lt;br /&gt;   inithtml();&lt;br /&gt;   getsubs();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function switch_labels(){&lt;br /&gt;  for(i=0; i&lt;window.labels_readed.length; i++){&lt;br /&gt;   label=window.labels_readed[i];&lt;br /&gt;   if (label.style.display != 'none'){&lt;br /&gt;    label.style.display='none';&lt;br /&gt;   }else{&lt;br /&gt;    label.style.display='block';&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; function inithtml(){&lt;br /&gt;  bar=document.getElementById('nav');&lt;br /&gt;  if (bar){&lt;br /&gt;   document.styleSheets[0].insertRule('ul#bloglines_subs&gt;li&gt;a{text-decoration:none}',document.styleSheets[0].length);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   v=getcachedsubs();&lt;br /&gt;   if (v){&lt;br /&gt;    data=GM_getValue('subs_cached_html','');&lt;br /&gt;   }else{&lt;br /&gt;    data='';&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   invite=document.getElementById('nb_1');&lt;br /&gt;   if (invite){ invite.style.display='none'; }&lt;br /&gt;   document.getElementById('ds_spam').parentNode.style.display='none';&lt;br /&gt;   document.getElementById('ds_all').parentNode.style.display='none';&lt;br /&gt;   document.getElementById('ds_trash').parentNode.style.display='none';&lt;br /&gt;   document.getElementById('comp').parentNode.style.display='none';&lt;br /&gt;   &lt;br /&gt;   div=document.createElement('div');&lt;br /&gt;   div.style.paddingTop='0px';&lt;br /&gt;   div.id='nb_9';&lt;br /&gt;   html="&lt;div style='width: 95%;padding:0px;position:relative'&gt;&lt;table width='100%' style='margin-top:0px;' cellspacing='0' cellpadding='0' bgcolor='#c3d9ff'&gt; &lt;tbody&gt; &lt;tr height='2'&gt; &lt;td class='tl'&gt; &lt;/td&gt; &lt;td class='tr'&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;div style='padding: 0pt 3px 1px; background: rgb(195, 217, 255) none repeat scroll 0%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;'&gt; &lt;div id='nt_9' class='s h'&gt; &lt;table cellspacing='0' cellpadding='0'&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td style='vertical-align: top;' class='s h'&gt; &lt;img width='11' height='11' src='http://greasemonkeyed.com/gmail/images/opentriangle.gif' /&gt; &lt;/td&gt; &lt;td class='s'&gt; Bloglines&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt; &lt;/table&gt; &lt;/div&gt; &lt;table cellspacing='2' class='nb'&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;ul id='bloglines_subs' style='width:100%; margin:0px; padding:0px; list-style-type:none'&gt;"+data+"&lt;/ul&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;/div&gt; &lt;table width='100%' cellspacing='0' cellpadding='0' bgcolor='#c3d9ff'&gt; &lt;tbody&gt; &lt;tr height='2'&gt; &lt;td class='bl'&gt; &lt;/td&gt; &lt;td class='br'&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;&lt;/div&gt;";&lt;br /&gt;   div.innerHTML=html;&lt;br /&gt;   bar.appendChild(div);&lt;br /&gt;   return true;&lt;br /&gt;  }&lt;br /&gt;  return false;&lt;br /&gt; }&lt;br /&gt; function init(){&lt;br /&gt;  return inithtml();&lt;br /&gt; }&lt;br /&gt; if (window.location.href=='http://gmail.google.com/gmail?logout&amp;hl=en' || window.location.href.substr(0,57) == 'https://www.google.com/accounts/ServiceLogin?service=mail' ){&lt;br /&gt;  //GM_log/gci('logout');&lt;br /&gt;  GM_setValue('subs',null);&lt;br /&gt;  GM_setValue('subs_update',null);&lt;br /&gt;  GM_setValue('subs_cached_html',null);&lt;br /&gt; }else{&lt;br /&gt;  if(init()){&lt;br /&gt;   getsubs();&lt;br /&gt;   setInterval(checkifpresenthtml,1000);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;})()&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20989390-113728066636161928?l=fxgm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxgm.blogspot.com/feeds/113728066636161928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20989390&amp;postID=113728066636161928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728066636161928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728066636161928'/><link rel='alternate' type='text/html' href='http://fxgm.blogspot.com/2006/01/300-gmloggcicache-expired-d-updatedd.html' title=''/><author><name>moPRoTG</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20989390.post-113728047573365338</id><published>2006-01-14T15:13:00.000-08:00</published><updated>2006-01-14T15:15:09.950-08:00</updated><title type='text'>Greasemonkey Userscript - Amazon Affiliate Anti-Hijacker</title><content type='html'>&lt;a href="http://wickedgravity.frihost.net/Other/GM/antihijacker.js"&gt;http://wickedgravity.frihost.net/Other/GM/antihijacker.js&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;// Amazon Affiliate Anti-Hijacker&lt;br /&gt;// version 0.3 BETA!&lt;br /&gt;// 2005-04-21&lt;br /&gt;// Copyright (c) 2005, Mark Pilgrim&lt;br /&gt;// Released under the GPL license&lt;br /&gt;// http://www.gnu.org/copyleft/gpl.html&lt;br /&gt;//&lt;br /&gt;// --------------------------------------------------------------------&lt;br /&gt;//&lt;br /&gt;// Browser extensions, toolbars, and Greasemonkey user scripts can&lt;br /&gt;// hijack your Amazon affiliate links.  This script tries to restore&lt;br /&gt;// any damage done by such scripts.&lt;br /&gt;//&lt;br /&gt;// To use it, edit the line below that starts "var myAffiliateID ="&lt;br /&gt;// to define your Amazon affiliate ID.  Then copy this script to&lt;br /&gt;// your web server and link to it from each page on your site:&lt;br /&gt;//&lt;br /&gt;// &amp;lt;script type="text/javascript" src="/path/to/your/copy/of/antihijacker.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;//&lt;br /&gt;&lt;br /&gt;var _onload;&lt;br /&gt;if (window.onload) {&lt;br /&gt;    _onload = window.onload;&lt;br /&gt;}&lt;br /&gt;window.onload = (function() {&lt;br /&gt;    var myAffiliateID = 'YOUR_AMAZON_AFFILIATE_ID_GOES_HERE';&lt;br /&gt;&lt;br /&gt;    function getASIN(href) {&lt;br /&gt;        var asinMatch, asin;&lt;br /&gt;        asinMatch = href.match(/\/exec\/obidos\/ASIN\/(\w{10})/i);&lt;br /&gt;        if (!asinMatch) { return null; }&lt;br /&gt;        asin = asinMatch[1];&lt;br /&gt;        return asin;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function getDomain(href) {&lt;br /&gt;        return href.replace(/https?:\/\/(.+?)\/.*$/gi, '$1');&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function restoreAmazonLink(a, myAffiliateID) {&lt;br /&gt;        var href, asin;&lt;br /&gt;        href = a.href;&lt;br /&gt;        asin = getASIN(href);&lt;br /&gt;        if (!asin) { return; }&lt;br /&gt;        a.href = 'http://' + getDomain(href) + '/exec/obidos/ASIN/' +&lt;br /&gt;            asin + '/ref=nosim/' + myAffiliateID;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    var links, i, a;&lt;br /&gt;    links = document.getElementsByTagName("a");&lt;br /&gt;    for (i = 0; i &lt; links.length; i += 1) {&lt;br /&gt;        a = links[i];&lt;br /&gt;        if (a.href.match(/\/exec\/obidos\/ASIN\/(\w{10})/i)) {&lt;br /&gt;            if (!a.href.match(myAffiliateID)) {&lt;br /&gt;                restoreAmazonLink(a, myAffiliateID);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    if (_onload) {&lt;br /&gt;        _onload();&lt;br /&gt;    }&lt;br /&gt;});&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// ChangeLog&lt;br /&gt;// 2005-04-21 - 0.3 - MAP - linted&lt;br /&gt;// 2005-04-18 - 0.2 - MAP - tidy code&lt;br /&gt;//&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20989390-113728047573365338?l=fxgm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxgm.blogspot.com/feeds/113728047573365338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20989390&amp;postID=113728047573365338' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728047573365338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728047573365338'/><link rel='alternate' type='text/html' href='http://fxgm.blogspot.com/2006/01/greasemonkey-userscript-amazon_14.html' title='Greasemonkey Userscript - Amazon Affiliate Anti-Hijacker'/><author><name>moPRoTG</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20989390.post-113728034841824271</id><published>2006-01-14T15:12:00.000-08:00</published><updated>2006-01-14T15:12:28.420-08:00</updated><title type='text'>Greasemonkey Userscript - Auto Save Forms</title><content type='html'>&lt;a href="http://wickedgravity.frihost.net/Other/GM/auto_save_forms.user.js"&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// ==UserScript==&lt;br /&gt;// @name          Auto Save Forms&lt;br /&gt;// @description   Saves form data every few seconds and gives option of repopulating form later.&lt;br /&gt;// ==/UserScript==&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(function() {&lt;br /&gt;&lt;br /&gt; var d = document;&lt;br /&gt; var i = d.getElementsByTagName('input'); // inputs&lt;br /&gt; var t = d.getElementsByTagName('textarea'); // textareas&lt;br /&gt; var f = d.getElementsByTagName('form'); // textareas&lt;br /&gt;&lt;br /&gt; // Strip i down to just text inputs&lt;br /&gt; var newi = new Array();&lt;br /&gt; for (j=0;j&amp;lt;i.length;j++) {&lt;br /&gt;  if (i[j].type == 'text') {&lt;br /&gt;   newi.push(i[j]);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; i = newi;&lt;br /&gt;&lt;br /&gt; var box; // Box for offer to repopulate&lt;br /&gt; var boxtext; // Text for offer to repopulate&lt;br /&gt; var j;&lt;br /&gt; var e = new Array();&lt;br /&gt; var eo;&lt;br /&gt; var saving;&lt;br /&gt;&lt;br /&gt; function start() {&lt;br /&gt;  for (j = 0; j &amp;lt; f.length; j++) {&lt;br /&gt;   f[j].addEventListener("submit", clear, false);&lt;br /&gt;  }&lt;br /&gt;  for (j = 0; j &amp;lt; i.length; j++) {&lt;br /&gt;   i[j].addEventListener("keyup", prepsave, false);&lt;br /&gt;  }&lt;br /&gt;  for (j = 0; j &lt; t.length; j++) {&lt;br /&gt;   t[j].addEventListener("keyup", prepsave, false);&lt;br /&gt;  }&lt;br /&gt;  offer_repopulate();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function clear() {&lt;br /&gt;  var today = new Date();&lt;br /&gt;  var expiry = new Date(today.getTime() - 30 * 24 * 60 * 60 * 1000); // In the past to expire cookie&lt;br /&gt;  d.cookie = "FormsSavedData=; expires=" + expiry.toGMTString() + "; path=/";&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function getCookie(name) {&lt;br /&gt;  var re = new RegExp(name + "=([^;]+)");&lt;br /&gt;  var value = re.exec(d.cookie);&lt;br /&gt;  return (value != null) ? unescape(value[1]) : false;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function setCookie(name, value) {&lt;br /&gt;  var today = new Date();&lt;br /&gt;  var expiry = new Date(today.getTime() + 30 * 24 * 60 * 60 * 1000); // Expires after a month&lt;br /&gt;&lt;br /&gt;  d.cookie = name + "=" + escape(value) + "; expires=" + expiry.toGMTString() + "; path=/";&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function prepsave() {&lt;br /&gt;  clearInterval(saving);&lt;br /&gt;  saving = setInterval(savedata, 500);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function savedata() {&lt;br /&gt;  e = new Array();&lt;br /&gt;  for (j=0;j&amp;lt;i.length;j++) {&lt;br /&gt;   e.push(i[j].value.toString());&lt;br /&gt;  }&lt;br /&gt;  for (j=0;j&amp;lt;t.length;j++) {&lt;br /&gt;   e.push(t[j].value.toString());&lt;br /&gt;  }&lt;br /&gt;  setCookie('FormsSavedData', e.join("|"));&lt;br /&gt;  clearInterval(saving);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function repopulate() {&lt;br /&gt;  eo = getCookie('FormsSavedData').split("|");&lt;br /&gt;  for (j=0;j&amp;lt;i.length;j++) {&lt;br /&gt;   i[j].value = eo.shift();&lt;br /&gt;  }&lt;br /&gt;  for (j = 0; j &amp;lt; t.length; j++) {&lt;br /&gt;   t[j].value = eo.shift();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function offer_repopulate() {&lt;br /&gt;  if (getCookie('FormsSavedData')) {&lt;br /&gt;   // Cookie found. Write offer to repopulate to page.&lt;br /&gt;   box = d.createElement("div");&lt;br /&gt;   box.setAttribute("style", &lt;br /&gt;                               "cursor: pointer; " +&lt;br /&gt;                               "position: absolute; " +&lt;br /&gt;                               "top: 20px; " +&lt;br /&gt;                               "right: 20px; " +&lt;br /&gt;                               "background-color: #fee; " +&lt;br /&gt;                               "color: #f00; " +&lt;br /&gt;                               "border: 1px dotted #f00; " +&lt;br /&gt;                               "padding: 3px 8px;");&lt;br /&gt;   d.body.appendChild(box);&lt;br /&gt;   box.addEventListener("click", repopulate, false);&lt;br /&gt;&lt;br /&gt;   boxtext = d.createTextNode('Repopulate Form');&lt;br /&gt;   box.appendChild(boxtext);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; window.addEventListener("load", start, false);&lt;br /&gt;&lt;br /&gt;})();&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20989390-113728034841824271?l=fxgm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxgm.blogspot.com/feeds/113728034841824271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20989390&amp;postID=113728034841824271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728034841824271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728034841824271'/><link rel='alternate' type='text/html' href='http://fxgm.blogspot.com/2006/01/greasemonkey-userscript-auto-save_14.html' title='Greasemonkey Userscript - Auto Save Forms'/><author><name>moPRoTG</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20989390.post-113728027988619072</id><published>2006-01-14T15:11:00.000-08:00</published><updated>2006-01-14T15:11:19.886-08:00</updated><title type='text'>Greasemonkey Userscript - Auto Save Forms</title><content type='html'>&lt;a href="http://wickedgravity.frihost.net/Other/GM/auto_save_forms.user.js"&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// ==UserScript==&lt;br /&gt;// @name          Auto Save Forms&lt;br /&gt;// @description   Saves form data every few seconds and gives option of repopulating form later.&lt;br /&gt;// ==/UserScript==&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(function() {&lt;br /&gt;&lt;br /&gt; var d = document;&lt;br /&gt; var i = d.getElementsByTagName('input'); // inputs&lt;br /&gt; var t = d.getElementsByTagName('textarea'); // textareas&lt;br /&gt; var f = d.getElementsByTagName('form'); // textareas&lt;br /&gt;&lt;br /&gt; // Strip i down to just text inputs&lt;br /&gt; var newi = new Array();&lt;br /&gt; for (j=0;j&lt;i.length;j++) {&lt;br /&gt;  if (i[j].type == 'text') {&lt;br /&gt;   newi.push(i[j]);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; i = newi;&lt;br /&gt;&lt;br /&gt; var box; // Box for offer to repopulate&lt;br /&gt; var boxtext; // Text for offer to repopulate&lt;br /&gt; var j;&lt;br /&gt; var e = new Array();&lt;br /&gt; var eo;&lt;br /&gt; var saving;&lt;br /&gt;&lt;br /&gt; function start() {&lt;br /&gt;  for (j = 0; j &lt; f.length; j++) {&lt;br /&gt;   f[j].addEventListener("submit", clear, false);&lt;br /&gt;  }&lt;br /&gt;  for (j = 0; j &lt; i.length; j++) {&lt;br /&gt;   i[j].addEventListener("keyup", prepsave, false);&lt;br /&gt;  }&lt;br /&gt;  for (j = 0; j &lt; t.length; j++) {&lt;br /&gt;   t[j].addEventListener("keyup", prepsave, false);&lt;br /&gt;  }&lt;br /&gt;  offer_repopulate();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function clear() {&lt;br /&gt;  var today = new Date();&lt;br /&gt;  var expiry = new Date(today.getTime() - 30 * 24 * 60 * 60 * 1000); // In the past to expire cookie&lt;br /&gt;  d.cookie = "FormsSavedData=; expires=" + expiry.toGMTString() + "; path=/";&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function getCookie(name) {&lt;br /&gt;  var re = new RegExp(name + "=([^;]+)");&lt;br /&gt;  var value = re.exec(d.cookie);&lt;br /&gt;  return (value != null) ? unescape(value[1]) : false;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function setCookie(name, value) {&lt;br /&gt;  var today = new Date();&lt;br /&gt;  var expiry = new Date(today.getTime() + 30 * 24 * 60 * 60 * 1000); // Expires after a month&lt;br /&gt;&lt;br /&gt;  d.cookie = name + "=" + escape(value) + "; expires=" + expiry.toGMTString() + "; path=/";&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function prepsave() {&lt;br /&gt;  clearInterval(saving);&lt;br /&gt;  saving = setInterval(savedata, 500);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function savedata() {&lt;br /&gt;  e = new Array();&lt;br /&gt;  for (j=0;j&lt;i.length;j++) {&lt;br /&gt;   e.push(i[j].value.toString());&lt;br /&gt;  }&lt;br /&gt;  for (j=0;j&lt;t.length;j++) {&lt;br /&gt;   e.push(t[j].value.toString());&lt;br /&gt;  }&lt;br /&gt;  setCookie('FormsSavedData', e.join("|"));&lt;br /&gt;  clearInterval(saving);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function repopulate() {&lt;br /&gt;  eo = getCookie('FormsSavedData').split("|");&lt;br /&gt;  for (j=0;j&lt;i.length;j++) {&lt;br /&gt;   i[j].value = eo.shift();&lt;br /&gt;  }&lt;br /&gt;  for (j = 0; j &lt; t.length; j++) {&lt;br /&gt;   t[j].value = eo.shift();&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function offer_repopulate() {&lt;br /&gt;  if (getCookie('FormsSavedData')) {&lt;br /&gt;   // Cookie found. Write offer to repopulate to page.&lt;br /&gt;   box = d.createElement("div");&lt;br /&gt;   box.setAttribute("style", &lt;br /&gt;                               "cursor: pointer; " +&lt;br /&gt;                               "position: absolute; " +&lt;br /&gt;                               "top: 20px; " +&lt;br /&gt;                               "right: 20px; " +&lt;br /&gt;                               "background-color: #fee; " +&lt;br /&gt;                               "color: #f00; " +&lt;br /&gt;                               "border: 1px dotted #f00; " +&lt;br /&gt;                               "padding: 3px 8px;");&lt;br /&gt;   d.body.appendChild(box);&lt;br /&gt;   box.addEventListener("click", repopulate, false);&lt;br /&gt;&lt;br /&gt;   boxtext = d.createTextNode('Repopulate Form');&lt;br /&gt;   box.appendChild(boxtext);&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt; &lt;br /&gt; window.addEventListener("load", start, false);&lt;br /&gt;&lt;br /&gt;})();&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20989390-113728027988619072?l=fxgm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxgm.blogspot.com/feeds/113728027988619072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20989390&amp;postID=113728027988619072' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728027988619072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728027988619072'/><link rel='alternate' type='text/html' href='http://fxgm.blogspot.com/2006/01/greasemonkey-userscript-auto-save.html' title='Greasemonkey Userscript - Auto Save Forms'/><author><name>moPRoTG</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20989390.post-113728017450763043</id><published>2006-01-14T15:09:00.000-08:00</published><updated>2006-01-14T15:09:34.510-08:00</updated><title type='text'>Greasemonkey Userscript - Amazon Affiliate Hijacker</title><content type='html'>&lt;a href="http://wickedgravity.frihost.net/Other/GM/amazonaffiliatehijacker.user.js"&gt;&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// Amazon Affiliate Hijacker&lt;br /&gt;// version 0.3 BETA!&lt;br /&gt;// 2005-04-21&lt;br /&gt;// Copyright (c) 2005, Mark Pilgrim&lt;br /&gt;// Released under the GPL license&lt;br /&gt;// http://www.gnu.org/copyleft/gpl.html&lt;br /&gt;//&lt;br /&gt;// --------------------------------------------------------------------&lt;br /&gt;//&lt;br /&gt;// This is a Greasemonkey user script.&lt;br /&gt;//&lt;br /&gt;// To install, you need Greasemonkey: http://greasemonkey.mozdev.org/&lt;br /&gt;// Then restart Firefox and revisit this script.&lt;br /&gt;// Under Tools, there will be a new menu item to "Install User Script".&lt;br /&gt;// Accept the default configuration and install.&lt;br /&gt;//&lt;br /&gt;// To uninstall, go to Tools/Manage User Scripts,&lt;br /&gt;// select "Amazon Affiliate Hijacker", and click Uninstall.&lt;br /&gt;//&lt;br /&gt;// --------------------------------------------------------------------&lt;br /&gt;//&lt;br /&gt;// MANDATORY CONFIGURATION:&lt;br /&gt;// This user script operates on all non-Amazon pages, modifying links&lt;br /&gt;// to Amazon to include the affiliate ID of your choice.  There is&lt;br /&gt;// no default ID; you *must* edit the line of the script that starts&lt;br /&gt;// with "var myAffiliateID =" to define your affiliate ID.  If you&lt;br /&gt;// do not have your own affiliate ID, you can use the ID of a&lt;br /&gt;// worthwhile charity, such as EFF ('electronicfro-20').&lt;br /&gt;//&lt;br /&gt;// --------------------------------------------------------------------&lt;br /&gt;//&lt;br /&gt;// ==UserScript==&lt;br /&gt;// @name          Amazon Affiliate Hijacker&lt;br /&gt;// @namespace     http://diveintomark.org/projects/greasemonkey/&lt;br /&gt;// @description   changes all Amazon links to include your affiliate ID&lt;br /&gt;// @include       *&lt;br /&gt;// @exclude       http://*.amazon.*/*&lt;br /&gt;// ==/UserScript==&lt;br /&gt;&lt;br /&gt;(function() {&lt;br /&gt;    function getASIN(href) {&lt;br /&gt;        var asinMatch, asin;&lt;br /&gt;        asinMatch = href.match(/\/exec\/obidos\/ASIN\/(\w{10})/i);&lt;br /&gt;        if (!asinMatch) { return null; }&lt;br /&gt;        asin = asinMatch[1];&lt;br /&gt;        return asin;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function getDomain(href) {&lt;br /&gt;        return href.replace(/https?:\/\/(.+?)\/.*$/gi, '$1');&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    function changeAmazonLinks(myAffiliateID) {&lt;br /&gt;        var amazonLinks, href, a, i, asin;&lt;br /&gt;        if (myAffiliateID.match(/\_/)) {&lt;br /&gt;            alert(&lt;br /&gt;'Amazon Affiliate Hijacker was not installed properly.  '+&lt;br /&gt;'Please go to Tools/Manage User Scripts and uninstall it, '+&lt;br /&gt;'then read the directions next time.');&lt;br /&gt;            return;&lt;br /&gt;        }&lt;br /&gt;        amazonLinks = document.evaluate(&lt;br /&gt;            "//a[contains(translate(@href, 'AMAZON', 'amazon'), '.amazon.')]",&lt;br /&gt;            document,&lt;br /&gt;            null,&lt;br /&gt;            XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,&lt;br /&gt;            null);&lt;br /&gt;        for (i = 0; i &lt; amazonLinks.snapshotLength; i += 1) {&lt;br /&gt;            a = amazonLinks.snapshotItem(i);&lt;br /&gt;            href = a.href;&lt;br /&gt;            asin = getASIN(href);&lt;br /&gt;            if (asin) {&lt;br /&gt;                a.href = 'http://' + getDomain(href) + '/exec/obidos/ASIN/' +&lt;br /&gt;                    asin + '/ref=nosim/' + myAffiliateID;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    var myAffiliateID = 'YOUR_AMAZON_AFFILIATE_ID_GOES_HERE';&lt;br /&gt;    changeAmazonLinks(myAffiliateID);&lt;br /&gt;})();&lt;br /&gt;&lt;br /&gt;//&lt;br /&gt;// ChangeLog&lt;br /&gt;// 2005-04-21 - 0.3 - MAP - linted&lt;br /&gt;// 2005-04-18 - 0.2 - MAP - tidy code&lt;br /&gt;// &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20989390-113728017450763043?l=fxgm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxgm.blogspot.com/feeds/113728017450763043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20989390&amp;postID=113728017450763043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728017450763043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728017450763043'/><link rel='alternate' type='text/html' href='http://fxgm.blogspot.com/2006/01/greasemonkey-userscript-amazon.html' title='Greasemonkey Userscript - Amazon Affiliate Hijacker'/><author><name>moPRoTG</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20989390.post-113728013009861957</id><published>2006-01-14T15:08:00.000-08:00</published><updated>2006-01-14T15:08:50.103-08:00</updated><title type='text'>Greasemonkey Userscript - Amazon.*: XML Feeds</title><content type='html'>http://wickedgravity.frihost.net/Other/GM/amazon_xml_feeds.user.js&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// ==UserScript==&lt;br /&gt;// @name            Amazon.*: XML Feeds&lt;br /&gt;// @namespace       http://docs.g-blog.net/code/greasemonkey&lt;br /&gt;// @description     2005-04-22: Adds links to Amazon RSS feeds (provided by Watchcow.net) to applicable Amazon.* pages (products, wishlists).&lt;br /&gt;// @include         http://www.amazon.*&lt;br /&gt;// @include         http://amazon.*&lt;br /&gt;// ==/UserScript==&lt;br /&gt;&lt;br /&gt;(function() {&lt;br /&gt;    var WatchcowXMLButtons =&lt;br /&gt;    {&lt;br /&gt;        go: function()&lt;br /&gt;        {&lt;br /&gt;            url = document.location.href;&lt;br /&gt;&lt;br /&gt;            if (!this.isValidAmazonURL(url)) return;&lt;br /&gt;            // alert(url);&lt;br /&gt;&lt;br /&gt;            // Add feed references&lt;br /&gt;            head = document.getElementsByTagName("head")[0];&lt;br /&gt;            head.appendChild(this.getLinkElement(url, "new"));&lt;br /&gt;            head.appendChild(this.getLinkElement(url, "used"));&lt;br /&gt;            head.appendChild(this.getLinkElement(url, "full"));&lt;br /&gt;&lt;br /&gt;            // Add XML buttons&lt;br /&gt;            pageType = this.getAmazonPageType(url);&lt;br /&gt;            tld = this.getAmazonTLD(url);&lt;br /&gt;&lt;br /&gt;            if (pageType == "asin")&lt;br /&gt;            {&lt;br /&gt;                id = this.getISBNorASIN(url);&lt;br /&gt;                feedType = "items";&lt;br /&gt;            }&lt;br /&gt;            else if (pageType == "wishlist")&lt;br /&gt;            {&lt;br /&gt;                id = this.getWishlistID(url);&lt;br /&gt;                feedType = "wishlists";&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            div = document.createElement("div");&lt;br /&gt;            div.setAttribute("id", "watchcowNetXmlButtons");&lt;br /&gt;            div.style.textAlign = "right";&lt;br /&gt;            div.style.margin = "0px";&lt;br /&gt;            div.style.padding = "3px 0px 8px 3px";&lt;br /&gt;&lt;br /&gt;            body = document.getElementsByTagName("body")[0];&lt;br /&gt;            body.insertBefore(div, body.firstChild);&lt;br /&gt;&lt;br /&gt;            div = document.getElementById("watchcowNetXmlButtons");&lt;br /&gt;&lt;br /&gt;            a1 = document.createElement("a");&lt;br /&gt;            a1.href = "http://www.watchcow.net/";&lt;br /&gt;&lt;br /&gt;            button = document.createElement("img");&lt;br /&gt;            button.src = "http://www.watchcow.net/img/ext_feeds_provided_by_watchcownet.gif";&lt;br /&gt;            button.style.width = "200px";&lt;br /&gt;            button.style.height = "15px";&lt;br /&gt;            button.style.border = "0px";&lt;br /&gt;            button.style.margin = "0px";&lt;br /&gt;            button.style.padding = "0px 0px 0px 5px";&lt;br /&gt;&lt;br /&gt;            a1.appendChild(button);&lt;br /&gt;            div.appendChild(a1);&lt;br /&gt;&lt;br /&gt;            a2 = document.createElement("a");&lt;br /&gt;            a2.href = "http://www.watchcow.net/feeds/" + feedType + "/" + tld + "/" + id + "-new.xml";&lt;br /&gt;&lt;br /&gt;            button = document.createElement("img");&lt;br /&gt;            button.src = "http://www.watchcow.net/img/ext_new_prices.gif";&lt;br /&gt;            button.style.width = "86px";&lt;br /&gt;            button.style.height = "15px";&lt;br /&gt;            button.style.border = "0px";&lt;br /&gt;            button.style.margin = "0px";&lt;br /&gt;            button.style.padding = "0px 0px 0px 5px";&lt;br /&gt;&lt;br /&gt;            a2.appendChild(button);&lt;br /&gt;            div.appendChild(a2);&lt;br /&gt;&lt;br /&gt;            a3 = document.createElement("a");&lt;br /&gt;            a3.href = "http://www.watchcow.net/feeds/" + feedType + "/" + tld + "/" + id + "-used.xml";&lt;br /&gt;&lt;br /&gt;            button = document.createElement("img");&lt;br /&gt;            button.src = "http://www.watchcow.net/img/ext_used_prices.gif";&lt;br /&gt;            button.style.width = "90px";&lt;br /&gt;            button.style.height = "15px";&lt;br /&gt;            button.style.border = "0px";&lt;br /&gt;            button.style.margin = "0px";&lt;br /&gt;            button.style.padding = "0px 0px 0px 5px";&lt;br /&gt;&lt;br /&gt;            a3.appendChild(button);&lt;br /&gt;            div.appendChild(a3);&lt;br /&gt;&lt;br /&gt;            a4 = document.createElement("a");&lt;br /&gt;            a4.href = "http://www.watchcow.net/feeds/" + feedType + "/" + tld + "/" + id + "-full.xml";&lt;br /&gt;&lt;br /&gt;            button = document.createElement("img");&lt;br /&gt;            button.src = "http://www.watchcow.net/img/ext_combined_prices.gif";&lt;br /&gt;            button.style.width = "163px";&lt;br /&gt;            button.style.height = "15px";&lt;br /&gt;            button.style.border = "0px";&lt;br /&gt;            button.style.margin = "0px";&lt;br /&gt;            button.style.padding = "0px 0px 0px 5px";&lt;br /&gt;&lt;br /&gt;            a4.appendChild(button);&lt;br /&gt;            div.appendChild(a4);&lt;br /&gt;        },&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        getISBNorASIN: function(href)&lt;br /&gt;        {&lt;br /&gt;            isbn = href.match(/\/([0-9A-Z]{10})(\/|\?|$)/);&lt;br /&gt;            return isbn ? isbn[1] : null;&lt;br /&gt;        },&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        getWishlistID: function(href)&lt;br /&gt;        {&lt;br /&gt;            wishlistID = href.match(/(\/|\?|=)([0-9A-Z]{12,13})(\/|$)/);&lt;br /&gt;            if (wishlistID)&lt;br /&gt;            {&lt;br /&gt;                return wishlistID[2];&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            aList = document.getElementsByTagName("a");&lt;br /&gt;            for (a = 0; a &lt; aList.length; a++)&lt;br /&gt;            {&lt;br /&gt;                if (aList[a].href.match(/(registry.+id=|share-registry.+wishlist)/i))&lt;br /&gt;                {&lt;br /&gt;                    wishlistID = aList[a].href.match(/(\/|\?|=)([0-9A-Z]{12,13})(\/|$)/);&lt;br /&gt;                    if (wishlistID)&lt;br /&gt;                    {&lt;br /&gt;                        return wishlistID[2];&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            return false;&lt;br /&gt;        },&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        getAmazonTLD: function(href)&lt;br /&gt;        {&lt;br /&gt;            amazonTLD = this.getServerName(href).match(/amazon\.(com|co\.uk|de)/i);&lt;br /&gt;            return amazonTLD ? amazonTLD[1] : null;&lt;br /&gt;        },&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        getAmazonPageType: function(href)&lt;br /&gt;        {&lt;br /&gt;            asin = this.getISBNorASIN(href);&lt;br /&gt;            if (asin)&lt;br /&gt;            {&lt;br /&gt;                return "asin";&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            if (href.match(/(registry|wishlist)/i))&lt;br /&gt;            {&lt;br /&gt;                return "wishlist";&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            return false;&lt;br /&gt;        },&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        isValidAmazonURL: function(href)&lt;br /&gt;        {&lt;br /&gt;            return (this.getAmazonTLD(href) &amp;&amp; !href.match(/(jpg|gif|png|js)$/i) &amp;&amp; !href.match(/(associate|partner|rate-this-)/i)) ? true : false;&lt;br /&gt;        },&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        getServerName: function(href)&lt;br /&gt;        {&lt;br /&gt;            serverName = href.match(/http(?:s)?:\/\/[^\/]+/i);&lt;br /&gt;            return serverName ? serverName[0].toLowerCase() : href;&lt;br /&gt;        },&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        getLinkElement: function(href, price)&lt;br /&gt;        {&lt;br /&gt;            pageType = this.getAmazonPageType(href);&lt;br /&gt;            id = "watchcow-feed-" + price;&lt;br /&gt;&lt;br /&gt;            if (!pageType || document.getElementById(id))&lt;br /&gt;            {&lt;br /&gt;                return null;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            link = document.createElement("link");&lt;br /&gt;            link.setAttribute("rel", "alternate");&lt;br /&gt;            link.setAttribute("type", "application/atom+xml");&lt;br /&gt;&lt;br /&gt;            if (pageType == "asin")&lt;br /&gt;            {&lt;br /&gt;                link.setAttribute("href", "http://www.watchcow.net/feeds/items/" + this.getAmazonTLD(href) + "/" + this.getISBNorASIN(href) + "-" + price + ".xml");&lt;br /&gt;                type = "Item";&lt;br /&gt;            }&lt;br /&gt;            else if (pageType == "wishlist")&lt;br /&gt;            {&lt;br /&gt;                link.setAttribute("href", "http://www.watchcow.net/feeds/wishlists/" + this.getAmazonTLD(href) + "/" + this.getWishlistID(href) + "-" + price + ".xml");&lt;br /&gt;                type = "Wishlist";&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            if (price == "new")&lt;br /&gt;            {&lt;br /&gt;                link.setAttribute("title", "Watchcow.net " + type + " Price Watch Feed for new (un-used) price(s)");&lt;br /&gt;            }&lt;br /&gt;            else if (price == "used")&lt;br /&gt;            {&lt;br /&gt;                link.setAttribute("title", "Watchcow.net " + type + " Price Watch Feed for used price(s)");&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                link.setAttribute("title", "Watchcow.net " + type + " Price Watch Feed for both new and used price(s)");&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            link.setAttribute("id", id);&lt;br /&gt;&lt;br /&gt;            return link;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    WatchcowXMLButtons.go();&lt;br /&gt;&lt;br /&gt;})();&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20989390-113728013009861957?l=fxgm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxgm.blogspot.com/feeds/113728013009861957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20989390&amp;postID=113728013009861957' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728013009861957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113728013009861957'/><link rel='alternate' type='text/html' href='http://fxgm.blogspot.com/2006/01/greasemonkey-userscript-amazon-xml.html' title='Greasemonkey Userscript - Amazon.*: XML Feeds'/><author><name>moPRoTG</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20989390.post-113727998708298542</id><published>2006-01-14T15:04:00.000-08:00</published><updated>2006-01-14T15:06:27.103-08:00</updated><title type='text'>Download Greasemonkey 0.6.4 for Firefox 1.5</title><content type='html'>http://greasemonkey.mozdev.org/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20989390-113727998708298542?l=fxgm.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fxgm.blogspot.com/feeds/113727998708298542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20989390&amp;postID=113727998708298542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113727998708298542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20989390/posts/default/113727998708298542'/><link rel='alternate' type='text/html' href='http://fxgm.blogspot.com/2006/01/download-greasemonkey-064-for-firefox.html' title='Download Greasemonkey 0.6.4 for Firefox 1.5'/><author><name>moPRoTG</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
