Если перенести скрипт в head, то строки 138-160 начнут выполняться сразу же, до того, как будет загружен весь html документ.
Там есть document.getElementById("holiday"). А html документ еще не загрузился. И нет никакого элемента с id = "holiday"
Нужно заключить эту часть в функцию, которая будет вызываться, только когда будет полностью загружен документ по событию DOMContentLoaded
https://learn.javascript.ru/onload-ondomcontentloaded