не хочу смотреть код. но ошибка видна сразу основная. в ветвлениях не bType.value а просто bType. а то что ты написал-в с++ и подобных-ты создал новый класс. нобелевскую премию тебе

это тебе по типам переменных
http://javascript.ru/typeof
а это по работе с функциями
http://javascript.ru/Function