<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>public/hobothemes/clean/images/101-3B5F87-ACD3E6.png</filename>
    </added>
    <added>
      <filename>public/hobothemes/clean/images/30-3E547A-242E42.png</filename>
    </added>
    <added>
      <filename>public/hobothemes/clean/images/30-DBE1E5-FCFEF5.png</filename>
    </added>
    <added>
      <filename>public/hobothemes/clean/images/300-ACD3E6-fff.png</filename>
    </added>
    <added>
      <filename>public/hobothemes/clean/images/50-ACD3E6-fff.png</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -628,9 +628,11 @@ new HoboBehavior(&quot;ul.input-many&quot;, {
       
       this.element.selectChildren('li').each(function(li, index) {
           li.select('*[name]').each(function(control) {
-              var changeId = control.id == control.name
-              control.name   = control.name.sub(new RegExp(&quot;^&quot; + RegExp.escape(prefix) + &quot;\[[0-9]+\]&quot;), prefix + '[' + index +']')
-              if (changeId) control.id = control.name
+              if(control.name) {
+                  var changeId = control.id == control.name;
+                  control.name   = control.name.sub(new RegExp(&quot;^&quot; + RegExp.escape(prefix) + &quot;\[[0-9]+\]&quot;), prefix + '[' + index +']');
+                  if (changeId) control.id = control.name;
+              }
           })
       })
   }</diff>
      <filename>public/javascripts/hobo-rapid.js</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@ LowPro = {};
 LowPro.Version = '0.5';
 LowPro.CompatibleWithPrototype = '1.6';
 
-if (Prototype.Version.indexOf(LowPro.CompatibleWithPrototype) != 0 &amp;&amp; console &amp;&amp; console.warn)
+if (Prototype.Version.indexOf(LowPro.CompatibleWithPrototype) != 0 &amp;&amp; window.console &amp;&amp; window.console.warn)
   console.warn(&quot;This version of Low Pro is tested with Prototype &quot; + LowPro.CompatibleWithPrototype + 
                   &quot; it may not work as expected with this version (&quot; + Prototype.Version + &quot;)&quot;);
 
@@ -15,19 +15,19 @@ DOM = {};
 // DOMBuilder for prototype
 DOM.Builder = {
 	tagFunc : function(tag) {
-	  return function() {
-	    var attrs, children; 
-	    if (arguments.length&gt;0) { 
-	      if (arguments[0].nodeName || 
-	        typeof arguments[0] == &quot;string&quot;) 
-	        children = arguments; 
-	      else { 
-	        attrs = arguments[0]; 
-	        children = Array.prototype.slice.call(arguments, 1); 
-	      };
-	    }
-	    return DOM.Builder.create(tag, attrs, children);
-	  };
+    return function() {
+     var attrs, children;
+     if (arguments.length&gt;0) {
+       if (arguments[0].constructor == Object) {
+         attrs = arguments[0];
+         children = Array.prototype.slice.call(arguments, 1);
+       } else {
+         children = arguments;
+       };
+       children = $A(children).flatten()
+     }
+     return DOM.Builder.create(tag, attrs, children);
+    };
   },
 	create : function(tag, attrs, children) {
 		attrs = attrs || {}; children = children || []; tag = tag.toLowerCase();
@@ -109,6 +109,14 @@ Event.addBehavior = function(rules) {
   
 };
 
+Event.delegate = function(rules) {
+  return function(e) {
+      var element = $(e.element());
+      for (var selector in rules)
+        if (element.match(selector)) return rules[selector].apply(this, $A(arguments));
+    }
+}
+
 Object.extend(Event.addBehavior, {
   rules : {}, cache : [],
   reassignAfterAjax : false,
@@ -122,9 +130,9 @@ Object.extend(Event.addBehavior, {
         var match = sel.match(/^([^:]*)(?::(.*)$)?/), css = match[1], event = match[2];
         $$(css).each(function(element) {
           if (event) {
-            observer = Event.addBehavior._wrapObserver(observer);
-            $(element).observe(event, observer);
-            Event.addBehavior.cache.push([element, event, observer]);
+            var wrappedObserver = Event.addBehavior._wrapObserver(observer);
+            $(element).observe(event, wrappedObserver);
+            Event.addBehavior.cache.push([element, event, wrappedObserver]);
           } else {
             if (!element.$$assigned || !element.$$assigned.include(observer)) {
               if (observer.attach) observer.attach(element);
@@ -198,7 +206,6 @@ var Behavior = {
       parent = properties.shift();
 
       var behavior = function() { 
-        var behavior = arguments.callee;
         if (!this.initialize) {
           var args = $A(arguments);
 
@@ -245,13 +252,17 @@ var Behavior = {
       return new this(element, Array.prototype.slice.call(arguments, 1));
     },
     _bindEvents : function(bound) {
-      for (var member in bound)
-        if (member.match(/^on(.+)/) &amp;&amp; typeof bound[member] == 'function')
-          bound.element.observe(RegExp.$1, Event.addBehavior._wrapObserver(bound[member].bindAsEventListener(bound)));
+      for (var member in bound) {
+        var matches = member.match(/^on(.+)/);
+        if (matches &amp;&amp; typeof bound[member] == 'function')
+          bound.element.observe(matches[1], Event.addBehavior._wrapObserver(bound[member].bindAsEventListener(bound)));
+      }
     }
   }
 };
 
+
+
 Remote = Behavior.create({
   initialize: function(options) {
     if (this.element.nodeName == 'FORM') new Remote.Form(this.element, options);
@@ -264,11 +275,19 @@ Remote.Base = {
     this.options = Object.extend({
       evaluateScripts : true
     }, options || {});
+    
+    this._bindCallbacks();
   },
   _makeRequest : function(options) {
     if (options.update) new Ajax.Updater(options.update, options.url, options);
     else new Ajax.Request(options.url, options);
     return false;
+  },
+  _bindCallbacks: function() {
+    $w('onCreate onComplete onException onFailure onInteractive onLoading onLoaded onSuccess').each(function(cb) {
+      if (Object.isFunction(this.options[cb]))
+        this.options[cb] = this.options[cb].bind(this);
+    }.bind(this));
   }
 }
 </diff>
      <filename>public/javascripts/lowpro.js</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>d504575f25a6a2097294dea480e9d2a0dc234ddd</id>
    </parent>
  </parents>
  <author>
    <name>Bryan Larsen</name>
    <email>bryan@larsen.st</email>
  </author>
  <url>http://github.com/tablatom/agility/commit/ead00ef5be1a9b3e0ded1f6ba202e90d56bca236</url>
  <id>ead00ef5be1a9b3e0ded1f6ba202e90d56bca236</id>
  <committed-date>2009-10-08T13:43:07-07:00</committed-date>
  <authored-date>2009-10-08T13:42:06-07:00</authored-date>
  <message>rake hobo:run_standard_generators</message>
  <tree>058e7b8487905bee2991e1f565d47e8828f953ed</tree>
  <committer>
    <name>Bryan Larsen</name>
    <email>bryan@larsen.st</email>
  </committer>
</commit>
