diff --git a/app/assets/javascripts/new_admin.js b/app/assets/javascripts/new_admin.js
index f20267cd..70bc22bd 100644
--- a/app/assets/javascripts/new_admin.js
+++ b/app/assets/javascripts/new_admin.js
@@ -15,4 +15,5 @@
 //= require tinymce_orbit
 //= require orbit-bar-search
 //= require side_bar_history
+//= require rss
 //= require ajax_form
\ No newline at end of file
diff --git a/app/assets/javascripts/tinymce_orbit.js b/app/assets/javascripts/tinymce_orbit.js
index 71264fde..9e0853e3 100644
--- a/app/assets/javascripts/tinymce_orbit.js
+++ b/app/assets/javascripts/tinymce_orbit.js
@@ -1,29 +1,90 @@
 function load_tinymce() {
   $('.tinymce_textarea').tinymce({
+
+    // General options
     theme: 'advanced',
-        plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
+    file_browser_callback : 'myFileBrowser',
+    plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",
 
-        // Theme options
-        theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect",
-        theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,bullist,numlist,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,forecolor,backcolor",
-        theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,fullscreen",
-        theme_advanced_toolbar_location : "top",
-        theme_advanced_toolbar_align : "left",
-        theme_advanced_statusbar_location : "bottom",
-        theme_advanced_resizing : true,
+    // Theme options
+    theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontselect,fontsizeselect",
+    theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,bullist,numlist,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,forecolor,backcolor",
+    theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,fullscreen",
+    theme_advanced_toolbar_location : "top",
+    theme_advanced_toolbar_align : "left",
+    theme_advanced_statusbar_location : "bottom",
+    theme_advanced_resizing : true,
 
-        // Skin options
-        skin : "o2k7",
-        skin_variant : "silver",
+    // Skin options
+    skin : "o2k7",
+    skin_variant : "silver",
 
-        // Drop lists for link/image/media/template dialogs
-        template_external_list_url : "js/template_list.js",
-        external_link_list_url : "js/link_list.js",
-        external_image_list_url : "js/image_list.js",
-        media_external_list_url : "js/media_list.js"
+    // Drop lists for link/image/media/template dialogs
+    template_external_list_url : "js/template_list.js",
+    // external_link_list_url : "js/link_list.js",
+    // external_image_list_url : "js/image_list.js",
+    // media_external_list_url : "js/media_list.js"
+
+    // Style formats
+    style_formats : [
+      {title : 'Bold text', inline : 'b'},
+      {title : 'Red text', inline : 'span', styles : {color : '#ff0000'}},
+      {title : 'Red header', block : 'h1', styles : {color : '#ff0000'}},
+      {title : 'Example 1', inline : 'span', classes : 'example1'},
+      {title : 'Example 2', inline : 'span', classes : 'example2'},
+      {title : 'Table styles'},
+      {title : 'Table row 1', selector : 'tr', classes : 'tablerow1'}
+    ],
+
+    // Replace values for the template plugin
+    template_replace_values : {
+      username : "Some User",
+      staffid : "991234"
+    }
   });
+  function myFileBrowser (field_name, url, type, win) {
+
+
+  var cmsURL = window.location.toString();
+    cmsURL = cmsURL.split("/");
+  //  cmsURL = "http:///modules/modules/filemanager/"; 
+    
+    // script URL - use an absolute path!
+  if (cmsURL.indexOf("?") < 0) {
+      //add the type as the only query parameter
+      cmsURL = cmsURL + "?type=" + type;
+  }
+  else {
+      //add the type as an additional query parameter
+      // (PHP session ID is now included if there is one at all)
+      cmsURL = cmsURL + "&type=" + type;
+  }
+
+  tinyMCE.activeEditor.windowManager.open({
+      file : cmsURL,
+      title : 'File Browser',
+      width : 850,  // Your dimensions may differ - toy around with them!
+      height : 455,
+      resizable : "no",
+      inline : "no",  // This parameter only has an effect if you use the inlinepopups plugin!
+      close_previous : "no"
+  }, {
+      window : win,
+      input : field_name
+  });
+  return false;
+  }
+  function ajaxSave() {
+    var ed = tinyMCE.get('content');
+    // Do you ajax call here, window.setTimeout fakes ajax call
+    ed.setProgressState(1); // Show progress
+    window.setTimeout(function() {
+      ed.setProgressState(0); // Hide progress
+      alert(ed.getContent());
+    }, 3000);
+  }
 }
 
 $(document).ready(function() {
   load_tinymce();
-});
\ No newline at end of file
+});
diff --git a/app/controllers/admin/asset_categories_controller.rb b/app/controllers/admin/asset_categories_controller.rb
new file mode 100644
index 00000000..22efd03f
--- /dev/null
+++ b/app/controllers/admin/asset_categories_controller.rb
@@ -0,0 +1,65 @@
+class Admin::AssetCategoriesController < OrbitBackendController
+
+  def index
+    @asset_categories = AssetCategory.all
+    @asset_category = AssetCategory.new
+    @url = admin_asset_categories_path
+
+  end
+
+  def show
+    @asset_category = AssetCategory.find(params[:id])
+  end
+
+  def new
+    @asset_category = AssetCategory.new
+  end
+  
+  def edit
+    @asset_category = AssetCategory.find(params[:id])
+    @i18n_variable = @asset_category.i18n_variable	
+    @url = admin_asset_categories_path(@asset_category)
+  end
+
+  def create
+    @asset_category = AssetCategory.new(params[:asset_category])
+
+    respond_to do |format|
+      if @asset_category.save
+        format.html { redirect_to(admin_asset_categories_url, :notice => t('announcement.create_asset_category_success')) }
+        format.js
+      else
+        format.html { render :action => "new" }
+        format.js { render action: "new" }
+      end
+    end
+  end
+
+  def update
+    @asset_category = AssetCategory.find(params[:id])
+	
+	@url = admin_asset_categories_path(@asset_category)
+
+    respond_to do |format|
+      if @asset_category.update_attributes(params[:asset_category])
+        # format.html { redirect_to(panel_announcement_back_end_asset_category_url(@asset_category), :notice => t('asset_category.update_asset_category_success')) }
+        # format.html { redirect_to(panel_announcement_back_end_asset_categories_url, :notice => t('asset_category.update_asset_category_success')) }
+        # format.xml  { head :ok }
+        format.js
+      else
+        format.html { render :action => "edit" }
+        format.js { render :action => "edit" }
+      end
+    end
+  end
+
+  def destroy
+    @asset_category = AssetCategory.find(params[:id])
+    @asset_category.destroy
+
+    respond_to do |format|
+      format.html { redirect_to(admin_asset_categories_url) }
+      format.js
+    end
+  end
+end
diff --git a/app/controllers/admin/assets_controller.rb b/app/controllers/admin/assets_controller.rb
index 1591cf39..b595ed5b 100644
--- a/app/controllers/admin/assets_controller.rb
+++ b/app/controllers/admin/assets_controller.rb
@@ -1,11 +1,7 @@
-class Admin::AssetsController < ApplicationController
-
-  layout "admin"
-  before_filter :authenticate_user!
-  before_filter :is_admin?
+class Admin::AssetsController < OrbitBackendController
   
   def index
