--- PageEditor-1.3.5.py	2005-07-28 00:51:40.000000000 +0900
+++ PageEditor.py	2005-11-03 10:09:45.780773100 +0900
@@ -275,6 +275,7 @@
             page=self,
             pagename=self.page_name, msg=status,
             body_onload=self.lock.locktype and 'countdown()' or '', # broken / bug in Mozilla 1.5, when using #preview
+            body_onbeforeunload = 'return confirmleaving();',
             html_head=self.lock.locktype and (
                 _countdown_js % {
                      'lock_timeout': lock_timeout,
@@ -316,7 +332,7 @@
         self.request.write('</p>')
         
         # send form
-        self.request.write('<form id="editor" method="post" action="%s/%s#preview">' % (
+        self.request.write('<form id="editor" method="post" action="%s/%s#preview" onSubmit="flgChange = false;">' % (
             self.request.getScriptname(),
             wikiutil.quoteWikinameURL(self.page_name),
             ))
@@ -352,9 +368,34 @@
         # language into meta file.
         lang = self.language or self.request.cfg.default_lang
 
+        # XXXX Seungik Lee
+        # to prevent moving out the page without saving it
+        
+        if preview:
+            flgchange = 'true'
+        else:
+            flgchange = 'false'
+        
+        
+        self.request.write(
+            u'\r\n<script type="text/javascript">\r\n'
+            u'  var flgChange = %(ischanged)s;\r\n'
+            u'  function confirmleaving() { \r\n'
+        	u'      if ( flgChange == true )\r\n'
+        	u'          return "%(message)s";\r\n'
+        	u'      \r\n'
+            u'  }\r\n'
+            u'</script>\r\n' % {
+            'ischanged': flgchange,
+            'message': _('Your changes are not saved!'),
+            }
+            )
+        
+        # XXXX
+
         self.request.write(
             u'<textarea id="editor-textarea" name="savetext" lang="%(lang)s" dir="%(dir)s"'
-            u' rows="%(rows)d">' % {
+            u' rows="%(rows)d" onChange="flgChange = true;" onKeyPress="flgChange = true;">' % {
             'lang': lang,
             'dir': i18n.getDirection(lang),
             'rows': text_rows,
@@ -366,7 +407,7 @@
         self.request.write('</p>')
 
         self.request.write("<p>", _("Optional comment about this change"),
-            '<br><input id="editor-comment" type="text" name="comment" value="%s" maxlength="80"></p>' % (
+            '<br><input id="editor-comment" type="text" name="comment" value="%s" maxlength="80" onChange="flgChange = true;" onKeyPress="flgChange = true;"></p>' % (
                 wikiutil.escape(kw.get('comment', ''), 1), ))
 
         # Category selection
@@ -381,7 +422,7 @@
 
         # button bar
         button_spellcheck = (SpellCheck and
-            '<input type="submit" name="button_spellcheck" value="%s">'
+            '<input type="submit" name="button_spellcheck" value="%s" onClick="flgChange = false;">'
                 % _('Check Spelling')) or ''
 
         save_button_text = _('Save Changes')
@@ -400,8 +441,8 @@
 
         self.request.write('''
 <p>
-<input type="submit" name="button_save" value="%s">
-<input type="submit" name="button_preview" value="%s"> %s
+<input type="submit" name="button_save" value="%s" onClick="flgChange = false;">
+<input type="submit" name="button_preview" value="%s" onClick="flgChange = false;"> %s
 <input type="submit" name="button_cancel" value="%s">
 </p>
 <p>
