diff --git a/app/views/time_entry_reports/report.rhtml b/app/views/time_entry_reports/report.rhtml
index 5ae9d6550de59c94ea5d63691ffe723fba68e9fd..18e782cc4e56611e3cd920c8c7dcc4fd262beab9 100644
--- a/app/views/time_entry_reports/report.rhtml
+++ b/app/views/time_entry_reports/report.rhtml
@@ -6,7 +6,7 @@
 
 <h2><%= l(:label_spent_time) %></h2>
 
-<% form_remote_tag(:url => {}, :html => {:method => :get, :id => 'query_form'}, :method => :get, :update => 'content') do %>
+<% form_tag({:controller => 'time_entry_reports', :action => 'report', :project_id => @project, :issue_id => @issue}, :method => :get, :id => 'query_form') do %>
   <% @criterias.each do |criteria| %>
     <%= hidden_field_tag 'criterias[]', criteria, :id => nil %>
   <% end %>
@@ -22,14 +22,11 @@
                                                         :onchange => "this.form.onsubmit();" %>
 
   <%= l(:button_add) %>: <%= select_tag('criterias[]', options_for_select([[]] + (@available_criterias.keys - @criterias).collect{|k| [l_or_humanize(@available_criterias[k][:label]), k]}),
-                                                          :onchange => "this.form.onsubmit();",
+                                                          :onchange => "this.form.submit();",
                                                           :style => 'width: 200px',
                                                           :id => nil,
                                                           :disabled => (@criterias.length >= 3)) %>
-     <%= link_to_remote l(:button_clear), {:url => {:project_id => @project, :period_type => params[:period_type], :period => params[:period], :from => @from, :to => @to, :columns => @columns},
-                                           :method => :get,
-                                           :update => 'content'
-                                          }, :class => 'icon icon-reload' %></p>
+     <%= link_to l(:button_clear), {:project_id => @project, :issue_id => @issue, :period_type => params[:period_type], :period => params[:period], :from => @from, :to => @to, :columns => @columns}, :class => 'icon icon-reload' %></p>
 <% end %>
 
 <% unless @criterias.empty? %>
diff --git a/app/views/timelog/_date_range.rhtml b/app/views/timelog/_date_range.rhtml
index 727de25ed83f13c212dd0535d764b009f4ca6703..42ea53b716b932bb5ceadb9aa3bdc7a74c720383 100644
--- a/app/views/timelog/_date_range.rhtml
+++ b/app/views/timelog/_date_range.rhtml
@@ -4,7 +4,7 @@
 <p>
 <%= radio_button_tag 'period_type', '1', !@free_period %>
 <%= select_tag 'period', options_for_period_select(params[:period]),
-                         :onchange => 'this.form.onsubmit();',
+                         :onchange => 'this.form.submit();',
                          :onfocus => '$("period_type_1").checked = true;' %>
 </p>
 <p>
@@ -17,12 +17,8 @@
 </div>
 </fieldset>
 <p class="buttons">
-	<%= link_to_remote l(:button_apply), 
-	                   { :url => { },
-	                     :update => "content",
-                            :with => "Form.serialize('query_form')",
-                            :method => :get
-	                   }, :class => 'icon icon-checked' %>
+	<%= link_to_function l(:button_apply), '$("query_form").submit()', :class => 'icon icon-checked' %>
+  <%= link_to l(:button_clear), {:controller => controller_name, :action => action_name, :project_id => @project, :issue_id => @issue}, :class => 'icon icon-reload' %>
 </p>
 
 <div class="tabs">
diff --git a/app/views/timelog/index.html.erb b/app/views/timelog/index.html.erb
index 737476f35408c91de14ec0cfefd1df3423d942a4..d943d4303e9ae861c03e7f505f1ad368c11dea7b 100644
--- a/app/views/timelog/index.html.erb
+++ b/app/views/timelog/index.html.erb
@@ -6,11 +6,7 @@
 
 <h2><%= l(:label_spent_time) %></h2>
 
