Главная деталь в приложении AjaxMail - это почтовый ящик. Почто¬вый ящик (Mailbox)- это объект JavaScript, который содержит все свойства и методы, необходимые для работы пользовательского интер¬фейса. Поскольку должен существовать только один экземпляр этого класса, он описан как литерал:
var.-.oMailbox = {
info: new ObjectO, processing: false, message: new ObjectO, nextNotice: null,
Объект класса Mailbox хранится под именем oMailbox и имеет четыре свойства. Первое свойство, info, представляет собой объект, содержа¬щий сведения о папке, отображаемой в режиме просмотра папки. Этот объект возвращается сервером, а здесь во избежание возможных оши¬бок инициализируется как объект универсального класса. Следующее свойство, processing, представляет собою обычный флаг, указывающий на наличие обрабатываемого приложением запроса. Пока флаг содер¬жит значение true, никакая другая операция не может быть выполне¬на. Третье свойство, message, содержит объект, описывающий сообще¬ние, при работе в режиме просмотра сообщения. Это свойство также инициализируется пустым объектом для предотвращения возможных ошибок. Последнее свойство, nextNotice, используется различными функциями обратного вызова и определяет уведомление, которое должно быть выведено по окончании выполнения текущей операции.
Прежде чем пользователь сможет начать работу с интерфейсом, дан¬ный класс сохраняет ссылки на большинство элементов. Делаться это может с помощью многократных вызовов метода document.getElement-Byld(), однако лобовое решение потребовало бы написания большого числа строк программного кода. Гораздо проще обойти в цикле все
элементы страницы и добавить ссылки на те элементы, которые атрибут id. Эту работу выполняет метод init():
init: function () {
var colAHElements = document.getEleroentsByTagName("*")'. if (colAHElements. length == 0) { colAHElements = document, all;
for (var i=0; i < colAllElements.length; i++) { if (colAHElements[i].id.length > 0) {
this[colAHElements[l].id] = colAllElements[i];
}
II здесь находится остальной код
Здесь сначала вызывается метод document.getElementByTagNameO, рому в качестве аргумента передается символ **». В DOM-мых броузерах этот вызов должен вернуть коллекцию всех в документе. Однако реализация Internet Explorer не подд такую возможность, и вы должны быть готовы к этому. Если щаемая коллекция не содержит элементов (значение свойства не больше нуля), значит, нам встретился Internet Explorer. В чае вместо коллекции, возвращаемой методом getElementByT можно взять коллекцию document, all (поддерживается только в net Explorer). После того как в colAllElements будет записана г_ ная коллекция элементов, в цикле for выполняется обход всех ментов. Если текущий элемент обладает свойством id (длина id больше нуля), то ссылка на элемент сохраняется в объекте Так, элемент divFolderStatus сохраняется в объекте oMailbox как ство с именем divFolderStatus и доступен как this. divFolderStatus ри методов объекта и как oMailbox. divFolderStatus за его пред