-    @assets = Asset.all.entries
+    @assets = (params[:sort] || @filter) ? get_sorted_and_filtered("asset") : Asset.all.page(params[:page]).per(10)
   end
   
   def show
@@ -14,6 +10,7 @@ class Admin::AssetsController < ApplicationController
   
   def new
     @asset = Asset.new
+    @asset_categories = AssetCategory.all
     respond_to do |format|
       format.html {}
       format.js { render 'js/show_pop_up', :locals => {:partial => 'admin/assets/new'} }
@@ -22,6 +19,7 @@ class Admin::AssetsController < ApplicationController
   
   def edit
     @asset = Asset.find(params[:id])
+    @asset_categories = AssetCategory.all
     respond_to do |format|
       format.html {}
       format.js { render 'js/show_pop_up', :locals => {:partial => 'admin/assets/edit'} }
@@ -33,7 +31,7 @@ class Admin::AssetsController < ApplicationController
     if @asset.save
       respond_to do |format|
         format.html { redirect_to admin_assets_url }
-        format.js { render 'js/remove_pop_up_and_reload_content', :locals => {:function => 'append', :id => 'asset_tbody', :value => @asset, :values => nil, :partial => 'admin/assets/asset', :locals => nil} }
+        format.js { render 'js/remove_pop_up_and_reload_content', :locals => {:function => 'append', :id => 'tbody_assets', :value => @asset, :values => nil, :partial => 'admin/assets/asset', :locals => nil} }
       end
     else
       respond_to do |format|
@@ -66,5 +64,12 @@ class Admin::AssetsController < ApplicationController
       format.js { render 'js/remove_element', :locals => {:id => "asset_#{@asset.id}"} }
     end
   end
+
+  def delete
+    if params[:to_delete]
+      asset = Asset.any_in(:_id => params[:to_delete]).delete_all
+    end
+    redirect_to assets_url(:filter => params[:filter], :direction => params[:direction], :sort => params[:sort], :sort_options => params[:sort_options])
+  end
   
 end
