Index: trunk/web/templates/skeleton.py
===================================================================
--- trunk/web/templates/skeleton.py	(revision 187)
+++ trunk/web/templates/skeleton.py	(revision 205)
@@ -21,4 +21,5 @@
 import Cheetah.Filters as Filters
 import Cheetah.ErrorCatchers as ErrorCatchers
+from functions import functions
 
 ##################################################
@@ -34,8 +35,8 @@
 __CHEETAH_version__ = '2.0rc8'
 __CHEETAH_versionTuple__ = (2, 0, 0, 'candidate', 8)
-__CHEETAH_genTime__ = 1192082083.444865
-__CHEETAH_genTimestamp__ = 'Thu Oct 11 01:54:43 2007'
+__CHEETAH_genTime__ = 1192883107.2947011
+__CHEETAH_genTimestamp__ = 'Sat Oct 20 08:25:07 2007'
 __CHEETAH_src__ = 'skeleton.tmpl'
-__CHEETAH_srcLastModified__ = 'Thu Oct 11 01:54:41 2007'
+__CHEETAH_srcLastModified__ = 'Sat Oct 20 08:22:11 2007'
 __CHEETAH_docstring__ = 'Autogenerated by CHEETAH: The Python-Powered Template Engine'
 
@@ -49,5 +50,5 @@
 ## CLASSES
 
-class skeleton(Template):
+class skeleton(functions):
 
     ##################################################
@@ -57,5 +58,5 @@
     def __init__(self, *args, **KWs):
 
-        Template.__init__(self, *args, **KWs)
+        functions.__init__(self, *args, **KWs)
         if not self._CHEETAH__instanceInitialized:
             cheetahKWArgs = {}
@@ -66,9 +67,10 @@
         
 
-    def respond(self, trans=None):
-
-
-
-        ## CHEETAH: main method generated for this template
+    def full_body(self, **KWS):
+
+
+
+        ## CHEETAH: generated from #def full_body at line 4, col 1.
+        trans = KWS.get("trans")
         if (not trans and not self._CHEETAH__isBuffering and not callable(self.transaction)):
             trans = self.transaction # is None unless self.awake() was called
@@ -84,12 +86,16 @@
         ## START - generated method body
         
-        write('''<html>
+        write('''<!DOCTYPE html
+PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html>
 <head><title>''')
-        _v = VFFSL(SL,"title",True) # '$title' on line 2, col 14
-        if _v is not None: write(_filter(_v, rawExpr='$title')) # from line 2, col 14.
+        _v = VFFSL(SL,"title",True) # '$title' on line 9, col 14
+        if _v is not None: write(_filter(_v, rawExpr='$title')) # from line 9, col 14.
         write('''</title>
   <link href="static/favicon.ico" type="image/x-icon" rel="shortcut icon">
   <link rel="stylesheet" href="static/style.css" type="text/css" />
   <link rel="stylesheet" href="static/layout.css" type="text/css" media="screen" />
+  <script type="text/javascript" src="static/prototype.js"></script>
   <script type="text/javascript">
 var helpWin = null;
@@ -108,32 +114,102 @@
    return false;
 }
+
+Ajax.Responders.register({
+  onCreate: function(){
+    if (Ajax.activeRequestCount > 0) {
+       document.getElementById("loadingnotice").style.display = \'block\';
+    }
+  }, 
+  onComplete: function(){
+    if (Ajax.activeRequestCount == 0) {
+      document.getElementById("loadingnotice").style.display = \'none\';
+    } 
+  }
+});
+function replaceFunc(transport) {
+  try {
+    d = transport.responseText.evalJSON();
+  } catch (e) {
+    $(\'body\').innerHTML = \'<pre>\'+transport.responseText+\'</pre>\'
+    return;
+  }
+  for(key in d) {
+    $(key).innerHTML = d[key];
+  }
+}
+
+function jsFormSubmit(location, elt){
+  new Ajax.Request(location, {method: \'post\', 
+  parameters: Form.serialize(elt)+\'&js=true\', 
+  onSuccess: replaceFunc,
+  onComplete: function() {Form.enable(elt);}
+  });
+  Form.disable(elt);
+  return false;
+}
+
+function rowFormSubmit(elt, retpage){
+  new Ajax.Request(\'command\', {method: \'post\', 
+  parameters: Form.serialize(elt)+\'&js=\'+retpage, 
+  onSuccess: replaceFunc
+  });
+  return false;
+}
+
+window.onload = {
+  //Fix bug with disabled elements
+  $''')
+        _v = 'form' # "$('form')" on line 75, col 4
+        if _v is not None: write(_filter(_v, rawExpr="$('form')")) # from line 75, col 4.
+        write('''.each(Form.enable);
+}
+
 </script>
 </head>
