Changeset 5767

Show
Ignore:
Timestamp:
05/28/08 13:29:49 (6 months ago)
Author:
uta
Message:

2008/05/28 sync

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • rubricks_core/trunk/app/controllers/application.rb

    r5759 r5767  
    231231          url   = url_for(:controller => '/system/login', :action => 'auth', :params => caller_params) 
    232232        end 
     233        status  = 401 if ajax? 
    233234      end 
    234235    else 
  • rubricks_core/trunk/app/models/rubricks_block_view.rb

    r4567 r5767  
    1 # Model to manage block display position. 
    2 # Keeps relation information with RUBRICKS_MENU_ITEM table 
    3 # for displaying block on which page. 
    4 # (Rubricks manages Menu = Page) 
    51class RubricksBlockView < ActiveRecord::Base 
    62  belongs_to                :rubricks_block 
  • rubricks_core/trunk/app/models/rubricks_component_function.rb

    r4991 r5767  
    1 # This model keeps pemission information. 
    2 # More than one permission can be defined for each component. 
    3 # This permission can be applied to unit of the group. 
    41class RubricksComponentFunction < ActiveRecord::Base 
    52  has_many                  :rubricks_blocks,                   :dependent => :destroy 
  • rubricks_core/trunk/app/models/rubricks_component_permission.rb

    r4576 r5767  
    1 # This model keeps each group's permission information. 
    2 # Three types of permission can be set: Allow, Deny and Inherit. 
    31class RubricksComponentPermission < ActiveRecord::Base 
    42  acts_as_record_trails     :trails_fields => {:detail_trail => '[_Common_Details]', :permission_trail => '[_Common_Permission]'}, :default_methods => [:detail_trail, :permission_trail] 
  • rubricks_core/trunk/app/models/rubricks_group.rb

    r5695 r5767  
    33  acts_as_spinelz_treeview  :id_prefix => 'group_', :type => :directory, :children => :effective_children, :class_name => 'treeview_icon_group' 
    44  acts_as_tree 
    5   has_many                  :rubricks_groups_rubricks_users, :dependent => :destroy 
    6   has_many                  :rubricks_users, :through => :rubricks_groups_rubricks_users 
     5  has_many                  :rubricks_groups_rubricks_users,    :dependent => :destroy 
     6  has_many                  :rubricks_users,                    :through => :rubricks_groups_rubricks_users 
    77  has_many                  :rubricks_component_permissions 
    8   has_many                  :rubricks_component_functions, :through => :rubricks_component_permissions 
     8  has_many                  :rubricks_component_functions,      :through => :rubricks_component_permissions 
    99  validates_bool_of         :built_in 
    1010  validates_bool_of         :effective 
    11   validates_numericality_of :private_component_id, :only_integer => true 
    12   validates_length_of       :kana, :in => 1..64, :allow_nil => true 
    13   validates_length_of       :name, :in => 1..64 
     11  validates_numericality_of :parent_id,             :only_integer => true, :allow_nil => true 
     12  validates_numericality_of :private_component_id,  :only_integer => true 
     13  validates_numericality_of :root_id,               :only_integer => true 
     14  validates_length_of       :group_identifier,      :in => 0..16 
     15  validates_length_of       :kana,                  :in => 1..64, :allow_nil => true 
     16  validates_length_of       :name,                  :in => 1..64 
    1417  validates_not_nil_of      :description 
    15   validates_length_of       :description, :in => 0..80 
     18  validates_length_of       :description,           :in => 0..80 
    1619 
    1720  unless defined? ADMIN_GROUP_ID 
     
    3942 
    4043    def create_group(rg_data) 
    41       rg        = self.new(rg_data) 
    42       rg.kana   = nil if rg.kana.blank? 
     44      rg = self.create!( 
     45        { 
     46          :parent_id            => ((rg_data[:parent_id].blank?) ? nil : rg_data[:parent_id].to_i), 
     47          :private_component_id => rg_data[:private_component_id].to_i, 
     48          :group_identifier     => '', 
     49          :kana                 => ((rg_data[:kana].blank?) ? nil : rg_data[:kana]), 
     50          :name                 => rg_data[:name], 
     51          :description          => rg_data[:description], 
     52        } 
     53      ) 
    4354      raise RubricksError::Common::ValidateException if rg.grade > TREE_GRADE_LIMIT 
    44       rg.save! 
     55      rg.update_attributes!({:root_id => rg.root.id}) 
    4556      return rg 
    4657    end 
     
    8192        options[:conditions].unshift(query) 
    8293      end 
    83       find(args.first, options) 
     94      result = find(args.first, options) 
     95      raise ActiveRecord::RecordNotFound if result.blank? && !args.first.is_a?(Symbol) 
     96      return result 
    8497    end 
    8598 
    8699    def update_group(rg_data) 
    87100      rg = self.find(rg_data[:id].to_i) 
    88       return rg.update_user(rg_data) 
     101      return rg.update_group(rg_data) 
    89102    end 
    90103 
     
    112125  end 
    113126 
     127  def clear_group_managers 
     128  end 
     129 
    114130  def delete_group 
     131    self.clear_group_managers 
    115132    self.rubricks_groups_rubricks_users.each do |rgru| 
    116133      rgru.destroy 
     
    175192  end 
    176193 
     194  def group_info_editable? 
     195    return true 
     196  end 
     197 
     198  def group_permission_editable? 
     199    if self.id == ADMIN_GROUP_ID 
     200      return false 
     201    else 
     202      return true 
     203    end 
     204  end 
     205 
     206  def group_user_editable? 
     207    if self.id == GUEST_GROUP_ID || self.id == REGISTERED_GROUP_ID 
     208      return false 
     209    else 
     210      return true 
     211    end 
     212  end 
     213 
    177214  def has_authorization_function?(rcf_id) 
    178215    permission = self_authorized?(rcf_id) 
     
    195232  end 
    196233 
    197   def update_group_managers(group_managers, multiple) 
    198     return true if self.id == GUEST_GROUP_ID || self.id == REGISTERED_GROUP_ID 
    199     group_managers ||= [] 
    200     group_managers.map!{|ru_id| ru_id.to_i} 
    201     group_managers.delete_if{|gm| gm == ''} 
    202     conditions = "rubricks_group_id = #{self.id}" 
    203     unless group_managers.empty? 
    204       group_managers = [group_managers.first] unless multiple 
    205       group_managers.each do |ru_id| 
    206         rgm = RubricksGroupManager.find(:first, :conditions => ['rubricks_user_id = ? and rubricks_group_id = ?', ru_id, self.id]) 
    207         unless rgm 
    208           new_rgm = RubricksGroupManager.create!({:rubricks_user_id => ru_id, :rubricks_group_id => self.id}) 
    209         end 
    210       end 
    211       conditions += " and rubricks_user_id not in (#{group_managers.join(',')})" 
    212     end 
    213     RubricksGroupManager.delete_all(conditions) 
    214   end 
    215  
    216234  def update_user_association(users_belongs_to) 
    217     return true if self.id == GUEST_GROUP_ID || self.id == REGISTERED_GROUP_ID 
     235    raise RubricksError::Common::ValidateException unless self.group_user_editable? 
    218236    users_belongs_to ||= [] 
    219237    users_belongs_to.map!{|ru_id| ru_id.to_i} 
     
    245263 
    246264  def valid_kana? 
     265    return true unless RubricksLib.current_lang == 'japanese' 
    247266    kana_format = %r(#{RubricksLib.l('[_Common_Kana_Format]')}) 
    248267    return kana.nil? || kana.match(kana_format) 
  • rubricks_core/trunk/app/models/rubricks_group_manager.rb

    r4599 r5767  
    1 # Model to manage group manager. 
    21class RubricksGroupManager < ActiveRecord::Base 
    32  acts_as_record_trails     :trails_fields => {:user_name => '[_Common_Name]'}, :default_methods => [:user_name] 
  • rubricks_core/trunk/app/models/rubricks_lib.rb

    r5759 r5767  
    2828    } 
    2929    INSTALL_DIR                 = File.join(RAILS_ROOT, 'install') 
    30     LIST_PER_PAGE               = 2
     30    LIST_PER_PAGE               = 1
    3131    LIST_PER_PAGE_IN_WINDOW     = 10 
    3232    PASSWORD_REISSUE_REDIRECT   = {:controller => '/system/login', :action => 'login_page', :params => {:type => 'change_password'}} 
  • rubricks_core/trunk/app/models/rubricks_lib/rubricks_string_utils_lib.rb

    r5084 r5767  
    11module RubricksStringUtilsLib 
     2  HtmlEntity = Hash[ *%w(nbsp 160 iexcl 161 cent 162 pound 163 curren 164 
     3    yen 165 brvbar 166 sect 167 uml 168 copy 169 ordf 170 laquo 171 not 172 
     4    shy 173 reg 174 macr 175 deg 176 plusmn 177 sup2 178 sup3 179 acute 180 
     5    shy 173 reg 174 macr 175 deg 176 plusmn 177 sup2 178 sup3 179 acute 180 
     6    micro 181 para 182 middot 183 cedil 184 sup1 185 ordm 186 raquo 187 
     7    frac14 188 frac12 189 frac34 190 iquest 191 Agrave 192 Aacute 193 Acirc 194 
     8    Atilde 195 Auml 196 Aring 197 AElig 198 Ccedil 199 Egrave 200 
     9    Eacute 201 Ecirc 202 Euml 203 Igrave 204 Iacute 205 Icirc 206 
     10    Iuml 207 ETH 208 Ntilde 209 Ograve 210 Oacute 211 Ocirc 212 Otilde 213 
     11    Ouml 214 times 215 Oslash 216 Ugrave 217 Uacute 218 Ucirc 219 Uuml 220 
     12    Yacute 221 THORN 222 szlig 223 agrave 224 aacute 225 acirc 226 
     13    atilde 227 auml 228 aring 229 aelig 230 ccedil 231 egrave 232 
     14    eacute 233 ecirc 234 euml 235 igrave 236 iacute 237 icirc 238 iuml 239 
     15    eth 240 ntilde 241 ograve 242 oacute 243 ocirc 244 otilde 245 ouml 246 
     16    divide 247 oslash 248 ugrave 249 uacute 250 ucirc 251 uuml 252 
     17    yacute 253 thorn 254 yuml 255 fnof 402 Alpha 913 Beta 914 Gamma 915 
     18    Delta 916 Epsilon 917 Zeta 918 Eta 919 Theta 920 Iota 921 Kappa 922 
     19    Lambda 923 Mu 924 Nu 925 Xi 926 Omicron 927 Pi 928 Rho 929 Sigma 931 
     20    Tau 932 Upsilon 933 Phi 934 Chi 935 Psi 936 Omega 937 alpha 945 
     21    beta 946 gamma 947 delta 948 epsilon 949 zeta 950 eta 951 theta 952 
     22    iota 953 kappa 954 lambda 955 mu 956 nu 957 xi 958 omicron 959 pi 960 
     23    rho 961 sigmaf 962 sigma 963 tau 964 upsilon 965 phi 966 chi 967 psi 968 
     24    omega 969 thetasym 977 upsih 978 piv 982 bull 8226 hellip 8230 prime 8242 
     25    Prime 8243 oline 8254 frasl 8260 weierp 8472 image 8465 real 8476 
     26    trade 8482 alefsym 8501 larr 8592 uarr 8593 rarr 8594 darr 8595 
     27    harr 8596 crarr 8629 lArr 8656 uArr 8657 rArr 8658 dArr 8659 hArr 8660 
     28    forall 8704 part 8706 exist 8707 empty 8709 nabla 8711 isin 8712 
     29    notin 8713 ni 8715 prod 8719 sum 8721 minus 8722 lowast 8727 radic 8730 
     30    prop 8733 infin 8734 ang 8736 and 8743 or 8744 cap 8745 cup 8746 
     31    int 8747 there4 8756 sim 8764 cong 8773 asymp 8776 ne 8800 equiv 8801 
     32    le 8804 ge 8805 sub 8834 sup 8835 nsub 8836 sube 8838 supe 8839 
     33    oplus 8853 otimes 8855 perp 8869 sdot 8901 lceil 8968 rceil 8969 
     34    lfloor 8970 rfloor 8971 lang 9001 rang 9002 loz 9674 spades 9824 
     35    clubs 9827 hearts 9829 diams 9830 quot 34 amp 38 lt 60 gt 62 OElig 338 
     36    oelig 339 Scaron 352 scaron 353 Yuml 376 circ 710 tilde 732 ensp 8194 
     37    emsp 8195 thinsp 8201 zwnj 8204 zwj 8205 lrm 8206 rlm 8207 ndash 8211 
     38    mdash 8212 lsquo 8216 rsquo 8217 sbquo 8218 ldquo 8220 rdquo 8221 
     39    bdquo 8222 dagger 8224 Dagger 8225 permil 8240 lsaquo 8249 
     40    rsaquo 8250 euro 8364) ].inject({}){|r,v| 
     41    r[v[0]] = [v[1].to_i].pack("U") 
     42    r 
     43  } 
     44 
    245  def clip_string(str, limit) 
    346    if str.split(//).length > limit 
     
    2972    Digest::SHA512.hexdigest(str) 
    3073  end 
     74 
     75  def unescapeHTML(str) 
     76    str.gsub(/&([^&;]{2,8});/n) do |ma| 
     77      HtmlEntity[$1] or 
     78      case $1.dup 
     79      when /\A#0*(\d+)\z/n 
     80        (i = Integer($1)) < 65536 ? [i].pack('U') : ma 
     81      when /\A#x([0-9a-f]+)\z/ni 
     82        (i = $1.hex ) < 65536 ? [i].pack('U') : ma 
     83      else 
     84        ma 
     85      end 
     86    end 
     87  end 
    3188end 
    3289 
  • rubricks_core/trunk/app/models/rubricks_user.rb

    r5759 r5767  
    254254        options[:conditions].unshift(query) 
    255255      end 
    256       find(args.first, options) 
     256      result = find(args.first, options) 
     257      raise ActiveRecord::RecordNotFound if result.blank? && !args.first.is_a?(Symbol) 
     258      return result 
    257259    end 
    258260 
  • rubricks_core/trunk/components/system/account_controller.rb

    r5758 r5767  
    281281    judge_show_user(@options) 
    282282    if RubricksUser.exists?(params[:id]) 
    283       @ru = RubricksUser.find(params[:id]) 
     283      @ru = RubricksUser.find_effective_user(params[:id]) 
    284284      judge_search_user(@options, @ru) 
    285       judge_edit_user(@options) unless @ru.effective 
    286285      @editable_ru_columns  = RubricksConfig.get_editable_ru_columns 
    287286      if my_user?(@ru) 
  • rubricks_core/trunk/components/system/login_controller.rb

    r5719 r5767  
    196196  private 
    197197  def caller_params_for_auth 
    198     delete_params([:controller, :action, :main, :top_page]) 
     198    delete_params([:controller, :action, :main, :top_page, :rails_protection_session_id]) 
    199199  end 
    200200 
  • rubricks_core/trunk/components/system/user_management/_group_show_tab_group_info.rhtml

    r5745 r5767  
    33  <div id="group_info_management_area"> 
    44    <div class="background_white"> 
    5       <% if @options[:flg_edit_group] %> 
     5      <% if @options[:flg_edit_group] && @rg.group_info_editable? %> 
    66        <% render_float_button('admin_user_fba3') do %> 
    77          <% unless @rg.built_in %> 
     
    1414          </div> 
    1515        <% end %> 
     16      <% else %> 
     17        <br class="cl" /> 
    1618      <% end %> 
    1719      <%= render :partial => '/system/user_management/group_show_tab_group_info_print_content' %> 
     
    1921    </div> 
    2022    <div class="background_white" style="display:none;"> 
    21       <% if @options[:flg_edit_group] %> 
     23      <% if @options[:flg_edit_group] && @rg.group_info_editable? %> 
    2224        <% validate_form('group_edit_button') do %> 
    2325          <% form_remote_tag(:url => {:controller => params[:controller].sub(%r(^/?), '/'), :action => 'group_edit'}, :html => {:id => 'group_edit_form', :onsubmit => %q|rubricks.common.FormEditor.readMode('group_info_management_area');|}) do %> 
  • rubricks_core/trunk/components/system/user_management/_group_show_tab_permission_info.rhtml

    r5695 r5767  
    44    <div id="group_permission_management_area"> 
    55      <div class="background_white"> 
    6         <% unless @rg.id == RubricksGroup::ADMIN_GROUP_ID %> 
     6        <% if @rg.group_permission_editable? %> 
    77          <% render_float_button('group_permission_fba1') do %> 
    88            <div id="group_permission_edit_mode_form" class="float_button_right_inactive swap"> 
     
    1010            </div> 
    1111          <% end %> 
     12        <% else %> 
     13          <br class="cl" /> 
    1214        <% end %> 
    1315        <%= render :partial => '/system/user_management/group_show_tab_permission_info_print_content' %> 
     
    1517      </div> 
    1618      <div class="background_white" style="display:none;"> 
    17         <% unless @rg.id == RubricksGroup::ADMIN_GROUP_ID %> 
     19        <% if @rg.group_permission_editable? %> 
    1820          <% render_float_button('group_permission_fba2') do %> 
    1921            <div class="float_button_right_inactive swap"> 
  • rubricks_core/trunk/components/system/user_management/_group_show_tab_user_belongs_to.rhtml

    r5758 r5767  
    1010      </select> 
    1111    <% end %> 
    12     <% if @options[:flg_edit_group] %> 
    13       <% unless (@rg.id == RubricksGroup::GUEST_GROUP_ID || @rg.id == RubricksGroup::REGISTERED_GROUP_ID) %> 
    14         <% render_float_button('admin_user_fba5') do %> 
    15           <div id="group_user_edit_window_form" class="float_button_right_inactive swap"> 
    16             <span id="group_user_edit_window_button" class="buttons icon_edit" onclick="rubricks.system.admin_user.functions.group_user_edit_window_open();"><%= hl('[_Common_Edit]') %></span> 
    17           </div> 
    18         <% end %> 
     12    <% if @options[:flg_edit_group] && @rg.group_user_editable? %> 
     13      <% render_float_button('admin_user_fba5') do %> 
     14        <div id="group_user_edit_window_form" class="float_button_right_inactive swap"> 
     15          <span id="group_user_edit_window_button" class="buttons icon_edit" onclick="rubricks.system.admin_user.functions.group_user_edit_window_open();"><%= hl('[_Common_Edit]') %></span> 
     16        </div> 
    1917      <% end %> 
     18    <% else %> 
     19      <br class="cl" /> 
    2020    <% end %> 
    2121    <%= render :partial => '/system/user_management/group_show_tab_user_belongs_to_print_content' %> 
  • rubricks_core/trunk/db/migrate/012_rubricks_core_schema_012.rb

    r5755 r5767  
    11class RubricksCoreSchema012 < ActiveRecord::Migration 
     2  ###################################################################################################################### 
     3  # Temp Class 
     4  ###################################################################################################################### 
     5  class RubricksComponent   < ActiveRecord::Base 
     6  end 
     7 
    28  def self.up 
    39    #################################################################################################################### 
     
    1420    # Data 
    1521    #################################################################################################################### 
     22    RubricksComponent.update(1, {:version => '0.6.10'}) 
    1623  end 
    1724 
     
    1926    remove_index(:rubricks_trails, {:name => 'rubricks_trails_1'}) 
    2027    add_index(:rubricks_trails, [:created_at, :component_name, :user_name, :action_type], {:name => 'rubricks_trails_1'}) 
     28    RubricksComponent.update(1, {:version => '0.6.9'}) 
    2129  end 
    2230end 
  • rubricks_core/trunk/preload/_lib_extension.rhtml

    r5744 r5767  
    1616              break; 
    1717            default: 
    18               rubricks.common.rubricks_message_window_open(req.responseText.stripTags(), 'error'); 
     18              var message = req.responseText.stripTags(); 
     19              if(message == '') { 
     20                message = '<%= jl('[_Common_NetworkError]') %>'; 
     21              } 
     22              rubricks.common.rubricks_message_window_open(message, 'error'); 
    1923              break; 
    2024          } 
  • rubricks_core/trunk/public/javascripts/components/system/src_system_admin_menu.js

    r5744 r5767  
    2525    rubricks.common.Validator.refresh(); 
    2626    rubricks.common.FormEditor.editMode('menu_item_management_area'); 
    27     this.sortable_menus.sortable(); 
    2827  }, 
    2928  become_menu_item_read_mode: function() { 
     
    4746    ); 
    4847    Element.show($('sortable_item_list_' + menu_icon_id)); 
     48    this.sortable_menus.destroy(); 
     49    this.sortable_menus.sortable(); 
    4950  }, 
    5051  detail_area_hide: function() { 
     
    174175    this.target_id_list = target_id_list; 
    175176    this.record_initial_data(); 
     177    this.current_sortable_ids = null; 
    176178  }, 
    177179  record_initial_data: function() { 
     
    215217  }, 
    216218  sortable: function() { 
    217     var self = this; 
    218     $A(this.target_id_list).each(function(target_id) {self._sortable(target_id);}); 
     219    this.current_sortable_ids = [this.target_id_list[1], "sortable_item_list_" + $("other_icons_select_box").value]; 
     220    this.current_sortable_ids.each(function(target_id) { this._sortable(target_id); }.bind(this)); 
     221  }, 
     222  destroy: function() { 
     223    if (this.current_sortable_ids) { 
     224      this.current_sortable_ids.each(function(id) { Sortable.destroy(id); }); 
     225    } 
     226    this.current_sortable_ids = null; 
    219227  }, 
    220228  unsortable: function() { 
  • rubricks_core/trunk/public/javascripts/components/system/system.js

    r5757 r5767  
    401401rubricks.common.Validator.refresh(); 
    402402rubricks.common.FormEditor.editMode("menu_item_management_area"); 
    403 this.sortable_menus.sortable(); 
    404403},become_menu_item_read_mode:function(){ 
    405404this.sortable_menus.unsortable(); 
     
    417416}); 
    418417Element.show($("sortable_item_list_"+_4)); 
     418this.sortable_menus.destroy(); 
     419this.sortable_menus.sortable(); 
    419420},detail_area_hide:function(){ 
    420421Element.hide("rubricks_menu_icon_info"); 
     
    527528this.target_id_list=_17; 
    528529this.record_initial_data(); 
     530this.current_sortable_ids=null; 
    529531},record_initial_data:function(){ 
    530532this.initial_data=new Array(); 
     
    559561return _21; 
    560562},sortable:function(){ 
    561 var _23=this; 
    562 $A(this.target_id_list).each(function(_24){ 
    563 _23._sortable(_24); 
    564 }); 
     563this.current_sortable_ids=[this.target_id_list[1],"sortable_item_list_"+$("other_icons_select_box").value]; 
     564this.current_sortable_ids.each(function(_23){ 
     565this._sortable(_23); 
     566}.bind(this)); 
     567},destroy:function(){ 
     568if(this.current_sortable_ids){ 
     569this.current_sortable_ids.each(function(id){ 
     570Sortable.destroy(id); 
     571}); 
     572
     573this.current_sortable_ids=null; 
    565574},unsortable:function(){ 
    566575var _25=$A(this.target_id_list); 
  • rubricks_core/trunk/public/javascripts/spinelz/calendar.js

    r5707 r5767  
    647647var _ab=_a9.getDay(); 
    648648var _ac=_aa.indexOf(_ab); 
    649 return this.calendar.options.displayIndexes.map(function(_ad){ 
    650 var _ae=_ad-_ab; 
    651 var _af=_aa.indexOf(_ad); 
    652 if((_af<_ac)&&(_ae>0)){ 
    653 _ae-=7; 
    654 }else{ 
    655 if((_af>_ac)&&(_ae<0)){ 
    656 _ae+=7; 
    657 
    658 
    659 return DateUtil.afterDays(_a9,_ae); 
    660 }); 
    661 },isSameStartDate:function(_b0,_b1){ 
    662 return ((_b1.getFullYear()==_b0.start.year)&&(_b1.getMonth()==_b0.start.month)&&(_b1.getDate()==_b0.start.day)); 
    663 },isSameFinishDate:function(_b2,_b3){ 
    664 return ((_b3.getFullYear()==_b2.finish.year)&&(_b3.getMonth()==_b2.finish.month)&&(_b3.getDate()==_b2.finish.day)); 
     649var _ad=[]; 
     650var _ae=[]; 
     651var _af=this.calendar.options.displayIndexes; 
     652_aa.each(function(_b0){ 
     653var _b1=_b0-_ab; 
     654var _b2=_aa.indexOf(_b0); 
     655if((_b2<_ac)&&(_b1>0)){ 
     656_b1-=7; 
     657}else{ 
     658if((_b2>_ac)&&(_b1<0)){ 
     659_b1+=7; 
     660
     661
     662var _b3=DateUtil.afterDays(_a9,_b1); 
     663if(_af.indexOf(_b0)>=0){ 
     664_ad.push(_b3); 
     665}else{ 
     666_ae.push(_b3); 
     667
     668}.bind(this)); 
     669return [_ad,_ae]; 
     670},isSameStartDate:function(_b4,_b5){ 
     671return ((_b5.getFullYear()==_b4.start.year)&&(_b5.getMonth()==_b4.start.month)&&(_b5.getDate()==_b4.start.day)); 
     672},isSameFinishDate:function(_b6,_b7){ 
     673return ((_b7.getFullYear()==_b6.finish.year)&&(_b7.getMonth()==_b6.finish.month)&&(_b7.getDate()==_b6.finish.day)); 
    665674},getSelectorId:function(){ 
    666675return this.calendar.element.id.appendSuffix(AbstractCalendar.id.selector); 
    667 },clickDateText:function(_b4,_b5){ 
    668 Event.stop(_b4); 
    669 this.calendar.date=_b5
     676},clickDateText:function(_b8,_b9){ 
     677Event.stop(_b8); 
     678this.calendar.date=_b9
    670679this.calendar.options.displayType="day"; 
    671680this.calendar.refresh(); 
     
    676685this.containerDimensions=Element.getDimensions(this.container); 
    677686this.containerOffset=Position.cumulativeOffset(this.container); 
    678 },mouseOverSubSchedule:function(_b6){ 
    679 _b6.each(function(_b7){ 
    680 var _b8=Element.getStyle(_b7,"borderTopColor"); 
    681 var _b9=Element.getStyle(_b7,"border"); 
    682 if(_b8&&(_b8!="")&&_b9&&(_b9!="")){ 
    683 if(!_b7.originalBorderColor){ 
    684 _b7.originalBorderColor=_b8; 
    685 
    686 Element.setStyle(_b7,{borderColor:new Color(_b8).invert()}); 
    687 }else{ 
    688 Element.addClassName(_b7,Calendar.className.scheduleItemSelect); 
    689 
    690 }); 
    691 },mouseOutSubSchedule:function(_ba){ 
     687},mouseOverSubSchedule:function(_ba){ 
    692688_ba.each(function(_bb){ 
    693 if(_bb.originalBorderColor){ 
    694 Element.setStyle(_bb,{borderColor:_bb.originalBorderColor}); 
    695 }else{ 
    696 Element.removeClassName(_bb,Calendar.className.scheduleItemSelect); 
    697 
    698 }); 
    699 },toDate:function(_bc){ 
    700 return DateUtil.toDate(_bc); 
     689var _bc=Element.getStyle(_bb,"borderTopColor"); 
     690var _bd=Element.getStyle(_bb,"border"); 
     691if(_bc&&(_bc!="")&&_bd&&(_bd!="")){ 
     692if(!_bb.originalBorderColor){ 
     693_bb.originalBorderColor=_bc; 
     694
     695Element.setStyle(_bb,{borderColor:new Color(_bc).invert()}); 
     696}else{ 
     697Element.addClassName(_bb,Calendar.className.scheduleItemSelect); 
     698
     699}); 
     700},mouseOutSubSchedule:function(_be){ 
     701_be.each(function(_bf){ 
     702if(_bf.originalBorderColor){ 
     703Element.setStyle(_bf,{borderColor:_bf.originalBorderColor}); 
     704}else{ 
     705Element.removeClassName(_bf,Calendar.className.scheduleItemSelect); 
     706
     707}); 
     708},toDate:function(_c0){ 
     709return DateUtil.toDate(_c0); 
    701710},getCalendarTableId:function(){ 
    702711return this.ids.calTable; 
     
    705714CalendarMonth.id=["year","month","column","nextYear","nextMonth","preYear","preMonth","calTable","scheduleContainer","container","emptyRow"]; 
    706715Object.extend(CalendarMonth.prototype,AbstractCalendar.prototype); 
    707 Object.extend(CalendarMonth.prototype,{initialize:function(_bd){ 
    708 this.calendar=_bd
    709 this.week=this.getWeek()
     716Object.extend(CalendarMonth.prototype,{initialize:function(_c1){ 
     717this.calendar=_c1
     718this.week=this.getWeek()[0]
    710719this.ids=SpinelzUtil.concat(this.calendar.element.id,CalendarMonth.id); 
    711720this.columnIds=[]; 
     
    713722return "<td class='"+this.calendar.classNames.preYears+"'>"+"<div id='"+this.ids.preYear+"' class='"+this.calendar.classNames.preYearMark+"'></div>"+"<div id='"+this.ids.preMonth+"' class='"+this.calendar.classNames.preMonthMark+"'></div>"+"</td>"; 
    714723},buildHeaderCenter:function(){ 
    715 var _be=[]; 
     724var _c2=[]; 
    716725if(this.calendar.options.monthHeaderFormat){ 
    717 var _bf=this.calendar.date; 
    718 var _c0=new Template(this.calendar.options.monthHeaderFormat).evaluate({year:_bf.getFullYear(),month:_bf.getMonth()+1}); 
    719 _be=[_c0," "]; 
    720 } 
    721 return "<td class='"+this.calendar.classNames.years+"'>"+"<span id='"+this.ids.month+"' class='"+this.calendar.classNames.ym+"'>"+(_be[0]||DateUtil.months[this.calendar.date.getMonth()])+"</span>"+"<span id='"+this.ids.year+"' class='"+this.calendar.classNames.ym+"'>"+(_be[1]||this.calendar.date.getFullYear())+"</span>"+"</td>"; 
     726var _c3=this.calendar.date; 
     727var _c4=new Template(this.calendar.options.monthHeaderFormat).evaluate({year:_c3.getFullYear(),month:_c3.getMonth()+1}); 
     728_c2=[_c4," "]; 
     729} 
     730return "<td class='"+this.calendar.classNames.years+"'>"+"<span id='"+this.ids.month+"' class='"+this.calendar.classNames.ym+"'>"+(_c2[0]||DateUtil.months[this.calendar.date.getMonth()])+"</span>"+"<span id='"+this.ids.year+"' class='"+this.calendar.classNames.ym+"'>"+(_c2[1]||this.calendar.date.getFullYear())+"</span>"+"</td>"; 
    722731},buildHeaderRight:function(){ 
    723732return "<td class='"+this.calendar.classNames.nextYears+"'>"+"<div id='"+this.ids.nextMonth+"' class='"+this.calendar.classNames.nextMonthMark+"'></div>"+"<div id='"+this.ids.nextYear+"' class='"+this.calendar.classNames.nextYearMark+"'></div>"+"</td>"; 
     
    725734return "<div>"+this.buildTableHeader()+this.buildScheduleContainer()+"</div>"; 
    726735},buildTableHeader:function(){ 
    727 var _c1=100/this.calendar.options.displayIndexes.length+"%"; 
    728 var _c2=this.calendar.options.displayIndexes.last(); 
    729 var _c3=this.ids.column; 
    730 var _c4=this.calendar.options.displayIndexes.inject("",function(_c5,i){ 
    731 var id=_c3.appendSuffix(i); 
     736var _c5=100/this.calendar.options.displayIndexes.length+"%"; 
     737var _c6=this.calendar.options.displayIndexes.last(); 
     738var _c7=this.ids.column; 
     739var _c8=this.calendar.options.displayIndexes.inject("",function(_c9,i){ 
     740var id=_c7.appendSuffix(i); 
    732741this.columnIds.push(id); 
    733 var _c8=(_c2==i)?this.calendar.classNames.thRight:""; 
    734 _c5+="<th id='"+id+"' class='"+_c8+"' width='"+_c1+"'>"+this.calendar.options.dayOfWeek[i]+"</th>"; 
    735 return _c5
     742var _cc=(_c6==i)?this.calendar.classNames.thRight:""; 
     743_c9+="<th id='"+id+"' class='"+_cc+"' width='"+_c5+"'>"+this.calendar.options.dayOfWeek[i]+"</th>"; 
     744return _c9
    736745}.bind(this)); 
    737 return "<table class='"+this.calendar.classNames.table+"'>"+"<tr>"+_c4+"</tr>"+"</table>"; 
     746return "<table class='"+this.calendar.classNames.table+"'>"+"<tr>"+_c8+"</tr>"+"</table>"; 
    738747},buildScheduleContainer:function(){ 
    739 var _c9=(this.calendar.options.size=="large")?"position: relative":""; 
    740 return "<div id='"+this.getScheduleContainerId()+"' style='"+_c9+";'>"+this.buildTableData()+this.buildSelector()+"</div>"; 
     748var _cd=(this.calendar.options.size=="large")?"position: relative":""; 
     749return "<div id='"+this.getScheduleContainerId()+"' style='"+_cd+";'>"+this.buildTableData()+this.buildSelector()+"</div>"; 
    741750},buildTableData:function(){ 
    742 var _ca=this.calendar.options.displayIndexes; 
    743 var _cb=new Date(); 
    744 var _cc=this.calendar.date.getFullYear(); 
    745 var _cd=this.calendar.date.getMonth(); 
    746 var _ce=DateUtil.getFirstDate(_cc,_cd).getDay(); 
    747 var _cf=DateUtil.getLastDate(_cc,_cd).getDate(); 
     751var _ce=this.calendar.options.displayIndexes; 
     752var _cf=new Date(); 
     753var _d0=this.calendar.date.getFullYear(); 
     754var _d1=this.calendar.date.getMonth(); 
     755var _d2=DateUtil.getFirstDate(_d0,_d1).getDay(); 
     756var _d3=DateUtil.getLastDate(_d0,_d1).getDate(); 
    748757var trs=[]; 
    749758var tds=[]; 
    750 var _d2=100/_ca.length+"%"; 
    751 var _d3=_ca.last(); 
    752 var _d4,_d5,_d6,_d7,_d8,i=null; 
     759var _d6=100/_ce.length+"%"; 
     760var _d7=_ce.last(); 
     761var _d8,_d9,_da,_db,_dc,i=null; 
    753762this.dateMap={}; 
    754 var _da=this.calendar.options.weekIndex; 
    755 var _db=DateUtil.dayOfWeek.length*6; 
     763var _de=this.calendar.options.weekIndex; 
     764var _df=DateUtil.dayOfWeek.length*6; 
    756765var i=null; 
    757766var day=1; 
    758 if(_da<=_ce){ 
    759 i=_da
    760 _db+=i; 
    761 }else{ 
    762 i=_da-7; 
    763 _db-=i; 
    764 } 
    765 var _dd=_ce-_da
    766 if(_dd<0){ 
    767 _dd+DateUtil.dayOfWeek.length; 
    768 } 
    769 if((_cf+_dd)>_db){ 
    770 _db+=DateUtil.dayOfWeek.length; 
    771 } 
    772 var _de=_da
    773 var _df=0; 
    774 for(;i<_db;i++){ 
    775 if(_ca.include(_de)){ 
    776 var _e0=(_de==_d3)?this.calendar.classNames.tdRight:""; 
    777 if(i<_ce){ 
    778 var _e1=i-_ce+1; 
    779 _d7=new Date(this.calendar.date.getFullYear(),this.calendar.date.getMonth(),_e1); 
    780 tds.push(this.buildEmptyRow(_d7,_d2,_e0,_e1)); 
    781 }else{ 
    782 if(day>_cf){ 
    783 _d7=new Date(this.calendar.date.getFullYear(),this.calendar.date.getMonth(),day); 
    784 tds.push(this.buildEmptyRow(_d7,_d2,_e0,day)); 
    785 }else{ 
    786 if(i==_ce){ 
    787 _db+=_df
    788 } 
    789 _d7=new Date(this.calendar.date.getFullYear(),this.calendar.date.getMonth(),day); 
    790 _d5=this.calendar.options.holidays[_d7.toDateString()]; 
     767if(_de<=_d2){ 
     768i=_de
     769_df+=i; 
     770}else{ 
     771i=_de-7; 
     772_df-=i; 
     773} 
     774var _e1=_d2-_de
     775if(_e1<0){ 
     776_e1+DateUtil.dayOfWeek.length; 
     777} 
     778if((_d3+_e1)>_df){ 
     779_df+=DateUtil.dayOfWeek.length; 
     780} 
     781var _e2=_de
     782var _e3=0; 
     783for(;i<_df;i++){ 
     784if(_ce.include(_e2)){ 
     785var _e4=(_e2==_d7)?this.calendar.classNames.tdRight:""; 
     786if(i<_d2){ 
     787var _e5=i-_d2+1; 
     788_db=new Date(this.calendar.date.getFullYear(),this.calendar.date.getMonth(),_e5); 
     789tds.push(this.buildEmptyRow(_db,_d6,_e4,_e5)); 
     790}else{ 
     791if(day>_d3){ 
     792_db=new Date(this.calendar.date.getFullYear(),this.calendar.date.getMonth(),day); 
     793tds.push(this.buildEmptyRow(_db,_d6,_e4,day)); 
     794}else{ 
     795if(i==_d2){ 
     796_df+=_e3
     797} 
     798_db=new Date(this.calendar.date.getFullYear(),this.calendar.date.getMonth(),day); 
     799_d9=this.calendar.options.holidays[_db.toDateString()]; 
    791800if(this.calendar.options.size==Calendar.size.large){ 
    792 tds.push(this.buildLargeRow(_d7,_d5,_cb,_d2,_e0)); 
    793 }else{ 
    794 _d6=this.calendar.options.schedules.detect(function(_e2){ 
    795 var _e3=DateUtil.toDate(_e2.start); 
    796 return _d7.sameDate(_e3); 
    797 }); 
    798 tds.push(this.buildSmallRow(_d7,_d5,_d6,_cb,_d2,_e0)); 
    799 } 
    800 } 
    801 } 
    802 _df++; 
    803 } 
    804 if(i>=_ce){ 
     801tds.push(this.buildLargeRow(_db,_d9,_cf,_d6,_e4)); 
     802}else{ 
     803_da=this.calendar.options.schedules.detect(function(_e6){ 
     804var _e7=DateUtil.toDate(_e6.start); 
     805return _db.sameDate(_e7); 
     806}); 
     807tds.push(this.buildSmallRow(_db,_d9,_da,_cf,_d6,_e4)); 
     808} 
     809} 
     810} 
     811_e3++; 
     812} 
     813if(i>=_d2){ 
    805814day++; 
    806815} 
    807 if(_de==_d3){ 
     816if(_e2==_d7){ 
    808817if(!(tds.first().match(/empty/)&&tds.last().match(/empty/))){ 
    809818trs.push("<tr>"+tds.join("")+"</tr>"); 
     
    811820tds=[]; 
    812821} 
    813 if(_de>=6){ 
    814 _de=0; 
    815 }else{ 
    816 _de++; 
     822if(_e2>=6){ 
     823_e2=0; 
     824}else{ 
     825_e2++; 
    817826