Реализовать перемещение между страницами с сохранением посещения в приложениях Ajax не так-то просто, но метод navi описанный ранее, упрощает дело. Когда пользователь nepei из одного режима работы AjaxMail в другой, можно передать методу navigate() и подождать, пока действие не будет в Есть четыре метода, которые прямо или косвенно вызывают vigate() для выполнения возложенных на них функций:
cancelReply: function () {
:v;;v*;v^Mstory.:go(-1);sA;^
compose: function () {
this.navigate("compose");
forward: function () {
this.navigate("forward");
readMessage: function (sld) {
this.navigate("getmessage", sld);
reply, function (blnAll) {
this.navigate("reply" + (blnAll ? "all" :
""));
Первый метод, cancelReply(), для выполнения своей работы ные из журнала посещений броузера. Когда пользователь щ одной из ссылок Compose Mail (Написать письмо), Forward (I Reply (Ответить) или Reply All (Ответить всем), для перехода в вующий режим вызывается метод navigate(). Возврат к странице можно выполнить с помощью объекта history, п факт перемещения ранее был зафиксирован в скрытом ф~ перехода к предыдущей странице достаточно передать знач тоду до() объекта history.
Все остальные методы, описываемые в этом разделе, передают navigate() строку с названием действия, подлежащего выпотод readMessageO принимает числовой идентификатор требуемого сооб¬щения, а метод reply() принимает логическое значение, которое уточня¬ет действие - reply (ответить) или replyall (ответить всем), а если вход¬ной аргумент имеет значение true, то выполняется операция replyall.
Вы наверняка помните, что после обращения к сценарию AjaxMailNavi-gate. php в зависимости от выполняемой операции вызываются те или иные методы JavaScript. Имена всех этих методов начинаются со сло¬ва display, и каждый из них инициализирует определенный режим отображения.
Метод displayFolderQ отображает содержимое заданной папки. Он при¬нимает в качестве единственного аргумента объект info с информаци¬ей о папке, отображает ее содержимое, после чего записывает значе¬ние false в свойство processing:
displayFolder: function (olnfo) { this.loadlnfo(olnfo); this.renderFolder(); this.setProcessing(false);

Аналогично работает метод displayMessageO, который принимает в ка¬честве аргумента объект message, загружает его, отображает и записы¬вает значение false в свойство processing:
displayMessage: function (oMessage) { this.loadMessage(oMessage); this.renderMessage(); this.setProcessing(false);

Эти два метода обслуживают режим просмотра папки и режим чтения сообщения соответственно. Режим составления сообщения несколько отличается от предыдущих двух тем, что может использоваться двумя способами: для составления нового письма (в этом случае все поля формы изначально должны быть пустыми) и для составления ответа или для пересылки письма (отдельные поля формы предварительно должны быть заполнены некоторой информацией). Выполнением всех этих операций занимается единственный метод:
displayComposeMailForm: function (sTo, sCC, sSubject, sMessage) {
this.txtTo.value = sTo;
this.txtCC.value = sCC;
this.txtSubject.value = sSubject;
this.txtMessage.value = sMessage;
this.divReadMail.style.display = "none";
this.divComposeMail.style.display - "block";
this. divFolder. style, display = "none";
this.setProcessing(false);
Метод displayComposeMailFormO принимает всю информацию, может потребоваться, записывает ее в соответствующие поля после чего скрывает элементы divFolder и divReadMail и отобра мент divComposeMail. В завершение метод сбрасывает флаг рг записывая туда значение false. Метод displayComposeMailFormO зывается непосредственно сценарием AjaxMailNavigate. php, зато зывается из методов, которые реализуют конкретные действия:
displayCompose: function () {
this.displayComposeMailFo rm("","","","");

displayForward: function () {
this.displayComposeMailForm("","",
"Fwd: " + this.message.subject,
" Переправленное сообщение — —\»
+ this.message.message);

displayReply: function ().{
var sTo = this.message.from; . var sCC = "";
this.displayComposeMailForm(sTo, sCC, "Re: " + this.message.subj "\n\n\n\n\n" + this.message.from + " писал(а): + this.message.message);

displayReplyAll: function () {
var sTo = this.message.from +",*' + this.message.to; var sCC = this.message.ee;
this.displayComposeMailForm(sTo, sCC,
"Re: " +this.message.subj "\n\n\n\n\n" + this.message.from + " писал(а): \n" + this.message.message);
},
Метод displayCompose() просто отображает незаполненную составления письма, передавая пустые строки методу displa MailForm(). Метод displayForward() добавляет префикс «Fwd:» к общения, а в начало самого сообщения вставляет строку «-
warded Message » (Переправленное сообщение). Два.
тода, displayReplyO и displayReplyAll(), добавляют префикс « ме сообщения и включают в начало письма, перед текстом сообщения, короткую строку. Эти два метода отличаются как заполняются поля То (Кому) и СС (Копия). Метод displays писывает в поле То адрес отправителя оригинального сообще тод displayReplyAll () включает в это поле все адреса, кому было лено оригинальное письмо, и в поле СС включает содержимое оригинального письма.