module ActionView::Helpers::PrototypeHelper

def build_callbacks(options)

def build_callbacks(options)
  callbacks = {}
  options.each do |callback, code|
    if CALLBACKS.include?(callback)
      name = 'on' + callback.to_s.capitalize
      callbacks[name] = "function(request){#{code}}"
    end
  end
  callbacks
end

def method_option_to_s(method)

def method_option_to_s(method)
  (method.is_a?(String) and !method.index("'").nil?) ? method : "'#{method}'"
end

def options_for_ajax(options)

def options_for_ajax(options)
  js_options = build_callbacks(options)
  js_options['asynchronous'] = options[:type] != :synchronous
  js_options['method']       = method_option_to_s(options[:method]) if options[:method]
  js_options['insertion']    = "'#{options[:position].to_s.downcase}'" if options[:position]
  js_options['evalScripts']  = options[:script].nil? || options[:script]
  if options[:form]
    js_options['parameters'] = 'Form.serialize(this)'
  elsif options[:submit]
    js_options['parameters'] = "Form.serialize('#{options[:submit]}')"
  elsif options[:with]
    js_options['parameters'] = options[:with]
  end
  if protect_against_forgery? && !options[:form]
    if js_options['parameters']
      js_options['parameters'] << " + '&"
    else
      js_options['parameters'] = "'"
    end
    js_options['parameters'] << "#{request_forgery_protection_token}=' + encodeURIComponent('#{escape_javascript form_authenticity_token}')"
  end
  options_for_javascript(js_options)
end

def options_for_javascript(options)

def options_for_javascript(options)
  if options.empty?
    '{}'
  else
    "{#{options.keys.map { |k| "#{k}:#{options[k]}" }.sort.join(', ')}}"
  end
end

def remote_function(options)




:url => { :action => :update_options }) %>">
def remote_function(options) javascript_options = options_for_ajax(options) update = '' if options[:update] && options[:update].is_a?(Hash) update = [] update << "success:'#{options[:update][:success]}'" if options[:update][:success] update << "failure:'#{options[:update][:failure]}'" if options[:update][:failure] update = '{' + update.join(',') + '}' elsif options[:update] update << "'#{options[:update]}'" end function = update.empty? ? "new Ajax.Request(" : "new Ajax.Updater(#{update}, " url_options = options[:url] url_options = url_options.merge(:escape => false) if url_options.is_a?(Hash) function << "'#{html_escape(escape_javascript(url_for(url_options)))}'" function << ", #{javascript_options})" function = "#{options[:before]}; #{function}" if options[:before] function = "#{function}; #{options[:after]}" if options[:after] function = "if (#{options[:condition]}) { #{function}; }" if options[:condition] function = "if (confirm('#{escape_javascript(options[:confirm])}')) { #{function}; }" if options[:confirm] return function.html_safe end

def update_page(&block)

end
page.hide 'spinner'
update_page do |page|

Example:

See JavaScriptGenerator for more information.
Use this to update multiple elements on a page in an Ajax response.
Yields a JavaScriptGenerator and returns the generated JavaScript code.
def update_page(&block)
  JavaScriptGenerator.new(view_context, &block).to_s.html_safe
end

def update_page_tag(html_options = {}, &block)

to ActionView::Helpers::JavaScriptHelper#javascript_tag.
+html_options+ may be a hash of