-<% form_remote_tag( :url => {}, :html => {:method => :get, :id => 'query_form'}, :method => :get, :update => 'content' ) do %>
-<%# TOOD: remove the project_id and issue_id hidden fields, that information is
-already in the URI %>
-<%= hidden_field_tag('project_id', params[:project_id]) if @project %>
-<%= hidden_field_tag 'issue_id', params[:issue_id] if @issue %>
+<% form_tag({:controller => 'timelog', :action => 'index', :project_id => @project, :issue_id => @issue}, :method => :get, :id => 'query_form') do %>
 <%= render :partial => 'date_range' %>
 <% end %>
 
diff --git a/config/routes.rb b/config/routes.rb
index 3b37b515089ff54d4b6fcd36bffc1a57540bdce2..378fdb0b91efecba00830f4c59f0d9528ae31c98 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -14,14 +14,15 @@ ActionController::Routing::Routes.draw do |map|
   map.connect 'roles/workflow/:id/:role_id/:tracker_id', :controller => 'roles', :action => 'workflow'
   map.connect 'help/:ctrl/:page', :controller => 'help'
 
-  map.connect 'projects/:project_id/time_entries/report', :controller => 'time_entry_reports', :action => 'report'
   map.with_options :controller => 'time_entry_reports', :action => 'report',:conditions => {:method => :get} do |time_report|
+    time_report.connect 'projects/:project_id/issues/:issue_id/time_entries/report'
+    time_report.connect 'projects/:project_id/issues/:issue_id/time_entries/report.:format'
+    time_report.connect 'projects/:project_id/time_entries/report'
+    time_report.connect 'projects/:project_id/time_entries/report.:format'
     time_report.connect 'time_entries/report'
     time_report.connect 'time_entries/report.:format'
-    time_report.connect 'projects/:project_id/time_entries/report.:format'
   end
 
-  # TODO: wasteful since this is also nested under issues, projects, and projects/issues
   map.resources :time_entries, :controller => 'timelog'
   
   map.connect 'projects/:id/wiki', :controller => 'wikis', :action => 'edit', :conditions => {:method => :post}
diff --git a/test/functional/time_entry_reports_controller_test.rb b/test/functional/time_entry_reports_controller_test.rb
index 70a3d1c72e9dc6105b33c3534c38d9517a8e4c7a..b53eebd7eb389adf67ebbee73d1ac69427f39d9d 100644
--- a/test/functional/time_entry_reports_controller_test.rb
+++ b/test/functional/time_entry_reports_controller_test.rb
@@ -4,16 +4,20 @@ require File.expand_path('../../test_helper', __FILE__)
 class TimeEntryReportsControllerTest < ActionController::TestCase
   fixtures :projects, :enabled_modules, :roles, :members, :member_roles, :issues, :time_entries, :users, :trackers, :enumerations, :issue_statuses, :custom_fields, :custom_values
 
-  def test_report_no_criteria
-    get :report, :project_id => 1
+  def test_report_at_project_level
+    get :report, :project_id => 'ecookbook'
     assert_response :success
     assert_template 'report'
+    assert_tag :form,
+      :attributes => {:action => "/projects/ecookbook/time_entries/report", :id => 'query_form'}
   end
   
   def test_report_all_projects
     get :report
     assert_response :success
     assert_template 'report'
+    assert_tag :form,
+      :attributes => {:action => "/time_entries/report", :id => 'query_form'}
   end
   
   def test_report_all_projects_denied
@@ -80,6 +84,8 @@ class TimeEntryReportsControllerTest < ActionController::TestCase
     assert_template 'report'
     assert_not_nil assigns(:total_hours)
     assert_equal "154.25", "%.2f" % assigns(:total_hours)
