<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,5 +1,5 @@
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
-&lt;buildpath&gt;
-	&lt;buildpathentry kind=&quot;src&quot; path=&quot;spec&quot;/&gt;
-	&lt;buildpathentry kind=&quot;src&quot; path=&quot;lib&quot;/&gt;
-&lt;/buildpath&gt;
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;buildpath&gt;
+	&lt;buildpathentry kind=&quot;src&quot; path=&quot;spec&quot;/&gt;
+	&lt;buildpathentry kind=&quot;src&quot; path=&quot;lib&quot;/&gt;
+&lt;/buildpath&gt;</diff>
      <filename>.buildpath</filename>
    </modified>
    <modified>
      <diff>@@ -1,23 +1,23 @@
-&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
-&lt;projectDescription&gt;
-	&lt;name&gt;selenium&lt;/name&gt;
-	&lt;comment&gt;&lt;/comment&gt;
-	&lt;projects&gt;
-	&lt;/projects&gt;
-	&lt;buildSpec&gt;
-		&lt;buildCommand&gt;
-			&lt;name&gt;org.eclipse.dltk.core.scriptbuilder&lt;/name&gt;
-			&lt;arguments&gt;
-			&lt;/arguments&gt;
-		&lt;/buildCommand&gt;
-		&lt;buildCommand&gt;
-			&lt;name&gt;org.rubypeople.rdt.core.rubybuilder&lt;/name&gt;
-			&lt;arguments&gt;
-			&lt;/arguments&gt;
-		&lt;/buildCommand&gt;
-	&lt;/buildSpec&gt;
-	&lt;natures&gt;
-		&lt;nature&gt;org.rubypeople.rdt.core.rubynature&lt;/nature&gt;
-		&lt;nature&gt;org.eclipse.dltk.ruby.core.nature&lt;/nature&gt;
-	&lt;/natures&gt;
-&lt;/projectDescription&gt;
+&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
+&lt;projectDescription&gt;
+	&lt;name&gt;selenium&lt;/name&gt;
+	&lt;comment&gt;&lt;/comment&gt;
+	&lt;projects&gt;
+	&lt;/projects&gt;
+	&lt;buildSpec&gt;
+		&lt;buildCommand&gt;
+			&lt;name&gt;org.eclipse.dltk.core.scriptbuilder&lt;/name&gt;
+			&lt;arguments&gt;
+			&lt;/arguments&gt;
+		&lt;/buildCommand&gt;
+		&lt;buildCommand&gt;
+			&lt;name&gt;org.rubypeople.rdt.core.rubybuilder&lt;/name&gt;
+			&lt;arguments&gt;
+			&lt;/arguments&gt;
+		&lt;/buildCommand&gt;
+	&lt;/buildSpec&gt;
+	&lt;natures&gt;
+		&lt;nature&gt;org.rubypeople.rdt.core.rubynature&lt;/nature&gt;
+		&lt;nature&gt;org.eclipse.dltk.ruby.core.nature&lt;/nature&gt;
+	&lt;/natures&gt;
+&lt;/projectDescription&gt;</diff>
      <filename>.project</filename>
    </modified>
    <modified>
      <diff>@@ -1,17 +1,17 @@
-= Selenium Ruby[http://selenium.rubyforge.org] - Object-oriented testing with selenium
-
-Homepage::  http://selenium.rubyforge.org
-Author::    Shane
-Copyright:: (c) 2006 Selenium-Ruby on rubyforge
-License::   Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
-
-Selenium Ruby[http://selenium.rubyforge.org] is a project that wraps selenium-rc[http://www.openqa.org/selenium-rc/]
-into an object-oriented way, and wraps it into a RubyGem.
-
-This rDoc is intended for you the check out the available methods on the objects.  For a full 
-document of what Selenium can do for you, please check out the home page: 
-http://selenium.rubyforge.org
-
-For document on the Selenium project and its RC, see Selenium homepage: http://www.openqa.org/selenium
-
+= Selenium Ruby[http://selenium.rubyforge.org] - Object-oriented testing with selenium
+
+Homepage::  http://selenium.rubyforge.org
+Author::    Shane
+Copyright:: (c) 2006 Selenium-Ruby on rubyforge
+License::   Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0.txt)
+
+Selenium Ruby[http://selenium.rubyforge.org] is a project that wraps selenium-rc[http://www.openqa.org/selenium-rc/]
+into an object-oriented way, and wraps it into a RubyGem.
+
+This rDoc is intended for you the check out the available methods on the objects.  For a full 
+document of what Selenium can do for you, please check out the home page: 
+http://selenium.rubyforge.org
+
+For document on the Selenium project and its RC, see Selenium homepage: http://www.openqa.org/selenium
+
 Please post your question at mailing-list.
\ No newline at end of file</diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
-#!/usr/bin/env ruby
-$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + &quot;/../lib&quot;))
-require 'selenium'
-
+#!/usr/bin/env ruby
+$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + &quot;/../lib&quot;))
+require 'selenium'
+
 Selenium::SeleniumServer.run(ARGV)
\ No newline at end of file</diff>
      <filename>bin/selenium</filename>
    </modified>
    <modified>
      <diff>@@ -1,15 +1,15 @@
-module Selenium
-  class Alert
-    def initialize(webpage)
-      @webpage = webpage
-    end
-
-    def present?
-      @webpage.alert_present?
-    end
-
-    def message
-      @webpage.alert_message
-    end
-  end
+module Selenium
+  class Alert
+    def initialize(webpage)
+      @webpage = webpage
+    end
+
+    def present?
+      @webpage.alert_present?
+    end
+
+    def message
+      @webpage.alert_message
+    end
+  end
 end
\ No newline at end of file</diff>
      <filename>lib/selenium/alert.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-require 'win32ole'
-require 'selenium/auto_it_driver'
-require 'selenium/auto_it_window'
-require 'selenium/file_upload'
+require 'win32ole'
+require 'selenium/auto_it_driver'
+require 'selenium/auto_it_window'
+require 'selenium/file_upload'</diff>
      <filename>lib/selenium/auto_it.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,45 +1,45 @@
