rendered paste body// ==UserScript==// @name Google Calendar ebay reminder v2.2// @description "Add to Google Calendar" buttons on ebay article pages, use at own risk!// @namespace tag:darkoddio@gmail.com,2009:userscripts// @include http://cgi.ebay.*// ==/UserScript==// Dear user,//// if the ebay site of your interest uses month names (not numbers)// which are different from the English ones, you'll need to put in// some code to translate those// see line 43 to 60 to change month names//// also many timezones are still missing but easily put into the table// below//// Have fun!function LeadingZeroes(n,l) { n = String(n); while(n.length < l) n = "0"+n; return n;}function getXP(q) { return document.evaluate(q, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);}var timezones = new Array();timezones["MESZ"] = "GMT+0200";timezones["MEZ"] = "GMT+0100";timezones["CEST"] = "GMT+0200";timezones["CET"] = "GMT+0100";timezones["BST"] = "GMT+0100";timezones["SGT"] = "GMT+0800";// update me on DST change: (ebay doesn't supply CEST/CET)timezones["Paris"] = "GMT+0100";//just add more ebay sites to the regexEbaySiteLocation = document.URL.match(/(cgi\.ebay\.(?:fr|de|com|it|co\.uk|com\.au))/);var myCgiEbaySite = EbaySiteLocation[1];function setModeTitleLink() { GM_setValue("mode","title_link"); alert("Please reload page for the change to take effect!");}function setModeDetailsPlainURL() { GM_setValue("mode","details_plain_url"); alert("Please reload page for the change to take effect!");}// main()GM_registerMenuCommand( "Include link in title (default)", setModeTitleLink );GM_registerMenuCommand( "Put plain URL into details", setModeDetailsPlainURL );var myMonths = new Array();GM_log("myCgiEbaySite:" + myCgiEbaySite)if (!myCgiEbaySite) { alert("Don't forget to set your ebay site!!!\nIf you don't find your ebay site you can easily add it into the script code"); return;} else { switch (myCgiEbaySite) { // you can correct if necessary this abbreviated monthes names based on ebay translations case "cgi.ebay.it": myMonths["gen"] = "01"; myMonths["feb"] = "02"; myMonths["mar"] = "03"; myMonths["apr"] = "04"; myMonths["mag"] = "05"; myMonths["giu"] = "06"; myMonths["lug"] = "07"; myMonths["ago"] = "08"; myMonths["set"] = "09"; myMonths["ott"] = "10"; myMonths["nov"] = "11"; myMonths["dic"] = "12"; break; case "cgi.ebay.fr": myMonths["janv"] = "01"; myMonths["fevr"] = "02"; myMonths["mars"] = "03"; myMonths["avril"] = "04"; myMonths["mai"] = "05"; myMonths["juin"] = "06"; myMonths["juil"] = "07"; myMonths["aout"] = "08"; myMonths["sept"] = "09"; myMonths["oct"] = "10"; myMonths["nov"] = "11"; myMonths["dc"] = "12"; break; case "cgi.ebay.com": case "cgi.ebay.com.au": case "cgi.ebay.co.uk": myMonths["jan"] = "01"; myMonths["feb"] = "02"; myMonths["mar"] = "03"; myMonths["apr"] = "04"; myMonths["may"] = "05"; myMonths["jun"] = "06"; myMonths["jul"] = "07"; myMonths["aug"] = "08"; myMonths["sep"] = "09"; myMonths["oct"] = "10"; myMonths["nov"] = "11"; myMonths["dec"] = "12"; break; case "cgi.ebay.de": myMonths["jan"] = "01"; myMonths["feb"] = "02"; myMonths["mr"] = "03"; myMonths["apr"] = "04"; myMonths["may"] = "05"; myMonths["jun"] = "06"; myMonths["jul"] = "07"; myMonths["aug"] = "08"; myMonths["sep"] = "09"; myMonths["oct"] = "10"; myMonths["nov"] = "11"; myMonths["dec"] = "12"; break; }}//var title = getXP("//H1[@class='itemTitle']");var title = getXP("//H1[@class='vi-is1-titleH1']");title = title.snapshotItem(0);GM_log("title: "+title.textContent);GM_log("url: "+document.location);var details;switch(GM_getValue("mode","title_link")) { case "title_link": title = '<a href="'+document.location+'">'+title.textContent+'</a>'; details = ''; break; case "details_plain_url": title = title.textContent; details = document.location; break;}title = encodeURIComponent(title);details = encodeURIComponent(details);var endtime;//Endtime = getXP("//SPAN[@id='DetailsTimeLeft']");endtime = getXP("//SPAN[@class=\"vi-is1-dt\"]");endtime = endtime.snapshotItem(0);var now = new Date();var thisYear = 1900 + now.getYear()var prevYear = 1900 + now.getYear() -1var nextYear = 1900 + now.getYear() +1endtime.textContent = endtime.textContent.replace(thisYear, thisYear + ' ')endtime.textContent = endtime.textContent.replace(prevYear, prevYear + ' ')endtime.textContent = endtime.textContent.replace(nextYear, nextYear + ' ')GM_log("endtime: " + endtime.textContent);var parseddate;parseddate = endtime.textContent.match(/(\d+).(\d+).(\d+)\s+(\d+):(\d+):(\d+)\s+(\w+)/);if(!parseddate) { parseddate = endtime.textContent.match(/(\d+)-([a-zA-Z]+)-(\d+)\s+(\d+):(\d+):(\d+)\s+(\w+)/);}if(!parseddate) { if(parseddate = endtime.textContent.match(/([a-zA-Z]+)-(\d+)-(\d+)\s+(\d+):(\d+):(\d+)\s+(\w+)/)) { month = parseddate[1]; parseddate[1]=parseddate[2]; parseddate[2]=month; } }if(!parseddate) { if(parseddate = endtime.textContent.match(/([a-zA-Z]+)\s+(\d+),\s+(\d+)\s+(\d+):(\d+):(\d+)\s+(\w+)/)) { month = parseddate[1]; parseddate[1]=parseddate[2]; parseddate[2]=month; } }// cgi.ebay.co.ukif(!parseddate) { parseddate = endtime.textContent.match(/(\d+)\s([a-zA-Z]+),\s+(\d+)\s+(\d+):(\d+):(\d+)\s+(\w+)/); }// cgi.ebay.it if(!parseddate) { parseddate = endtime.textContent.match(/(\d+)\s([a-zA-Z]+)\s(\d+)\s+(\d+):(\d+):(\d+)\s+(\w+)/);}// cgi.ebay.frif(!parseddate) { //alert(endtime.textContent); parseddate = endtime.textContent.match(/(\d+)\s([a-zA-Z]+)[.]?\s(\d+)\s+(\d+):(\d+):(\d+)\s+(\w+)/);}// cgi.ebay.deif(!parseddate) { parseddate = endtime.textContent.match(/(\d+)[.]?\s([a-zA-Z]+)[.]?\s(\d+)\s+(\d+):(\d+):(\d+)\s+(\w+)/);}if(!parseddate) { alert("no parsdate"); var message = document.createElement("DIV"); message.innerHTML = "<b style=\"color:red\">userscript: could not parse end date</b>"; endtime.parentNode.insertBefore(message,endtime.nextSibling); return; }if(Number(parseddate[3]) < 100) parseddate[3] = 2000 + Number(parseddate[3]);if(typeof(timezones[parseddate[7]]) != 'undefined') parseddate[7] = timezones[parseddate[7]];var datestring = parseddate[3]+"/"+parseddate[2]+"/"+parseddate[1] +" " +parseddate[4]+":"+parseddate[5]+":"+parseddate[6] +" " +parseddate[7];if (location.hostName = myCgiEbaySite) datestring = parseddate[3]+"/"+myMonths[parseddate[2].toLowerCase()]+"/"+parseddate[1] +" " +parseddate[4]+":"+parseddate[5]+":"+parseddate[6] +" " +parseddate[7];GM_log("datestring: " + datestring);var date = new Date(datestring); if(! date.valueOf()) { var message = document.createElement("DIV"); message.innerHTML = "<b style=\"color:red\">userscript: could not parse datestring</b>"; endtime.parentNode.insertBefore(message,endtime.nextSibling); return; }GM_log("UTC date: " + date.toUTCString());var googledate = String(date.getUTCFullYear()) + LeadingZeroes(date.getUTCMonth()+1,2) + LeadingZeroes(date.getUTCDate(),2) + "T" + LeadingZeroes(date.getUTCHours(),2) + LeadingZeroes(date.getUTCMinutes(),2) + LeadingZeroes(date.getUTCSeconds(),2) + "Z";var newButton = document.createElement("DIV");newButton.innerHTML = '<a href="http://www.google.com/calendar/event?action=TEMPLATE&text=' + title + '&dates=' + googledate + "/" + googledate + '&details=' + details + '&location=&trp=false&sprop=&sprop=name:" target="_blank"><img src="http://www.google.com/calendar/images/ext/gc_button1.gif" border=0></a>';endtime.parentNode.insertBefore(newButton, endtime.nextSibling);