<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>Rakefile</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -124,7 +124,7 @@ Calendar = Behavior.create({
           if (this._compareDate(this.selector.date, year, month, day)) classes.push('selected');
           
           html += '&lt;td class=&quot;' + classes.join(' ') + '&quot;&gt;' + 
-                  '&lt;a href=&quot;#&quot;&gt;' + day++ + '&lt;/a&gt;' + 
+                  '&lt;a href=&quot;#&quot;&gt;' + (day++) + '&lt;/a&gt;' + 
                   '&lt;/td&gt;';
         } else html += '&lt;td&gt;&lt;/td&gt;';
       }
@@ -156,7 +156,7 @@ DateSelector.DEFAULTS = {
     if (!isNaN(parsed)) return new Date(parsed);
     else return null;
   }
-}
+};
 
 Object.extend(Calendar, {
   DAYS : $w('S M T W T F S'),</diff>
      <filename>behaviours/date_selector.js</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,7 @@ Draggable = Behavior.create({
   drag : function(e) {
     this.clientX = e.clientX;
 		this.clientY = e.clientY;
-		this.move(this.clientX - this.lastMouseX, this.clientY - this.lastMouseY)
+		this.move(this.clientX - this.lastMouseX, this.clientY - this.lastMouseY);
     this.set(e);
 		return false;
   },</diff>
      <filename>behaviours/draggable.js</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,7 @@ if (Prototype.Version.indexOf(LowPro.CompatibleWithPrototype) != 0 &amp;&amp; window.con
                   &quot; it may not work as expected with this version (&quot; + Prototype.Version + &quot;)&quot;);
 
 if (!Element.addMethods) 
-  Element.addMethods = function(o) { Object.extend(Element.Methods, o) };
+  Element.addMethods = function(o) { Object.extend(Element.Methods, o); };
 
 // Simple utility methods for working with the DOM
 DOM = {};
@@ -24,7 +24,7 @@ DOM.Builder = {
        } else {
          children = arguments;
        };
-       children = $A(children).flatten()
+       children = $A(children).flatten();
      }
      return DOM.Builder.create(tag, attrs, children);
     };
@@ -97,7 +97,7 @@ Event.addBehavior = function(rules) {
     Ajax.Responders.register({
       onComplete : function() { 
         if (Event.addBehavior.reassignAfterAjax) 
-          setTimeout(function() { ab.reload() }, 10);
+          setTimeout(function() { ab.reload(); }, 10);
       }
     });
     ab.responderApplied = true;
@@ -114,8 +114,8 @@ Event.delegate = function(rules) {
       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 : [],
@@ -163,7 +163,7 @@ Object.extend(Event.addBehavior, {
   _wrapObserver: function(observer) {
     return function(event) {
       if (observer.call(this, event) === false) event.stop(); 
-    }
+    };
   }
   
 });
@@ -278,9 +278,17 @@ Remote.Base = {
     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;
+    if (options.confirm) {
+      if (confirm(options.confirm)) {
+        if (options.update) new Ajax.Updater(options.update, options.url, options);
+        else new Ajax.Request(options.url, options);
+        return false;
+      }
+    } else {
+      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) {
@@ -288,7 +296,7 @@ Remote.Base = {
         this.options[cb] = this.options[cb].bind(this);
     }.bind(this));
   }
-}
+};
 
 Remote.Link = Behavior.create(Remote.Base, {
   onclick : function() {
@@ -307,10 +315,25 @@ Remote.Form = Behavior.create(Remote.Base, {
       this._submitButton = sourceElement;
   },
   onsubmit : function() {
+    var parameters = this.element.serialize();
+
+    if (parameters.blank()) {
+      parameters = this.options.parameters;
+    } else {
+      parameters = parameters + '&amp;' + this.options.parameters;
+    }
+    delete this.options.parameters;
+    if (this._submitButton) {
+      if (parameters.blank()) {
+        parameters = this._submitButton.name + &quot;=&quot; + this._submitButton.value;
+      } else {
+        parameters = parameters + '&amp;' + this._submitButton.name + &quot;=&quot; + this._submitButton.value;
+      }
+    }
     var options = Object.extend({
       url : this.element.action,
       method : this.element.method || 'get',
-      parameters : this.element.serialize({ submit: this._submitButton.name })
+      parameters : parameters
     }, this.options);
     this._submitButton = null;
     return this._makeRequest(options);</diff>
      <filename>dist/lowpro.js</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>dist/lowpro.zip</filename>
    </modified>
    <modified>
      <diff>@@ -19,7 +19,7 @@ Event.addBehavior = function(rules) {
     Ajax.Responders.register({
       onComplete : function() { 
         if (Event.addBehavior.reassignAfterAjax) 
-          setTimeout(function() { ab.reload() }, 10);
+          setTimeout(function() { ab.reload(); }, 10);
       }
     });
     ab.responderApplied = true;
@@ -36,8 +36,8 @@ Event.delegate = function(rules) {
       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 : [],
@@ -85,7 +85,7 @@ Object.extend(Event.addBehavior, {
   _wrapObserver: function(observer) {
     return function(event) {
       if (observer.call(this, event) === false) event.stop(); 
-    }
+    };
   }
   
 });</diff>
      <filename>src/behavior.js</filename>
    </modified>
    <modified>
      <diff>@@ -14,9 +14,17 @@ Remote.Base = {
     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;
+    if (options.confirm) {
+      if (confirm(options.confirm)) {
+        if (options.update) new Ajax.Updater(options.update, options.url, options);
+        else new Ajax.Request(options.url, options);
+        return false;
+      }
+    } else {
+      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) {
@@ -24,7 +32,7 @@ Remote.Base = {
         this.options[cb] = this.options[cb].bind(this);
     }.bind(this));
   }
-}
+};
 
 Remote.Link = Behavior.create(Remote.Base, {
   onclick : function() {
@@ -43,10 +51,25 @@ Remote.Form = Behavior.create(Remote.Base, {
       this._submitButton = sourceElement;
   },
   onsubmit : function() {
+    var parameters = this.element.serialize();
+
+    if (parameters.blank()) {
+      parameters = this.options.parameters;
+    } else {
+      parameters = parameters + '&amp;' + this.options.parameters;
+    }
+    delete this.options.parameters;
+    if (this._submitButton) {
+      if (parameters.blank()) {
+        parameters = this._submitButton.name + &quot;=&quot; + this._submitButton.value;
+      } else {
+        parameters = parameters + '&amp;' + this._submitButton.name + &quot;=&quot; + this._submitButton.value;
+      }
+    }
     var options = Object.extend({
       url : this.element.action,
       method : this.element.method || 'get',
-      parameters : this.element.serialize({ submit: this._submitButton.name })
+      parameters : parameters
     }, this.options);
     this._submitButton = null;
     return this._makeRequest(options);</diff>
      <filename>src/core_behaviors.js</filename>
    </modified>
    <modified>
      <diff>@@ -52,6 +52,6 @@ BehaviorDebugger = {
     });
     return false;
   }
-}
+};
 
 //Event.onReady(BehaviorDebugger.open.bind(BehaviorDebugger));
\ No newline at end of file</diff>
      <filename>src/debug.js</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@ DOM.Builder = {
        } else {
          children = arguments;
        };
-       children = $A(children).flatten()
+       children = $A(children).flatten();
      }
      return DOM.Builder.create(tag, attrs, children);
     };</diff>
      <filename>src/dom.js</filename>
    </modified>
    <modified>
      <diff>@@ -7,4 +7,4 @@ if (Prototype.Version.indexOf(LowPro.CompatibleWithPrototype) != 0 &amp;&amp; window.con
                   &quot; it may not work as expected with this version (&quot; + Prototype.Version + &quot;)&quot;);
 
 if (!Element.addMethods) 
-  Element.addMethods = function(o) { Object.extend(Element.Methods, o) };
\ No newline at end of file
+  Element.addMethods = function(o) { Object.extend(Element.Methods, o); };
\ No newline at end of file</diff>
      <filename>src/lowpro.js</filename>
    </modified>
    <modified>
      <diff>@@ -7,7 +7,7 @@ if (Prototype.Version.indexOf(LowPro.CompatibleWithPrototype) != 0 &amp;&amp; window.con
                   &quot; it may not work as expected with this version (&quot; + Prototype.Version + &quot;)&quot;);
 
 if (!Element.addMethods) 
-  Element.addMethods = function(o) { Object.extend(Element.Methods, o) };
+  Element.addMethods = function(o) { Object.extend(Element.Methods, o); };
 
 // Simple utility methods for working with the DOM
 DOM = {};
@@ -24,7 +24,7 @@ DOM.Builder = {
        } else {
          children = arguments;
        };
-       children = $A(children).flatten()
+       children = $A(children).flatten();
      }
      return DOM.Builder.create(tag, attrs, children);
     };
@@ -97,7 +97,7 @@ Event.addBehavior = function(rules) {
     Ajax.Responders.register({
       onComplete : function() { 
         if (Event.addBehavior.reassignAfterAjax) 
-          setTimeout(function() { ab.reload() }, 10);
+          setTimeout(function() { ab.reload(); }, 10);
       }
     });
     ab.responderApplied = true;
@@ -114,8 +114,8 @@ Event.delegate = function(rules) {
       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 : [],
@@ -163,7 +163,7 @@ Object.extend(Event.addBehavior, {
   _wrapObserver: function(observer) {
     return function(event) {
       if (observer.call(this, event) === false) event.stop(); 
-    }
+    };
   }
   
 });
@@ -278,9 +278,17 @@ Remote.Base = {
     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;
+    if (options.confirm) {
+      if (confirm(options.confirm)) {
+        if (options.update) new Ajax.Updater(options.update, options.url, options);
+        else new Ajax.Request(options.url, options);
+        return false;
+      }
+    } else {
+      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) {
@@ -288,7 +296,7 @@ Remote.Base = {
         this.options[cb] = this.options[cb].bind(this);
     }.bind(this));
   }
-}
+};
 
 Remote.Link = Behavior.create(Remote.Base, {
   onclick : function() {
@@ -307,10 +315,25 @@ Remote.Form = Behavior.create(Remote.Base, {
       this._submitButton = sourceElement;
   },
   onsubmit : function() {
+    var parameters = this.element.serialize();
+
+    if (parameters.blank()) {
+      parameters = this.options.parameters;
+    } else {
+      parameters = parameters + '&amp;' + this.options.parameters;
+    }
+    delete this.options.parameters;
+    if (this._submitButton) {
+      if (parameters.blank()) {
+        parameters = this._submitButton.name + &quot;=&quot; + this._submitButton.value;
+      } else {
+        parameters = parameters + '&amp;' + this._submitButton.name + &quot;=&quot; + this._submitButton.value;
+      }
+    }
     var options = Object.extend({
       url : this.element.action,
       method : this.element.method || 'get',
-      parameters : this.element.serialize({ submit: this._submitButton.name })
+      parameters : parameters
     }, this.options);
     this._submitButton = null;
     return this._makeRequest(options);</diff>
      <filename>test/lowpro.js</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>RakeFile</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>d6493d2d0e75e9f49963f409c06fb503f8be87b2</id>
    </parent>
  </parents>
  <author>
    <name>Brian Landau</name>
    <email>brianjlandau@gmail.com</email>
  </author>
  <url>http://github.com/brianjlandau/lowpro/commit/202f5a230bb251833e8b0abf618e667d5296ea2e</url>
  <id>202f5a230bb251833e8b0abf618e667d5296ea2e</id>
  <committed-date>2008-06-18T13:04:32-07:00</committed-date>
  <authored-date>2008-06-18T13:04:32-07:00</authored-date>
  <message>Fix syntax error where possible.
Add ability for Remote behaviors to accept a confirm option.
Handles specifying a specific parameters option being passed to Remote.Form and still getting all the other parameters properly.</message>
  <tree>7d6d4c16de489632f2faf115286801fd5fa388fa</tree>
  <committer>
    <name>Brian Landau</name>
    <email>brianjlandau@gmail.com</email>
  </committer>
</commit>