diff --git a/app/models/asset.rb b/app/models/asset.rb
index c44e8be1..2bb02dfc 100644
--- a/app/models/asset.rb
+++ b/app/models/asset.rb
@@ -9,5 +9,8 @@ class Asset
   field :description
   
   validates_presence_of :filename, :data
+
+  belongs_to :asset_category
+  belongs_to :assetable, polymorphic: true
   
 end
diff --git a/app/models/asset_category.rb b/app/models/asset_category.rb
new file mode 100644
index 00000000..89bceaf7
--- /dev/null
+++ b/app/models/asset_category.rb
@@ -0,0 +1,16 @@
+class AssetCategory
+  include Mongoid::Document
+  include Mongoid::Timestamps
+
+  field :key
+  field :display
+  
+  has_one :i18n_variable, :as => :language_value, :autosave => true, :dependent => :destroy
+  
+  has_many :assets
+  
+  def self.from_id(id)
+    AssetCategory.find(id) rescue nil
+  end
+  
+end
\ No newline at end of file
diff --git a/app/uploaders/asset_uploader.rb b/app/uploaders/asset_uploader.rb
index 1e07bca6..f59e20a0 100644
--- a/app/uploaders/asset_uploader.rb
+++ b/app/uploaders/asset_uploader.rb
@@ -48,8 +48,8 @@ class AssetUploader < CarrierWave::Uploader::Base
   # end
 
   # Override the filename of the uploaded files:
-  # def filename
-  #   "something.jpg" if original_filename
-  # end
+  def filename
+    model.filename
+  end
 
 end
