<b> false);</b>
<b> // При каждой загрузке приложения пытаться синхронизироваться с сервером</b>
<b> sync();</b>
<b>};</b>
<b>// Сохраняет заметку на сервере перед уходом со страницы </b>
<b>window.onbeforeunload = function() {</b>
<b> if (localStorage.lastModified > localStorage.lastSaved) save();</b>
<b>};</b>
<b>// Сообщить пользователю перед переходом в автономный режим</b>
<b>window.onoffline = function() { status("Автономный режим"); }</b>
<b>// При подключении к сети выполнить синхронизацию,</b>
<b>window.ononline = function() { sync(); };</b>
<b>// Сообщить пользователю, если доступна новая версия приложения.</b>
<b>// Здесь можно было бы выполнить перезагрузку принудительно, вызвав </b>
<b>// метод location.reload()</b>
<b>window.applicationCache.onupdateready = function() {</b>
<b> status("Доступна новая версия приложения. " +</b>
<b> "Чтобы использовать ее, необходимо перезагрузить приложение ”);</b>
<b>};</b>
<b>// Также сообщить пользователю, если он использует последнюю версию приложения, </b>
<b>window.applicationCache.onnoupdate = function() {</b>
<b> status("Bы используете последнюю версию приложения.");</b>
<b>};</b>
<b>// Функция отображения сообщения в строке состояния</b>
<b>function status(msg) { statusline.innerHTML = msg; }</b>
<b>// Выгружает текст заметки на сервер (если сеть подключена).</b>
<b>// Автоматически вызывается через 5 секунд простоя после изменения текста заметки,</b>
<b>function save() {</b>
<b> if (idletimer) clearTimeout(idletimer);</b>
<b> idletimer = null;</b>
<b> if (navigator.onLine) {</b>
<b> var xhr = new XMLHttpRequest();</b>
<b> xhr.open("PUT", "/note");</b>
<b> xhr.send(editor.value);</b>
<b> xhr.onload = function() {</b>
<b> localStorage.lastSaved = Date.now();</b>
<b> savebutton.disabled = true;</b>
<b> };</b>
<b> }</b>
<b>}</b>
<b>// Проверяет наличие новой версии заметки на сервере. Если она отсутствует,</b>
<b>// сохраняет текущую версию на сервере.</b>
<b>function sync() {</b>
<b> if (navigator.onLine) {</b>
<b> var xhr = new XMLHttpRequest();</b>
<b> xhr.open("GET", "/note");</b>
<b> xhr.send();</b>
<b> xhr.onload = function() {</b>
<b> var remoteModTime = 0;</b>
<b> if (xhr.status == 200) {</b>
<b> var remoteModTime = xhr.getResponseHeader("Last-Modified");</b>
<b> remoteModTime = new Date(remoteModTime).getTime();</b>
<b> }</b>
<b> if (remoteModTime > localStorage.lastModified) {</b>
<b> status("Ha сервере найдена более новая заметка.");</b>
<b> var useit =</b>
<b> confirm("Ha сервере имеется более новая версия\n” + </b>
<b> "заметки. Щелкните на кнопке Ok, чтобы\n" + </b>
<b> "использовать эту версию, или на кнопке\n"+</b>
<b> "Отмена, чтобы продолжить редактировать\n"+</b>
<b> "текущую версию и затереть версию на сервере ");</b>
<b> var now = Date.now();</b>
<b> if (useit) {</b>
<b> editor.value = localStorage.note = xhr.responseText;</b>
<b> localStorage.lastSaved = now;</b>
<b> status("Загружена более новая версия.");</b>
<b> }</b>
<b> else</b>
<b> status("Игнорируется более новая версия заметки.");</b>
<b> localStorage.lastModified = now;</b>