Facebook Date Fixer

By znerp Last update Apr 30, 2008 — Installed 372 times. Daily Installs: 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0
// ==UserScript==
// @name           Facebook Date Fixer
// @description    Changes dates on facebook from middle endian form (month day, year) to little endian form (day month year).
// @namespace      znerp
// @include        http://*.facebook.com/*
// ==/UserScript==

function anglisize(str, p1, p2, p3, p4, offset, s) {
  if (p3 == "") p3 = (Math.floor(p2 / 10) == 1) ? "th" : (p2 % 10 == 1 ? "st" : (p2 % 10 == 2 ? "nd" : (p2 % 10 == 3 ? "rd" : "th")))
  return p2 + p3 + " " + p1 + p4;
}

regex = /(January|February|March|April|May|June|July|August|September|October|November|December)\s(\d{1,2})(st|nd|rd|th)?,?( \d{4})?/
potentialDates = document.evaluate('//div[@id="photodate"]|'+
                                   '//small|'+
                                   '//div[@class="date_divider"]|'+
                                   '//span[@class="date"]|'+
                                   '//div[@id="event"]/div[@class="left"]/div[@class="box clearfix"]/table/tbody/tr/td/div[@class="datawrap"]',
                                   document,
                                   null,
                                   XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
                                   null);
for (i = potentialDates.snapshotLength - 1; i >= 0; i--)
  if (regex.test((thisDate = potentialDates.snapshotItem(i)).textContent))
    thisDate.textContent = thisDate.textContent.replace(/(January|February|March|April|May|June|July|August|September|October|November|December)\s(\d{1,2})(st|nd|rd|th)?,?( \d{4})?/, anglisize)

if (birthday = document.getElementById("Birthday-data")) {
  birthdate = birthday.removeChild(birthday.firstChild)
  if (birthday.childNodes.length > 1) birthday.firstChild.textContent =  "\t"
  
  birthdate.textContent = birthdate.textContent.replace(/(\w+) (\d{1,2})()()/, anglisize)
  birthday.insertBefore(birthdate, birthday.firstChild);
}