//ISO 8601 Date.prototype.getWeek = function() { var y = this.getFullYear(), m = this.getMonth() + 1, d = this.getDate(), a, b, c, s, e, f, g, n, w; // If month jan. or feb. if (m < 3) { a = y - 1; b = (a / 4 | 0) - (a / 100 | 0) + (a / 400 | 0); c = ((a - 1) / 4 | 0) - ((a - 1) / 100 | 0) + ((a - 1) / 400 | 0); s = b - c; e = 0; f = d - 1 + 31 * (m - 1); // If month mar. through dec. } else { a = y; b = (a / 4 | 0) - (a / 100 | 0) + (a / 400 | 0); c = ((a - 1) / 4 | 0) - ((a - 1) / 100 | 0) + ((a - 1) / 400 | 0); s = b - c; e = s + 1; f = d + ((153 * (m - 3) + 2) / 5 | 0) + 58 + s; } g = (a + b) % 7; // ISO Weekday (0 is monday, 1 is tuesday etc.) d = (f + g - e) % 7; n = f + 3 - d; if (n < 0) w = 53 - ((g - s) / 5 | 0); else if (n > 364 + s) w = 1; else w = (n / 7 | 0) + 1; return w; };