Team:KULeuven/Tools/New Day/Date Retriever

 /* var monthNames = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
 * @author KULeuven

document.write(pageDate.toString.substring(0,11));

/* Extracts the corresponding calendar date out of the page url */ function pageDate { // Retrieve page url var urlTokens = location.href.split("/"); var urlLast = urlTokens[urlTokens.length - 1];

// Retrieve page date var wikiTokens = urlLast.split("#"); var wikiFirst = wikiTokens[0];

// Retrieve seperate date components var dateTokens = wikiFirst.split("_");

var day = parseInt(dateTokens[0]); var month; for (x in monthNames) { if(dateTokens[1] == monthNames[x]) {month = x; break;} }	var year = parseInt(dateTokens[2]);

// Construct a Date object and return the result var date = new Date; date.setFullYear(year, month, day);

return date; }

/* Retrieves date ndays before this page date */ function datePast(ndays) { var pastDate = new Date; // getDate, setDate methods are rubbish, stick to numeric substraction! var ntime = pageDate.getTime - ndays*86400*1000; pastDate.setTime(ntime);

return pastDate; }

/* Searches date ndays after this page date */ function dateFuture(ndays) { var futureDate = new Date; // getDate, setDate methods are rubbish, stick to numeric adding! var ntime = pageDate.getTime + ndays*86400*1000; futureDate.setTime(ntime);

return futureDate; }

/* Returns the date of Friday previous week */ function previousWeekFriday { var dayOfWeek = pageDate.getDay; var previousWeekFriday = new Date;

switch(dayOfWeek) { // case 0 is Sunday, substract 9 days case 0: previousWeekFriday = datePast(9); break; default: previousWeekFriday = datePast(dayOfWeek + 2); break; }

return previousWeekFriday; }

/* Returns the date of Monday next week */ function nextWeekMonday { var dayOfWeek = pageDate.getDay; var nextWeekMonday = new Date;

switch(dayOfWeek) { // case 0 is Sunday, add 1 day case 0: nextWeekMonday = dateFuture(1); break; default: nextWeekMonday = dateFuture(8 - dayOfWeek); break; }

return nextWeekMonday; }

/* Returns the date of Friday this week */ function thisFriday { var dayOfWeek = pageDate.getDay; var thisFriday;

switch(dayOfWeek) { // case 0 is Sunday, substract 2 days case 0: thisFriday = datePast(2); break; // case 6 is Saturday, substract 1 day, can also be merged into default, in which case we look -1 day 			// ahead, corresponding to going 1 day back in the past case 6: thisFriday = datePast(1); break; default: thisFriday = dateFuture(5 - dayOfWeek); break; }

return thisFriday; }

/* Converts a date into a valid url for the KULeuven wiki and loads the page */ function goToDate(date) { // base wiki url of KULeuven var URL = "http://2008.igem.org/Team:KULeuven/"; URL += date.getDate; URL += '_'; // month indexing of Date object index matching to array monthNames indexing URL += monthNames[date.getMonth]; URL += '_'; URL += date.getFullYear; // redirect browser to desired day window.location.href = URL; }