	function DayOfWeek(day,month,year) {
		var a = Math.floor((14 - month)/12);
		var y = year - a;
		var m = month + 12*a - 2;
		var d = (day + y + Math.floor(y/4) - Math.floor(y/100) +
				 Math.floor(y/400) + Math.floor((31*m)/12)) % 7;
		return d + 1;
	}
	
	function makeArray()    {
		this[0] = makeArray.arguments.length;
		for (i = 0; i<makeArray.arguments.length; i++)
			this[i+1] = makeArray.arguments[i];
	}
	
	var daysofmonth   = new makeArray( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	var daysofmonthLY = new makeArray( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	
	function LeapYear(year) {
		if ((year/4)   != Math.floor(year/4))   return false;
		if ((year/100) != Math.floor(year/100)) return true;
		if ((year/400) != Math.floor(year/400)) return false;
		return true;
	}
	
	function NthDay(nth,weekday,month,year) {
		if (nth > 0) return (nth-1)*7 + 1 + (7 + weekday - DayOfWeek((nth-1)*7 + 1,month,year))%7;
		if (LeapYear(year)) var days = daysofmonthLY[month];
		else                var days = daysofmonth[month];
		return days - (DayOfWeek(days,month,year) - weekday + 7)%7;
	}
	
	var sun=1,mon=2,tue=3,wed=4,thu=5,fri=6,sat=7;
	var jan=1,feb=2,mar=3,apr=4,may=5,jun=6,jul=7,aug=8,sep=9,oct=10,nov=11,dec=12;
	var first=1,second=2,third=3,fourth=4,fifth=5,last=-1;
	
	var daysofweek   = new makeArray('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
	var monthsofyear = new makeArray('January','February','March','April','May','June','July','August','September','October','November','December');
	
	function DayOfWeek(day,month,year) {
		var a = Math.floor((14 - month)/12);
		var y = year - a;
		var m = month + 12*a - 2;
		var d = (day + y + Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400) + Math.floor((31*m)/12)) % 7;
		return d+1;
	}
	
	function Nths(day) { 
		if (day == 1 || day == 21 || day == 31) return 'st';
		if (day == 2 || day == 22) return 'nd';
		if (day == 3 || day == 23) return 'rd';
		return 'th';
	}
	
	function FullDate(day,month,year) {
		return daysofweek[DayOfWeek(day,month,year)] +' '+ day + Nths(day) +' '+ monthsofyear[month] +' '+ year;
	}
	
	function LastDay(weekday,month,year) {
		if (LeapYear(year)) var days = daysofmonthLY[month];
		else                var days = daysofmonth[month];
	
		return days - (DayOfWeek(days,month,year) - weekday + 7)%7;
	}
	
	function days_in_month (year, month) {
		 return 32 - new Date(year, month, 32).getDate();
	}
	
	
	var curDate = new Date();
	var A = new Date();
	var lastSatDate = LastDay(7,curDate.getMonth()+1,curDate.getFullYear());

	if (lastSatDate <= curDate.getDate()) {
		A.setDate(A.getDate()+7);
		lastSatDate = LastDay(7,A.getMonth()+1,A.getFullYear());
	}
	
	var lastSaturday = FullDate(lastSatDate,A.getMonth()+1,A.getFullYear());
	
	if (lastSatDate < curDate.getDate() + 14) {
		lastSatDate = LastDay(7,A.getMonth()+2,A.getFullYear());
		lastSaturday = FullDate(lastSatDate,A.getMonth()+2,A.getFullYear());
	}
	
	var D = new Date();
	var X = 1;
	D.setDate(D.getDate()+(6+X-D.getDay())%7 +1)
	
	if (D < curDate)
		D.setMonth(D.getMonth() + 1);
	
	var sndMon = D.getDate();
	
	if (sndMon > days_in_month(D.getFullYear(),D.getMonth())) {
		sndMon = sndMon - days_in_month(D.getFullYear(),D.getMonth());
		D.setMonth(D.getMonth() + 1);
	}
	
	var nextMonday = FullDate(sndMon,D.getMonth()+1,D.getFullYear());
