<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,3 +1,10 @@
+[1.0] rc-2 : 03.05.2009
+  - moved to open-flash-chart-2-ichor version (http://teethgrinder.co.uk/open-flash-chart-2/downloads.php)
+  - initialize methods has changed !!!
+    now use a hash eg. OFC2::SomeClass.new(:option =&gt; value, :option2 =&gt; other_value)
+    I find it more readable that old way.
+  - add radar charts http://openflashchart2.sentor.pl/chart_examples/radar
+  - remove pseudo horizontal stacked bar example
 [0.9] rc-1 : 15.04.2009
   - remove to_json method from OWJSON module
   - remove remove require 'json' from plugin</diff>
      <filename>CHANGES</filename>
    </modified>
    <modified>
      <diff>@@ -2,7 +2,7 @@
   --generating more than one graph with ofc2_inline on the same page is currently impossible--
 
 ==Futures==
-  - add radar charts
+  --add radar charts--
   --add Tooltip class--
   --add DotValue class--
   --many inline chart on one page--</diff>
      <filename>TODO</filename>
    </modified>
    <modified>
      <diff>@@ -1,17 +1,16 @@
 module OFC2
   # specjal module included in each class
-  # with that module we add to_hash and to_json methods
+  # with that module we add to_hash method
   # there is also a method_missing which allow user to set/get any instance variable
   # if user try to get not setted instance variable it return nil and generate a warn
   module OWJSON
-
     # return a hash of instance values
     def to_hash
       self.instance_values
     end
     alias :to_h :to_hash
 
-    # if You use rails older that 2.3  probably  you have to uncomment that method and add require 'json' in enviroment.rb
+    # if You use rails older that 2.3  probably  you have to uncomment that method and add &quot;config.gem 'json'&quot; in config/enviroment.rb file
     # otherwise to_json method will not work propertly
     #    # You can pass options to to_json method, but remember that they have no effects!!!
     #    # argument 'options' is for rails compability
@@ -31,11 +30,9 @@ module OFC2
         self.instance_variable_set(&quot;@#{$1.gsub('_','__')}&quot;, a)
       elsif method =~ /^(set_)(.*)$/
         self.instance_variable_set(&quot;@#{$2.gsub('_','__')}&quot;, a)
-      elsif self.instance_variable_defined?(method_id)
+      elsif self.instance_variable_defined?(&quot;@#{method_id.to_s.gsub('_','__')}&quot;)
         self.instance_variable_get(&quot;@#{method_id.to_s.gsub('_','__')}&quot;) # that will be return instance variable value or nil, handy
       else
-        #        well there is no instance variable and user don't wan't to define any
-        #         maybe better return nil and warn that rise exception(call super) ?
         warning = &lt;&lt;-EOF
           !!! there is no instance variable named #{method_id} !!!
           - if You want to set instance variable use variable= or set_variable(var) methods
@@ -53,14 +50,14 @@ module OFC2
     controller.helper_method(:ofc2, :ofc2_inline)
   end
 
-  # generate a ofc object using Graph object
+  # generate a ofc object using Graph object, it's more handy than ofc2 method
   #  +width+ width for div
   #  +height+ height for div
   #  +graph+ a OFC2::Graph object
   #  +base+ uri for graph, default '/', not used in this method, go to ofc2 method for details
   #  +id+ id for div with graph, default Time.now.usec
   #  +swf_base+ uri for swf file, default '/'
-  def ofc2_inline(width, height, graph, base='/', id=Time.now.usec, swf_base='/')
+  def ofc2_inline(width, height, graph, id=Time.now.usec, swf_base='/')
     div_name = &quot;flashcontent_#{id}&quot;
     &lt;&lt;-EOF
       &lt;div id=&quot;#{div_name}&quot;&gt;&lt;/div&gt;
@@ -70,15 +67,6 @@ module OFC2
           return '#{graph.render}';
         };
 
-        // i'm not shure that is necessary
-        function findSWF(movieName) {
-          if (navigator.appName.indexOf(&quot;Microsoft&quot;)!= -1) {
-            return window[movieName];
-          } else {
-            return document[movieName];
-          }
-        };
-
         swfobject.embedSWF(
           '#{swf_base}open-flash-chart.swf', '#{div_name}',
           '#{width}', '#{height}','9.0.0', 'expressInstall.swf',
@@ -109,194 +97,148 @@ module OFC2
     EOF
   end
 
-  # insance variables:
-  #
-  #  +style+ style for element, it's is in css style eg. &quot;{font-size: 20px; color: #FF0F0F; text-align: center;}&quot;
-  #  +text+ text for element
-  class Element
-    include OWJSON
-    # You can initialize Elemnt while creating it, otherwise it will be have default valiues
-    #  +text+ = ''
-    #  +css+ = &quot;{font-size: 20px; color: #FF0F0F; text-align: center;}&quot;
-    def initialize(text = '', css = &quot;{font-size: 20px; color: #FF0F0F; text-align: center;}&quot;)
-      @text= text
-      @style= css
-    end
-  end
-
-  # documentation is the same as Element class
-  class XLegend &lt;  Element ;end
-  # documentation is the same as Element class
-  class Title &lt; Element ;end
-  # documentation is the same as Element class
-  class YLegend &lt;  Element ;end
-
-  # YAxisBase
-  #
-  #  +stroke+
-  #  +tick_length+
-  #  +colour+
-  #  +min+
-  #  +max+
-  #  +steps+
-  #  +labels+
-  class YAxisBase
-    include OWJSON
-
-    # set colour and grid_colour at once
-    # there is also an alias colours=
-    #
-    #  +colour+ colour for labels eg. #FF0000
-    #  +grid_colour+ colour for grid eg. #00FF00
-    def set_colours( colour, grid_colour )
-      set_colour( colour )
-      set_grid_colour( grid_colour )
-    end
-    alias_method :colours=, :set_colours
-
-
-    # set range at once
-    # there is also an alias range=
-    #
-    #  +min+ minimum for y_axis
-    #  +max+ maximum for y_axis
-    #  +steps+ how many steps skip before print label
-    def set_range( min, max, steps=1 )
-      set_min(min)
-      set_max(max)
-      set_steps( steps )
-    end
-    alias_method :range=, :set_range
-
-    # set offset for axis, these is handy when You want to 3d graph render
-    # there is also an alias offset=
-    def set_offset( off )
-      @offset = off ? 1 : 0
-    end
-    alias_method :offset=, :set_offset
-
-  end
-
-  class YAxis &lt; YAxisBase
-    #    # left axis control grid colour, but right not
-    #    def set_grid_colour(color = '#ff0000')
-    #      @grid__colour = color
-    #    end
-    #    alias_method :grid_colour=, :set_grid_colour
-  end
-  class YAxisRight &lt; YAxisBase
-  end
-
-  # x_axis
-  #
-  #  +stroke+
-  #  +tick_length+
-  #  +colour+
-  #  +tick_height+
-  #  +grid_colour+
-  #  +min+
-  #  +max+
-  #  +steps+
-  #  +labels+
-  #  +offset+
-  class XAxis
-    include OWJSON
 
-    # well it must be done this way because instance variable name can't be started by number
-    %w(3d).each do |method|
-      define_method(&quot;set_#{method}&quot;) do |a|
-        self.instance_variable_set(&quot;@___#{method}&quot;, a)
+  CLASSES = {
+    :dot =&gt;{ :unavailable_variables =&gt; { :type =&gt; 'dot' } },
+    :solid_dot =&gt;{ :unavailable_variables =&gt; { :type =&gt; 'solid-dot' } },
+    :hollow_dot =&gt;{ :unavailable_variables =&gt; { :type =&gt; 'hollow-dot' } },
+    :star =&gt;{ :unavailable_variables =&gt; { :type =&gt; 'star' } },
+    :bow =&gt; { :unavailable_variables =&gt; { :type =&gt; 'bow' } },
+    :anchor =&gt; { :unavailable_variables =&gt; { :type =&gt; 'anchor' } },
+    :title =&gt; { :available_variables =&gt; { :text =&gt; '', :style =&gt; &quot;{font-size: 20px; color: #FF0F0F; text-align: center;}&quot; } },
+    :line_style =&gt; { :available_variables =&gt; { :style =&gt; 'dash', :on =&gt; '', :off =&gt; '' } },
+    :line =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00' },
+      :unavailable_variables =&gt; { :type =&gt; &quot;line&quot; }
+    },
+    :area =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00', :fill =&gt; '#0000FF', :fill_alpha =&gt; 0.6, :loop =&gt; false},
+      :unavailable_variables =&gt; { :type =&gt; &quot;area&quot; }
+    },
+    :bar_stack_value =&gt; { :available_variables =&gt; { :value =&gt; 0, :colour =&gt; '#FF0000'} },
+    :bar_stack_key =&gt; { :available_variables =&gt; { :text =&gt; '', :colour =&gt; '#FF0000', :font_size =&gt; 12 } },
+    :bar_stack =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00', :alpha =&gt; 0.6 },
+      :unavailable_variables =&gt; { :type =&gt; &quot;bar_stack&quot; }
+    },
+    :h_bar_value =&gt; { :available_variables =&gt; { :left =&gt; 0, :right =&gt; nil} },
+    :h_bar =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00'},
+      :unavailable_variables =&gt; { :type =&gt; &quot;hbar&quot; }
+    },
+    :bar_value =&gt; { :available_variables =&gt; { :top =&gt; 0, :bottom =&gt; nil, :colour =&gt; '#FF0000', :tip =&gt; '#val#' } },
+    :bar =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00', :alpha =&gt; 0.6 },
+      :unavailable_variables =&gt; { :type =&gt; &quot;bar&quot; },
+    },
+    :bar_cylinder_outline =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00', :alpha =&gt; 0.6 },
+      :unavailable_variables =&gt; { :type =&gt; &quot;bar_cylinder_outline&quot; },
+    },
+    :bar_cylinder =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00', :alpha =&gt; 0.6 },
+      :unavailable_variables =&gt; { :type =&gt; &quot;bar_cylinder&quot; },
+    },
+    :bar_filled =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00', :outline_colour =&gt; '#00FF00', :alpha =&gt; 0.6},
+      :unavailable_variables =&gt; { :type =&gt; &quot;bar_filled&quot; },
+    },
+    :bar_sketch =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00', :outline_colour =&gt; '#00FF00', :alpha =&gt; 0.6, :offset =&gt; 4 },
+      :unavailable_variables =&gt; { :type =&gt; &quot;bar_sketch&quot; },
+    },
+    :bar_glass =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00', :alpha =&gt; 0.6 },
+      :unavailable_variables =&gt; { :type =&gt; &quot;bar_glass&quot; },
+    },
+    :bar_round_glass =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00', :alpha =&gt; 0.6 },
+      :unavailable_variables =&gt; { :type =&gt; &quot;bar_round_glass&quot; },
+    },
+    :bar_round =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00', :alpha =&gt; 0.6 },
+      :unavailable_variables =&gt; { :type =&gt; &quot;bar_round&quot; },
+    },
+    :bar_dome =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00', :alpha =&gt; 0.6 },
+      :unavailable_variables =&gt; { :type =&gt; &quot;bar_dome&quot; },
+    },
+    :bar3d =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label text', :font_size =&gt; 10, :colour =&gt; '#00FF00', :alpha =&gt; 0.6 },
+      :unavailable_variables =&gt; { :type =&gt; &quot;bar_3d&quot; },
+    },
+    :pie_value =&gt; { },
+    :pie_fade =&gt; { :unavailable_variables =&gt; { :type =&gt; &quot;fade&quot; } },
+    :pie_bounce =&gt; {
+      :available_variables =&gt; { :distance =&gt; 5},
+      :unavailable_variables =&gt; { :type =&gt; &quot;bounce&quot; },
+    },
+    :pie =&gt; {
+      :available_variables =&gt; { :colours =&gt; [], :alpha =&gt; 0.6, :start_angle =&gt; 35, :tip =&gt; '#val#', :gradient_fill =&gt; false, :label_colour =&gt; '#0000FF', :no_labels =&gt; false, :on_click =&gt; ''},
+      :unavailable_variables =&gt; { :type =&gt; &quot;pie&quot; },
+    },
+    :y_axis =&gt; { },
+    :y_axis_right =&gt; { },
+    :y_legend =&gt; { :available_variables =&gt; { :text =&gt; &quot;y legend&quot;, :style =&gt;&quot;{font-size: 20px; color:#0000ff; font-family: Verdana; text-align: center;}&quot; } },
+    :x_axis_label =&gt; { },
+    :x_axis_labels =&gt; { },
+    :x_axis =&gt; { },
+    :x_legend =&gt; { :available_variables =&gt; { :text =&gt; &quot;y legend&quot;, :style =&gt;&quot;{font-size: 20px; color:#0000ff; font-family: Verdana; text-align: center;}&quot; } },
+    :tooltip =&gt; { },
+    :ofc_menu_item =&gt; {
+      :available_variables =&gt; { :text =&gt; '', :javascript_function =&gt; '' },
+      :unavailable_variables =&gt; { :type =&gt; 'text' },
+    },
+    :ofc_menu_item_camera =&gt; {
+      :available_variables =&gt; { :text =&gt; '', :javascript_function =&gt; '' },
+      :unavailable_variables =&gt; { :type =&gt; 'camera-icon' },
+    },
+    :ofc_menu =&gt; {
+      :available_variables =&gt; { :colour =&gt; '', :outline__colour =&gt; '' },
+      :unavailable_variables =&gt; { :type =&gt; 'camera-icon' },
+    },
+    :scatter_value =&gt; { :available_variables =&gt; { :x =&gt; 0, :y =&gt; 0} },
+    :scatter =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label', :colour =&gt; '#FF0000' },
+      :unavailable_variables =&gt; { :type =&gt; 'scatter' },
+    },
+    :scatter_line =&gt; {
+      :available_variables =&gt; { :text =&gt; 'label', :colour =&gt; '#FF0000', :stepgraph =&gt; 'horizontal'},
+      :unavailable_variables =&gt; { :type =&gt; 'scatter_line' },
+    },
+    :shape_point =&gt; { :available_variables =&gt; { :x =&gt; 0, :y =&gt; 0} },
+    :shape =&gt; {
+      :available_variables =&gt; { :colour =&gt; '#FF0000'},
+      :unavailable_variables =&gt; { :type =&gt; 'shape' },
+    },
+    :radar_axis_labels =&gt; { :available_variables =&gt; { :labels =&gt; [], :colour =&gt; '#FAFFAF'} },
+    :radar_spoke_labels =&gt; { :available_variables =&gt; { :labels =&gt; [], :colour =&gt; '#FAFFAF'} },
+    :radar_axis =&gt; { }
+  }
+
+  CLASSES.each_key do |class_name|
+    _class_name =class_name.to_s.camelize
+    new_class = Class.new do
+      include OWJSON
+
+      def initialize( opts = {})
+        class_data = CLASSES[self.class.name.demodulize.underscore.to_sym]
+
+        class_data[:available_variables].each do |name, value|
+          self.instance_variable_set(&quot;@#{name.to_s.gsub('_','__')}&quot;, value)
+        end if class_data[:available_variables]
+
+        opts.each do |name, value|
+          self.instance_variable_set(&quot;@#{name.to_s.gsub('_','__')}&quot;, value)
+        end
+
+        class_data[:unavailable_variables].each do |name, value|
+          self.instance_variable_set(&quot;@#{name.to_s.gsub('_','__')}&quot;, value)
+        end if class_data[:unavailable_variables]
       end
-      define_method(&quot;_#{method}=&quot;) do |a|
-        self.instance_variable_set(&quot;@___#{method}&quot;, a)
-      end
-      define_method(&quot;#{method}&quot;) do
-        self.instance_variable_get(&quot;@___#{method}&quot;)
-      end
-    end
-    # set +colour+ and +grid_colour+, use a css color style '#ff00ff'
-    def set_colours( colour, grid_colour )
-      @colour= colour
-      @grid_colour= grid_colour
-    end
-
-    # o is treat as a logic
-    def set_offset( o )
-      @offset = !!o
     end
 
-    # helper method to make the examples simpler.
-    def set_labels_from_array( a )
-      x_axis_labels = XAxisLabels.new
-      x_axis_labels.set_labels( a )
-      x_axis_labels.set_steps( @steps ) if @steps
-      @labels = x_axis_labels
-    end
-    alias_method :labels_from_array=, :set_labels_from_array
-    def set_range( min, max )
-      @min=min
-      @max=max
-    end
-  end
-
-  #  +text+
-  #  +colour+
-  #  +size+
-  #  +rotate+
-  #  +visible+
-  class XAxisLabel
-    include OWJSON
-    def initialize( text = nil, colour = nil, size= nil)
-      @text= text if text
-      @colour= colour if colour
-      @size= size if size
-    end
-    def set_vertical
-      @rotate = &quot;vertical&quot;
-    end
-    alias_method :vertical, :set_vertical
-
-    def set_horizontal
-      @rotate = &quot;horizontal&quot;
-    end
-    alias_method :horizontal, :set_horizontal
-  end
-
-  #  +steps+
-  #  +labels+
-  #  +colour+
-  #  +size+
-  class XAxisLabels
-    include OWJSON
-    def set_vertical()
-      @rotate = &quot;vertical&quot;
-    end
-  end
-
-  # scatter value
-  #
-  #  +x+
-  #  +dot_size+
-  #  +y+
-  class ScatterValue
-    include OWJSON
-    def initialize( x, y, dot_size=-1 )
-      @x = x
-      @y = y
-      set_dot_size(dot_size) if dot_size &gt; 0
-    end
-  end
-
-  #  +colour+
-  #  +dot_size+
-  #  +values+
-  class Scatter
-    include OWJSON
-    def initialize( colour, dot_size )
-      @type      = &quot;scatter&quot;
-      set_colour( colour )
-      set_dot_size( dot_size )
-    end
+    const_set(_class_name, new_class)
   end
 
 
@@ -314,7 +256,7 @@ module OFC2
 
     # it must be done in that way because method_missing method replace _ to __,
     # maybe I add seccond parameter to handle with that
-    %w(x_axis y_axis y_axis_right x_legend y_legend bg_colour).each do |method|
+    %w(radar_axis x_axis y_axis y_axis_right x_legend y_legend bg_colour).each do |method|
       define_method(&quot;set_#{method}&quot;) do |a|
         self.instance_variable_set(&quot;@#{method}&quot;, a)
       end
@@ -338,323 +280,11 @@ module OFC2
 
     def render
       s = to_json
-      # everything about underscores
+      # about underscores
       s.gsub!('___','') # that is for @___3d variable
       s.gsub!('__','-') # that is for @smt__smt variables
       # variables @smt_smt should go without changes
       s
     end
   end
-
-  # line chart
-  #
-  #  +values+
-  #  +width+
-  #  +colour+
-  #  +font_size+
-  #  +dot_size+
-  #  +halo_size+
-  #  +text+
-  class LineBase
-    include OWJSON
-    def initialize(text = 'label text', font_size=10, values = [9,6,7,9,5,7,6,9,7], colour = '#0000FFs')
-      @type      = &quot;line_dot&quot;
-      @text      = text
-      @font__size = font_size
-      @values    = values
-      @colour    = colour
-    end
-  end
-
-
-  #  +value+
-  #  +colour+
-  #  +tip+
-  #  +size+
-  class DotValue
-    include OWJSON
-    def initialize(value = 0, colour = '', tip = nil)
-      @value = value
-      @colour = colour
-      @tip = tip if tip
-    end
-  end
-  # go to class LineBase for details
-  class LineDot &lt; LineBase ;end
-
-  # go to class LineBase for details
-  class Line &lt; LineBase
-    def initialize(text = 'label text', font_size=10, values = [9,6,7,9,5,7,6,9,7], colour = '#00FF00')
-      super
-      @type      = &quot;line&quot;
-    end
-  end
-
-  # go to class LineBase for details
-  class LineHollow &lt; LineBase
-    def initialize(text = 'label text', font_size=10, values = [9,6,7,9,5,7,6,9,7], colour = '#FF0000')
-      super
-      @type      = &quot;line_hollow&quot;
-    end
-  end
-
-  #  +width+
-  #  +color+
-  #  +values+
-  #  +dot_size+
-  #  +text+
-  #  +font_size+
-  #  +fill_alpha+
-  class AreaHollow
-    include OWJSON
-    def initialize(fill_alpha = 0.35, values = [])
-      @type      = &quot;area_hollow&quot;
-      set_fill_alpha  fill_alpha
-      @values    = values
-    end
-  end
-
-  #  +alpha+
-  #  +colour+
-  #  +values+
-  #  +text+
-  #  +font_size+
-  class BarBase
-    include OWJSON
-    def initialize(values = [], text = '', size = 10)
-      @values = values
-      @text = text
-      @font__size = size
-    end
-    def set_key( text, size )
-      @text = text
-      @font__size = size
-    end
-    def append_value( v )
-      @values &lt;&lt; v
-    end
-    alias_method :&lt;&lt;, :append_value
-  end
-
-  # go to class BarBase for details
-  class Bar &lt; BarBase
-    def initialize(values = [], text = '', size = 10)
-      super
-      @type      = &quot;bar&quot;
-    end
-  end
-
-  #  +top+
-  #  +colour+
-  #  +tip+
-  class Value
-    include OWJSON
-    def initialize(top = 0, color = '', tip = nil)
-      @top = top
-      @colour = color
-      @tip = tip
-    end
-  end
-  class Bar3d &lt; BarBase
-    def initialize(values = [], text = '', size = 10)
-      super
-      @type      = &quot;bar_3d&quot;
-    end
-  end
-
-  # go to class BarBase documentation for details
-  class BarGlass &lt; BarBase
-    def initialize(values = [], text = '', size = 10)
-      super
-      @type      = &quot;bar_glass&quot;
-    end
-  end
-
-  # go to class BarBase documentation for details
-  #
-  #  +offset+
-  #  +colour+
-  #  +outline_colour+
-  class BarSketch &lt; BarBase
-    def initialize( colour = '#ff0000', outline_colour = '#00FF00', fun_factor = 5)
-      @type      = &quot;bar_sketch&quot;
-      set_colour( colour )
-      set_outline_colour( outline_colour )
-      @offset = fun_factor
-    end
-  end
-
-  # go to class BarBase documentation for details
-  # +keys+
-  class BarStack &lt; BarBase
-    include OWJSON
-    def initialize(values = [], text = '', size = 10, keys = [])
-      super(values, text, size)
-      @type      = &quot;bar_stack&quot;
-      @keys      = keys
-    end
-
-    def append_key( key )
-      @keys &lt;&lt; key
-    end
-
-    def set_keys( keys )
-      @keys = keys
-    end
-    alias_method :keys=, :set_keys
-
-
-    def append_value( v )
-      @values &lt;&lt; v
-    end
-    alias_method :append_stack, :append_value
-    alias_method :&lt;&lt;, :append_value
-  end
-
-  # go to class Value documentation for details
-  #
-  #  +val+
-  #  +colour+
-  class BarStackValue &lt; Value
-    include OWJSON
-    def initialize(val, colour)
-      @val = val
-      @colour = colour
-    end
-  end
-
-  #  +colour+
-  #  +text+
-  #  +font_size+
-  class BarStackKey
-    include OWJSON
-    def initialize( colour, text, font_size )
-      @colour = colour
-      @text = text
-      @font__size = font_size
-    end
-  end
-
-
-  #  +left+
-  #  +right+
-  class HBarValue
-    include OWJSON
-    def initialize( left = 0, right = 0, tip = nil )
-      @left = left
-      @right = right
-      @tip = tip if tip
-    end
-  end
-
-  #  +colour+
-  #  +text+
-  #  +font_size+
-  #  +values+
-  class HBar
-    include OWJSON
-    def initialize(colour = &quot;#9933CC&quot;, text = '', font_size = 10)
-      @type      = &quot;hbar&quot;
-      @colour    = colour
-      @text      = text
-      set_font_size font_size
-      @values    = []
-    end
-
-    # v suppostu be HBarValue class
-    def append_value( v )
-      @values &lt;&lt; v
-    end
-    alias_method :&lt;&lt;, :append_value
-
-  end
-
-  # pie value
-  #  +value+
-  #  +text+
-  class PieValue
-    include OWJSON
-    def initialize( value, text )
-      @value  = value
-      @text   = text
-    end
-  end
-
-
-  #  +colours+
-  #  +alpha+
-  #  +border+
-  #  +values+
-  #  +animate+
-  #  +start_angle+
-  class Pie
-    include OWJSON
-    def initialize(colours = [&quot;#d01f3c&quot;,&quot;#356aa0&quot;,&quot;#C79810&quot;],
-        alpha = 0.6,
-        border = 2,
-        values = [2,3, PieValue.new(6.5, &quot;hello (6.5)&quot;)]
-      )
-      @type     = 'pie'
-      @colours  = colours
-      @alpha	= alpha
-      @border	= border
-      @values	= values
-    end
-  end
-
-
-  # +shadow+
-  # +stroke+
-  # +colour+ text colour
-  # +background+ background colour
-  # +title+ title style
-  # +body+ body style
-  class Tooltip
-    include OWJSON
-
-    def set_title_style( style = '')
-      @title = style
-    end
-
-    def set_body_style( style = '')
-      @body = style
-    end
-
-    def set_proximity
-      @mouse = 1
-    end
-    alias_method :proximity, :set_proximity
-
-    def set_hover
-      @mouse = 2
-    end
-    alias_method :hover, :set_hover
-  end
-
-
-  class ShapePoint
-    include OWJSON
-
-    def initialize( x, y )
-      @x = x
-      @y = y
-    end
-  end
-
-  class Shape
-    include OWJSON
-    def initialize( colour = '', values = [] )
-      @type		= &quot;shape&quot;
-      @colour	= colour
-      @values	= values
-    end
-
-    def append_value( p )
-      @values &lt;&lt; p
-    end
-    alias_method :&lt;&lt;, :append_value
-    alias_method :add_element, :append_value
-
-  end
-
 end</diff>
      <filename>lib/open_flash_chart_2.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,2 +1,2 @@
-VERSION: open-flash-chart-2-hyperion
-DATE: 11.12.2008
+VERSION: open-flash-chart-2-ichor
+DATE: 02.05.2009</diff>
      <filename>requirements/VERSION.txt</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>requirements/open-flash-chart.swf</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
-/*	SWFObject v2.0 &lt;http://code.google.com/p/swfobject/&gt;
-	Copyright (c) 2007 Geoff Stearns, Michael Williams, and Bobby van der Sluis
+/* SWFObject v2.1 &lt;http://code.google.com/p/swfobject/&gt;
+	Copyright (c) 2007-2008 Geoff Stearns, Michael Williams, and Bobby van der Sluis
 	This software is released under the MIT License &lt;http://www.opensource.org/licenses/mit-license.php&gt;
 */
-var swfobject=function(){var Z=&quot;undefined&quot;,P=&quot;object&quot;,B=&quot;Shockwave Flash&quot;,h=&quot;ShockwaveFlash.ShockwaveFlash&quot;,W=&quot;application/x-shockwave-flash&quot;,K=&quot;SWFObjectExprInst&quot;,G=window,g=document,N=navigator,f=[],H=[],Q=null,L=null,T=null,S=false,C=false;var a=function(){var l=typeof g.getElementById!=Z&amp;&amp;typeof g.getElementsByTagName!=Z&amp;&amp;typeof g.createElement!=Z&amp;&amp;typeof g.appendChild!=Z&amp;&amp;typeof g.replaceChild!=Z&amp;&amp;typeof g.removeChild!=Z&amp;&amp;typeof g.cloneNode!=Z,t=[0,0,0],n=null;if(typeof N.plugins!=Z&amp;&amp;typeof N.plugins[B]==P){n=N.plugins[B].description;if(n){n=n.replace(/^.*\s+(\S+\s+\S+$)/,&quot;$1&quot;);t[0]=parseInt(n.replace(/^(.*)\..*$/,&quot;$1&quot;),10);t[1]=parseInt(n.replace(/^.*\.(.*)\s.*$/,&quot;$1&quot;),10);t[2]=/r/.test(n)?parseInt(n.replace(/^.*r(.*)$/,&quot;$1&quot;),10):0}}else{if(typeof G.ActiveXObject!=Z){var o=null,s=false;try{o=new ActiveXObject(h+&quot;.7&quot;)}catch(k){try{o=new ActiveXObject(h+&quot;.6&quot;);t=[6,0,21];o.AllowScriptAccess=&quot;always&quot;}catch(k){if(t[0]==6){s=true}}if(!s){try{o=new ActiveXObject(h)}catch(k){}}}if(!s&amp;&amp;o){try{n=o.GetVariable(&quot;$version&quot;);if(n){n=n.split(&quot; &quot;)[1].split(&quot;,&quot;);t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]}}catch(k){}}}}var v=N.userAgent.toLowerCase(),j=N.platform.toLowerCase(),r=/webkit/.test(v)?parseFloat(v.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,&quot;$1&quot;)):false,i=false,q=j?/win/.test(j):/win/.test(v),m=j?/mac/.test(j):/mac/.test(v);/*@cc_on i=true;@if(@_win32)q=true;@elif(@_mac)m=true;@end@*/return{w3cdom:l,pv:t,webkit:r,ie:i,win:q,mac:m}}();var e=function(){if(!a.w3cdom){return }J(I);if(a.ie&amp;&amp;a.win){try{g.write(&quot;&lt;script id=__ie_ondomload defer=true src=//:&gt;&lt;\/script&gt;&quot;);var i=c(&quot;__ie_ondomload&quot;);if(i){i.onreadystatechange=function(){if(this.readyState==&quot;complete&quot;){this.parentNode.removeChild(this);V()}}}}catch(j){}}if(a.webkit&amp;&amp;typeof g.readyState!=Z){Q=setInterval(function(){if(/loaded|complete/.test(g.readyState)){V()}},10)}if(typeof g.addEventListener!=Z){g.addEventListener(&quot;DOMContentLoaded&quot;,V,null)}M(V)}();function V(){if(S){return }if(a.ie&amp;&amp;a.win){var m=Y(&quot;span&quot;);try{var l=g.getElementsByTagName(&quot;body&quot;)[0].appendChild(m);l.parentNode.removeChild(l)}catch(n){return }}S=true;if(Q){clearInterval(Q);Q=null}var j=f.length;for(var k=0;k&lt;j;k++){f[k]()}}function J(i){if(S){i()}else{f[f.length]=i}}function M(j){if(typeof G.addEventListener!=Z){G.addEventListener(&quot;load&quot;,j,false)}else{if(typeof g.addEventListener!=Z){g.addEventListener(&quot;load&quot;,j,false)}else{if(typeof G.attachEvent!=Z){G.attachEvent(&quot;onload&quot;,j)}else{if(typeof G.onload==&quot;function&quot;){var i=G.onload;G.onload=function(){i();j()}}else{G.onload=j}}}}}function I(){var l=H.length;for(var j=0;j&lt;l;j++){var m=H[j].id;if(a.pv[0]&gt;0){var k=c(m);if(k){H[j].width=k.getAttribute(&quot;width&quot;)?k.getAttribute(&quot;width&quot;):&quot;0&quot;;H[j].height=k.getAttribute(&quot;height&quot;)?k.getAttribute(&quot;height&quot;):&quot;0&quot;;if(O(H[j].swfVersion)){if(a.webkit&amp;&amp;a.webkit&lt;312){U(k)}X(m,true)}else{if(H[j].expressInstall&amp;&amp;!C&amp;&amp;O(&quot;6.0.65&quot;)&amp;&amp;(a.win||a.mac)){D(H[j])}else{d(k)}}}}else{X(m,true)}}}function U(m){var k=m.getElementsByTagName(P)[0];if(k){var p=Y(&quot;embed&quot;),r=k.attributes;if(r){var o=r.length;for(var n=0;n&lt;o;n++){if(r[n].nodeName.toLowerCase()==&quot;data&quot;){p.setAttribute(&quot;src&quot;,r[n].nodeValue)}else{p.setAttribute(r[n].nodeName,r[n].nodeValue)}}}var q=k.childNodes;if(q){var s=q.length;for(var l=0;l&lt;s;l++){if(q[l].nodeType==1&amp;&amp;q[l].nodeName.toLowerCase()==&quot;param&quot;){p.setAttribute(q[l].getAttribute(&quot;name&quot;),q[l].getAttribute(&quot;value&quot;))}}}m.parentNode.replaceChild(p,m)}}function F(i){if(a.ie&amp;&amp;a.win&amp;&amp;O(&quot;8.0.0&quot;)){G.attachEvent(&quot;onunload&quot;,function(){var k=c(i);if(k){for(var j in k){if(typeof k[j]==&quot;function&quot;){k[j]=function(){}}}k.parentNode.removeChild(k)}})}}function D(j){C=true;var o=c(j.id);if(o){if(j.altContentId){var l=c(j.altContentId);if(l){L=l;T=j.altContentId}}else{L=b(o)}if(!(/%$/.test(j.width))&amp;&amp;parseInt(j.width,10)&lt;310){j.width=&quot;310&quot;}if(!(/%$/.test(j.height))&amp;&amp;parseInt(j.height,10)&lt;137){j.height=&quot;137&quot;}g.title=g.title.slice(0,47)+&quot; - Flash Player Installation&quot;;var n=a.ie&amp;&amp;a.win?&quot;ActiveX&quot;:&quot;PlugIn&quot;,k=g.title,m=&quot;MMredirectURL=&quot;+G.location+&quot;&amp;MMplayerType=&quot;+n+&quot;&amp;MMdoctitle=&quot;+k,p=j.id;if(a.ie&amp;&amp;a.win&amp;&amp;o.readyState!=4){var i=Y(&quot;div&quot;);p+=&quot;SWFObjectNew&quot;;i.setAttribute(&quot;id&quot;,p);o.parentNode.insertBefore(i,o);o.style.display=&quot;none&quot;;G.attachEvent(&quot;onload&quot;,function(){o.parentNode.removeChild(o)})}R({data:j.expressInstall,id:K,width:j.width,height:j.height},{flashvars:m},p)}}function d(j){if(a.ie&amp;&amp;a.win&amp;&amp;j.readyState!=4){var i=Y(&quot;div&quot;);j.parentNode.insertBefore(i,j);i.parentNode.replaceChild(b(j),i);j.style.display=&quot;none&quot;;G.attachEvent(&quot;onload&quot;,function(){j.parentNode.removeChild(j)})}else{j.parentNode.replaceChild(b(j),j)}}function b(n){var m=Y(&quot;div&quot;);if(a.win&amp;&amp;a.ie){m.innerHTML=n.innerHTML}else{var k=n.getElementsByTagName(P)[0];if(k){var o=k.childNodes;if(o){var j=o.length;for(var l=0;l&lt;j;l++){if(!(o[l].nodeType==1&amp;&amp;o[l].nodeName.toLowerCase()==&quot;param&quot;)&amp;&amp;!(o[l].nodeType==8)){m.appendChild(o[l].cloneNode(true))}}}}}return m}function R(AE,AC,q){var p,t=c(q);if(typeof AE.id==Z){AE.id=q}if(a.ie&amp;&amp;a.win){var AD=&quot;&quot;;for(var z in AE){if(AE[z]!=Object.prototype[z]){if(z==&quot;data&quot;){AC.movie=AE[z]}else{if(z.toLowerCase()==&quot;styleclass&quot;){AD+=' class=&quot;'+AE[z]+'&quot;'}else{if(z!=&quot;classid&quot;){AD+=&quot; &quot;+z+'=&quot;'+AE[z]+'&quot;'}}}}}var AB=&quot;&quot;;for(var y in AC){if(AC[y]!=Object.prototype[y]){AB+='&lt;param name=&quot;'+y+'&quot; value=&quot;'+AC[y]+'&quot; /&gt;'}}t.outerHTML='&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;'+AD+&quot;&gt;&quot;+AB+&quot;&lt;/object&gt;&quot;;F(AE.id);p=c(AE.id)}else{if(a.webkit&amp;&amp;a.webkit&lt;312){var AA=Y(&quot;embed&quot;);AA.setAttribute(&quot;type&quot;,W);for(var x in AE){if(AE[x]!=Object.prototype[x]){if(x==&quot;data&quot;){AA.setAttribute(&quot;src&quot;,AE[x])}else{if(x.toLowerCase()==&quot;styleclass&quot;){AA.setAttribute(&quot;class&quot;,AE[x])}else{if(x!=&quot;classid&quot;){AA.setAttribute(x,AE[x])}}}}}for(var w in AC){if(AC[w]!=Object.prototype[w]){if(w!=&quot;movie&quot;){AA.setAttribute(w,AC[w])}}}t.parentNode.replaceChild(AA,t);p=AA}else{var s=Y(P);s.setAttribute(&quot;type&quot;,W);for(var v in AE){if(AE[v]!=Object.prototype[v]){if(v.toLowerCase()==&quot;styleclass&quot;){s.setAttribute(&quot;class&quot;,AE[v])}else{if(v!=&quot;classid&quot;){s.setAttribute(v,AE[v])}}}}for(var u in AC){if(AC[u]!=Object.prototype[u]&amp;&amp;u!=&quot;movie&quot;){E(s,u,AC[u])}}t.parentNode.replaceChild(s,t);p=s}}return p}function E(k,i,j){var l=Y(&quot;param&quot;);l.setAttribute(&quot;name&quot;,i);l.setAttribute(&quot;value&quot;,j);k.appendChild(l)}function c(i){return g.getElementById(i)}function Y(i){return g.createElement(i)}function O(k){var j=a.pv,i=k.split(&quot;.&quot;);i[0]=parseInt(i[0],10);i[1]=parseInt(i[1],10);i[2]=parseInt(i[2],10);return(j[0]&gt;i[0]||(j[0]==i[0]&amp;&amp;j[1]&gt;i[1])||(j[0]==i[0]&amp;&amp;j[1]==i[1]&amp;&amp;j[2]&gt;=i[2]))?true:false}function A(m,j){if(a.ie&amp;&amp;a.mac){return }var l=g.getElementsByTagName(&quot;head&quot;)[0],k=Y(&quot;style&quot;);k.setAttribute(&quot;type&quot;,&quot;text/css&quot;);k.setAttribute(&quot;media&quot;,&quot;screen&quot;);if(!(a.ie&amp;&amp;a.win)&amp;&amp;typeof g.createTextNode!=Z){k.appendChild(g.createTextNode(m+&quot; {&quot;+j+&quot;}&quot;))}l.appendChild(k);if(a.ie&amp;&amp;a.win&amp;&amp;typeof g.styleSheets!=Z&amp;&amp;g.styleSheets.length&gt;0){var i=g.styleSheets[g.styleSheets.length-1];if(typeof i.addRule==P){i.addRule(m,j)}}}function X(k,i){var j=i?&quot;visible&quot;:&quot;hidden&quot;;if(S){c(k).style.visibility=j}else{A(&quot;#&quot;+k,&quot;visibility:&quot;+j)}}return{registerObject:function(l,i,k){if(!a.w3cdom||!l||!i){return }var j={};j.id=l;j.swfVersion=i;j.expressInstall=k?k:false;H[H.length]=j;X(l,false)},getObjectById:function(l){var i=null;if(a.w3cdom&amp;&amp;S){var j=c(l);if(j){var k=j.getElementsByTagName(P)[0];if(!k||(k&amp;&amp;typeof j.SetVariable!=Z)){i=j}else{if(typeof k.SetVariable!=Z){i=k}}}}return i},embedSWF:function(n,u,r,t,j,m,k,p,s){if(!a.w3cdom||!n||!u||!r||!t||!j){return }r+=&quot;&quot;;t+=&quot;&quot;;if(O(j)){X(u,false);var q=(typeof s==P)?s:{};q.data=n;q.width=r;q.height=t;var o=(typeof p==P)?p:{};if(typeof k==P){for(var l in k){if(k[l]!=Object.prototype[l]){if(typeof o.flashvars!=Z){o.flashvars+=&quot;&amp;&quot;+l+&quot;=&quot;+k[l]}else{o.flashvars=l+&quot;=&quot;+k[l]}}}}J(function(){R(q,o,u);if(q.id==u){X(u,true)}})}else{if(m&amp;&amp;!C&amp;&amp;O(&quot;6.0.65&quot;)&amp;&amp;(a.win||a.mac)){X(u,false);J(function(){var i={};i.id=i.altContentId=u;i.width=r;i.height=t;i.expressInstall=m;D(i)})}}},getFlashPlayerVersion:function(){return{major:a.pv[0],minor:a.pv[1],release:a.pv[2]}},hasFlashPlayerVersion:O,createSWF:function(k,j,i){if(a.w3cdom&amp;&amp;S){return R(k,j,i)}else{return undefined}},createCSS:function(j,i){if(a.w3cdom){A(j,i)}},addDomLoadEvent:J,addLoadEvent:M,getQueryParamValue:function(m){var l=g.location.search||g.location.hash;if(m==null){return l}if(l){var k=l.substring(1).split(&quot;&amp;&quot;);for(var j=0;j&lt;k.length;j++){if(k[j].substring(0,k[j].indexOf(&quot;=&quot;))==m){return k[j].substring((k[j].indexOf(&quot;=&quot;)+1))}}}return&quot;&quot;},expressInstallCallback:function(){if(C&amp;&amp;L){var i=c(K);if(i){i.parentNode.replaceChild(L,i);if(T){X(T,true);if(a.ie&amp;&amp;a.win){L.style.display=&quot;block&quot;}}L=null;T=null;C=false}}}}}();
\ No newline at end of file
+var swfobject=function(){var b=&quot;undefined&quot;,Q=&quot;object&quot;,n=&quot;Shockwave Flash&quot;,p=&quot;ShockwaveFlash.ShockwaveFlash&quot;,P=&quot;application/x-shockwave-flash&quot;,m=&quot;SWFObjectExprInst&quot;,j=window,K=document,T=navigator,o=[],N=[],i=[],d=[],J,Z=null,M=null,l=null,e=false,A=false;var h=function(){var v=typeof K.getElementById!=b&amp;&amp;typeof K.getElementsByTagName!=b&amp;&amp;typeof K.createElement!=b,AC=[0,0,0],x=null;if(typeof T.plugins!=b&amp;&amp;typeof T.plugins[n]==Q){x=T.plugins[n].description;if(x&amp;&amp;!(typeof T.mimeTypes!=b&amp;&amp;T.mimeTypes[P]&amp;&amp;!T.mimeTypes[P].enabledPlugin)){x=x.replace(/^.*\s+(\S+\s+\S+$)/,&quot;$1&quot;);AC[0]=parseInt(x.replace(/^(.*)\..*$/,&quot;$1&quot;),10);AC[1]=parseInt(x.replace(/^.*\.(.*)\s.*$/,&quot;$1&quot;),10);AC[2]=/r/.test(x)?parseInt(x.replace(/^.*r(.*)$/,&quot;$1&quot;),10):0}}else{if(typeof j.ActiveXObject!=b){var y=null,AB=false;try{y=new ActiveXObject(p+&quot;.7&quot;)}catch(t){try{y=new ActiveXObject(p+&quot;.6&quot;);AC=[6,0,21];y.AllowScriptAccess=&quot;always&quot;}catch(t){if(AC[0]==6){AB=true}}if(!AB){try{y=new ActiveXObject(p)}catch(t){}}}if(!AB&amp;&amp;y){try{x=y.GetVariable(&quot;$version&quot;);if(x){x=x.split(&quot; &quot;)[1].split(&quot;,&quot;);AC=[parseInt(x[0],10),parseInt(x[1],10),parseInt(x[2],10)]}}catch(t){}}}}var AD=T.userAgent.toLowerCase(),r=T.platform.toLowerCase(),AA=/webkit/.test(AD)?parseFloat(AD.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,&quot;$1&quot;)):false,q=false,z=r?/win/.test(r):/win/.test(AD),w=r?/mac/.test(r):/mac/.test(AD);/*@cc_on q=true;@if(@_win32)z=true;@elif(@_mac)w=true;@end@*/return{w3cdom:v,pv:AC,webkit:AA,ie:q,win:z,mac:w}}();var L=function(){if(!h.w3cdom){return }f(H);if(h.ie&amp;&amp;h.win){try{K.write(&quot;&lt;script id=__ie_ondomload defer=true src=//:&gt;&lt;\/script&gt;&quot;);J=C(&quot;__ie_ondomload&quot;);if(J){I(J,&quot;onreadystatechange&quot;,S)}}catch(q){}}if(h.webkit&amp;&amp;typeof K.readyState!=b){Z=setInterval(function(){if(/loaded|complete/.test(K.readyState)){E()}},10)}if(typeof K.addEventListener!=b){K.addEventListener(&quot;DOMContentLoaded&quot;,E,null)}R(E)}();function S(){if(J.readyState==&quot;complete&quot;){J.parentNode.removeChild(J);E()}}function E(){if(e){return }if(h.ie&amp;&amp;h.win){var v=a(&quot;span&quot;);try{var u=K.getElementsByTagName(&quot;body&quot;)[0].appendChild(v);u.parentNode.removeChild(u)}catch(w){return }}e=true;if(Z){clearInterval(Z);Z=null}var q=o.length;for(var r=0;r&lt;q;r++){o[r]()}}function f(q){if(e){q()}else{o[o.length]=q}}function R(r){if(typeof j.addEventListener!=b){j.addEventListener(&quot;load&quot;,r,false)}else{if(typeof K.addEventListener!=b){K.addEventListener(&quot;load&quot;,r,false)}else{if(typeof j.attachEvent!=b){I(j,&quot;onload&quot;,r)}else{if(typeof j.onload==&quot;function&quot;){var q=j.onload;j.onload=function(){q();r()}}else{j.onload=r}}}}}function H(){var t=N.length;for(var q=0;q&lt;t;q++){var u=N[q].id;if(h.pv[0]&gt;0){var r=C(u);if(r){N[q].width=r.getAttribute(&quot;width&quot;)?r.getAttribute(&quot;width&quot;):&quot;0&quot;;N[q].height=r.getAttribute(&quot;height&quot;)?r.getAttribute(&quot;height&quot;):&quot;0&quot;;if(c(N[q].swfVersion)){if(h.webkit&amp;&amp;h.webkit&lt;312){Y(r)}W(u,true)}else{if(N[q].expressInstall&amp;&amp;!A&amp;&amp;c(&quot;6.0.65&quot;)&amp;&amp;(h.win||h.mac)){k(N[q])}else{O(r)}}}}else{W(u,true)}}}function Y(t){var q=t.getElementsByTagName(Q)[0];if(q){var w=a(&quot;embed&quot;),y=q.attributes;if(y){var v=y.length;for(var u=0;u&lt;v;u++){if(y[u].nodeName==&quot;DATA&quot;){w.setAttribute(&quot;src&quot;,y[u].nodeValue)}else{w.setAttribute(y[u].nodeName,y[u].nodeValue)}}}var x=q.childNodes;if(x){var z=x.length;for(var r=0;r&lt;z;r++){if(x[r].nodeType==1&amp;&amp;x[r].nodeName==&quot;PARAM&quot;){w.setAttribute(x[r].getAttribute(&quot;name&quot;),x[r].getAttribute(&quot;value&quot;))}}}t.parentNode.replaceChild(w,t)}}function k(w){A=true;var u=C(w.id);if(u){if(w.altContentId){var y=C(w.altContentId);if(y){M=y;l=w.altContentId}}else{M=G(u)}if(!(/%$/.test(w.width))&amp;&amp;parseInt(w.width,10)&lt;310){w.width=&quot;310&quot;}if(!(/%$/.test(w.height))&amp;&amp;parseInt(w.height,10)&lt;137){w.height=&quot;137&quot;}K.title=K.title.slice(0,47)+&quot; - Flash Player Installation&quot;;var z=h.ie&amp;&amp;h.win?&quot;ActiveX&quot;:&quot;PlugIn&quot;,q=K.title,r=&quot;MMredirectURL=&quot;+j.location+&quot;&amp;MMplayerType=&quot;+z+&quot;&amp;MMdoctitle=&quot;+q,x=w.id;if(h.ie&amp;&amp;h.win&amp;&amp;u.readyState!=4){var t=a(&quot;div&quot;);x+=&quot;SWFObjectNew&quot;;t.setAttribute(&quot;id&quot;,x);u.parentNode.insertBefore(t,u);u.style.display=&quot;none&quot;;var v=function(){u.parentNode.removeChild(u)};I(j,&quot;onload&quot;,v)}U({data:w.expressInstall,id:m,width:w.width,height:w.height},{flashvars:r},x)}}function O(t){if(h.ie&amp;&amp;h.win&amp;&amp;t.readyState!=4){var r=a(&quot;div&quot;);t.parentNode.insertBefore(r,t);r.parentNode.replaceChild(G(t),r);t.style.display=&quot;none&quot;;var q=function(){t.parentNode.removeChild(t)};I(j,&quot;onload&quot;,q)}else{t.parentNode.replaceChild(G(t),t)}}function G(v){var u=a(&quot;div&quot;);if(h.win&amp;&amp;h.ie){u.innerHTML=v.innerHTML}else{var r=v.getElementsByTagName(Q)[0];if(r){var w=r.childNodes;if(w){var q=w.length;for(var t=0;t&lt;q;t++){if(!(w[t].nodeType==1&amp;&amp;w[t].nodeName==&quot;PARAM&quot;)&amp;&amp;!(w[t].nodeType==8)){u.appendChild(w[t].cloneNode(true))}}}}}return u}function U(AG,AE,t){var q,v=C(t);if(v){if(typeof AG.id==b){AG.id=t}if(h.ie&amp;&amp;h.win){var AF=&quot;&quot;;for(var AB in AG){if(AG[AB]!=Object.prototype[AB]){if(AB.toLowerCase()==&quot;data&quot;){AE.movie=AG[AB]}else{if(AB.toLowerCase()==&quot;styleclass&quot;){AF+=' class=&quot;'+AG[AB]+'&quot;'}else{if(AB.toLowerCase()!=&quot;classid&quot;){AF+=&quot; &quot;+AB+'=&quot;'+AG[AB]+'&quot;'}}}}}var AD=&quot;&quot;;for(var AA in AE){if(AE[AA]!=Object.prototype[AA]){AD+='&lt;param name=&quot;'+AA+'&quot; value=&quot;'+AE[AA]+'&quot; /&gt;'}}v.outerHTML='&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot;'+AF+&quot;&gt;&quot;+AD+&quot;&lt;/object&gt;&quot;;i[i.length]=AG.id;q=C(AG.id)}else{if(h.webkit&amp;&amp;h.webkit&lt;312){var AC=a(&quot;embed&quot;);AC.setAttribute(&quot;type&quot;,P);for(var z in AG){if(AG[z]!=Object.prototype[z]){if(z.toLowerCase()==&quot;data&quot;){AC.setAttribute(&quot;src&quot;,AG[z])}else{if(z.toLowerCase()==&quot;styleclass&quot;){AC.setAttribute(&quot;class&quot;,AG[z])}else{if(z.toLowerCase()!=&quot;classid&quot;){AC.setAttribute(z,AG[z])}}}}}for(var y in AE){if(AE[y]!=Object.prototype[y]){if(y.toLowerCase()!=&quot;movie&quot;){AC.setAttribute(y,AE[y])}}}v.parentNode.replaceChild(AC,v);q=AC}else{var u=a(Q);u.setAttribute(&quot;type&quot;,P);for(var x in AG){if(AG[x]!=Object.prototype[x]){if(x.toLowerCase()==&quot;styleclass&quot;){u.setAttribute(&quot;class&quot;,AG[x])}else{if(x.toLowerCase()!=&quot;classid&quot;){u.setAttribute(x,AG[x])}}}}for(var w in AE){if(AE[w]!=Object.prototype[w]&amp;&amp;w.toLowerCase()!=&quot;movie&quot;){F(u,w,AE[w])}}v.parentNode.replaceChild(u,v);q=u}}}return q}function F(t,q,r){var u=a(&quot;param&quot;);u.setAttribute(&quot;name&quot;,q);u.setAttribute(&quot;value&quot;,r);t.appendChild(u)}function X(r){var q=C(r);if(q&amp;&amp;(q.nodeName==&quot;OBJECT&quot;||q.nodeName==&quot;EMBED&quot;)){if(h.ie&amp;&amp;h.win){if(q.readyState==4){B(r)}else{j.attachEvent(&quot;onload&quot;,function(){B(r)})}}else{q.parentNode.removeChild(q)}}}function B(t){var r=C(t);if(r){for(var q in r){if(typeof r[q]==&quot;function&quot;){r[q]=null}}r.parentNode.removeChild(r)}}function C(t){var q=null;try{q=K.getElementById(t)}catch(r){}return q}function a(q){return K.createElement(q)}function I(t,q,r){t.attachEvent(q,r);d[d.length]=[t,q,r]}function c(t){var r=h.pv,q=t.split(&quot;.&quot;);q[0]=parseInt(q[0],10);q[1]=parseInt(q[1],10)||0;q[2]=parseInt(q[2],10)||0;return(r[0]&gt;q[0]||(r[0]==q[0]&amp;&amp;r[1]&gt;q[1])||(r[0]==q[0]&amp;&amp;r[1]==q[1]&amp;&amp;r[2]&gt;=q[2]))?true:false}function V(v,r){if(h.ie&amp;&amp;h.mac){return }var u=K.getElementsByTagName(&quot;head&quot;)[0],t=a(&quot;style&quot;);t.setAttribute(&quot;type&quot;,&quot;text/css&quot;);t.setAttribute(&quot;media&quot;,&quot;screen&quot;);if(!(h.ie&amp;&amp;h.win)&amp;&amp;typeof K.createTextNode!=b){t.appendChild(K.createTextNode(v+&quot; {&quot;+r+&quot;}&quot;))}u.appendChild(t);if(h.ie&amp;&amp;h.win&amp;&amp;typeof K.styleSheets!=b&amp;&amp;K.styleSheets.length&gt;0){var q=K.styleSheets[K.styleSheets.length-1];if(typeof q.addRule==Q){q.addRule(v,r)}}}function W(t,q){var r=q?&quot;visible&quot;:&quot;hidden&quot;;if(e&amp;&amp;C(t)){C(t).style.visibility=r}else{V(&quot;#&quot;+t,&quot;visibility:&quot;+r)}}function g(s){var r=/[\\\&quot;&lt;&gt;\.;]/;var q=r.exec(s)!=null;return q?encodeURIComponent(s):s}var D=function(){if(h.ie&amp;&amp;h.win){window.attachEvent(&quot;onunload&quot;,function(){var w=d.length;for(var v=0;v&lt;w;v++){d[v][0].detachEvent(d[v][1],d[v][2])}var t=i.length;for(var u=0;u&lt;t;u++){X(i[u])}for(var r in h){h[r]=null}h=null;for(var q in swfobject){swfobject[q]=null}swfobject=null})}}();return{registerObject:function(u,q,t){if(!h.w3cdom||!u||!q){return }var r={};r.id=u;r.swfVersion=q;r.expressInstall=t?t:false;N[N.length]=r;W(u,false)},getObjectById:function(v){var q=null;if(h.w3cdom){var t=C(v);if(t){var u=t.getElementsByTagName(Q)[0];if(!u||(u&amp;&amp;typeof t.SetVariable!=b)){q=t}else{if(typeof u.SetVariable!=b){q=u}}}}return q},embedSWF:function(x,AE,AB,AD,q,w,r,z,AC){if(!h.w3cdom||!x||!AE||!AB||!AD||!q){return }AB+=&quot;&quot;;AD+=&quot;&quot;;if(c(q)){W(AE,false);var AA={};if(AC&amp;&amp;typeof AC===Q){for(var v in AC){if(AC[v]!=Object.prototype[v]){AA[v]=AC[v]}}}AA.data=x;AA.width=AB;AA.height=AD;var y={};if(z&amp;&amp;typeof z===Q){for(var u in z){if(z[u]!=Object.prototype[u]){y[u]=z[u]}}}if(r&amp;&amp;typeof r===Q){for(var t in r){if(r[t]!=Object.prototype[t]){if(typeof y.flashvars!=b){y.flashvars+=&quot;&amp;&quot;+t+&quot;=&quot;+r[t]}else{y.flashvars=t+&quot;=&quot;+r[t]}}}}f(function(){U(AA,y,AE);if(AA.id==AE){W(AE,true)}})}else{if(w&amp;&amp;!A&amp;&amp;c(&quot;6.0.65&quot;)&amp;&amp;(h.win||h.mac)){A=true;W(AE,false);f(function(){var AF={};AF.id=AF.altContentId=AE;AF.width=AB;AF.height=AD;AF.expressInstall=w;k(AF)})}}},getFlashPlayerVersion:function(){return{major:h.pv[0],minor:h.pv[1],release:h.pv[2]}},hasFlashPlayerVersion:c,createSWF:function(t,r,q){if(h.w3cdom){return U(t,r,q)}else{return undefined}},removeSWF:function(q){if(h.w3cdom){X(q)}},createCSS:function(r,q){if(h.w3cdom){V(r,q)}},addDomLoadEvent:f,addLoadEvent:R,getQueryParamValue:function(v){var u=K.location.search||K.location.hash;if(v==null){return g(u)}if(u){var t=u.substring(1).split(&quot;&amp;&quot;);for(var r=0;r&lt;t.length;r++){if(t[r].substring(0,t[r].indexOf(&quot;=&quot;))==v){return g(t[r].substring((t[r].indexOf(&quot;=&quot;)+1)))}}}return&quot;&quot;},expressInstallCallback:function(){if(A&amp;&amp;M){var q=C(m);if(q){q.parentNode.replaceChild(M,q);if(l){W(l,true);if(h.ie&amp;&amp;h.win){M.style.display=&quot;block&quot;}}M=null;l=null;A=false}}}}}();
\ No newline at end of file</diff>
      <filename>requirements/swfobject.js</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b4cd87534d6c8e1b68d9c8038e07023d765bf9b4</id>
    </parent>
  </parents>
  <author>
    <name>Rafa&#322;</name>
    <email>lisukorin@gmail.com</email>
  </author>
  <url>http://github.com/korin/open_flash_chart_2_plugin/commit/025f1ec537b44088300c7c7b208ef4ac831d4cfd</url>
  <id>025f1ec537b44088300c7c7b208ef4ac831d4cfd</id>
  <committed-date>2009-05-03T13:55:48-07:00</committed-date>
  <authored-date>2009-05-03T13:55:48-07:00</authored-date>
  <message>move plugin to use latest swf and javascript files, use Class.new to generate classes</message>
  <tree>1ad27fa083b878a75c3595a5635debe9c10c9a19</tree>
  <committer>
    <name>Rafa&#322;</name>
    <email>lisukorin@gmail.com</email>
  </committer>
</commit>
