> Вы отследили каким-то валидатором?
описываю способ, каким была найдена ошибка.
Но сразу предупреждаю: я совсем не программист, и для настоящих программистов такой способ наверняка будет выглядеть дико.
копирую себе эти два файла, правлю две последние даты на сегодняшнюю и дату в будущем (чтобы в случае успешного срабатывания увидеть результат), убеждаюсь, что проблема действительно есть. Причём случайно открываю в IE5 и вижу, что там всё работает.
В веб-испекторе safari смотрю и вижу, что у всех элементов один класс. Не дело. Смотрю, при каких условиях назначается именно этот класс. Вижу, сравниваются dtl2 и dtc. Вывожу эти значения alert'ом, чтобы проверить их на момент сравнения. И вот тут-то я вижу странную дату в dtc: 1100408.
Смотрю, как это значение формируется, попутно удивляюсь на такие конструкции, как «dtc++; dtc--;», предполагаю, что в gYear 110. Вывожу его алертом — так и есть. Далее смотрю, как формируется gYear. А формируется оно из date.getYear().
Ещё раз повторяю, что я не программист, и что такое getYear() не знаю. Потому спрашиваю у Великого-Мудреца-Который-Знает-Всё, и первым же результатом он мне даёт ссылку, процитированную в предыдущем ответе. Следую рекомендациям, меняю метод — всё работает.
Кстати, в связи с тем, что в обозримом будущем не предвидится года менее десятого (начало нового летоисчисления можно смело считать экстремальным форс-мажором, который могут сопровождать гибель нынешней и зарождение новых цивилизаций, и судьба маленького скромного скриптика скорее всего не будет волновать даже вас), можно строку if (date.getFullYear() < 10 ) {gYear = '0'+date.getFullYear()} else {gYear = date.getFullYear()} считать избыточной и заменить на просто gYear = date.getFullYear().
> валидатор для программного кода?
в случае с компилируемыми языками это компилятор, в случае с интерпретируемыми — среда исполнения. В данном случае браузер.
В случае «невалидности» кода будет подробная ругань в консоли ошибок.
Но от логических ошибок никакой робот защитить не в состоянии
> как в дальнейшем избежать ошибок такого рода
да как… Очень просто.
Не работает — вперёд, за отладку