Не стал в коде копаться [времени нет], но тут, похоже, нет проверки на то, что календарь открыт.
У тебя сразу 2 функции срабатывает:
1. Закрывает
2. Опять открывает
Там где клик описан проверяй: если открыт — то закрыть, а если закрыт — то открыть.
P.S: Если сам пишешь календарь, то надо вводить свойства (переменные) в объект, которые будут хранить события связанные с календариком.