-<body>
-''')
-        if not VFFSL(SL,"varExists",False)('simple') or not VFFSL(SL,"simple",True): # generated from line 25, col 1
+<body id="body">
+
+<div id="err">
+''')
+        if VFFSL(SL,"varExists",False)('error_text'): # generated from line 83, col 1
+            write('''<p>STDERR:</p><pre>''')
+            _v = VFFSL(SL,"error_text",True) # '$error_text' on line 84, col 20
+            if _v is not None: write(_filter(_v, rawExpr='$error_text')) # from line 84, col 20.
+            write('''</pre>
+''')
+        write('''</div>
+
+''')
+        if not VFFSL(SL,"varExists",False)('simple') or not VFFSL(SL,"simple",True): # generated from line 88, col 1
             write('''<p>[You are logged in as ''')
-            _v = VFFSL(SL,"user.username",True) # '$user.username' on line 26, col 26
-            if _v is not None: write(_filter(_v, rawExpr='$user.username')) # from line 26, col 26.
+            _v = VFFSL(SL,"user.username",True) # '$user.username' on line 89, col 26
+            if _v is not None: write(_filter(_v, rawExpr='$user.username')) # from line 89, col 26.
             write('''.]</p>
+
+<div class="navigation">
 <p><a href="list">List</a> 
 ''')
-            if VFFSL(SL,"varExists",False)('machine'): # generated from line 28, col 1
+            if VFFSL(SL,"varExists",False)('machine'): # generated from line 93, col 1
                 write('''<a href="info?machine_id=''')
-                _v = VFFSL(SL,"machine.machine_id",True) # '$machine.machine_id' on line 29, col 26
-                if _v is not None: write(_filter(_v, rawExpr='$machine.machine_id')) # from line 29, col 26.
+                _v = VFFSL(SL,"machine.machine_id",True) # '$machine.machine_id' on line 94, col 26
+                if _v is not None: write(_filter(_v, rawExpr='$machine.machine_id')) # from line 94, col 26.
                 write('''">Info</a>
 <a href="vnc?machine_id=''')
-                _v = VFFSL(SL,"machine.machine_id",True) # '$machine.machine_id' on line 30, col 25
-                if _v is not None: write(_filter(_v, rawExpr='$machine.machine_id')) # from line 30, col 25.
+                _v = VFFSL(SL,"machine.machine_id",True) # '$machine.machine_id' on line 95, col 25
+                if _v is not None: write(_filter(_v, rawExpr='$machine.machine_id')) # from line 95, col 25.
                 write('''">Console</a>
 ''')
             write('''<a href="help">Help</a></p>
 ''')
-        _v = VFFSL(SL,"body",True) # '$body' on line 34, col 1
-        if _v is not None: write(_filter(_v, rawExpr='$body')) # from line 34, col 1.
+        write('''</div>
+
+<div id="loadingnotice" class="loadingnotice">LOADING</div>
+<div id="result" class="result"></div>
+
+''')
+        _v = VFFSL(SL,"body",True) # '$body' on line 104, col 1
+        if _v is not None: write(_filter(_v, rawExpr='$body')) # from line 104, col 1.
         write('''
 ''')
-        if not VFFSL(SL,"varExists",False)('simple') or not VFFSL(SL,"simple",True): # generated from line 35, col 1
+        if not VFFSL(SL,"varExists",False)('simple') or not VFFSL(SL,"simple",True): # generated from line 105, col 1
             write('''<hr />
 Questions? Contact <a href="mailto:sipb-xen-dev@mit.edu">sipb-xen-dev@mit.edu</a>.
@@ -148,4 +224,32 @@
         return _dummyTrans and trans.response().getvalue() or ""
         
+
+    def writeBody(self, **KWS):
+
+
+
+        ## CHEETAH: main method generated for this template
+        trans = KWS.get("trans")
+        if (not trans and not self._CHEETAH__isBuffering and not callable(self.transaction)):
+            trans = self.transaction # is None unless self.awake() was called
+        if not trans:
+            trans = DummyTransaction()
+            _dummyTrans = True
+        else: _dummyTrans = False
+        write = trans.response().write
+        SL = self._CHEETAH__searchList
+        _filter = self._CHEETAH__currentFilter
+        
+        ########################################
+        ## START - generated method body
+        
+        write('''
+''')
+        
+        ########################################
+        ## END - generated method body
+        
+        return _dummyTrans and trans.response().getvalue() or ""
+        
     ##################################################
     ## CHEETAH GENERATED ATTRIBUTES
@@ -166,5 +270,5 @@
     _CHEETAH_srcLastModified = __CHEETAH_srcLastModified__
 
-    _mainCheetahMethod_for_skeleton= 'respond'
+    _mainCheetahMethod_for_skeleton= 'writeBody'
 
 ## END CLASS DEFINITION
