может придумать классы
1) в JS нет классов.
2) нет не лучше, вы должны оперировать объектами.
Или все равно через пару месяцев там в любом случае будет клубок, который непросто понять?
Инкапсуляция ради инкапсуляции вам ничего не даст.
Вообще проблемы у вас из-за такой штуки как smartui. Проблему эту решили еще в конце 70-х введя такую штуку как MVC. Сегодня MVC (на самом деле сегодня почти все используют MVA но это не суть) любят использовать вместе с MVVM.
Конструктивные идеи: реализуйте модель на JS для начала. Никакого интерфейса пользователя, тупо логика, объектики хранящие данные и логику обработки этих данных, объектики которые могут общаться друг с дружкой и менять состояния друг друга (не напрямую, инкапсуляция же).
Если логика реально сложная - напишите для модельки этой тесты, покрывающие самые сложные кейсы (что бы руками не тестить).
затем вводим контроллеры. Самый примитивный контроллер:
$('#someInput').on('change', function () {
// я контроллер
// я обрабатываю действия пользователя
// и прошу модель поменять состояние в соответствии с этими действиями
model.updateValue(this.value);
});
с вью намного интереснее. Тут лучше применить ViewModel как посредника между View и Model (что бы не писать тучу кода со стороны view которая будет отслеживать состояние модели). Для этого есть кучи клевых библиотек предоставляющих нам ту самюу viewmodel с биндингами.
Ну и последнее - все должно быть явно, в модели лучше не пользоваться событиями и явно дергать методы других моделей. Кроме моделей их методы могут дергать ТОЛЬКО контроллеры, предварительно подготовив данные из формата view в формат приложения.
Ну и как-то так.