Opakuj to sobie w obiekt, już będzie ładniej:
var calendar = {};
calendar.main = function() {
// kod
};
calendar.previous_month = function() {
// kod
};
calendar.next_month = function() {
// kod
};
// wywołanie:
calendar.main();
Ale oczywiście cały czas odwołujesz się do hardkodowanych selektorów, co jest brzydkie. Przekazywanie selektora jakiegoś głównego elementu kalendarza zmiennej - już będzie ładniej. No a najładniejsza opcja to plugin do jQuery - to nie jest takie trudne, a wygląda 100x ładniej, no i możesz kod wykorzystać wiele razy, zrobić ładniej konfigurację takich pierdół jak długość animacji przy inicjalizacji i ogólnie się z tym pokazać.
Zdecyduj się na jeden styl klamrowania, z tym, że klamrowanie od nowej linijki jest w jakimś specyficznym przypadku niezalecane, bo interpreter źle to zrozumie. Nie pamiętam już konkretnie o co chodziło, ale był kiedyś wątek z problemem i bswierczynski
się wypowiadał na ten temat (przed środkiem kwietnia 2012 jakbyś chciał szukać, ale będzie ciężko, sam nie znalazłem).
Nie myl także pojęć, piszesz w javascripcie używając biblioteki jQuery i choć wyrażenie "piszę w jQuery" chyba nie jest niepoprawne, ale jest z pewnością poddające w wątpliwość czy w ogóle wiesz co robisz.
Między podanym markupem HTML w praktyce nie ma różnicy, w teorii - przed HTML5 atrybut type
był wymagany.