// ==UserScript==
// @name          Craigslist mailer
// @namespace     http://jeffpalm.com/craigmails
// @description   Shows quick mail links on craigslist 
// @include       http://*.craigslist.org/*
// ==/UserScript==

/*
 * Copyright 2008 Jeffrey Palm.
 */

function newFunction(_a) {
  var a = _a;
  return function(details) {
    var txt = details.responseText;
    if (txt) {
      if (res = txt.match(href="(mailto:[^\"]+)")) {
        var link = res[1];
        var t = document.createElement("span");
        t.style.fontSize = "0.8em";
        a.parentNode.appendChild(t);

        // mail link
        var el = document.createElement("a");
        el.href = res[1];
        el.innerHTML = "mail";
        el.style.color = "#770000";
        t.appendChild(document.createTextNode(" "));
        t.appendChild(el);

        var dom = document.domain;
        var res;
        if (!(res = a.href.match(/\/(\d+)\.html/))) {
          return;
        }
        var id = res[1];

        // flag links
        createLink(16,id,dom,"#777700",t,"miscategorized");
        createLink( 2,id,dom,"#770077",t,"prohibited");
        createLink(15,id,dom,"#000077",t,"spam/overpost");
        createLink( 9,id,dom,"#ff77ff",t,"best of craigslist");
      }
    }

  }
}

function createLink(code,id,domain,color,t,name) {
  var el = document.createElement("a");
  el.href = "http://" + domain + "/flag/?flagCode=" + code + "&postingID=" + id;
  el.innerHTML = name;
  el.style.color = color;
  t.appendChild(document.createTextNode(" "));
  t.appendChild(el);
}

function main() {
  var as = document.getElementsByTagName("a");
  for (var i=0; i<as.length; i++) {
    var a = as[i];
    if (a.href && a.href.match(/.*\d+\.html$/)) {
      GM_xmlhttpRequest({
        method:"GET",
            url: a.href,
            headers:{
            "User-Agent": "monkeyagent",
              "Accept":"text/html,text/monkey,text/xml,text/plain",
              },
            onload: newFunction(a)
            });
    }
  }
}

try {main();} catch (e) {alert(e);}