+    assert_tag :form,
+      :attributes => {:action => "/projects/ecookbook/issues/1/time_entries/report", :id => 'query_form'}
   end
   
   def test_report_custom_field_criteria
diff --git a/test/functional/timelog_controller_test.rb b/test/functional/timelog_controller_test.rb
index 634363dd1e1b68e53f6fc2635636a57e3a10acf5..669014d8abf7b66923a662889433bb0ad24e9ba0 100644
--- a/test/functional/timelog_controller_test.rb
+++ b/test/functional/timelog_controller_test.rb
@@ -163,10 +163,12 @@ class TimelogControllerTest < ActionController::TestCase
     assert_template 'index'
     assert_not_nil assigns(:total_hours)
     assert_equal "162.90", "%.2f" % assigns(:total_hours)
+    assert_tag :form,
+      :attributes => {:action => "/time_entries", :id => 'query_form'}
   end
   
   def test_index_at_project_level
-    get :index, :project_id => 1
+    get :index, :project_id => 'ecookbook'
     assert_response :success
     assert_template 'index'
     assert_not_nil assigns(:entries)
@@ -178,10 +180,12 @@ class TimelogControllerTest < ActionController::TestCase
     # display all time by default
     assert_equal '2007-03-12'.to_date, assigns(:from)
     assert_equal '2007-04-22'.to_date, assigns(:to)
+    assert_tag :form,
+      :attributes => {:action => "/projects/ecookbook/time_entries", :id => 'query_form'}
   end
   
   def test_index_at_project_level_with_date_range
-    get :index, :project_id => 1, :from => '2007-03-20', :to => '2007-04-30'
+    get :index, :project_id => 'ecookbook', :from => '2007-03-20', :to => '2007-04-30'
     assert_response :success
     assert_template 'index'
     assert_not_nil assigns(:entries)
@@ -190,24 +194,30 @@ class TimelogControllerTest < ActionController::TestCase
     assert_equal "12.90", "%.2f" % assigns(:total_hours)
     assert_equal '2007-03-20'.to_date, assigns(:from)
     assert_equal '2007-04-30'.to_date, assigns(:to)
+    assert_tag :form,
+      :attributes => {:action => "/projects/ecookbook/time_entries", :id => 'query_form'}
   end
 
   def test_index_at_project_level_with_period
-    get :index, :project_id => 1, :period => '7_days'
+    get :index, :project_id => 'ecookbook', :period => '7_days'
     assert_response :success
     assert_template 'index'
     assert_not_nil assigns(:entries)
     assert_not_nil assigns(:total_hours)
     assert_equal Date.today - 7, assigns(:from)
     assert_equal Date.today, assigns(:to)
+    assert_tag :form,
+      :attributes => {:action => "/projects/ecookbook/time_entries", :id => 'query_form'}
   end
 
   def test_index_one_day
-    get :index, :project_id => 1, :from => "2007-03-23", :to => "2007-03-23"
+    get :index, :project_id => 'ecookbook', :from => "2007-03-23", :to => "2007-03-23"
     assert_response :success
     assert_template 'index'
     assert_not_nil assigns(:total_hours)
     assert_equal "4.25", "%.2f" % assigns(:total_hours)
+    assert_tag :form,
+      :attributes => {:action => "/projects/ecookbook/time_entries", :id => 'query_form'}
   end
   
   def test_index_at_issue_level
@@ -221,6 +231,10 @@ class TimelogControllerTest < ActionController::TestCase
     # display all time based on what's been logged
     assert_equal '2007-03-12'.to_date, assigns(:from)
     assert_equal '2007-04-22'.to_date, assigns(:to)
+    # TODO: remove /projects/:project_id/issues/:issue_id/time_entries routes
+    # to use /issues/:issue_id/time_entries
+    assert_tag :form,
+      :attributes => {:action => "/projects/ecookbook/issues/1/time_entries", :id => 'query_form'}
   end
   
   def test_index_atom_feed