diff --git a/app/views/admin/asset_categories/_asset_category.html.erb b/app/views/admin/asset_categories/_asset_category.html.erb
new file mode 100644
index 00000000..d7047e36
--- /dev/null
+++ b/app/views/admin/asset_categories/_asset_category.html.erb
@@ -0,0 +1,17 @@
+
+	
+		| +			<%= asset_category.key %>
+ +		<% @site_valid_locales.each do |locale| %>
++
+				 
+
+						<%= link_to t('asset_category.edit'), edit_admin_asset_category_path(asset_category), :remote => true %>+<%= link_to t('asset_category.delete'), admin_asset_category_path(asset_category), :confirm => t('announcement.sure?'), :method => :delete, :remote => true %>+					
+ 
+			 | <%= asset_category.i18n_variable[locale] rescue nil %>+		<% end %>
+ | 
diff --git a/app/views/admin/asset_categories/_form.html.erb b/app/views/admin/asset_categories/_form.html.erb
new file mode 100644
index 00000000..5c64146f
--- /dev/null
+++ b/app/views/admin/asset_categories/_form.html.erb
@@ -0,0 +1,30 @@
+<% # encoding: utf-8 %>
+
+<%= form_for(@asset_category, :remote => true, :url => @url) do |f| %>
+
+	<%= (@asset_category.new_record? ? 'Add' : 'Edit') %>
+
+	
+		<%= f.label :key %>
+		<%= f.text_field :key %>
+	
+	
+	
+  
+  
+  
+<% end %>
+ 
\ No newline at end of file
diff --git a/app/views/admin/asset_categories/create.js.erb b/app/views/admin/asset_categories/create.js.erb
new file mode 100644
index 00000000..8da391d7
--- /dev/null
+++ b/app/views/admin/asset_categories/create.js.erb
@@ -0,0 +1,2 @@
+$('<%= j render :partial => 'asset_category', :collection => [@asset_category] %>').appendTo('#asset_categories').hide().fadeIn();
+$("#new_asset_category")[0].reset();
\ No newline at end of file
diff --git a/app/views/admin/asset_categories/destroy.js.erb b/app/views/admin/asset_categories/destroy.js.erb
new file mode 100644
index 00000000..4c336e78
--- /dev/null
+++ b/app/views/admin/asset_categories/destroy.js.erb
@@ -0,0 +1 @@
+$("#<%= dom_id @asset_category %>").remove();
\ No newline at end of file
diff --git a/app/views/admin/asset_categories/edit.js.erb b/app/views/admin/asset_categories/edit.js.erb
new file mode 100644
index 00000000..eaff01fa
--- /dev/null
+++ b/app/views/admin/asset_categories/edit.js.erb
@@ -0,0 +1 @@
+$("#form > form").replaceWith("<%= j render "form" %>");
\ No newline at end of file
diff --git a/app/views/admin/asset_categories/index.html.erb b/app/views/admin/asset_categories/index.html.erb
new file mode 100644
index 00000000..f1d1a787
--- /dev/null
+++ b/app/views/admin/asset_categories/index.html.erb
@@ -0,0 +1,41 @@
+
+<%= flash_messages %>
+
+
+
+
+
+	
+		
+			| +			<% @site_valid_locales.each do |locale| %>
+ | +			<% end %>
+ | 
+	
+	
+
+	<%= render :partial => 'asset_category', :collection => @asset_categories %>
+	
+	
+
+
+<%= render :partial => "form" %>
+
+
+
diff --git a/app/views/admin/asset_categories/new.js.erb b/app/views/admin/asset_categories/new.js.erb
new file mode 100644
index 00000000..40061b9f
--- /dev/null
+++ b/app/views/admin/asset_categories/new.js.erb
@@ -0,0 +1 @@
+$("#form > form").replaceWith("<%= j render "form" %>");
diff --git a/app/views/admin/asset_categories/update.js.erb b/app/views/admin/asset_categories/update.js.erb
new file mode 100644
index 00000000..75ef202e
--- /dev/null
+++ b/app/views/admin/asset_categories/update.js.erb
@@ -0,0 +1,4 @@
+$("#<%= dom_id @asset_category %>").replaceWith("<%= j render :partial => 'asset_category', :collection => [@asset_category] %>");
+<% @asset_category = AssetCategory.new(:display => 'List') # reset for new form %>
+$(".edit_asset_category").replaceWith("<%= j render "form" %>")
+$(".new_asset_category")[0].reset();
\ No newline at end of file
diff --git a/app/views/admin/assets/_asset.html.erb b/app/views/admin/assets/_asset.html.erb
index ea71dc6c..99ac636e 100644
--- a/app/views/admin/assets/_asset.html.erb
+++ b/app/views/admin/assets/_asset.html.erb
@@ -1,17 +1,16 @@
-
-	| <%= asset.id %>- | <%= image_tag(asset.data.url) %>-	<%#= link_to asset.filename, asset.data.url, :target => '_blank' %>
+ | 
+	| <%= check_box_tag 'to_delete[]', asset.id, false, :class => "checkbox_in_list" %>+ | + <%= image_tag(asset.data.url) %>+ 
+			 
+				<%= link_to t(:edit), edit_admin_asset_path(asset), :remote => true, :class => 'edit'  %>+<%= link_to t(:delete), admin_asset_path(asset), :confirm => t('sure?'), :method => :delete, :class => 'delete' %>+ 
+		 | <%= asset.description %> | <%= asset.data.file.content_type %> | <%= asset.data_identifier %> | <%= number_to_human_size(asset.data.file.file_length) %>- | -	  <%= link_to t(:edit), edit_admin_asset_path(asset), :remote => true, :class => 'edit' %>
-	  <%= link_to t(:delete), admin_asset_path(asset), :confirm => t('sure?'), :method => :delete, :remote => true, :class => 'delete' %>
- | 
-
-  | - | 
\ No newline at end of file
diff --git a/app/views/admin/assets/_edit.html.erb b/app/views/admin/assets/_edit.html.erb
index a747d4f2..a62524c0 100644
--- a/app/views/admin/assets/_edit.html.erb
+++ b/app/views/admin/assets/_edit.html.erb
@@ -9,7 +9,7 @@
     		<%= link_back %>
 				<%= f.submit t(:edit) %>
 			<% else %>
-				<%= t(:edit) %>
+				<%= t(:update) %>
 			<% end %>
 	  
 	<% end %>
diff --git a/app/views/admin/assets/_filter.html.erb b/app/views/admin/assets/_filter.html.erb
new file mode 100644
index 00000000..02ba839b
--- /dev/null
+++ b/app/views/admin/assets/_filter.html.erb
@@ -0,0 +1,11 @@
+
+
+<% content_for :page_specific_javascript do %>
+	<%= javascript_include_tag "sort_header" %>
+<% end %>
\ No newline at end of file
diff --git a/app/views/admin/assets/_form.html.erb b/app/views/admin/assets/_form.html.erb
index 72199ceb..6abb883e 100644
--- a/app/views/admin/assets/_form.html.erb
+++ b/app/views/admin/assets/_form.html.erb
@@ -8,6 +8,11 @@
 <%= f.text_field :description, :class => 'text' %>
 
 
+
+<%= f.label :category %>
+<%= f.select :asset_category_id, @asset_categories.collect{|t| [ t.i18n_variable[I18n.locale], t.id ]}, {}, :class => "input-medium" %>
+
+
 
 <%= f.label :data, t('admin.data'), :class => 'file' %>
 <%= f.file_field :data %>
