_dateDaysInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31); function getDaysInMonth(d) { var m = d.getMonth(); if(m == 1 && Date.isLeapYear(d.getYear())) return 29; return _dateDaysInMonth[m];}function getFirstDayOfMonth(d) { var thedate = d; thedate.setDate(1); return thedate.getDay();}Date.isLeapYear = function(year){ if (year%4==0 && ((year%100!=0) || (year%400==0))) return true; else return false;}; Date.daysInYear = function(year){ if (Date.isLeapYear(year)) return 366; else return 365;}; function dateFormat(d,mask){ var iM = d.getMonth(); var iD = d.getDate(); var iDy = d.getDay(); var iY = d.getFullYear(); var mmmm = _dateMonths_long[iM]; var mmm = _dateMonths_short[iM]; var mm = iM < 9?'0'+ (1 + iM) + '':(1+iM)+''; var m = 1+iM+''; var dddd = _dateDays_long[iD]; var ddd = _dateDays_short[iD]; var dd = iD<10?'0'+iD+'':iD+''; var d = iD+''; var yyyy = iY; var cent = 0; while((iY-cent)>=100) cent = cent + 100; var yy = iY - cent; if(yy<10) yy = '0' + yy + ''; var fD = new String(mask); fD = fD.replace(/!mmmm/i,mmmm); fD = fD.replace(/!mmm/i,mmm); fD = fD.replace(/!mm/i,mm); fD = fD.replace(/!m/i,m); fD = fD.replace(/!dddd/i,dddd); fD = fD.replace(/!ddd/i,ddd); fD = fD.replace(/!dd/i,dd); fD = fD.replace(/!d/i,d); fD = fD.replace(/!yyyy/i,yyyy); fD = fD.replace(/!yy/i,yy); return fD;}function dateCompare(d1,d2,dp) { var r = 0; var d1d = d1.getDate(); var d2d = d2.getDate(); var d1m = d1.getMonth(); var d2m = d2.getMonth(); var d1y = d1.getFullYear(); var d2y = d2.getFullYear(); var cmp = function(a,b) { return (b<a)-(a<b);};var dD = cmp(d1d,d2d); var mD = cmp(d1m,d2m); var yD = cmp(d1y,d2y); switch(dp) { case('d') :if(yD != 0) r = yD; else if(mD != 0) r = mD; else r = dD; break; case('m') :if(yD != 0) r = yD; else r = mD; break; case('y') :r = yD;}return r;}function dupDate(d) { var s = dateFormat(d,'!mmm !dd, !yyyy'); var r = new Date(s); return r;}function offsetDays(day,startDay) { var d = startDay; for(var i = 1; i <= day; i++) { d++; if(d>6) d = 0;}return d;}