-module Selenium
-  class AutoIt
-    @@autoit = nil
-
-    def self.load
-      begin
-        @@autoit = load_instance
-      rescue WIN32OLERuntimeError
-        registerAutoItDll
-        @@autoit = load_instance
-      end
-      @@autoit
-    end
-
-    def self.load_instance
-      @@autoit = WIN32OLE.new('AutoItX3.Control') unless @@autoit
-      @@autoit
-    end
-
-    def self.reset
-      if @@autoit
-        @@autoit.ole_free
-        @@autoit =nil
-        system(&quot;regsvr32.exe /s /u #{dll}&quot;)
-      end
-    end
-
-    def self.registerAutoItDll
-      system(&quot;regsvr32.exe /s #{dll}&quot;)
-    end
-
-    def self.dll
-      File.join(File.dirname(__FILE__), 'autoit', 'AutoItX3.dll')
-    end
-
-    def initialize
-      @autoit = AutoIt.load
-    end
-
-    def on_window_active(title, text = nil)
-      @autoit.WinWaitActive(title, text, 30)
-      yield @@autoit
-    end
-  end
+module Selenium
+  class AutoIt
+    @@autoit = nil
+
+    def self.load
+      begin
+        @@autoit = load_instance
+      rescue WIN32OLERuntimeError
+        registerAutoItDll
+        @@autoit = load_instance
+      end
+      @@autoit
+    end
+
+    def self.load_instance
+      @@autoit = WIN32OLE.new('AutoItX3.Control') unless @@autoit
+      @@autoit
+    end
+
+    def self.reset
+      if @@autoit
+        @@autoit.ole_free
+        @@autoit =nil
+        system(&quot;regsvr32.exe /s /u #{dll}&quot;)
+      end
+    end
+
+    def self.registerAutoItDll
+      system(&quot;regsvr32.exe /s #{dll}&quot;)
+    end
+
+    def self.dll
+      File.join(File.dirname(__FILE__), 'autoit', 'AutoItX3.dll')
+    end
+
+    def initialize
+      @autoit = AutoIt.load
+    end
+
+    def on_window_active(title, text = nil)
+      @autoit.WinWaitActive(title, text, 30)
+      yield @@autoit
+    end
+  end
 end
\ No newline at end of file</diff>
      <filename>lib/selenium/auto_it_driver.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,82 +1,82 @@
-class AutoItWindow
-  def initialize(autoit, title, text=nil)
-    @autoit = autoit
-    @title = title
-    @text = text
-  end
-
-  def self.wait_for(autoit, title, text = nil)
-    window = self.new(autoit, title, text)
-    window.wait_for_appear
-    window
-  end
-
-  def self.on_activation(autoit, title, text = nil)
-    window = wait_for(autoit, title, text)
-    yield window
-  end
-
-  def wait_for_activation
-    @autoit.WinWaitActive(@title, @text, 30)
-  end
-
-  def wait_for_appear
-    @autoit.WinWait(@title, @text, 30)
-  end
-
-  def activate
-    @autoit.WinActivate(@title, @text)
-  end
-
-  def active?
-    1 == @autoit.WinActive(@title, @text)
-  end
-
-  def state
-    AutoItWindowState.new(@autoit.WinGetState(@title, @text))
-  end
-
-  def send_keys(keys)
-    activate_if_needed
-    @autoit.Send(keys)
-  end
-
-  def close
-    @autoit.WinClose(@title)
-  end
-
-  def activate_if_needed
-    winstate = state
-    activate unless winstate.active?
-  end
-end
-
-class AutoItWindowState
-  def initialize(state)
-    @state = state
-  end
-
-  def exists?
-    @state &amp; 1 &gt; 0
-  end
-
-  def visible?
-    @state &amp; 2 &gt; 0
-  end
-
-  def enabled?
-    @state &amp; 4 &gt; 0
-  end
-
-  def active?
-    @state &amp; 8 &gt; 0
-  end
-
-  def minimized?
-    @state &amp; 16 &gt; 0
-  end
-
-  def maxmized?
-    @state &amp; 32 &gt; 0
-  end
-end
+class AutoItWindow
+  def initialize(autoit, title, text=nil)
+    @autoit = autoit
+    @title = title
+    @text = text
+  end
+
+  def self.wait_for(autoit, title, text = nil)
+    window = self.new(autoit, title, text)
+    window.wait_for_appear
+    window
+  end
+
+  def self.on_activation(autoit, title, text = nil)
+    window = wait_for(autoit, title, text)
+    yield window
+  end
+
+  def wait_for_activation
+    @autoit.WinWaitActive(@title, @text, 30)
+  end
+
+  def wait_for_appear
+    @autoit.WinWait(@title, @text, 30)
+  end
+
+  def activate
+    @autoit.WinActivate(@title, @text)
+  end
+
+  def active?
+    1 == @autoit.WinActive(@title, @text)
+  end
+
+  def state
+    AutoItWindowState.new(@autoit.WinGetState(@title, @text))
+  end
+
+  def send_keys(keys)
+    activate_if_needed
+    @autoit.Send(keys)
+  end
+
+  def close
+    @autoit.WinClose(@title)
+  end
+
+  def activate_if_needed
+    winstate = state
+    activate unless winstate.active?
+  end
+end
+
+class AutoItWindowState
+  def initialize(state)
+    @state = state
+  end
+
+  def exists?
+    @state &amp; 1 &gt; 0
+  end
+
+  def visible?
+    @state &amp; 2 &gt; 0
+  end
+
+  def enabled?
+    @state &amp; 4 &gt; 0
+  end
+
+  def active?
+    @state &amp; 8 &gt; 0
+  end
+
+  def minimized?
+    @state &amp; 16 &gt; 0
+  end
+
+  def maxmized?
+    @state &amp; 32 &gt; 0
+  end
+end</diff>
      <filename>lib/selenium/auto_it_window.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,12 @@
-module Selenium
-  class FileUpload
-    def initialize(webpage, locator)
-      @webpage = webpage
-      @locator = locator
-    end
-
-    def enter(file)
-      @webpage.upload(@locator, file)
-    end
-  end
+module Selenium
+  class FileUpload
+    def initialize(webpage, locator)
+      @webpage = webpage
+      @locator = locator
+    end
+
+    def enter(file)
+      @webpage.upload(@locator, file)
+    end
+  end
 end
\ No newline at end of file</diff>
      <filename>lib/selenium/file_upload.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,16 +1,16 @@
-module Selenium
-  class Key
-    def initialize(webpage, key)
-      @webpage = webpage
-      @key = key
-    end
-
-    def up
-      @webpage.key_up(@key)
-    end
-
-    def down
-      @webpage.key_down(@key)
-    end
-  end
+module Selenium
+  class Key
+    def initialize(webpage, key)
+      @webpage = webpage
+      @key = key
+    end
+
+    def up
+      @webpage.key_up(@key)
+    end
+
+    def down
+      @webpage.key_down(@key)
+    end
+  end
 end
\ No newline at end of file</diff>
      <filename>lib/selenium/key.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,15 +1,15 @@
-module Selenium
-  module Locator
-    def by_name(name)
-      name
-    end
-
-    def by_id(id)
-      &quot;id=#{id}&quot;
-    end
-
-    def by_text(text)
-      &quot;link=#{text}&quot;
-    end
-  end
+module Selenium
+  module Locator
+    def by_name(name)
+      name
+    end
+
+    def by_id(id)
+      &quot;id=#{id}&quot;
+    end
+
+    def by_text(text)
+      &quot;link=#{text}&quot;
+    end
+  end
 end
\ No newline at end of file</diff>
      <filename>lib/selenium/locator.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
-All the files in this foler are from the &quot;Selenium&quot; project on OpenQA (http://www.openqa.org/selenium-rc/), under the
-Apache License (http://www.openqa.org/selenium-rc/license.action)
-
-The selenium-server.jar was renamed to have a txt extension because somehow ruby gem does not like jar extension (Installation 
+All the files in this foler are from the &quot;Selenium&quot; project on OpenQA (http://www.openqa.org/selenium-rc/), under the
+Apache License (http://www.openqa.org/selenium-rc/license.action)
+
+The selenium-server.jar was renamed to have a txt extension because somehow ruby gem does not like jar extension (Installation 
 will fail on buffer error.
\ No newline at end of file</diff>
      <filename>lib/selenium/openqa/README</filename>
    </modified>
    <modified>
      <diff>@@ -1,120 +1,120 @@
-module Selenium
-# The class that can manages the server driver classes.
-# This class is originally copied from the BuildMaster project.
-# You can setup your build task to start the server before
-# the tests and shutdown when it is finished
-#   server = Selenium::Server.new()
-#   begin
-#     server.start
-#     tests.run # run your tests here
-#   ensure
-#     server.stop
-#   end
-class Server
-  # The status of the server.  Values are
-  # * stopped
-  # * starting
-  # * started
-  # * stopping
-  # * error
-  attr_reader :status
-
-  # The timeout setting for selenium in seconds
-  attr_reader :timeout
-
-  def Server::on_port(port)
-    Server.new(SeleniumServer.new(port))
-  end
-
-  # Create a selenium server that can be controlled directly
-  def initialize(port_number, timeout=60)
-    if port_number.is_a? SeleniumServer
-      # backward compatibility, to be removed in 2.0
-      @server = port_number 
-    else
-      @server = SeleniumServer.new(port_number, timeout)
-    end
-    @status = 'stopped'
-  end
-
-  def print_log=(value)
-    @server.print_log = value
-  end
-
-  # Starts the server, returns when the server is up and running
-  def start(*argv)
-    puts &quot;starting selenium server...&quot;
-    starting_server(*argv)
-    wait_for_condition {@server.running?}
-    puts &quot;started selenium server&quot;
-    @status = 'started'
-  end
-
-  def driver(browser_start_command, browser_url)
-    SeleniumDriver.new('localhost', @server.port_number, browser_start_command, browser_url, @server.request_timeout * 1000)
-  end
-
-  def open(browser_start_command, browser_url)
-    url = URI.parse(browser_url)
-    browser = driver(browser_start_command, URI::Generic::new(url.scheme, url.userinfo, url.host, url.port, nil, nil, nil, nil, nil))
-    browser.start
-    browser.open(url.request_uri)
-    WebPage.new(browser)
-  end
-
-  # Starts the server, does not return until the server shuts down
-  def run(*argv)
-    @server.start(*argv)
-  end
-
-  # Stops the server, returns when the server is no longer running
-  def stop
-    puts &quot;stopping selenium server...&quot;
-    stopping_server
-    wait_for_condition {not @server.running?}
-    puts &quot;stopped selenium server.&quot;
-    @status = 'stopped'
-  end
-
-  private
-  def starting_server(*argv)
-    @status = 'starting'
-    ['INT', 'TERM'].each { |signal|
-         trap(signal){ @server.stop}
-    }
-    start_thread {run(*argv)}
-  end
-
-  def stopping_server
-    @status = 'stopping'
-    start_thread {@server.stop}
-  end
-
-  def start_thread
-    Thread.new do
-      begin
-        yield
-      rescue Exception =&gt; exception
-        @exception = exception
-      end
-    end
-  end
-
-  def wait_for_condition
-    count = 0
-    sleep 1
-    while not (result = yield)
-      if (@exception)
-        error = @exception
-        @exception = nil
-        @status = 'error'
-        raise error
-      end
-      count = count + 1
-      raise 'wait timed out' unless count &lt; 10
-      sleep 1
-    end
-  end
-
-end
+module Selenium
+# The class that can manages the server driver classes.
+# This class is originally copied from the BuildMaster project.
+# You can setup your build task to start the server before
+# the tests and shutdown when it is finished
+#   server = Selenium::Server.new()
+#   begin
+#     server.start
+#     tests.run # run your tests here
+#   ensure
+#     server.stop
+#   end
+class Server
+  # The status of the server.  Values are
+  # * stopped
+  # * starting
+  # * started
+  # * stopping
+  # * error
+  attr_reader :status
+
+  # The timeout setting for selenium in seconds
+  attr_reader :timeout
+
+  def Server::on_port(port)
+    Server.new(SeleniumServer.new(port))
+  end
+
+  # Create a selenium server that can be controlled directly
+  def initialize(port_number, timeout=60)
+    if port_number.is_a? SeleniumServer
+      # backward compatibility, to be removed in 2.0
+      @server = port_number 
+    else
+      @server = SeleniumServer.new(port_number, timeout)
+    end
+    @status = 'stopped'
+  end
+
+  def print_log=(value)
+    @server.print_log = value
+  end
+
+  # Starts the server, returns when the server is up and running
+  def start(*argv)
+    puts &quot;starting selenium server...&quot;
+    starting_server(*argv)
+    wait_for_condition {@server.running?}
+    puts &quot;started selenium server&quot;
+    @status = 'started'
+  end
+
+  def driver(browser_start_command, browser_url)
+    SeleniumDriver.new('localhost', @server.port_number, browser_start_command, browser_url, @server.request_timeout * 1000)
+  end
+
+  def open(browser_start_command, browser_url)
+    url = URI.parse(browser_url)
+    browser = driver(browser_start_command, URI::Generic::new(url.scheme, url.userinfo, url.host, url.port, nil, nil, nil, nil, nil))
+    browser.start
+    browser.open(url.request_uri)
+    WebPage.new(browser)
+  end
+
+  # Starts the server, does not return until the server shuts down
+  def run(*argv)
+    @server.start(*argv)
+  end
+
+  # Stops the server, returns when the server is no longer running
+  def stop
+    puts &quot;stopping selenium server...&quot;
+    stopping_server
+    wait_for_condition {not @server.running?}
+    puts &quot;stopped selenium server.&quot;
+    @status = 'stopped'
+  end
+
+  private
+  def starting_server(*argv)
+    @status = 'starting'
+    ['INT', 'TERM'].each { |signal|
+         trap(signal){ @server.stop}
+    }
+    start_thread {run(*argv)}
+  end
+
+  def stopping_server
+    @status = 'stopping'
+    start_thread {@server.stop}
+  end
+
+  def start_thread
+    Thread.new do
+      begin
+        yield
+      rescue Exception =&gt; exception
+        @exception = exception
+      end
+    end
+  end
+
+  def wait_for_condition
+    count = 0
+    sleep 1
+    while not (result = yield)
+      if (@exception)
+        error = @exception
+        @exception = nil
+        @status = 'error'
+        raise error
+      end
+      count = count + 1
+      raise 'wait timed out' unless count &lt; 10
+      sleep 1
+    end
+  end
+
+end
 end
\ No newline at end of file</diff>
      <filename>lib/selenium/server.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,11 @@
-module Selenium
-  class TextArea &lt; HtmlElement
-    def enter(value)
-      @webpage.enter(@locator, value)
-    end
-
-    def value
-      @webpage.value(@locator)
-    end
-  end
+module Selenium
+  class TextArea &lt; HtmlElement
+    def enter(value)
+      @webpage.enter(@locator, value)
+    end
+
+    def value
+      @webpage.value(@locator)
+    end
+  end
 end
\ No newline at end of file</diff>
      <filename>lib/selenium/text_area.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,209 +1,209 @@
-module Selenium
-  # Error that is thrown when a key is not supported
-  class NoKeyError &lt; NameError
-    def initialize(key)
-      super(key)
-    end
-  end
-
-  # Class that models a web page with a title
-  class WebPage
-    attr_reader :browser
-    attr_accessor :timeout, :interval_millis
-
-    def initialize(browser, expected_title = nil)
-      @browser = browser
-      @expected_title = expected_title
-      @timeout = 60
-      @interval_millis = 100
-    end
-
-    def title
-      raise 'nil as browser' unless @browser
-      @browser.get_title
-    end
-
-    def present?
-      title == @expected_title
-    end
-
-    def ensure_present
-      title.should == @expected_title
-    end
-
-    def html
-      @browser.get_html_source
-    end
-
-    def speed=(value)
-      @browser.set_speed(value)
-    end
-
-    def speed
-      @browser.get_speed.to_i
-    end
-
-    def wait_for_load
-      @browser.wait_for_page_to_load
-    end
-
-    def wait_until(message, &amp;block)
-      Timeout::timeout(timeout, &quot;Timeout waiting for : #{message}&quot;) do
-        while(not yield message)
-          sleep interval_millis / 1000.0
-        end
-      end
-    end
-
-    def alert
-      Alert.new(self)
-    end
-
-    def link(how, what=nil)
-      if (how == :text)
-        locator = &quot;link=#{what}&quot;
-      elsif (how == :href)
-        locator = &quot;xpath=//a[@href='#{what}']&quot;
-      else
-        locator = element_locator(how, what)
-      end
-      Link.new(self, locator)
-    end
-
-    def text_field(how, what=nil)
-      TextField.new(self, element_locator(how, what))
-    end
-
-    def text_area(how, what=nil)
-      TextArea.new(self, element_locator(how, what))
-    end
-
-    def element(how, what=nil)
-      HtmlElement.new(self, element_locator(how,what))
-    end
-
-    def element_locator(how, what=nil)
-      locator = how
-      if (not what.nil?)
-        if (how == :xpath or how == :name or how == :id)
-          locator = &quot;#{how}=#{what}&quot;
-        else
-          raise &quot;couldn't understand how to build locator using #{how} with #{what}&quot;
-        end
-      end
-      locator
-    end
-
-    def file_upload(how, what)
-      FileUpload.new(self, element_locator(how, what))
-    end
-
-    def open_page(url)
-      @browser.open(url)
-    end
-
-    def close
-      @browser.stop
-    end
-
-    def click(locator)
-      @browser.click(locator)
-    end
-
-    def text(locator)
-      @browser.get_text(locator)
-    end
-
-    def button(how, what=nil)
-      Button.new(self, element_locator(how, what))
-    end
-
-    def key(key)
-      Key.new(self, key)
-    end
-
-    def element_present?(locator)
-      @browser.is_element_present(locator)
-    end
-
-    def alert_present?
-      @browser.is_alert_present
-    end
-
-    def text_present?(text)
-      @browser.is_text_present(text)
-    end
-
-    def double_click(locator)
-      @browser.double_click(locator)
-    end
-
-    def click_wait(locator)
-      click(locator)
-      wait_for_load
-    end
-
-    # enter the text to the element found by locator
-    def enter(locator, text)
-      @browser.type(locator, text)
-    end
-
-    def value(locator)
-      @browser.get_value(locator)
-    end
-
-    def alert_message
-      @browser.get_alert
-    end
-
-    def context_menu(locator)
-      @browser.context_menu(locator)
-    end
-
-    def fire_event(locator, event)
-      @browser.fire_event(locator, event)
-    end
-
-    def key_down(key)
-      message = &quot;#{key}_key_down&quot;
-      raise NoKeyError.new(key.to_s) unless @browser.respond_to? message
-      @browser.send message
-    end
-
-    def key_up(key)
-      message = &quot;#{key}_key_up&quot;
-      raise NoKeyError.new(key.to_s) unless @browser.respond_to? message
-      @browser.send message
-    end
-
-    def key_press(locator, key)
-      @browser.key_press(locator, key)
-    end
-
-    def focus(locator)
-      @browser.focus(locator)
-    end
-
-    def upload(locator, file)
-#      @browser.attach_file(locator, file)
-      @browser.click(locator)
-      require 'auto_it'
-      autoit = AutoIt.load
-      window = AutoItWindow.wait_for(autoit, 'File Upload')
-      puts window
-    end
-
-    def capture_page(file)
-      @browser.capture_entire_page_screenshot(file)
-    end
-
-    def capture_screen(file)
-      @browser.capture_screenshot(file)
-    end
-
-    def to_s
-      &quot;#{self.class}('#{@expected_title}') - #{browser.to_s}&quot;
-    end
-
-  end
+module Selenium
+  # Error that is thrown when a key is not supported
+  class NoKeyError &lt; NameError
+    def initialize(key)
+      super(key)
+    end
+  end
+
+  # Class that models a web page with a title
+  class WebPage
+    attr_reader :browser
+    attr_accessor :timeout, :interval_millis
+
+    def initialize(browser, expected_title = nil)
+      @browser = browser
+      @expected_title = expected_title
+      @timeout = 60
+      @interval_millis = 100
+    end
+
+    def title
+      raise 'nil as browser' unless @browser
+      @browser.get_title
+    end
+
+    def present?
+      title == @expected_title
+    end
+
+    def ensure_present
+      title.should == @expected_title
+    end
+
+    def html
+      @browser.get_html_source
+    end
+
+    def speed=(value)
+      @browser.set_speed(value)
+    end
+
+    def speed
+      @browser.get_speed.to_i
+    end
+
+    def wait_for_load
+      @browser.wait_for_page_to_load
+    end
+
+    def wait_until(message, &amp;block)
+      Timeout::timeout(timeout, &quot;Timeout waiting for : #{message}&quot;) do
+        while(not yield message)
+          sleep interval_millis / 1000.0
+        end
+      end
+    end
+
+    def alert
+      Alert.new(self)
+    end
+
+    def link(how, what=nil)
+      if (how == :text)
+        locator = &quot;link=#{what}&quot;
+      elsif (how == :href)
+        locator = &quot;xpath=//a[@href='#{what}']&quot;
+      else
+        locator = element_locator(how, what)
+      end
+      Link.new(self, locator)
+    end
+
+    def text_field(how, what=nil)
+      TextField.new(self, element_locator(how, what))
+    end
+
+    def text_area(how, what=nil)
+      TextArea.new(self, element_locator(how, what))
+    end
+
+    def element(how, what=nil)
+      HtmlElement.new(self, element_locator(how,what))
+    end
+
+    def element_locator(how, what=nil)
+      locator = how
+      if (not what.nil?)
+        if (how == :xpath or how == :name or how == :id)
+          locator = &quot;#{how}=#{what}&quot;
+        else
+          raise &quot;couldn't understand how to build locator using #{how} with #{what}&quot;
+        end
+      end
+      locator
+    end
+
+    def file_upload(how, what)
+      FileUpload.new(self, element_locator(how, what))
+    end
+
+    def open_page(url)
+      @browser.open(url)
+    end
+
+    def close
+      @browser.stop
+    end
+
+    def click(locator)
+      @browser.click(locator)
+    end
+
+    def text(locator)
+      @browser.get_text(locator)
+    end
+
+    def button(how, what=nil)
+      Button.new(self, element_locator(how, what))
+    end
+
+    def key(key)
+      Key.new(self, key)
+    end
+
+    def element_present?(locator)
+      @browser.is_element_present(locator)
+    end
+
+    def alert_present?
+      @browser.is_alert_present
+    end
+
+    def text_present?(text)
+      @browser.is_text_present(text)
+    end
+
+    def double_click(locator)
+      @browser.double_click(locator)
+    end
+
+    def click_wait(locator)
+      click(locator)
+      wait_for_load
+    end
+
+    # enter the text to the element found by locator
+    def enter(locator, text)
+      @browser.type(locator, text)
+    end
+
+    def value(locator)
+      @browser.get_value(locator)
+    end
+
+    def alert_message
+      @browser.get_alert
+    end
+
+    def context_menu(locator)
+      @browser.context_menu(locator)
+    end
+
+    def fire_event(locator, event)
+      @browser.fire_event(locator, event)
+    end
+
+    def key_down(key)
+      message = &quot;#{key}_key_down&quot;
+      raise NoKeyError.new(key.to_s) unless @browser.respond_to? message
+      @browser.send message
+    end
+
+    def key_up(key)
+      message = &quot;#{key}_key_up&quot;
+      raise NoKeyError.new(key.to_s) unless @browser.respond_to? message
+      @browser.send message
+    end
+
+    def key_press(locator, key)
+      @browser.key_press(locator, key)
+    end
+
+    def focus(locator)
+      @browser.focus(locator)
+    end
+
+    def upload(locator, file)
+#      @browser.attach_file(locator, file)
+      @browser.click(locator)
+      require 'auto_it'
+      autoit = AutoIt.load
+      window = AutoItWindow.wait_for(autoit, 'File Upload')
+      puts window
+    end
+
+    def capture_page(file)
+      @browser.capture_entire_page_screenshot(file)
+    end
+
+    def capture_screen(file)
+      @browser.capture_screenshot(file)
+    end
+
+    def to_s
+      &quot;#{self.class}('#{@expected_title}') - #{browser.to_s}&quot;
+    end
+
+  end
 end
\ No newline at end of file</diff>
      <filename>lib/selenium/web_page.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,79 +1,79 @@
-$:.unshift File.dirname(__FILE__)
-
-require 'rubygems'
-Gem::manage_gems
-require 'rake'
-require 'spec/rake/spectask'
-require 'rake/gempackagetask'
-require 'rake/rdoctask'
-require 'rcov/rcovtask'
-require 'specs'
-require 'buildmaster/project/server_manager'
-require 'lib/selenium'
-
-rcov_dir = SITE_SPEC.output_dir.dir('rcov')
-rspec_dir = SITE_SPEC.output_dir.dir('rspec')
-
-task :init do
-  rcov_dir.mkdirs
-  rspec_dir.mkdirs
-end
-
-#desc &quot;Run all specifications&quot;
-Spec::Rake::SpecTask.new(:coverage) do |t|
-  t.spec_files = FileList['spec/**/tc_*.rb']
-  t.rcov = true
-  t.rcov_dir = rcov_dir.path
-  t.spec_opts = [&quot;--format&quot;, &quot;html:#{rspec_dir.file('index.html').path}&quot;, &quot;--diff&quot;]
-  t.fail_on_error = true
-end
-
-Rake::RDocTask.new(:rdoc) do |rdoc|
-  rdoc.main = &quot;README&quot;
-  rdoc.rdoc_files.include(&quot;README&quot;, &quot;lib/**/*.rb&quot;)
-  rdoc.options &lt;&lt; &quot;--all&quot;
-  rdoc.rdoc_dir = SITE_SPEC.output_dir.dir('rdoc').path.to_s
-end
-
-task :default =&gt; [:coverage, :build_site, :rdoc, :package]
-task :coverage =&gt; [:init]
-
-# ??? if we use the rakt gem task, it will somehow be built multiple times and fail???
-task :package do
-  Gem::manage_gems
-  Gem::Builder.new(SPEC).build
-end
-
-task :local_install do
-  gem_file = SPEC.full_name + &quot;.gem&quot;
-  puts &quot;Insalling #{gem_file}...&quot;
-  Gem::Installer.new(gem_file).install
-end
-
-task :build_site do
-  BuildMaster::Site.new(SITE_SPEC).build
-end
-
-task :publish_site do
-  svn = BuildMaster::SvnDriver.from_path(BuildMaster::Cotta.new.file(__FILE__).parent)
-  output_dir = SITE_SPEC.output_dir
-  raise 'output dir needs to be called the same as the project name for one copy action to work' unless output_dir.name == 'selenium'
-  BuildMaster::PscpDriver.new(&quot;#{svn.user}@selenium.rubyforge.org&quot;).copy(output_dir.path, '/var/www/gforge-projects')
-end
-
-task :test_site do
-  BuildMaster::Site.new(SITE_SPEC).test
-end
-
-task :serve do
-  BuildMaster::Site.new(SITE_SPEC).server
-end
-
-task :setup_site do
-  BuildMaster::Site.setup(SITE_SPEC)
-end
-
-task :selenium do
-  server = Selenium::SeleniumServer.new(BuildMaster::Cotta.new, 4444)
-  server.start
-end
+$:.unshift File.dirname(__FILE__)
+
+require 'rubygems'
+Gem::manage_gems
+require 'rake'
+require 'spec/rake/spectask'
+require 'rake/gempackagetask'
+require 'rake/rdoctask'
+require 'rcov/rcovtask'
+require 'specs'
+require 'buildmaster/project/server_manager'
+require 'lib/selenium'
+
+rcov_dir = SITE_SPEC.output_dir.dir('rcov')
+rspec_dir = SITE_SPEC.output_dir.dir('rspec')
+
+task :init do
+  rcov_dir.mkdirs
+  rspec_dir.mkdirs
+end
+
+#desc &quot;Run all specifications&quot;
+Spec::Rake::SpecTask.new(:coverage) do |t|
+  t.spec_files = FileList['spec/**/tc_*.rb']
+  t.rcov = true
+  t.rcov_dir = rcov_dir.path
+  t.spec_opts = [&quot;--format&quot;, &quot;html:#{rspec_dir.file('index.html').path}&quot;, &quot;--diff&quot;]
+  t.fail_on_error = true
+end
+
+Rake::RDocTask.new(:rdoc) do |rdoc|
+  rdoc.main = &quot;README&quot;
+  rdoc.rdoc_files.include(&quot;README&quot;, &quot;lib/**/*.rb&quot;)
+  rdoc.options &lt;&lt; &quot;--all&quot;
+  rdoc.rdoc_dir = SITE_SPEC.output_dir.dir('rdoc').path.to_s
+end
+
+task :default =&gt; [:coverage, :build_site, :rdoc, :package]
+task :coverage =&gt; [:init]
+
+# ??? if we use the rakt gem task, it will somehow be built multiple times and fail???
+task :package do
+  Gem::manage_gems
+  Gem::Builder.new(SPEC).build
+end
+
+task :local_install do
+  gem_file = SPEC.full_name + &quot;.gem&quot;
+  puts &quot;Insalling #{gem_file}...&quot;
+  Gem::Installer.new(gem_file).install
+end
+
+task :build_site do
+  BuildMaster::Site.new(SITE_SPEC).build
+end
+
+task :publish_site do
+  svn = BuildMaster::SvnDriver.from_path(BuildMaster::Cotta.new.file(__FILE__).parent)
+  output_dir = SITE_SPEC.output_dir
+  raise 'output dir needs to be called the same as the project name for one copy action to work' unless output_dir.name == 'selenium'
+  BuildMaster::PscpDriver.new(&quot;#{svn.user}@selenium.rubyforge.org&quot;).copy(output_dir.path, '/var/www/gforge-projects')
+end
+
+task :test_site do
+  BuildMaster::Site.new(SITE_SPEC).test
+end
+
+task :serve do
+  BuildMaster::Site.new(SITE_SPEC).server
+end
+
+task :setup_site do
+  BuildMaster::Site.setup(SITE_SPEC)
+end
+
+task :selenium do
+  server = Selenium::SeleniumServer.new(BuildMaster::Cotta.new, 4444)
+  server.start
+end</diff>
      <filename>rakefile.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,29 +1,29 @@
-$:.unshift File.dirname(__FILE__)
-
-require 'buildmaster/cotta'
-require 'buildmaster/project'
-require 'specs'
-
-root = BuildMaster::Cotta.file(__FILE__).parent
-svn = BuildMaster::SvnDriver.from_path(root)
-
-release = BuildMaster::Release.new
-release.task('version') do
-  VERSION_NUMBER.increase_build
-  SPEC.version = VERSION_NUMBER.version_number
-end
-release.task(&quot;rake&quot;) {load('rake')}
-release.task('commit') {svn.commit('committing before release')}
-release.task('tagging') do
-  tag = &quot;selenium-#{SPEC.version}&quot;
-  puts &quot;tagging with #{tag}&quot;
-  svn.tag(tag)
-end
-
-release.task(&quot;upload&quot;) do
-  gem = &quot;#{SPEC.name}-#{SPEC.version}&quot;
-  target_path = &quot;/var/www/gforge-projects/selenium/builds/#{gem}.gem&quot;
-  BuildMaster::PscpDriver.new(&quot;#{svn.user}@selenium.rubyforge.org&quot;).copy(root.file(&quot;#{gem}.gem&quot;).to_s, target_path)
-end
-
+$:.unshift File.dirname(__FILE__)
+
+require 'buildmaster/cotta'
+require 'buildmaster/project'
+require 'specs'
+
+root = BuildMaster::Cotta.file(__FILE__).parent
+svn = BuildMaster::SvnDriver.from_path(root)
+
+release = BuildMaster::Release.new
+release.task('version') do
+  VERSION_NUMBER.increase_build
+  SPEC.version = VERSION_NUMBER.version_number
+end
+release.task(&quot;rake&quot;) {load('rake')}
+release.task('commit') {svn.commit('committing before release')}
+release.task('tagging') do
+  tag = &quot;selenium-#{SPEC.version}&quot;
+  puts &quot;tagging with #{tag}&quot;
+  svn.tag(tag)
+end
+
+release.task(&quot;upload&quot;) do
+  gem = &quot;#{SPEC.name}-#{SPEC.version}&quot;
+  target_path = &quot;/var/www/gforge-projects/selenium/builds/#{gem}.gem&quot;
+  BuildMaster::PscpDriver.new(&quot;#{svn.user}@selenium.rubyforge.org&quot;).copy(root.file(&quot;#{gem}.gem&quot;).to_s, target_path)
+end
+
 release.command(ARGV)
\ No newline at end of file</diff>
      <filename>release.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,20 +1,20 @@
----
-Contribute
----
-This project is created so that we can share our experiences using ruby and Selenium to test our web applications.
-You can start by joining the &quot;selenium-ruby&quot;:http://groups.google.com/group/selenium-ruby google group.  This project
-will be constantly updated on the following area:
-
-h1. Testing API
-
-* Creating more wrapper classes that presents HTML elements with behaviors.
-* Re-design the API to leverage Ruby language and remove duplication
-
-h1. Testing Patterns
-
-* Share your experience of using Selenium with Ruby.  What is good, what is bad.
-* Share the patterns that you have built in your porject to make test easy and fun.
-
-h1. Write about it
-
+---
+Contribute
+---
+This project is created so that we can share our experiences using ruby and Selenium to test our web applications.
+You can start by joining the &quot;selenium-ruby&quot;:http://groups.google.com/group/selenium-ruby google group.  This project
+will be constantly updated on the following area:
+
+h1. Testing API
+
+* Creating more wrapper classes that presents HTML elements with behaviors.
+* Re-design the API to leverage Ruby language and remove duplication
+
+h1. Testing Patterns
+
+* Share your experience of using Selenium with Ruby.  What is good, what is bad.
+* Share the patterns that you have built in your porject to make test easy and fun.
+
+h1. Write about it
+
 * Love it, hate it?  Write about it
\ No newline at end of file</diff>
      <filename>site/contribute.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,367 +1,367 @@
-body {
-    padding: 0px;
-    margin: 0px;
-    border: 0px;
-    font-family: helvetica, arial, sans-serif;
-    background-color: white;
-    color: black;
-}
-
-h1, h2, h3, h4, h5, h6 {
-    margin: 0px;
-    border: 0px;
-    padding: 0px;
-    font-weight: normal;
-}
-
-a:link { color: #00a; }
-a:active { color: red; }
-a:hover { color: darkred; }
-a:visited { color: black; }
-
-#logo {
-    padding: 10px;
-}
-
-img {
-    border: 0px;
-    padding: 0px;
-    margin: 0px;
-}
-
-p {
-    border: 0px;
-    padding: 0px;
-    margin: 0px;
-    margin-bottom: 10px;
-}
-
-blockquote {
-    margin-bottom: 10px;
-}
-
-td {
-    padding: 2px;
-}
-
-th {
-    font-weight: normal;
-    white-space: nowrap;
-    padding: 2px;
-    color: white;
-}
-
-th.Row {
-    text-align: left;
-    vertical-align: top;
-}
-
-ul, ol {
-    border: 0px;
-    padding: 0px;
-    margin-top: 0px;
-    margin-bottom: 12px;
-    margin-left: 20px;
-}
-
-div.header {
-	top: 0px;
-	left: 0px;
-	right: 0px;
-	width: 100%;
-	height: 70px;
-	margin: 0px;
-	border: 0px;
-	background-color: #CC9999;
-	border-bottom: 1px solid #825C47;
-	padding-left: 0px;
-  padding-right: 0px;
-  padding-top: 0px;
-	padding-bottom: 4px;
-}
-
-h1.header {
-  padding:0;
-  margin:0;
-}
-
-a.header { border: 0px; text-decoration: none;}
-a.header:visited { color: #00a; }
-a.header:hover { color: red; }
-a.header:active { color: red; }
-
-div.left {
-  float:left;
-  width:180px;
-	background-color: white;
-	padding: 8px;
-	font-size: small;
-	font-style: normal;
-	margin-top: 16px;
-}
-
-div.left h1{
-    margin: 0px;
-    border: 0px;
-    padding: 4px;
-    color: #663333;
-    font-size: small;
-    font-weight: bold;
-}
-
-div.MenuGroup a { text-decoration: none; }
-div.MenuGroup a:link { color: #894926; }
-div.MenuGroup a:visited { color: #894926; }
-div.MenuGroup a:active { color: red; }
-div.MenuGroup a:hover { color: white; background-color:#894926;width:160px;}
-
-/*---------------------------------------------------------------------------
- *  Menus
- */
-.MenuGroup {
-    border-left: 1px solid #825C47;
-    border-top: 1px solid #825C47;
-    border-bottom: 1px solid white; /* IE work-around */
-    
-    margin-bottom: 8px;
-    background-color: white;
-    color: #894926;
-}
-
-.MenuGroup ul {
-    margin: 0px;
-    padding-left: 4px;
-    list-style-type: none;
-}
-
-.MenuGroup li {
-    padding: 2px;
-}
-
-.More {
-		width: 100%;
-		text-align: right;
-}
-/*------------------------------------------------------------------------------*/
-
-/*-------------------------------------------------
- * Right Panel
- */
-div.right {
-  float:right;
-  width:184px;
-  margin:0;
-	background-color: white;
-	padding: 8px;
-	font-size: small;
-	font-style: normal;
-	margin-top: 16px;
-}
-
-div.right h1{
-    margin: 0px;
-    border: 0px;
-    padding: 4px;
-    color: #663333;
-    font-size: small;
-    font-weight: bold;
-}
-
-div.right a { text-decoration: none; }
-div.right a:link { color: #894926; }
-div.right a:visited { color: #894926; }
-div.right a:active { color: red; }
-div.right a:hover { color: red; }
-
-
-/*---------------------------------------------------------------------------
- *  News panel
- */
-.NewsGroup {
-    border-left: 1px solid #825C47;
-    border-top: 1px solid #825C47;
-    border-bottom: 1px solid white; /* IE workaround */
-    margin-bottom: 8px;
-    
-    color: #663333;
-}
-.NewsItem {
-    margin: 4px;
-}
-.NewsTitle {
-    font-weight: bold;
-    margin: 0px;
-    padding: 0px;
-}
-.NewsDate {
-    margin: 0px;
-    padding: 0px;
-    font-size: smaller;
-}
-.NewsText {
-    padding: 0px;
-    margin: 0px;
-    margin-bottom: 8px;
-}
-.NewsText a { text-decoration: underline; }
-.NewsText a:link { color: #894926; }
-.NewsText a:visited { color: #894926; }
-.NewsText a:active { color: red; }
-.NewsText a:hover { color: red; }
-.NewsMore {
-		font-size: small;
-		margin: 4px;
-		margin-top: 12px;
-		text-align: left;
-}
-.NewsGroup td {
-    font-size: 12px;
-}
-
-/*-------------------------------------------------------------------------*/
-
-/*---------------------------------------------------------------------------
- *  Document meta-information
- */
-
-.Meta {
-    margin-top: 64px;
-    font-size: smaller;
-    color: #C0C0C0;
-    text-align: right;
-}
-
-.Meta a { text-decoration: underline; }
-.Meta a:link { color: #C0C0C0; }
-.Meta a:visited { color: #C0C0C0; }
-.Meta a:active { color: red; }
-.Meta a:hover { color: red; }
-/*--------------------------------------------------------------------------*/
-
-div.Content3Column {
-  margin-left:200px;
-  margin-right:216px;
-}
-
-div.Content2Column {
-  margin-left:200px;
-  margin-right:16px;
-}
-
-div.content h1 {
-    width: 100%;
-    font-size: Larger;
-    background-color: #663333;
-    color: white;
-    padding: 2px;
-    padding-left: 6px;
-    margin-top: 24px;
-    margin-bottom: 12px;
-}
-
-div.content a { text-decoration: underline; }
-div.content a:link { color: #894926; }
-div.content a:visited { color: #894926; }
-div.content a:active { color: green; }
-div.content a:hover { color: red; }
-div.content h2 {
-    margin-top: 24px;
-    margin-bottom: 16px;    
-    font-weight: bold;
-    font-size: Larger;
-}
-
-div.content li {
-    margin-bottom: 6px;
-}
-div.content th {
-    background-color: #825C47;
-    color: white;
-}
-div.content td {
-    background-color: #D7B19C;
-}
-
-div.Shaded pre {
-    padding: 4px;
-    font-family: courier new, monospace;
-    font-size: smaller;
-    border: 1px solid #008;
-    background-color: #CCCC99;
-    color: black;
-}
-
-div.Shaded:before {
-    margin: 0px;
-    padding: 0px;
-    border: 0px;
-    font-size: inherit;
-    /*line-spacing: 100%;*/
-}
-
-pre.code {
-  padding: 4px;
-  font-family: courier new, monospace;
-  font-size: smaller;
-  border: 1px solid #008;
-  background-color: #CCCC99;
-  color: black;
-}
-
-div.Code {
-  white-space: pre;
-  padding: 4px;
-  font-family: courier new, monospace;
-  font-size: smaller;
-  border: 1px solid #008;
-  background-color: #CCCC99;
-  color: black;
-}
-
-div.Code:before {
-    margin: 0px;
-    padding: 0px;
-    border: 0px;
-    font-size: inherit;
-}
-
-div.footer {
-  color: #894926;
-  padding:0.5em;
-  clear:both;
-  text-align:center;
-  font-size:75%;
-}
-
-div.footer a {
-  color:#894926;
-  font-size:inherit;
-}
-
-div.bottomshadow {
-  width:100%;
-  height: 12px;
-  background-image: url(&quot;/border_bottom.gif&quot;);
-  background-repeat: repeat-x;
-  padding: 12px;
-}
-
-div#content .Float {
-    float: right;
-    margin-left: 8px;
-    margin-right: 0px;
-    margin-top: 8px;
-    margin-bottom: 8px;
-}
-
-div#content .Diagram {
-    display: block;
-    margin-left: auto;
-    margin-right: auto;
-    margin-top: 8px;
-    margin-bottom: 8px;
-}
-
-div#content .Inline {
-    display: inline;
-}
+body {
+    padding: 0px;
+    margin: 0px;
+    border: 0px;
+    font-family: helvetica, arial, sans-serif;
+    background-color: white;
+    color: black;
+}
+
+h1, h2, h3, h4, h5, h6 {
+    margin: 0px;
+    border: 0px;
+    padding: 0px;
+    font-weight: normal;
+}
+
+a:link { color: #00a; }
+a:active { color: red; }
+a:hover { color: darkred; }
+a:visited { color: black; }
+
+#logo {
+    padding: 10px;
+}
+
+img {
+    border: 0px;
+    padding: 0px;
+    margin: 0px;
+}
+
+p {
+    border: 0px;
+    padding: 0px;
+    margin: 0px;
+    margin-bottom: 10px;
+}
+
+blockquote {
+    margin-bottom: 10px;
+}
+
+td {
+    padding: 2px;
+}
+
+th {
+    font-weight: normal;
+    white-space: nowrap;
+    padding: 2px;
+    color: white;
+}
+
+th.Row {
+    text-align: left;
+    vertical-align: top;
+}
+
+ul, ol {
+    border: 0px;
+    padding: 0px;
+    margin-top: 0px;
+    margin-bottom: 12px;
+    margin-left: 20px;
+}
+
+div.header {
+	top: 0px;
+	left: 0px;
+	right: 0px;
+	width: 100%;
+	height: 70px;
+	margin: 0px;
+	border: 0px;
+	background-color: #CC9999;
+	border-bottom: 1px solid #825C47;
+	padding-left: 0px;
+  padding-right: 0px;
+  padding-top: 0px;
+	padding-bottom: 4px;
+}
+
+h1.header {
+  padding:0;
+  margin:0;
+}
+
+a.header { border: 0px; text-decoration: none;}
+a.header:visited { color: #00a; }
+a.header:hover { color: red; }
+a.header:active { color: red; }
+
+div.left {
+  float:left;
+  width:180px;
+	background-color: white;
+	padding: 8px;
+	font-size: small;
+	font-style: normal;
+	margin-top: 16px;
+}
+
+div.left h1{
+    margin: 0px;
+    border: 0px;
+    padding: 4px;
+    color: #663333;
+    font-size: small;
+    font-weight: bold;
+}
+
+div.MenuGroup a { text-decoration: none; }
+div.MenuGroup a:link { color: #894926; }
+div.MenuGroup a:visited { color: #894926; }
+div.MenuGroup a:active { color: red; }
+div.MenuGroup a:hover { color: white; background-color:#894926;width:160px;}
+
+/*---------------------------------------------------------------------------
+ *  Menus
+ */
+.MenuGroup {
+    border-left: 1px solid #825C47;
+    border-top: 1px solid #825C47;
+    border-bottom: 1px solid white; /* IE work-around */
+    
+    margin-bottom: 8px;
+    background-color: white;
+    color: #894926;
+}
+
+.MenuGroup ul {
+    margin: 0px;
+    padding-left: 4px;
+    list-style-type: none;
+}
+
+.MenuGroup li {
+    padding: 2px;
+}
+
+.More {
+		width: 100%;
+		text-align: right;
+}
+/*------------------------------------------------------------------------------*/
+
+/*-------------------------------------------------
+ * Right Panel
+ */
+div.right {
+  float:right;
+  width:184px;
+  margin:0;
+	background-color: white;
+	padding: 8px;
+	font-size: small;
+	font-style: normal;
+	margin-top: 16px;
+}
+
+div.right h1{
+    margin: 0px;
+    border: 0px;
+    padding: 4px;
+    color: #663333;
+    font-size: small;
+    font-weight: bold;
+}
+
+div.right a { text-decoration: none; }
+div.right a:link { color: #894926; }
+div.right a:visited { color: #894926; }
+div.right a:active { color: red; }
+div.right a:hover { color: red; }
+
+
+/*---------------------------------------------------------------------------
+ *  News panel
+ */
+.NewsGroup {
+    border-left: 1px solid #825C47;
+    border-top: 1px solid #825C47;
+    border-bottom: 1px solid white; /* IE workaround */
+    margin-bottom: 8px;
+    
+    color: #663333;
+}
+.NewsItem {
+    margin: 4px;
+}
+.NewsTitle {
+    font-weight: bold;
+    margin: 0px;
+    padding: 0px;
+}
+.NewsDate {
+    margin: 0px;
+    padding: 0px;
+    font-size: smaller;
+}
+.NewsText {
+    padding: 0px;
+    margin: 0px;
+    margin-bottom: 8px;
+}
+.NewsText a { text-decoration: underline; }
+.NewsText a:link { color: #894926; }
+.NewsText a:visited { color: #894926; }
+.NewsText a:active { color: red; }
+.NewsText a:hover { color: red; }
+.NewsMore {
+		font-size: small;
+		margin: 4px;
+		margin-top: 12px;
+		text-align: left;
+}
+.NewsGroup td {
+    font-size: 12px;
+}
+
+/*-------------------------------------------------------------------------*/
+
+/*---------------------------------------------------------------------------
+ *  Document meta-information
+ */
+
+.Meta {
+    margin-top: 64px;
+    font-size: smaller;
+    color: #C0C0C0;
+    text-align: right;
+}
+
+.Meta a { text-decoration: underline; }
+.Meta a:link { color: #C0C0C0; }
+.Meta a:visited { color: #C0C0C0; }
+.Meta a:active { color: red; }
+.Meta a:hover { color: red; }
+/*--------------------------------------------------------------------------*/
+
+div.Content3Column {
+  margin-left:200px;
+  margin-right:216px;
+}
+
+div.Content2Column {
+  margin-left:200px;
+  margin-right:16px;
+}
+
+div.content h1 {
+    width: 100%;
+    font-size: Larger;
+    background-color: #663333;
+    color: white;
+    padding: 2px;
+    padding-left: 6px;
+    margin-top: 24px;
+    margin-bottom: 12px;
+}
+
+div.content a { text-decoration: underline; }
+div.content a:link { color: #894926; }
+div.content a:visited { color: #894926; }
+div.content a:active { color: green; }
+div.content a:hover { color: red; }
+div.content h2 {
+    margin-top: 24px;
+    margin-bottom: 16px;    
+    font-weight: bold;
+    font-size: Larger;
+}
+
+div.content li {
+    margin-bottom: 6px;
+}
+div.content th {
+    background-color: #825C47;
+    color: white;
+}
+div.content td {
+    background-color: #D7B19C;
+}
+
+div.Shaded pre {
+    padding: 4px;
+    font-family: courier new, monospace;
+    font-size: smaller;
+    border: 1px solid #008;
+    background-color: #CCCC99;
+    color: black;
+}
+
+div.Shaded:before {
+    margin: 0px;
+    padding: 0px;
+    border: 0px;
+    font-size: inherit;
+    /*line-spacing: 100%;*/
+}
+
+pre.code {
+  padding: 4px;
+  font-family: courier new, monospace;
+  font-size: smaller;
+  border: 1px solid #008;
+  background-color: #CCCC99;
+  color: black;
+}
+
+div.Code {
+  white-space: pre;
+  padding: 4px;
+  font-family: courier new, monospace;
+  font-size: smaller;
+  border: 1px solid #008;
+  background-color: #CCCC99;
+  color: black;
+}
+
+div.Code:before {
+    margin: 0px;
+    padding: 0px;
+    border: 0px;
+    font-size: inherit;
+}
+
+div.footer {
+  color: #894926;
+  padding:0.5em;
+  clear:both;
+  text-align:center;
+  font-size:75%;
+}
+
+div.footer a {
+  color:#894926;
+  font-size:inherit;
+}
+
+div.bottomshadow {
+  width:100%;
+  height: 12px;
+  background-image: url(&quot;/border_bottom.gif&quot;);
+  background-repeat: repeat-x;
+  padding: 12px;
+}
+
+div#content .Float {
+    float: right;
+    margin-left: 8px;
+    margin-right: 0px;
+    margin-top: 8px;
+    margin-bottom: 8px;
+}
+
+div#content .Diagram {
+    display: block;
+    margin-left: auto;
+    margin-right: auto;
+    margin-top: 8px;
+    margin-bottom: 8px;
+}
+
+div#content .Inline {
+    display: inline;
+}</diff>
      <filename>site/cotta.css</filename>
    </modified>
    <modified>
      <diff>@@ -1,60 +1,60 @@
----
-Domain Based Web Testing
----
-Domain based web testing is a style of writing and organizing testing scripts so that they can:
-
-* Express the intent of the test.
-* Avoid duplication in the test.
-
-This is crucial especially for a large scale web application.
-
-h1. Example
-
-Domain based web testing focusing on the intent of the test rather than the action of the test.  
-
-h2. Watir Style
-
-The simplest domain based web testing wraps the browser object (the one that provides the API to drive the browser) into a page object that provides API that returns the HTML element object based on what you can do at the current page.  This is the style that &quot;watir&quot;:http://wtr.rubyforge.org provides.  These HTML element object classes are simply wrappers that wraps the action command and delegate to the browser driver class as action based command.
-
-&lt;template:code source=&quot;example.rb&quot; tag=&quot;basic&quot; syntax=&quot;ruby&quot;/&gt;
-
-h2. Page Object with Behaviors
-
-When the user comes to a page, they normally wants to do a certain task that involves a group of actions.  The page objects should provide those APIs so that the test is clear on what the test is doing rather than how it is doing it.
-
-&lt;template:code source=&quot;example.rb&quot; tag=&quot;login&quot; syntax=&quot;ruby&quot;/&gt;
-
-h1. Benefit on Testing Quality
-
-Domain based web testing requires extra work to design and implement the page and HTML element objects.  However, experiences have shown that they pay off quickly.
-
-With the shared code, each tests only need to write the code that is special about the test.  This makes it easy to understand the tests and maintain them.  For example, with each page provide the way to locate the HTML elements on the page, it is easy to find the code and change it when the element id or name changes.
-
-The following are the patterns that have been proved to be useful.  Try them out and see if they are useful to your project as well.
-
-h2. Shared Steps
-
-You can wrap common steps into the behavior of the component (page or HTML element).  
-
-For example, you can create the @login@ method on the login page.  This method will enter the user name and password, click on the submit button and make sure that the login was successful.  You can even create different user on the fly and login as the user so that different tests will work on different sets of data and won't affect each other.
-
-h2. Widgets
-
-Some HTML element does form submission upon change automatically and some doesn't.  You can design your HTML element object so that it knows when the value changes, it needs to wait for the page load.
-
-Some HTML element has Javascript associated with it so that some other part of the page will change, even when there is no page load.  You can also design the element to wait for the condition.  For example, for a check box that shows and hides a comment filed, it can be designed as following:
-
-&lt;template:code source=&quot;example.rb&quot; tag=&quot;check&quot; syntax=&quot;ruby&quot;/&gt;
-
-In this way, the test code will remain the same and all the work that making sure the test dose what it intends to do is encapsulated into the place where it should be.
-
-h2. Speed Up Data Setup
-
-It is always best to exercise the web application during the tests.  However, for a large application with lots of tests, it might not be feasible to run everything through browser.  You would still want each page to be fully tested but for some of the tests, it is a good idea to create the test data directly into the database.  This will speed up your tests and give you better test coverage.
-
-With the domain based web testing, your tests only concentrate on what kind of data to generate and delegate the generation detail to the page objects.  When performance becomes a concern for your tests, you can add additional behavior on those page objects so that for most of the test it delegates the data creation to a back-end API that inserts the data directly into the database.
-
-h1. Benefit on Communication
-
-With your domain based testing code expressing the intent of the test, you have created a &quot;domain specific language&quot; for testing of your web application.  It would not be hard to go from here and match that language to your domain language.  For detail on domain driven design, see &quot;Domain Driven Design&quot;:http://domaindrivendesign.org/index.htm
-
+---
+Domain Based Web Testing
+---
+Domain based web testing is a style of writing and organizing testing scripts so that they can:
+
+* Express the intent of the test.
+* Avoid duplication in the test.
+
+This is crucial especially for a large scale web application.
+
+h1. Example
+
+Domain based web testing focusing on the intent of the test rather than the action of the test.  
+
+h2. Watir Style
+
+The simplest domain based web testing wraps the browser object (the one that provides the API to drive the browser) into a page object that provides API that returns the HTML element object based on what you can do at the current page.  This is the style that &quot;watir&quot;:http://wtr.rubyforge.org provides.  These HTML element object classes are simply wrappers that wraps the action command and delegate to the browser driver class as action based command.
+
+&lt;template:code source=&quot;example.rb&quot; tag=&quot;basic&quot; syntax=&quot;ruby&quot;/&gt;
+
+h2. Page Object with Behaviors
+
+When the user comes to a page, they normally wants to do a certain task that involves a group of actions.  The page objects should provide those APIs so that the test is clear on what the test is doing rather than how it is doing it.
+
+&lt;template:code source=&quot;example.rb&quot; tag=&quot;login&quot; syntax=&quot;ruby&quot;/&gt;
+
+h1. Benefit on Testing Quality
+
+Domain based web testing requires extra work to design and implement the page and HTML element objects.  However, experiences have shown that they pay off quickly.
+
+With the shared code, each tests only need to write the code that is special about the test.  This makes it easy to understand the tests and maintain them.  For example, with each page provide the way to locate the HTML elements on the page, it is easy to find the code and change it when the element id or name changes.
+
+The following are the patterns that have been proved to be useful.  Try them out and see if they are useful to your project as well.
+
+h2. Shared Steps
+
+You can wrap common steps into the behavior of the component (page or HTML element).  
+
+For example, you can create the @login@ method on the login page.  This method will enter the user name and password, click on the submit button and make sure that the login was successful.  You can even create different user on the fly and login as the user so that different tests will work on different sets of data and won't affect each other.
+
+h2. Widgets
+
+Some HTML element does form submission upon change automatically and some doesn't.  You can design your HTML element object so that it knows when the value changes, it needs to wait for the page load.
+
+Some HTML element has Javascript associated with it so that some other part of the page will change, even when there is no page load.  You can also design the element to wait for the condition.  For example, for a check box that shows and hides a comment filed, it can be designed as following:
+
+&lt;template:code source=&quot;example.rb&quot; tag=&quot;check&quot; syntax=&quot;ruby&quot;/&gt;
+
+In this way, the test code will remain the same and all the work that making sure the test dose what it intends to do is encapsulated into the place where it should be.
+
+h2. Speed Up Data Setup
+
+It is always best to exercise the web application during the tests.  However, for a large application with lots of tests, it might not be feasible to run everything through browser.  You would still want each page to be fully tested but for some of the tests, it is a good idea to create the test data directly into the database.  This will speed up your tests and give you better test coverage.
+
+With the domain based web testing, your tests only concentrate on what kind of data to generate and delegate the generation detail to the page objects.  When performance becomes a concern for your tests, you can add additional behavior on those page objects so that for most of the test it delegates the data creation to a back-end API that inserts the data directly into the database.
+
+h1. Benefit on Communication
+
+With your domain based testing code expressing the intent of the test, you have created a &quot;domain specific language&quot; for testing of your web application.  It would not be hard to go from here and match that language to your domain language.  For detail on domain driven design, see &quot;Domain Driven Design&quot;:http://domaindrivendesign.org/index.htm
+</diff>
      <filename>site/doc/domain-based-web-testing.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,51 +1,51 @@
-require 'spec'
-
-context 'domain based web testing example' do
-  specify 'basic' do
-    # START basic
-    login_page = LoginPage.new(@browser)
-    login_page.username_field.enter('user')
-    login_page.password_field.enter('password')
-    login_page.login_button.click
-    # END basic
-  end
-
-  specify 'login' do
-    # START login
-    login_page = LoginPage.new(@browser)
-    login_page.login('user', 'wrongpassword')
-    work_items_page = WorkItemsPage.new(@browser)
-    work_item_page.fill_in(data_fixture.create_full_work_item_data)
-    work_item_page.due_date_field.enter_yesterday
-    work_item_page.submit_buttoc.click
-    work_item_page.should be_present
-    work_item_page.error.should be_visible
-    work_item_page.error.text.should == 'Due date should be after today'
-    # END login
-  end
-end
-
-# START check
-class CommentCheckBox
-  attr_reader :browser, :locator
-
-  def initialize(browser, locator, comment_span)
-    @browser = browser
-    @locator = locator
-    @comment_span = comment_span
-  end
-
-  def selected
-    browser.get_value(locator) == 'on'
-  end
-
-  def click
-    old_value = selected
-&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD:site/doc/example.rb
-    browser.wait_for_condition(@comment_span.script_check_visible((not old_value)), 5000)
-=======
-    browser.wait_for_condition(@comment_span.script_check_visible(not old_value), 5000)
-&gt;&gt;&gt;&gt;&gt;&gt;&gt; a3598e23fd3d746137b3a82b575d68ed060b1d4b:site/doc/example.rb
-  end
-end
-# END check
+require 'spec'
+
+context 'domain based web testing example' do
+  specify 'basic' do
+    # START basic
+    login_page = LoginPage.new(@browser)
+    login_page.username_field.enter('user')
+    login_page.password_field.enter('password')
+    login_page.login_button.click
+    # END basic
+  end
+
+  specify 'login' do
+    # START login
+    login_page = LoginPage.new(@browser)
+    login_page.login('user', 'wrongpassword')
+    work_items_page = WorkItemsPage.new(@browser)
+    work_item_page.fill_in(data_fixture.create_full_work_item_data)
+    work_item_page.due_date_field.enter_yesterday
+    work_item_page.submit_buttoc.click
+    work_item_page.should be_present
+    work_item_page.error.should be_visible
+    work_item_page.error.text.should == 'Due date should be after today'
+    # END login
+  end
+end
+
+# START check
+class CommentCheckBox
+  attr_reader :browser, :locator
+
+  def initialize(browser, locator, comment_span)
+    @browser = browser
+    @locator = locator
+    @comment_span = comment_span
+  end
+
+  def selected
+    browser.get_value(locator) == 'on'
+  end
+
+  def click
+    old_value = selected
+&lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD:site/doc/example.rb
+    browser.wait_for_condition(@comment_span.script_check_visible((not old_value)), 5000)
+=======
+    browser.wait_for_condition(@comment_span.script_check_visible(not old_value), 5000)
+&gt;&gt;&gt;&gt;&gt;&gt;&gt; a3598e23fd3d746137b3a82b575d68ed060b1d4b:site/doc/example.rb
+  end
+end
+# END check</diff>
      <filename>site/doc/example.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,24 +1,24 @@
----
-Document
----
-Please don't forget to check out the &quot;getting started&quot;:getting-started.html page
-
-h1. Selenium Server
-
-Besides giving you the ability to launch Selenium server with &quot;selenium&quot; command, Selenium Ruby also provides a driver 
-class, &quot;SeleniumDriver&quot;:rdoc/classes/Selenium/SeleniumServer.html, that allows you to start server, check if server is running,
-and stop server through ruby program.
-
-&lt;template:code source=&quot;rakefile.rb&quot; tag=&quot;RAKE&quot; syntax=&quot;ruby&quot;/&gt;
-
-h1. Testing with Selenium
-
-h2. Action Based Testing
-
-This is provided by &quot;Selenium&quot;:http://www.openqa.org/selenium-rc/ project itself.  The &quot;SeleniumDriver&quot;:rdoc/classes/Selenium/SeleniumDriver.html is bundled
-with Selenium ruby gem.  There is a more Ruby friendly class &quot;WebPage&quot;:rdoc/classes/Selenium/WebPage.html that you can check out as well.
-
-h2. Object Based Testing
-
-Selenium Ruby provides a set of commonly used classes like &quot;Link&quot;:rdoc/classes/Selenium/Link.html, &quot;Button&quot;:rdoc/classes/Selenium/Button.html and 
+---
+Document
+---
+Please don't forget to check out the &quot;getting started&quot;:getting-started.html page
+
+h1. Selenium Server
+
+Besides giving you the ability to launch Selenium server with &quot;selenium&quot; command, Selenium Ruby also provides a driver 
+class, &quot;SeleniumDriver&quot;:rdoc/classes/Selenium/SeleniumServer.html, that allows you to start server, check if server is running,
+and stop server through ruby program.
+
+&lt;template:code source=&quot;rakefile.rb&quot; tag=&quot;RAKE&quot; syntax=&quot;ruby&quot;/&gt;
+
+h1. Testing with Selenium
+
+h2. Action Based Testing
+
+This is provided by &quot;Selenium&quot;:http://www.openqa.org/selenium-rc/ project itself.  The &quot;SeleniumDriver&quot;:rdoc/classes/Selenium/SeleniumDriver.html is bundled
+with Selenium ruby gem.  There is a more Ruby friendly class &quot;WebPage&quot;:rdoc/classes/Selenium/WebPage.html that you can check out as well.
+
+h2. Object Based Testing
+
+Selenium Ruby provides a set of commonly used classes like &quot;Link&quot;:rdoc/classes/Selenium/Link.html, &quot;Button&quot;:rdoc/classes/Selenium/Button.html and 
 &quot;TextField&quot;:rdoc/classes/Selenium/TextField.html that can help you build an object model that present your web application.
\ No newline at end of file</diff>
      <filename>site/document.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,21 +1,21 @@
----
-Download
----
-h2. RubyGem &lt;template:text property=&quot;release&quot;/&gt;
-
-The easiest way to install the published builds is using the following command through &quot;RubyGem&quot;:http://rubygems.org/:
-
-&lt;div class=&quot;code&quot;&gt;gem install selenium&lt;/div&gt;
-
-h2. RubyForge
-
-You can also download the files from &quot;Rubyforge&quot;:http://rubyforge.org/frs/?group_id=2789
-
-h2. Snapshot &lt;template:text property=&quot;snapshot&quot;/&gt;
-
-You can take the latest snapshot from the &quot;build page&quot;:builds/
-
-h1. Textmate Bundle
-
-You can download textmate bundle for Selenium driver from &quot;Project Files&quot;:http://rubyforge.org/frs/?group_id=2789&amp;release_id=9004
-
+---
+Download
+---
+h2. RubyGem &lt;template:text property=&quot;release&quot;/&gt;
+
+The easiest way to install the published builds is using the following command through &quot;RubyGem&quot;:http://rubygems.org/:
+
+&lt;div class=&quot;code&quot;&gt;gem install selenium&lt;/div&gt;
+
+h2. RubyForge
+
+You can also download the files from &quot;Rubyforge&quot;:http://rubyforge.org/frs/?group_id=2789
+
+h2. Snapshot &lt;template:text property=&quot;snapshot&quot;/&gt;
+
+You can take the latest snapshot from the &quot;build page&quot;:builds/
+
+h1. Textmate Bundle
+
+You can download textmate bundle for Selenium driver from &quot;Project Files&quot;:http://rubyforge.org/frs/?group_id=2789&amp;release_id=9004
+</diff>
      <filename>site/download.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,29 +1,29 @@
--------
-Getting Started
--------
-Selenium-Ruby bundles the selenium server and Ruby classes in the gem so that you can use them right away.
-
-h1. Selenium Server
-
-Selenium-ruby installs the executable at the ruby/bin directory so you can launch the server through command:
-
-&lt;div class=&quot;Shaded&quot;&gt;
-&lt;pre&gt;selenium&lt;/pre&gt;
-&lt;/div&gt;
-
-h1. Selenium RC
-
-You can use Selenium RC that is installed as a gem, so that your existing action based web testing still works.  The following
-example is using &quot;RSpec&quot;:http://rspec.rubyforge.org:
-
-&lt;template:code source=&quot;../spec/selenium/tc_interaction_example.rb&quot; tag=&quot;INTERACTION&quot; syntax=&quot;ruby&quot;/&gt;
-
-h1. Selenium Ruby
-
-You can use classes that come with Selenium ruby to write object based web testing.
-
-&lt;template:code source=&quot;../spec/selenium/tc_domain_example.rb&quot; tag=&quot;DOMAIN&quot; syntax=&quot;ruby&quot;/&gt;
-
-The class that described Google home page is defined as following
-
-&lt;template:code source=&quot;../spec/selenium/tc_domain_example.rb&quot; tag=&quot;GOOGLEHOME&quot; syntax=&quot;ruby&quot;/&gt;
+-------
+Getting Started
+-------
+Selenium-Ruby bundles the selenium server and Ruby classes in the gem so that you can use them right away.
+
+h1. Selenium Server
+
+Selenium-ruby installs the executable at the ruby/bin directory so you can launch the server through command:
+
+&lt;div class=&quot;Shaded&quot;&gt;
+&lt;pre&gt;selenium&lt;/pre&gt;
+&lt;/div&gt;
+
+h1. Selenium RC
+
+You can use Selenium RC that is installed as a gem, so that your existing action based web testing still works.  The following
+example is using &quot;RSpec&quot;:http://rspec.rubyforge.org:
+
+&lt;template:code source=&quot;../spec/selenium/tc_interaction_example.rb&quot; tag=&quot;INTERACTION&quot; syntax=&quot;ruby&quot;/&gt;
+
+h1. Selenium Ruby
+
+You can use classes that come with Selenium ruby to write object based web testing.
+
+&lt;template:code source=&quot;../spec/selenium/tc_domain_example.rb&quot; tag=&quot;DOMAIN&quot; syntax=&quot;ruby&quot;/&gt;
+
+The class that described Google home page is defined as following
+
+&lt;template:code source=&quot;../spec/selenium/tc_domain_example.rb&quot; tag=&quot;GOOGLEHOME&quot; syntax=&quot;ruby&quot;/&gt;</diff>
      <filename>site/getting-started.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,13 @@
--------------------------------
-Home
--------------------------------
-Selenium Ruby is a ruby project that aim to make the popular &quot;Selemium RC&quot;:http://www.openqa.org/selenium-rc/ available on rubyforge.
-
-With Selenium Ruby:
-* You can install selenium gem available on rubyforge, which includes the selenium server and SeleniumDriver from Selenium RC project.
-* Selenium's action based API is wrapped into a object based API.  (&quot;Object based web testing&quot;:doc/domain-based-web-testing.html)
-
-h1. Getting Started
-
-* &quot;Download it&quot;:download.html
+-------------------------------
+Home
+-------------------------------
+Selenium Ruby is a ruby project that aim to make the popular &quot;Selemium RC&quot;:http://www.openqa.org/selenium-rc/ available on rubyforge.
+
+With Selenium Ruby:
+* You can install selenium gem available on rubyforge, which includes the selenium server and SeleniumDriver from Selenium RC project.
+* Selenium's action based API is wrapped into a object based API.  (&quot;Object based web testing&quot;:doc/domain-based-web-testing.html)
+
+h1. Getting Started
+
+* &quot;Download it&quot;:download.html
 * &quot;Use it&quot;:getting-started.html
\ No newline at end of file</diff>
      <filename>site/index.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,19 +1,19 @@
-----------------------------------
-License
-----------------------------------
-&lt;div class=&quot;Shaded&quot;&gt;
-&lt;pre&gt;Copyright Selenium-Ruby project
-
-Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); 
-you may not use this file except in compliance with the License. 
-You may obtain a copy of the License at 
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software 
-distributed under the License is distributed on an &quot;AS IS&quot; BASIS, 
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-See the License for the specific language governing permissions and 
-limitations under the License.&lt;/pre&gt;
-&lt;/div&gt;
+----------------------------------
+License
+----------------------------------
+&lt;div class=&quot;Shaded&quot;&gt;
+&lt;pre&gt;Copyright Selenium-Ruby project
+
+Licensed under the Apache License, Version 2.0 (the &quot;License&quot;); 
+you may not use this file except in compliance with the License. 
+You may obtain a copy of the License at 
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software 
+distributed under the License is distributed on an &quot;AS IS&quot; BASIS, 
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
+See the License for the specific language governing permissions and 
+limitations under the License.&lt;/pre&gt;
+&lt;/div&gt;
  
\ No newline at end of file</diff>
      <filename>site/license.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,65 +1,65 @@
-body {
-  font-family: Times, serif;
-  font-size: 12pt;
-  float: none !important;
-}
-
-div.header {
-  display: none;
-}
-
-div.left {
-  display:none;
-}
-
-div.bottomshadow {
-  display:none;
-}
-
-div.poweredby {
-  display: none;
-}
-
-div.source {
-  display: none;
-}
-
-div.right {
-  display:none;
-}
-
-div.content {
-  font-family: Times, serif;
-  font-size: 12pt;
-  width: 100%;
-}
-
-div.Content3Column {
-  width: 100%;
-  font-family: Times, serif;
-  font-size: 12pt;
-  margin-left: 0px;
-  margin-right: 0px;
-}
-
-div.Content2Column {
-  width: 100%;
-  font-family: Times, serif;
-  font-size: 12pt;
-  margin-left: 0px;
-  margin-right: 0px;
-}
-
-a:link, a:visited {
-	color: #520;
-	background: transparent;
-	font-weight: bold;
-	text-decoration: underline;
-	font-size: 12pt;
-	font-family: Times, serif;
-}
-
-#content a:link:after, #content a:visited:after {
-   content: &quot; (&quot; attr(href) &quot;) &quot;;
-   font-size: 90%;
+body {
+  font-family: Times, serif;
+  font-size: 12pt;
+  float: none !important;
+}
+
+div.header {
+  display: none;
+}
+
+div.left {
+  display:none;
+}
+
+div.bottomshadow {
+  display:none;
+}
+
+div.poweredby {
+  display: none;
+}
+
+div.source {
+  display: none;
+}
+
+div.right {
+  display:none;
+}
+
+div.content {
+  font-family: Times, serif;
+  font-size: 12pt;
+  width: 100%;
+}
+
+div.Content3Column {
+  width: 100%;
+  font-family: Times, serif;
+  font-size: 12pt;
+  margin-left: 0px;
+  margin-right: 0px;
+}
+
+div.Content2Column {
+  width: 100%;
+  font-family: Times, serif;
+  font-size: 12pt;
+  margin-left: 0px;
+  margin-right: 0px;
+}
+
+a:link, a:visited {
+	color: #520;
+	background: transparent;
+	font-weight: bold;
+	text-decoration: underline;
+	font-size: 12pt;
+	font-family: Times, serif;
+}
+
+#content a:link:after, #content a:visited:after {
+   content: &quot; (&quot; attr(href) &quot;) &quot;;
+   font-size: 90%;
 }
\ No newline at end of file</diff>
      <filename>site/print.css</filename>
    </modified>
    <modified>
      <diff>@@ -1,36 +1,36 @@
-$:.unshift File.join(File.dirname(__FILE__), '..')
-
-# Example usage of server manager and selenium server
-# Thanks to http://svn.caldersphere.net/svn/main/rspec_selenium_rc/trunk/Rakefile
-# 
-
-# START RAKE
-require 'lib/selenium'
-require 'rake'
-require 'spec/rake/spectask'
-
-manager = Selenium::ServerManager.new(Selenium::SeleniumServer.new)
-
-task :default =&gt; [:acceptance_cycle]
-
-task :start_server do
-  manager.start
-end
-
-task :stop_server do
-  manager.stop
-end
-
-Spec::Rake::SpecTask.new('example') do |t|
-  t.spec_files = FileList['selenium*example.rb']
-end
-
-task :acceptance_cycle do
-  begin
-    Rake::Task['start_server'].invoke
-    Rake::Task['example'].invoke
-  ensure
-    Rake::Task['stop_server'].invoke
-  end
-end
-# END RAKE
+$:.unshift File.join(File.dirname(__FILE__), '..')
+
+# Example usage of server manager and selenium server
+# Thanks to http://svn.caldersphere.net/svn/main/rspec_selenium_rc/trunk/Rakefile
+# 
+
+# START RAKE
+require 'lib/selenium'
+require 'rake'
+require 'spec/rake/spectask'
+
+manager = Selenium::ServerManager.new(Selenium::SeleniumServer.new)
+
+task :default =&gt; [:acceptance_cycle]
+
+task :start_server do
+  manager.start
+end
+
+task :stop_server do
+  manager.stop
+end
+
+Spec::Rake::SpecTask.new('example') do |t|
+  t.spec_files = FileList['selenium*example.rb']
+end
+
+task :acceptance_cycle do
+  begin
+    Rake::Task['start_server'].invoke
+    Rake::Task['example'].invoke
+  ensure
+    Rake::Task['stop_server'].invoke
+  end
+end
+# END RAKE</diff>
      <filename>site/rakefile.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
----
-References
----
-This page contains the useful references for anyone who wants to use Selenium with Ruby.  You can help making it better by
+---
+References
+---
+This page contains the useful references for anyone who wants to use Selenium with Ruby.  You can help making it better by
 &quot;contributing to it&quot;:contribute.html.
\ No newline at end of file</diff>
      <filename>site/references.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,14 @@
-pre.code span {
-  font-family: courier new, monospace;
-}
-
-span.keyword, .namespace, .tag { font-weight: bold; font-family: monospace; color: #8B0000;}
-.constant, .attribute, .global, .class, .module { font-family: monospace; color: black;}
-.string { font-family: monospace; color: #00008B; }
-.ident, .method { font-family: monospace; }
-.number, .char { font-family: monospace; color: #888800; }
-.comment { font-family: monospace; color: #006400; }
-.symbol { font-family: monospace; color: #884400; }
-.regex { font-family: monospace; color: #808080; }
-.punct { font-family: monospace; color: black; }
+pre.code span {
+  font-family: courier new, monospace;
+}
+
+span.keyword, .namespace, .tag { font-weight: bold; font-family: monospace; color: #8B0000;}
+.constant, .attribute, .global, .class, .module { font-family: monospace; color: black;}
+.string { font-family: monospace; color: #00008B; }
+.ident, .method { font-family: monospace; }
+.number, .char { font-family: monospace; color: #888800; }
+.comment { font-family: monospace; color: #006400; }
+.symbol { font-family: monospace; color: #884400; }
+.regex { font-family: monospace; color: #808080; }
+.punct { font-family: monospace; color: black; }
 .escape, .interp, .expr { font-family: monospace; color: purple; }
\ No newline at end of file</diff>
      <filename>site/ruby.css</filename>
    </modified>
    <modified>
      <diff>@@ -1,12 +1,12 @@
----
-Team
----
-|_.ID|_.Name|_.Information|
-|wolfdance|Shane Duan|&quot;Home Page&quot;:http://www.shaneduan.com|
-
-h1. Contributors
-
-First of all, many thanks to the ThoughtWorks and its friends for creating such a wonderful project, &quot;Selenium&quot;:http://www.openqa.com/selenium.
-
-|_.Name|_.Information|_.Contribution|
-|Brian Yamabe|n/a|&quot;Selenium Textmate bundle&quot;:http://rubyforge.org/frs/?group_id=2789&amp;release_id=9004|
+---
+Team
+---
+|_.ID|_.Name|_.Information|
+|wolfdance|Shane Duan|&quot;Home Page&quot;:http://www.shaneduan.com|
+
+h1. Contributors
+
+First of all, many thanks to the ThoughtWorks and its friends for creating such a wonderful project, &quot;Selenium&quot;:http://www.openqa.com/selenium.
+
+|_.Name|_.Information|_.Contribution|
+|Brian Yamabe|n/a|&quot;Selenium Textmate bundle&quot;:http://rubyforge.org/frs/?group_id=2789&amp;release_id=9004|</diff>
      <filename>site/team.txt</filename>
    </modified>
    <modified>
      <diff>@@ -1,21 +1,21 @@
-&lt;html&gt;
-  &lt;head&gt;&lt;title&gt;Test Main Page&lt;/title&gt;&lt;/head&gt;
-&lt;body&gt;
-&lt;h1&gt;Testing&lt;/h1&gt;
-&lt;p&gt;This is the main test page for selenium-ruby testing&lt;/p&gt;
-&lt;h2&gt;Action Tests&lt;/h2&gt;
-This section test all the action methods.
-&lt;form action=&quot;index.html&quot;&gt;
-&lt;h2&gt;Double Click&lt;/h2&gt;
- &lt;textarea id=&quot;doubleclickid&quot; name=&quot;doubleclick&quot;
-           onDblClick=&quot;alert('double clicked with value ' + this.form.doubleclick.value)&quot;
-           onBlur=&quot;alert('blurred with value ' + this.form.doubleclick.value)&quot;
-           rows=&quot;10&quot;&gt;test&lt;/textarea&gt;
-&lt;h2&gt;Events&lt;/h2&gt;
-&lt;input name=&quot;events&quot; onblur=&quot;alert('blurred with value ' + this.form.events.value)&quot;
-    onfocus=&quot;this.form.events.value = 'default'&quot;/&gt;
-&lt;/form&gt;
-
-&lt;a href=&quot;../license.txt&quot;&gt;License&lt;/a&gt;
-&lt;/body&gt;
-&lt;/html&gt;
+&lt;html&gt;
+  &lt;head&gt;&lt;title&gt;Test Main Page&lt;/title&gt;&lt;/head&gt;
+&lt;body&gt;
+&lt;h1&gt;Testing&lt;/h1&gt;
+&lt;p&gt;This is the main test page for selenium-ruby testing&lt;/p&gt;
+&lt;h2&gt;Action Tests&lt;/h2&gt;
+This section test all the action methods.
+&lt;form action=&quot;index.html&quot;&gt;
+&lt;h2&gt;Double Click&lt;/h2&gt;
+ &lt;textarea id=&quot;doubleclickid&quot; name=&quot;doubleclick&quot;
+           onDblClick=&quot;alert('double clicked with value ' + this.form.doubleclick.value)&quot;
+           onBlur=&quot;alert('blurred with value ' + this.form.doubleclick.value)&quot;
+           rows=&quot;10&quot;&gt;test&lt;/textarea&gt;
+&lt;h2&gt;Events&lt;/h2&gt;
+&lt;input name=&quot;events&quot; onblur=&quot;alert('blurred with value ' + this.form.events.value)&quot;
+    onfocus=&quot;this.form.events.value = 'default'&quot;/&gt;
+&lt;/form&gt;
+
+&lt;a href=&quot;../license.txt&quot;&gt;License&lt;/a&gt;
+&lt;/body&gt;
+&lt;/html&gt;</diff>
      <filename>site/test/index.html</filename>
    </modified>
    <modified>
      <diff>@@ -1,109 +1,109 @@
-&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
-      xmlns:template=&quot;http://buildmaster.rubyforge.org/xtemplate/1.0&quot;&gt;
-  &lt;head&gt;
-    &lt;title&gt;Selenium Ruby - &lt;template:include elements=&quot;/html/head/title/text()&quot;/&gt;&lt;/title&gt;
-    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;template:href url=&quot;cotta.css&quot;/&gt;&lt;/link&gt;
-    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;template:href url=&quot;ruby.css&quot;/&gt;&lt;/link&gt;
-    &lt;template:include elements=&quot;/html/head/*[not(name()='title')]&quot;/&gt;
-  &lt;/head&gt;
-
-  &lt;body&gt;
-		&lt;div class=&quot;header&quot;&gt;&lt;a id=&quot;home&quot; class=&quot;header&quot;&gt;&lt;template:href url=&quot;.&quot;/&gt;&lt;img id=&quot;logo&quot; alt=&quot;cotta&quot;&gt;&lt;template:href url=&quot;logo1.gif&quot;/&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;
-
-		&lt;div class=&quot;left&quot;&gt;
-      &lt;div class=&quot;MenuGroup&quot;&gt;
-        &lt;h1&gt;Software&lt;/h1&gt;
-        &lt;ul&gt;
-          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;download.html&quot;/&gt;Download&lt;/a&gt;&lt;/li&gt;
-          &lt;li&gt;&lt;a&gt;&lt;template:attribute name=&quot;href&quot; eval=&quot;source_url&quot;/&gt;Source Repository&lt;/a&gt;&lt;/li&gt;
-          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;license.html&quot;/&gt;License&lt;/a&gt;&lt;/li&gt;
-        &lt;/ul&gt;
-      &lt;/div&gt;
-
-      &lt;div class=&quot;MenuGroup&quot;&gt;
-        &lt;h1&gt;Documentation&lt;/h1&gt;
-        &lt;ul&gt;
-          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;getting-started.html&quot;/&gt;Getting Started&lt;/a&gt;&lt;/li&gt;
-          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;document.html&quot;/&gt;Document&lt;/a&gt;&lt;/li&gt;
-          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;references.html&quot;/&gt;References&lt;/a&gt;&lt;/li&gt;
-        &lt;/ul&gt;
-      &lt;/div&gt;
-
-      &lt;div class=&quot;MenuGroup&quot;&gt;
-        &lt;h1&gt;User Support&lt;/h1&gt;
-        &lt;ul&gt;
-          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;http://groups.google.com/group/selenium-ruby&quot;/&gt;Mailing List&lt;/a&gt;&lt;/li&gt;
-          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;http://rubyforge.org/tracker/?group_id=2789&quot;/&gt;Bug Tracker&lt;/a&gt;&lt;/li&gt;
-        &lt;/ul&gt;
-      &lt;/div&gt;
-
-      &lt;div class=&quot;MenuGroup&quot;&gt;
-        &lt;h1&gt;Development&lt;/h1&gt;
-        &lt;ul&gt;
-          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;contribute.html&quot;/&gt;How to Contribute&lt;/a&gt;&lt;/li&gt;
-          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;team.html&quot;/&gt;Development Team&lt;/a&gt;&lt;/li&gt;
-        &lt;/ul&gt;
-      &lt;/div&gt;
-      &lt;div class=&quot;logo&quot;&gt;
-        &lt;a href=&quot;http://rubyforge.org/projects/selenium/&quot;&gt;
-        	&lt;img alt=&quot;Rubyforge Logo&quot; src=&quot;http://rubyforge.org/themes/osx/images/logohover.png&quot; width=&quot;170&quot;/&gt;
-        &lt;/a&gt;
-      &lt;/div&gt;
-		&lt;/div&gt;
-
-    &lt;template:when test=&quot;index_file?&quot;&gt;
-		&lt;div class=&quot;right&quot;&gt;
-        &lt;div class=&quot;NewsGroup&quot;&gt;
-          &lt;h1&gt;Latest Versions&lt;/h1&gt;
-          &lt;table&gt;
-            &lt;tr&gt;
-              &lt;td&gt;&lt;a&gt;&lt;template:href url=&quot;download.html#stable&quot;/&gt;Stable:&lt;/a&gt;&lt;/td&gt;
-              &lt;td&gt;&lt;a&gt;&lt;template:href url=&quot;download.html#stable&quot;/&gt;&lt;template:text property=&quot;release&quot;/&gt;&lt;/a&gt;&lt;/td&gt;
-            &lt;/tr&gt;
-            &lt;tr&gt;
-              &lt;td&gt;&lt;a&gt;&lt;template:href url=&quot;download.html#prerelease&quot;/&gt;Prerelease:&lt;/a&gt;&lt;/td&gt;
-              &lt;td&gt;&lt;a&gt;&lt;template:href url=&quot;download.html#prerelease&quot;/&gt;&lt;template:text property=&quot;prerelease&quot;/&gt;&lt;/a&gt;&lt;/td&gt;
-            &lt;/tr&gt;
-            &lt;tr&gt;
-              &lt;td&gt;&lt;a&gt;&lt;template:href url=&quot;download.html#snapshot&quot;/&gt;Snapshot:&lt;/a&gt;&lt;/td&gt;
-              &lt;td&gt;&lt;a&gt;&lt;template:href url=&quot;download.html#snapshot&quot;/&gt;&lt;template:text property=&quot;snapshot&quot;/&gt;&lt;/a&gt;&lt;/td&gt;
-            &lt;/tr&gt;
-          &lt;/table&gt;
-          &lt;p class=&quot;NewsMore&quot;&gt;&lt;a&gt;&lt;template:href url=&quot;http://rubygems.org/read/chapter/7&quot;/&gt;About gem version numbers...&lt;/a&gt;&lt;/p&gt;
-        &lt;/div&gt;
-        &lt;div class=&quot;NewsGroup&quot;&gt;
-        	&lt;h1&gt;Recent News&lt;/h1&gt;
-				&lt;template:each source=&quot;news-rss2.xml&quot; select=&quot;/rss/channel/item&quot; count=&quot;3&quot;&gt;
-                &lt;div class=&quot;NewsItem&quot;&gt;
-                    &lt;p class=&quot;NewsTitle&quot;&gt;&lt;template:include elements=&quot;./title/text()&quot;/&gt;&lt;/p&gt;
-                    &lt;p class=&quot;NewsDate&quot;&gt;&lt;template:include elements=&quot;./pubDate/text()&quot;/&gt;&lt;/p&gt;
-                    &lt;p class=&quot;NewsText&quot;&gt;&lt;template:include elements=&quot;./xhtml:div/node()&quot;/&gt;&lt;/p&gt;
-                &lt;/div&gt;
-                &lt;/template:each&gt;
-
-  			&lt;p class=&quot;NewsMore&quot;&gt;&lt;a href=&quot;/news-rss2.xml&quot;&gt;News feed (RSS 2.0)&lt;/a&gt;&lt;/p&gt;
-				&lt;/div&gt;
-		&lt;/div&gt;
-		&lt;/template:when&gt;
-
-		&lt;div&gt;
-		  &lt;template:attribute name=&quot;class&quot; eval=&quot;center_class&quot;/&gt;
-		  &lt;div class=&quot;content&quot;&gt;
-		  	&lt;h1&gt;&lt;template:include elements=&quot;/html/head/title/text()&quot;/&gt;&lt;/h1&gt;
-		  	&lt;template:include elements=&quot;/html/body/*&quot;/&gt;
-		   &lt;/div&gt;
-		&lt;/div&gt;
-
-		&lt;div class=&quot;footer&quot;&gt;
-      &lt;div class=&quot;bottomshadow&quot;/&gt;
-  		&lt;div class=&quot;poweredby&quot;&gt;
-        Powered by &lt;a href=&quot;http://buildmaster.rubyforge.org&quot; class=&quot;footer&quot;&gt;BuildMaster&lt;/a&gt;
-        (Version &lt;template:text property=&quot;buildmaster_version&quot;/&gt;)
-        -
-        &lt;a href=&quot;http://rubyforge.org/tracker/?group_id=1680&quot; class=&quot;footer&quot;&gt;Bug/feature request&lt;/a&gt;
-        &lt;br/&gt;
-      &lt;/div&gt;
-		&lt;/div&gt;
-
-  &lt;/body&gt;
-&lt;/html&gt;
+&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;
+      xmlns:template=&quot;http://buildmaster.rubyforge.org/xtemplate/1.0&quot;&gt;
+  &lt;head&gt;
+    &lt;title&gt;Selenium Ruby - &lt;template:include elements=&quot;/html/head/title/text()&quot;/&gt;&lt;/title&gt;
+    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;template:href url=&quot;cotta.css&quot;/&gt;&lt;/link&gt;
+    &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;&lt;template:href url=&quot;ruby.css&quot;/&gt;&lt;/link&gt;
+    &lt;template:include elements=&quot;/html/head/*[not(name()='title')]&quot;/&gt;
+  &lt;/head&gt;
+
+  &lt;body&gt;
+		&lt;div class=&quot;header&quot;&gt;&lt;a id=&quot;home&quot; class=&quot;header&quot;&gt;&lt;template:href url=&quot;.&quot;/&gt;&lt;img id=&quot;logo&quot; alt=&quot;cotta&quot;&gt;&lt;template:href url=&quot;logo1.gif&quot;/&gt;&lt;/img&gt;&lt;/a&gt;&lt;/div&gt;
+
+		&lt;div class=&quot;left&quot;&gt;
+      &lt;div class=&quot;MenuGroup&quot;&gt;
+        &lt;h1&gt;Software&lt;/h1&gt;
+        &lt;ul&gt;
+          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;download.html&quot;/&gt;Download&lt;/a&gt;&lt;/li&gt;
+          &lt;li&gt;&lt;a&gt;&lt;template:attribute name=&quot;href&quot; eval=&quot;source_url&quot;/&gt;Source Repository&lt;/a&gt;&lt;/li&gt;
+          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;license.html&quot;/&gt;License&lt;/a&gt;&lt;/li&gt;
+        &lt;/ul&gt;
+      &lt;/div&gt;
+
+      &lt;div class=&quot;MenuGroup&quot;&gt;
+        &lt;h1&gt;Documentation&lt;/h1&gt;
+        &lt;ul&gt;
+          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;getting-started.html&quot;/&gt;Getting Started&lt;/a&gt;&lt;/li&gt;
+          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;document.html&quot;/&gt;Document&lt;/a&gt;&lt;/li&gt;
+          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;references.html&quot;/&gt;References&lt;/a&gt;&lt;/li&gt;
+        &lt;/ul&gt;
+      &lt;/div&gt;
+
+      &lt;div class=&quot;MenuGroup&quot;&gt;
+        &lt;h1&gt;User Support&lt;/h1&gt;
+        &lt;ul&gt;
+          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;http://groups.google.com/group/selenium-ruby&quot;/&gt;Mailing List&lt;/a&gt;&lt;/li&gt;
+          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;http://rubyforge.org/tracker/?group_id=2789&quot;/&gt;Bug Tracker&lt;/a&gt;&lt;/li&gt;
+        &lt;/ul&gt;
+      &lt;/div&gt;
+
+      &lt;div class=&quot;MenuGroup&quot;&gt;
+        &lt;h1&gt;Development&lt;/h1&gt;
+        &lt;ul&gt;
+          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;contribute.html&quot;/&gt;How to Contribute&lt;/a&gt;&lt;/li&gt;
+          &lt;li&gt;&lt;a&gt;&lt;template:href url=&quot;team.html&quot;/&gt;Development Team&lt;/a&gt;&lt;/li&gt;
+        &lt;/ul&gt;
+      &lt;/div&gt;
+      &lt;div class=&quot;logo&quot;&gt;
+        &lt;a href=&quot;http://rubyforge.org/projects/selenium/&quot;&gt;
+        	&lt;img alt=&quot;Rubyforge Logo&quot; src=&quot;http://rubyforge.org/themes/osx/images/logohover.png&quot; width=&quot;170&quot;/&gt;
+        &lt;/a&gt;
+      &lt;/div&gt;
+		&lt;/div&gt;
+
+    &lt;template:when test=&quot;index_file?&quot;&gt;
+		&lt;div class=&quot;right&quot;&gt;
+        &lt;div class=&quot;NewsGroup&quot;&gt;
+          &lt;h1&gt;Latest Versions&lt;/h1&gt;
+          &lt;table&gt;
+            &lt;tr&gt;
+              &lt;td&gt;&lt;a&gt;&lt;template:href url=&quot;download.html#stable&quot;/&gt;Stable:&lt;/a&gt;&lt;/td&gt;
+              &lt;td&gt;&lt;a&gt;&lt;template:href url=&quot;download.html#stable&quot;/&gt;&lt;template:text property=&quot;release&quot;/&gt;&lt;/a&gt;&lt;/td&gt;
+            &lt;/tr&gt;
+            &lt;tr&gt;
+              &lt;td&gt;&lt;a&gt;&lt;template:href url=&quot;download.html#prerelease&quot;/&gt;Prerelease:&lt;/a&gt;&lt;/td&gt;
+              &lt;td&gt;&lt;a&gt;&lt;template:href url=&quot;download.html#prerelease&quot;/&gt;&lt;template:text property=&quot;prerelease&quot;/&gt;&lt;/a&gt;&lt;/td&gt;
+            &lt;/tr&gt;
+            &lt;tr&gt;
+              &lt;td&gt;&lt;a&gt;&lt;template:href url=&quot;download.html#snapshot&quot;/&gt;Snapshot:&lt;/a&gt;&lt;/td&gt;
+              &lt;td&gt;&lt;a&gt;&lt;template:href url=&quot;download.html#snapshot&quot;/&gt;&lt;template:text property=&quot;snapshot&quot;/&gt;&lt;/a&gt;&lt;/td&gt;
+            &lt;/tr&gt;
+          &lt;/table&gt;
+          &lt;p class=&quot;NewsMore&quot;&gt;&lt;a&gt;&lt;template:href url=&quot;http://rubygems.org/read/chapter/7&quot;/&gt;About gem version numbers...&lt;/a&gt;&lt;/p&gt;
+        &lt;/div&gt;
+        &lt;div class=&quot;NewsGroup&quot;&gt;
+        	&lt;h1&gt;Recent News&lt;/h1&gt;
+				&lt;template:each source=&quot;news-rss2.xml&quot; select=&quot;/rss/channel/item&quot; count=&quot;3&quot;&gt;
+                &lt;div class=&quot;NewsItem&quot;&gt;
+                    &lt;p class=&quot;NewsTitle&quot;&gt;&lt;template:include elements=&quot;./title/text()&quot;/&gt;&lt;/p&gt;
+                    &lt;p class=&quot;NewsDate&quot;&gt;&lt;template:include elements=&quot;./pubDate/text()&quot;/&gt;&lt;/p&gt;
+                    &lt;p class=&quot;NewsText&quot;&gt;&lt;template:include elements=&quot;./xhtml:div/node()&quot;/&gt;&lt;/p&gt;
+                &lt;/div&gt;
+                &lt;/template:each&gt;
+
+  			&lt;p class=&quot;NewsMore&quot;&gt;&lt;a href=&quot;/news-rss2.xml&quot;&gt;News feed (RSS 2.0)&lt;/a&gt;&lt;/p&gt;
+				&lt;/div&gt;
+		&lt;/div&gt;
+		&lt;/template:when&gt;
+
+		&lt;div&gt;
+		  &lt;template:attribute name=&quot;class&quot; eval=&quot;center_class&quot;/&gt;
+		  &lt;div class=&quot;content&quot;&gt;
+		  	&lt;h1&gt;&lt;template:include elements=&quot;/html/head/title/text()&quot;/&gt;&lt;/h1&gt;
+		  	&lt;template:include elements=&quot;/html/body/*&quot;/&gt;
+		   &lt;/div&gt;
+		&lt;/div&gt;
+
+		&lt;div class=&quot;footer&quot;&gt;
+      &lt;div class=&quot;bottomshadow&quot;/&gt;
+  		&lt;div class=&quot;poweredby&quot;&gt;
+        Powered by &lt;a href=&quot;http://buildmaster.rubyforge.org&quot; class=&quot;footer&quot;&gt;BuildMaster&lt;/a&gt;
+        (Version &lt;template:text property=&quot;buildmaster_version&quot;/&gt;)
+        -
+        &lt;a href=&quot;http://rubyforge.org/tracker/?group_id=1680&quot; class=&quot;footer&quot;&gt;Bug/feature request&lt;/a&gt;
+        &lt;br/&gt;
+      &lt;/div&gt;
+		&lt;/div&gt;
+
+  &lt;/body&gt;
+&lt;/html&gt;</diff>
      <filename>site_template.html</filename>
    </modified>
    <modified>
      <diff>@@ -1,20 +1,20 @@
-require File.expand_path(File.join(File.dirname(__FILE__), &quot;..&quot;, &quot;spec_helper&quot;))
-
-if RUBY_PLATFORM =~ /^rwin/
-  require 'selenium/auto_it'
-  require 'spec'
-
-  module Selenium
-    describe AutoIt do
-      it 'should control notepad' do
-        autoit = AutoIt.load
-        autoit.Run('Notepad.exe')
-        autoit.WinWaitActive('Untitled - Notepad')
-        autoit.Send('some text')
-        autoit.WinClose('Untitled - Notepad')
-        autoit.WinWaitActive('Notepad', 'Do you want to save')
-        autoit.Send('!n')
-      end
-    end
-  end
-end
+require File.expand_path(File.join(File.dirname(__FILE__), &quot;..&quot;, &quot;spec_helper&quot;))
+
+if RUBY_PLATFORM =~ /^rwin/
+  require 'selenium/auto_it'
+  require 'spec'
+
+  module Selenium
+    describe AutoIt do
+      it 'should control notepad' do
+        autoit = AutoIt.load
+        autoit.Run('Notepad.exe')
+        autoit.WinWaitActive('Untitled - Notepad')
+        autoit.Send('some text')
+        autoit.WinClose('Untitled - Notepad')
+        autoit.WinWaitActive('Notepad', 'Do you want to save')
+        autoit.Send('!n')
+      end
+    end
+  end
+end</diff>
      <filename>spec/selenium/auto_it/tc_auto_it.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,19 +1,19 @@
-require File.expand_path(File.join(File.dirname(__FILE__), &quot;..&quot;, &quot;spec_helper&quot;))
-
-if RUBY_PLATFORM =~ /^rwin/
-  require 'selenium/auto_it'
-  module Selenium
-    describe AutoItWindow do
-      it 'should control notepad' do
-        autoit = AutoIt.load
-        autoit.Run('Notepad.exe')
-        window = AutoItWindow.new(autoit, 'Untitled - Notepad')
-        window.wait_for_activation
-        window.send_keys('some text')
-        window.close
-        confirm = AutoItWindow.wait_for(autoit, 'Notepad', 'Do you want to save')
-        confirm.send_keys('!n')
-      end
-    end
-  end
-end
+require File.expand_path(File.join(File.dirname(__FILE__), &quot;..&quot;, &quot;spec_helper&quot;))
+
+if RUBY_PLATFORM =~ /^rwin/
+  require 'selenium/auto_it'
+  module Selenium
+    describe AutoItWindow do
+      it 'should control notepad' do
+        autoit = AutoIt.load
+        autoit.Run('Notepad.exe')
+        window = AutoItWindow.new(autoit, 'Untitled - Notepad')
+        window.wait_for_activation
+        window.send_keys('some text')
+        window.close
+        confirm = AutoItWindow.wait_for(autoit, 'Notepad', 'Do you want to save')
+        confirm.send_keys('!n')
+      end
+    end
+  end
+end</diff>
      <filename>spec/selenium/auto_it/tc_auto_it_window.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,11 @@
-dir = File.dirname(__FILE__)
-selenium_dir = File.expand_path(File.join(dir, '..', '..', '..', 'lib'))
-$:.unshift(selenium_dir) unless $:.include?(selenium_dir)
-
-require &quot;selenium&quot;
-require &quot;#{dir}/selenium_ruby/selenium_ruby_page&quot;
-require &quot;#{dir}/selenium_ruby/home_page&quot;
-require &quot;#{dir}/selenium_ruby/directory_listing_page&quot;
-require &quot;#{dir}/selenium_ruby/download_page&quot;
-require &quot;#{dir}/selenium_ruby/license_page&quot;
-require &quot;#{dir}/selenium_ruby/menu&quot;
+dir = File.dirname(__FILE__)
+selenium_dir = File.expand_path(File.join(dir, '..', '..', '..', 'lib'))
+$:.unshift(selenium_dir) unless $:.include?(selenium_dir)
+
+require &quot;selenium&quot;
+require &quot;#{dir}/selenium_ruby/selenium_ruby_page&quot;
+require &quot;#{dir}/selenium_ruby/home_page&quot;
+require &quot;#{dir}/selenium_ruby/directory_listing_page&quot;
+require &quot;#{dir}/selenium_ruby/download_page&quot;
+require &quot;#{dir}/selenium_ruby/license_page&quot;
+require &quot;#{dir}/selenium_ruby/menu&quot;</diff>
      <filename>spec/selenium/examples/selenium_ruby.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,7 @@
-module Selenium
-  class LicensePage &lt; SeleniumRubyPage
-    def initialize(browser)
-      super(browser, 'Selenium Ruby - License')
-    end
-  end
+module Selenium
+  class LicensePage &lt; SeleniumRubyPage
+    def initialize(browser)
+      super(browser, 'Selenium Ruby - License')
+    end
+  end
 end
\ No newline at end of file</diff>
      <filename>spec/selenium/examples/selenium_ruby/license_page.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,23 +1,23 @@
-module Selenium
-  class Menu
-    attr_reader :webpage
-    def initialize(webpage)
-      @webpage = webpage
-    end
-
-    def home_link
-      # todo there should be a way to alter this instance so that the click returns the directory listing page
-      webpage.link(:id, 'home').with_target(DirectoryListingPage)
-    end
-
-    #MENU START
-    def download_link
-      webpage.link(:text, 'Download')
-    end
-
-    def license_link
-      webpage.link(:text, 'License').with_target(LicensePage)
-    end
-#MENU END
-  end
+module Selenium
+  class Menu
+    attr_reader :webpage
+    def initialize(webpage)
+      @webpage = webpage
+    end
+
+    def home_link
+      # todo there should be a way to alter this instance so that the click returns the directory listing page
+      webpage.link(:id, 'home').with_target(DirectoryListingPage)
+    end
+
+    #MENU START
+    def download_link
+      webpage.link(:text, 'Download')
+    end
+
+    def license_link
+      webpage.link(:text, 'License').with_target(LicensePage)
+    end
+#MENU END
+  end
 end
\ No newline at end of file</diff>
      <filename>spec/selenium/examples/selenium_ruby/menu.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,17 +1,17 @@
-module Selenium
-  class SeleniumRubyPage &lt; WebPage
-    attr_reader :menu
-
-    def initialize(browser, expected_title)
-      super(browser, expected_title)
-    end
-
-    def assert_page
-      title.should == @expected_title
-    end
-
-    def menu
-      Menu.new(@browser)
-    end
-  end
+module Selenium
+  class SeleniumRubyPage &lt; WebPage
+    attr_reader :menu
+
+    def initialize(browser, expected_title)
+      super(browser, expected_title)
+    end
+
+    def assert_page
+      title.should == @expected_title
+    end
+
+    def menu
+      Menu.new(@browser)
+    end
+  end
 end
\ No newline at end of file</diff>
      <filename>spec/selenium/examples/selenium_ruby/selenium_ruby_page.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,52 +1,52 @@
-$:.unshift File.join(File.dirname(__FILE__), '..', '..')
-
-require 'lib/selenium/auto_it'
-require 'lib/selenium'
-require 'spec'
-
-module Selenium
-  describe FileUpload do
-    before(:all) do
-      @server = Server.on_port(4440)
-#      @server.print_log = true
-      @server.start
-    end
-
-    after(:all) do
-      @server.stop
-    end
-
-    before do
-      @page = @server.open(BROWSER, 'http://www.rubyforge.org/projects/selenium')
-    end
-
-    after do
-      file = File.join(File.dirname(__FILE__), 'screenshot.png')
-      puts &quot;image at #{file}&quot;
-      @page.capture_screen(file)
-      @page.close
-    end
-
-    # this requires the user to manually enter the login information on rubyforge, and can only be run by selenium admin
-    it 'should handle firefox' do
-      login_link = @page.link(:text, 'Log In')
-      autoit = AutoIt.load
-      login_link.click if login_link.present?
-      AutoItWindow.wait_for(autoit, 'Website Certified by an Unknown Authority').send_keys(' ')
-      @page.wait_for_load
-      @page.wait_until('manual login for test') do |message|
-        puts message
-        not login_link.present?
-      end
-      @page.wait_for_load
-      selenium_project_link = @page.link(:text, 'Selenium')
-      selenium_project_link.should be_present
-      selenium_project_link.click_wait
-      @page.link(:text, 'Files').click_wait
-      @page.link(:href, '/frs/admin/?group_id=2789').click_wait
-      @page.link(:xpath, &quot;//a[@href='qrs.php?package_id=3298&amp;group_id=2789']&quot;).click_wait
-      @page.file_upload(:name, 'userfile').enter(&quot;file:///#{__FILE__}&quot;)
-#      @page.file_upload('userfile').enter(&quot;file:///#{__FILE__}&quot;)
-    end
-  end
+$:.unshift File.join(File.dirname(__FILE__), '..', '..')
+
+require 'lib/selenium/auto_it'
+require 'lib/selenium'
+require 'spec'
+
+module Selenium
+  describe FileUpload do
+    before(:all) do
+      @server = Server.on_port(4440)
+#      @server.print_log = true
+      @server.start
+    end
+
+    after(:all) do
+      @server.stop
+    end
+
+    before do
+      @page = @server.open(BROWSER, 'http://www.rubyforge.org/projects/selenium')
+    end
+
+    after do
+      file = File.join(File.dirname(__FILE__), 'screenshot.png')
+      puts &quot;image at #{file}&quot;
+      @page.capture_screen(file)
+      @page.close
+    end
+
+    # this requires the user to manually enter the login information on rubyforge, and can only be run by selenium admin
+    it 'should handle firefox' do
+      login_link = @page.link(:text, 'Log In')
+      autoit = AutoIt.load
+      login_link.click if login_link.present?
+      AutoItWindow.wait_for(autoit, 'Website Certified by an Unknown Authority').send_keys(' ')
+      @page.wait_for_load
+      @page.wait_until('manual login for test') do |message|
+        puts message
+        not login_link.present?
+      end
+      @page.wait_for_load
+      selenium_project_link = @page.link(:text, 'Selenium')
+      selenium_project_link.should be_present
+      selenium_project_link.click_wait
+      @page.link(:text, 'Files').click_wait
+      @page.link(:href, '/frs/admin/?group_id=2789').click_wait
+      @page.link(:xpath, &quot;//a[@href='qrs.php?package_id=3298&amp;group_id=2789']&quot;).click_wait
+      @page.file_upload(:name, 'userfile').enter(&quot;file:///#{__FILE__}&quot;)
+#      @page.file_upload('userfile').enter(&quot;file:///#{__FILE__}&quot;)
+    end
+  end
 end
\ No newline at end of file</diff>
      <filename>spec/selenium/manual_tc_file_upload.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,37 +1,37 @@
-require &quot;spec&quot;
-
-$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
-
-require 'selenium'
-
-describe 'Time Out Control' do
-
-  before(:each) do
-  end
-
-  after(:each) do
-  end
-
-
-  it &quot;should honor the time out argument&quot; do
-     link_list=[&quot;http://www.myantel.net.mm&quot;,
-               &quot;http://www.khitlunge.net.mm&quot;,
-               &quot;http://www.mrtv4.net.mm&quot;,
-               &quot;http://www.mpt.net.mm&quot;,
-               &quot;http://www.yatanarponteleport.net.mm&quot;,
-               &quot;http://www.net.mm&quot;,
-               &quot;http://www.mwdtv.net.mm&quot;,
-               &quot;http://ns1.net.mm&quot;,
-               &quot;http://www.isy.net.mm&quot;,
-               &quot;http://www.mptmail.net.mm&quot;,
-               &quot;http://www.mrtv3.net.mm&quot;
-
-     ]
-
-     selenium=Selenium::SeleniumDriver.new(&quot;localhost&quot;,4444,&quot;*chrome&quot;, link_list.first, 600000)
-     selenium.start
-     selenium.set_timeout(600000)
-     link_list.each {|url| selenium.open(url) }
-  end
-
-end
+require &quot;spec&quot;
+
+$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
+
+require 'selenium'
+
+describe 'Time Out Control' do
+
+  before(:each) do
+  end
+
+  after(:each) do
+  end
+
+
+  it &quot;should honor the time out argument&quot; do
+     link_list=[&quot;http://www.myantel.net.mm&quot;,
+               &quot;http://www.khitlunge.net.mm&quot;,
+               &quot;http://www.mrtv4.net.mm&quot;,
+               &quot;http://www.mpt.net.mm&quot;,
+               &quot;http://www.yatanarponteleport.net.mm&quot;,
+               &quot;http://www.net.mm&quot;,
+               &quot;http://www.mwdtv.net.mm&quot;,
+               &quot;http://ns1.net.mm&quot;,
+               &quot;http://www.isy.net.mm&quot;,
+               &quot;http://www.mptmail.net.mm&quot;,
+               &quot;http://www.mrtv3.net.mm&quot;
+
+     ]
+
+     selenium=Selenium::SeleniumDriver.new(&quot;localhost&quot;,4444,&quot;*chrome&quot;, link_list.first, 600000)
+     selenium.start
+     selenium.set_timeout(600000)
+     link_list.each {|url| selenium.open(url) }
+  end
+
+end</diff>
      <filename>spec/selenium/manual_tc_timout.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,22 +1,22 @@
-require File.join(File.dirname(__FILE__), &quot;spec_helper&quot;)
-
-module Selenium
-describe 'basic operation with selenium' do
-  before do
-    port = 4567
-    @server = Selenium::Server.on_port(port)
-    @server.start
-    @webpage = @server.open(BROWSER, 'http://localhost:2000/test/index.html')
-    @browser = @webpage.browser
-  end
-
-  after do
-    @browser.stop
-    @webpage.close
-    @server.stop
-  end
-  
-  it 'should click through menus' do
-  end
-end
+require File.join(File.dirname(__FILE__), &quot;spec_helper&quot;)
+
+module Selenium
+describe 'basic operation with selenium' do
+  before do
+    port = 4567
+    @server = Selenium::Server.on_port(port)
+    @server.start
+    @webpage = @server.open(BROWSER, 'http://localhost:2000/test/index.html')
+    @browser = @webpage.browser
+  end
+
+  after do
+    @browser.stop
+    @webpage.close
+    @server.stop
+  end
+  
+  it 'should click through menus' do
+  end
+end
 end
\ No newline at end of file</diff>
      <filename>spec/selenium/tc_basic_operation.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,55 +1,55 @@
-require File.join(File.dirname(__FILE__), &quot;spec_helper&quot;)
-
-#START GOOGLEHOME
-class GoogleHomPage &lt; Selenium::WebPage
-  def initialize(browser)
-    super(browser, 'Google')
-  end
-
-  def title
-    browser.get_title
-  end
-
-  def search_field
-    text_field(:name, 'q')
-  end
-
-  def search_button
-    button(:name, 'btnG')
-  end
-
-end
-#END GOOGLEHOME
-
-context 'Test goole search' do
-  before(:all) do
-    port = 4567
-    @server = Selenium::Server.on_port(port)
-    @server.start
-  end
-
-  before(:each) do
-    @webpage = @server.open(Selenium::BROWSER, 'http://www.google.com/webhp')
-  end
-
-  after(:each) do
-    @webpage.close if @webpage
-  end
-
-  after(:all) do
-    puts &quot;stopping server&quot;
-    @server.stop
-  end
-
-#START DOMAIN
-  specify'searh hello world with google using docmain based script' do
-    page = GoogleHomPage.new(@webpage.browser)
-    page.should be_present
-    page.search_field.enter('hello world')
-    page.search_button.click_wait
-    page.title.should == 'hello world - Google Search'
-    page.search_field.value.should == 'hello world'
-  end
-#END DOMAIN
-
-end
+require File.join(File.dirname(__FILE__), &quot;spec_helper&quot;)
+
+#START GOOGLEHOME
+class GoogleHomPage &lt; Selenium::WebPage
+  def initialize(browser)
+    super(browser, 'Google')
+  end
+
+  def title
+    browser.get_title
+  end
+
+  def search_field
+    text_field(:name, 'q')
+  end
+
+  def search_button
+    button(:name, 'btnG')
+  end
+
+end
+#END GOOGLEHOME
+
+context 'Test goole search' do
+  before(:all) do
+    port = 4567
+    @server = Selenium::Server.on_port(port)
+    @server.start
+  end
+
+  before(:each) do
+    @webpage = @server.open(Selenium::BROWSER, 'http://www.google.com/webhp')
+  end
+
+  after(:each) do
+    @webpage.close if @webpage
+  end
+
+  after(:all) do
+    puts &quot;stopping server&quot;
+    @server.stop
+  end
+
+#START DOMAIN
+  specify'searh hello world with google using docmain based script' do
+    page = GoogleHomPage.new(@webpage.browser)
+    page.should be_present
+    page.search_field.enter('hello world')
+    page.search_button.click_wait
+    page.title.should == 'hello world - Google Search'
+    page.search_field.value.should == 'hello world'
+  end
+#END DOMAIN
+
+end</diff>
      <filename>spec/selenium/tc_domain_example.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,30 +1,30 @@
-require File.join(File.dirname(__FILE__), &quot;spec_helper&quot;)
-
-module Selenium
-  describe HtmlElement do
-    before(:all) do
-      @server = Server.new(4445)
-      @server.start
-      @webpage = @server.open(BROWSER, 'http://localhost:2000/test/index.html')
-    end
-
-    before do
-      @webpage.open_page('/test/index.html')
-    end
-
-    after(:all) do
-      @webpage.close if @webpage
-      @server.stop
-    end
-
-    it 'should support double click and key press' do
-      text_area = @webpage.text_area(:name, 'doubleclick')
-      text_area.enter 'html double click'
-      text_area.double_click
-      @webpage.alert.should be_present
-      @webpage.alert.message.should == 'double clicked with value html double click'
-      text_area.key_press('b')
-      text_area.value.should == 'html double clickb'
-    end
-  end
+require File.join(File.dirname(__FILE__), &quot;spec_helper&quot;)
+
+module Selenium
+  describe HtmlElement do
+    before(:all) do
+      @server = Server.new(4445)
+      @server.start
+      @webpage = @server.open(BROWSER, 'http://localhost:2000/test/index.html')
+    end
+
+    before do
+      @webpage.open_page('/test/index.html')
+    end
+
+    after(:all) do
+      @webpage.close if @webpage
+      @server.stop
+    end
+
+    it 'should support double click and key press' do
+      text_area = @webpage.text_area(:name, 'doubleclick')
+      text_area.enter 'html double click'
+      text_area.double_click
+      @webpage.alert.should be_present
+      @webpage.alert.message.should == 'double clicked with value html double click'
+      text_area.key_press('b')
+      text_area.value.should == 'html double clickb'
+    end
+  end
 end
\ No newline at end of file</diff>
      <filename>spec/selenium/tc_html_element.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,26 +1,26 @@
-require File.join(File.dirname(__FILE__), &quot;spec_helper&quot;)
-
-context 'Test goole search' do
-  before do
-    port = 4567
-    @server = Selenium::Server.on_port(port)
-    @server.start
-    @page = @server.open(Selenium::BROWSER, 'http://www.google.com')
-  end
-
-  after do
-    @page.close
-    @server.stop
-  end
-
-  specify 'search hello world with google using interaction based script' do
-    @page.open_page(&quot;/&quot;)
-    @page.title.should == 'Google'
-    @page.enter(&quot;q&quot;, &quot;hello world&quot;)
-    @page.click(&quot;btnG&quot;)
-    @page.wait_for_load
-    @page.title.should == 'hello world - Google Search'
-  end
-
-end
-#END INTERACTION
+require File.join(File.dirname(__FILE__), &quot;spec_helper&quot;)
+
+context 'Test goole search' do
+  before do
+    port = 4567
+    @server = Selenium::Server.on_port(port)
+    @server.start
+    @page = @server.open(Selenium::BROWSER, 'http://www.google.com')
+  end
+
+  after do
+    @page.close
+    @server.stop
+  end
+
+  specify 'search hello world with google using interaction based script' do
+    @page.open_page(&quot;/&quot;)
+    @page.title.should == 'Google'
+    @page.enter(&quot;q&quot;, &quot;hello world&quot;)
+    @page.click(&quot;btnG&quot;)
+    @page.wait_for_load
+    @page.title.should == 'hello world - Google Search'
+  end
+
+end
+#END INTERACTION</diff>
      <filename>spec/selenium/tc_interaction_example.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,20 +1,20 @@
-require File.join(File.dirname(__FILE__), &quot;spec_helper&quot;)
-
-module Selenium
-describe 'server manager' do
-  it 'supports starting and stopping server on specified port' do
-    server = Server.on_port(4321)
-    server.start
-    server.status.should == &quot;started&quot;
-    server.stop
-    server.status.should == &quot;stopped&quot;
-  end
-
-  it 'should support arguments through start method' do
-    server = Server.on_port(3333)
-    server.start('-timeout 800')
-    server.stop
-  end
-end
-
+require File.join(File.dirname(__FILE__), &quot;spec_helper&quot;)
+
+module Selenium
+describe 'server manager' do
+  it 'supports starting and stopping server on specified port' do
+    server = Server.on_port(4321)
+    server.start
+    server.status.should == &quot;started&quot;
+    server.stop
+    server.status.should == &quot;stopped&quot;
+  end
+
+  it 'should support arguments through start method' do
+    server = Server.on_port(3333)
+    server.start('-timeout 800')
+    server.stop
+  end
+end
+
 end
\ No newline at end of file</diff>
      <filename>spec/selenium/tc_server.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,109 +1,109 @@
-require File.join(File.dirname(__FILE__), &quot;spec_helper&quot;)
-
-module Selenium
-  describe WebPage do
-    before(:all) do
-      @server = Server.new(2344)
-      @server.start
-      @@webpage = nil
-    end
-
-    before do
-      @@webpage.open_page('/') if @@webpage
-    end
-
-    after(:all) do
-      @server.stop
-    end
-
-    def webpage
-      @@webpage = @server.open(BROWSER, 'http://localhost:2000/') unless @@webpage
-      @@webpage
-    end
-
-    it 'should have meaningful to_s support' do
-      webpage = WebPage.new(SeleniumDriver.new('localhost', 2222, '*chrome', 'http://www.example.com', 60000), 'expected title')
-      webpage.to_s.should == 'Selenium::WebPage(\'expected title\') - SeleniumDriver'
-    end
-
-    it 'should create link based on text' do
-      webpage = WebPage.new('browser')
-      webpage.link(:text, 'text').locator.should == 'link=text'
-    end
-
-    it 'should create link based on href' do
-      webpage = WebPage.new('browser')
-      webpage.link(:href, 'a.html').locator.should == &quot;xpath=//a[@href='a.html']&quot;
-    end
-
-    it 'should convert how and what to locator for selenium driver' do
-      webpage.element_locator('name').should == 'name'
-      webpage.element_locator(:id, 'id').should == 'id=id'
-      webpage.element_locator(:name, 'name').should == 'name=name'
-      webpage.element_locator(:xpath, '//a').should == 'xpath=//a'
-    end
-
-    it 'should support elements by passing in name directly' do
-      webpage.open_page('/test/index.html')
-      text_field = webpage.text_field('doubleclick')
-      text_field.locator.should == 'doubleclick'
-      text_field.enter('webpage')
-      webpage.text_area('doubleclick').enter('webpage')
-      webpage.text_area('doubleclick').double_click
-      webpage.should be_alert_present
-      webpage.alert_message.should == 'double clicked with value webpage'
-      webpage.text_area('doubleclick').key_press('a')
-      webpage.text_area('doubleclick').value.should == 'webpagea'
-    end
-
-    it 'should support double click and key press' do
-      webpage.open_page('/test/index.html')
-      webpage.enter('doubleclick', 'webpage')
-      webpage.double_click('doubleclick')
-      webpage.should be_alert_present
-      webpage.alert_message.should == 'double clicked with value webpage'
-      webpage.key_press('doubleclick', 'a')
-      webpage.value('doubleclick').should == 'webpagea'
-    end
-
-    it 'should support context menu' do
-      webpage.open_page('/test/index.html')
-      webpage.context_menu('link=License')
-      webpage.capture_screen(File.join(File.dirname(__FILE__), 'screenshot.png'))
-    end
-
-    it 'should support focus event and fire blur event' do
-      webpage.open_page('/test/index.html')
-      webpage.focus('events')
-      webpage.enter('events', 'value')
-      webpage.value('events').should == 'value'
-      webpage.fire_event('events', 'blur')
-      webpage.should be_alert_present
-      webpage.alert_message.should == 'blurred with value value'
-      webpage.fire_event('events', 'focus')
-#      webpage.focus('events')
-      webpage.value('events').should == 'default'
-    end
-
-    it 'should support key event and check if it is supported' do
-      webpage.open_page('/test/index.httml')
-      webpage.key_down(:shift)
-      webpage.key_up(:shift)
-      [:shift, :meta, :alt, :control].each do |key|
-        key = webpage.key(key)
-        key.down
-        key.up
-      end
-      webpage.key(:alt).down
-
-      Proc.new {webpage.key_up(:command)}.should raise_error(NoKeyError)
-      Proc.new {webpage.key_down(:command)}.should raise_error(NoKeyError)
-    end
-
-    it 'should have speed as attribute' do
-      webpage.speed = 500
-      webpage.speed.should == 500
-    end
-
-  end
-end
+require File.join(File.dirname(__FILE__), &quot;spec_helper&quot;)
+
+module Selenium
+  describe WebPage do
+    before(:all) do
+      @server = Server.new(2344)
+      @server.start
+      @@webpage = nil
+    end
+
+    before do
+      @@webpage.open_page('/') if @@webpage
+    end
+
+    after(:all) do
+      @server.stop
+    end
+
+    def webpage
+      @@webpage = @server.open(BROWSER, 'http://localhost:2000/') unless @@webpage
+      @@webpage
+    end
+
+    it 'should have meaningful to_s support' do
+      webpage = WebPage.new(SeleniumDriver.new('localhost', 2222, '*chrome', 'http://www.example.com', 60000), 'expected title')
+      webpage.to_s.should == 'Selenium::WebPage(\'expected title\') - SeleniumDriver'
+    end
+
+    it 'should create link based on text' do
+      webpage = WebPage.new('browser')
+      webpage.link(:text, 'text').locator.should == 'link=text'
+    end
+
+    it 'should create link based on href' do
+      webpage = WebPage.new('browser')
+      webpage.link(:href, 'a.html').locator.should == &quot;xpath=//a[@href='a.html']&quot;
+    end
+
+    it 'should convert how and what to locator for selenium driver' do
+      webpage.element_locator('name').should == 'name'
+      webpage.element_locator(:id, 'id').should == 'id=id'
+      webpage.element_locator(:name, 'name').should == 'name=name'
+      webpage.element_locator(:xpath, '//a').should == 'xpath=//a'
+    end
+
+    it 'should support elements by passing in name directly' do
+      webpage.open_page('/test/index.html')
+      text_field = webpage.text_field('doubleclick')
+      text_field.locator.should == 'doubleclick'
+      text_field.enter('webpage')
+      webpage.text_area('doubleclick').enter('webpage')
+      webpage.text_area('doubleclick').double_click
+      webpage.should be_alert_present
+      webpage.alert_message.should == 'double clicked with value webpage'
+      webpage.text_area('doubleclick').key_press('a')
+      webpage.text_area('doubleclick').value.should == 'webpagea'
+    end
+
+    it 'should support double click and key press' do
+      webpage.open_page('/test/index.html')
+      webpage.enter('doubleclick', 'webpage')
+      webpage.double_click('doubleclick')
+      webpage.should be_alert_present
+      webpage.alert_message.should == 'double clicked with value webpage'
+      webpage.key_press('doubleclick', 'a')
+      webpage.value('doubleclick').should == 'webpagea'
+    end
+
+    it 'should support context menu' do
+      webpage.open_page('/test/index.html')
+      webpage.context_menu('link=License')
+      webpage.capture_screen(File.join(File.dirname(__FILE__), 'screenshot.png'))
+    end
+
+    it 'should support focus event and fire blur event' do
+      webpage.open_page('/test/index.html')
+      webpage.focus('events')
+      webpage.enter('events', 'value')
+      webpage.value('events').should == 'value'
+      webpage.fire_event('events', 'blur')
+      webpage.should be_alert_present
+      webpage.alert_message.should == 'blurred with value value'
+      webpage.fire_event('events', 'focus')
+#      webpage.focus('events')
+      webpage.value('events').should == 'default'
+    end
+
+    it 'should support key event and check if it is supported' do
+      webpage.open_page('/test/index.httml')
+      webpage.key_down(:shift)
+      webpage.key_up(:shift)
+      [:shift, :meta, :alt, :control].each do |key|
+        key = webpage.key(key)
+        key.down
+        key.up
+      end
+      webpage.key(:alt).down
+
+      Proc.new {webpage.key_up(:command)}.should raise_error(NoKeyError)
+      Proc.new {webpage.key_down(:command)}.should raise_error(NoKeyError)
+    end
+
+    it 'should have speed as attribute' do
+      webpage.speed = 500
+      webpage.speed.should == 500
+    end
+
+  end
+end</diff>
      <filename>spec/selenium/tc_web_page.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-root = File.join(File.dirname(__FILE__))
-Dir.glob(&quot;#{root}/**/tc_*.rb&quot;) do |file|
-  require &quot;#{file}&quot;
-end
+root = File.join(File.dirname(__FILE__))
+Dir.glob(&quot;#{root}/**/tc_*.rb&quot;) do |file|
+  require &quot;#{file}&quot;
+end</diff>
      <filename>spec/ts_selenium.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,42 +1,42 @@
-$:.unshift File.dirname(__FILE__)
-
-require 'rubygems'
-Gem::manage_gems
-require 'rake'
-require 'buildmaster/project'
-require 'buildmaster/project/ruby_forge_project'
-require 'buildmaster/site'
-require 'buildmaster/cotta'
-
-VERSION_NUMBER = BuildMaster::VersionNumberFile.new(BuildMaster::Cotta.parent_of(__FILE__).file('lib/selenium/version'))
-PROJECT = BuildMaster::RubyForgeProject.new('selenium', '2789')
-
-SITE_SPEC = BuildMaster::SiteSpec.new(__FILE__) do |spec|
-  spec.content_dir = 'site'
-  spec.output_dir = 'build/website/selenium'
-  spec.template_file = 'site_template.html'
-  spec.add_property('release', '1.0.7')
-  spec.add_property('prerelease', 'n/a')
-  spec.add_property('snapshot', VERSION_NUMBER.version_number)
-  spec.add_property('source_url', PROJECT.source_repository)
-  spec.add_property('download_url', PROJECT.release_download_url)
-end
-
-SPEC = Gem::Specification.new do |spec|
-  spec.name = 'Selenium'
-  spec.version = VERSION_NUMBER.version_number
-  spec.author = 'Shane Duan'
-  spec.email = 'selenium-ruby@googlegroups.com'
-  spec.homepage = 'http://selenium.rubyforge.org/'
-  spec.platform = Gem::Platform::RUBY
-  spec.summary = 'A project that wraps selenium API into object-oriented testing style and packages it into a RubyGem.'
-  spec.files = FileList[&quot;{bin,docs,lib,spec}/**/*&quot;].exclude(&quot;rdoc&quot;).to_a
-  spec.require_path = 'lib'
-  spec.autorequire = 'selenium'
-  spec.has_rdoc = true
-  spec.extra_rdoc_files = [&quot;README&quot;]
-  spec.bindir = 'bin'
-  spec.executables = ['selenium']
-  spec.default_executable = 'selenium'
-  spec.rubyforge_project = &quot;selenium&quot;
-end
+$:.unshift File.dirname(__FILE__)
+
+require 'rubygems'
+Gem::manage_gems
+require 'rake'
+require 'buildmaster/project'
+require 'buildmaster/project/ruby_forge_project'
+require 'buildmaster/site'
+require 'buildmaster/cotta'
+
+VERSION_NUMBER = BuildMaster::VersionNumberFile.new(BuildMaster::Cotta.parent_of(__FILE__).file('lib/selenium/version'))
+PROJECT = BuildMaster::RubyForgeProject.new('selenium', '2789')
+
+SITE_SPEC = BuildMaster::SiteSpec.new(__FILE__) do |spec|
+  spec.content_dir = 'site'
+  spec.output_dir = 'build/website/selenium'
+  spec.template_file = 'site_template.html'
+  spec.add_property('release', '1.0.7')
+  spec.add_property('prerelease', 'n/a')
+  spec.add_property('snapshot', VERSION_NUMBER.version_number)
+  spec.add_property('source_url', PROJECT.source_repository)
+  spec.add_property('download_url', PROJECT.release_download_url)
+end
+
+SPEC = Gem::Specification.new do |spec|
+  spec.name = 'Selenium'
+  spec.version = VERSION_NUMBER.version_number
+  spec.author = 'Shane Duan'
+  spec.email = 'selenium-ruby@googlegroups.com'
+  spec.homepage = 'http://selenium.rubyforge.org/'
+  spec.platform = Gem::Platform::RUBY
+  spec.summary = 'A project that wraps selenium API into object-oriented testing style and packages it into a RubyGem.'
+  spec.files = FileList[&quot;{bin,docs,lib,spec}/**/*&quot;].exclude(&quot;rdoc&quot;).to_a
+  spec.require_path = 'lib'
+  spec.autorequire = 'selenium'
+  spec.has_rdoc = true
+  spec.extra_rdoc_files = [&quot;README&quot;]
+  spec.bindir = 'bin'
+  spec.executables = ['selenium']
+  spec.default_executable = 'selenium'
+  spec.rubyforge_project = &quot;selenium&quot;
+end</diff>
      <filename>specs.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>635238d4604375c9e44dfc9e2c4fc5dae6c49fe3</id>
    </parent>
  </parents>
  <author>
    <name>wolfdancer</name>
    <email>wolfdancer@gmail.com</email>
  </author>
  <url>http://github.com/wolfdancer/selenium/commit/6307194fe1aaee672b5121e6c5b2040349c93dd6</url>
  <id>6307194fe1aaee672b5121e6c5b2040349c93dd6</id>
  <committed-date>2008-08-28T21:26:09-07:00</committed-date>
  <authored-date>2008-08-28T21:26:09-07:00</authored-date>
  <message>line ending fix probably done by git</message>
  <tree>e3749528a1b0595b2752fe293d38203824b4d348</tree>
  <committer>
    <name>wolfdancer</name>
    <email>wolfdancer@gmail.com</email>
  </committer>
</commit>