diff --git a/app/views/admin/assets/_sort_headers.html.erb b/app/views/admin/assets/_sort_headers.html.erb
new file mode 100644
index 00000000..2c8ca234
--- /dev/null
+++ b/app/views/admin/assets/_sort_headers.html.erb
@@ -0,0 +1,5 @@
+<%= render_sort_bar(true, ['title', 'title','span1-2', 'admin.title'],
+													['description', 'description', 'span1-2', 'admin.description'],
+													['intro', 'intro', 'span1-2', 'admin.intro'],
+													['intro', 'intro', 'span1-2', 'admin.intro'],
+													['intro', 'intro', 'span1-2', 'admin.file_length']).html_safe %>
diff --git a/app/views/admin/assets/index.html.erb b/app/views/admin/assets/index.html.erb
index c31db0c7..7424eb6c 100644
--- a/app/views/admin/assets/index.html.erb
+++ b/app/views/admin/assets/index.html.erb
@@ -1,32 +1,31 @@
-<% content_for :secondary do %>
-
-  
-	- <%= link_to t(:new_asset, :scope => :admin), new_admin_asset_path, :remote => true, :class => 'button positive' %>-
- <%= link_to t('admin.assets.file'), '', :remote => true, :class => 'button positive' %>-
- <%= link_to t('admin.assets.album'), '',  :remote => true, :class => 'button positive'%>-
- <%= link_to t('admin.assets.video'), '',  :remote => true, :class => 'button positive' %>-
- <%= link_to t('admin.assets.book'), '',  :remote => true, :class => 'button positive' %>-
-
-	
<%= t('admin.list_assets') %>
-
-	
+<%= form_for :assets, :url => delete_admin_assets_path(:direction => params[:direction], :sort => params[:sort], :filter => @filter, :new_filter => nil, :sort_options => params[:sort_options]), :html => {:id => 'delete_all'}, :remote => true do %>
+	<%= render 'filter' %>
+	
 		
-		  
-			  | <%= t('admin.id') %>
- | <%= t('admin.file_name') %>
- | <%= t('admin.description') %>
- | <%= t('admin.format') %>
- | <%= t('admin.orig_upload_file') %>
- | <%= t('admin.file_size') %>
- | <%= t('admin.action') %>
- | 
+			
+			    | + | + | + | + | + | + | 
 		
-		
+		
 			<%= render :partial => 'asset', :collection => @assets %>
-		
+		
 	
-
\ No newline at end of file
+<% end %>
+
+
+
+<% content_for :page_specific_javascript do %>
+	<%= javascript_include_tag "/static/jquery.cycle.all.latest.js" %>
+	<%= javascript_include_tag "inc/modal-preview" %>
+<% end %>
+
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 02624772..2dac58e9 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -24,6 +24,9 @@ Orbit::Application.configure do
   config.action_dispatch.best_standards_support = :builtin  
 
 
+  config.assets.debug = true
+
+
   # config.middleware.use ExceptionNotifier,
   #   :email_prefix => "[R4_error]",
   #   :sender_address => %{"notifier" },
diff --git a/config/routes.rb b/config/routes.rb
index d2294c17..24862361 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -13,7 +13,12 @@ Orbit::Application.routes.draw do
   # routes for admin
   namespace :admin do
     mount Resque::Server.new, :at => "/resque"
-    resources :assets
+    resources :assets do   
+      collection do
+        post 'delete'
+      end
+    end
+    resources :asset_categories
     resources :app_auths 
     resources :object_auths  do
       match 'new_interface/:ob_type/:title/new' => "object_auths_new_interface#new" ,:as => :init_ob_auth,:via => :get
diff --git a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_form.html.erb b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_form.html.erb
index 4e3368b2..4ffea341 100644
--- a/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_form.html.erb
+++ b/vendor/built_in_modules/announcement/app/views/panel/announcement/back_end/bulletins/_form.html.erb
@@ -50,13 +50,13 @@
 				
 					
 					
-						<%= f.date_select :postdate, {:use_month_numbers => true, :order => [:day, :month, :year] }, {:class => 'input-small'} %>				
+						<%= f.datetime_select :postdate, {:use_month_numbers => true, :order => [:day, :month, :year] }, {:class => 'input-small'} %>				
 					
 				 
 				
 					
 					
-						<%= f.date_select :deadline, {:use_month_numbers => true, :prompt => { :month => 'Month', :day => 'Day', :year => 'Year'}, :order => [:day, :month, :year] }, {:class => 'input-small'} %>
+						<%= f.datetime_select :deadline, {:use_month_numbers => true, :prompt => { :month => 'Month', :day => 'Day', :year => 'Year'}, :order => [:day, :month, :year] }, {:class => 'input-small'} %>