dima-ruboss4ruby 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. data/Generators +7 -0
  2. data/History.txt +4 -0
  3. data/Manifest.txt +116 -0
  4. data/README.rdoc +23 -0
  5. data/gpl-3.0.txt +674 -0
  6. data/lib/ruboss4ruby.rb +84 -0
  7. data/lib/ruboss4ruby/active_foo.rb +221 -0
  8. data/lib/ruboss4ruby/active_record_tasks.rb +75 -0
  9. data/lib/ruboss4ruby/configuration.rb +59 -0
  10. data/lib/ruboss4ruby/datamapper_foo.rb +25 -0
  11. data/lib/ruboss4ruby/generated_attribute.rb +61 -0
  12. data/lib/ruboss4ruby/tasks.rb +80 -0
  13. data/merb_generators/ruboss_config.rb +103 -0
  14. data/merb_generators/ruboss_controller.rb +59 -0
  15. data/merb_generators/ruboss_flex_app.rb +67 -0
  16. data/merb_generators/ruboss_resource.rb +37 -0
  17. data/merb_generators/ruboss_resource_controller.rb +80 -0
  18. data/merb_generators/ruboss_scaffold.rb +157 -0
  19. data/merb_generators/templates/ruboss_config/actionscript.properties +16 -0
  20. data/merb_generators/templates/ruboss_config/actionscriptair.properties +16 -0
  21. data/merb_generators/templates/ruboss_config/expressInstall.swf +0 -0
  22. data/merb_generators/templates/ruboss_config/flex.properties +2 -0
  23. data/merb_generators/templates/ruboss_config/html-template/AC_OETags.js +276 -0
  24. data/merb_generators/templates/ruboss_config/html-template/history/history.css +6 -0
  25. data/merb_generators/templates/ruboss_config/html-template/history/history.js +645 -0
  26. data/merb_generators/templates/ruboss_config/html-template/history/historyFrame.html +29 -0
  27. data/merb_generators/templates/ruboss_config/html-template/index.template.html +121 -0
  28. data/merb_generators/templates/ruboss_config/html-template/playerProductInstall.swf +0 -0
  29. data/merb_generators/templates/ruboss_config/index.html.erb +18 -0
  30. data/merb_generators/templates/ruboss_config/mainair-app.xml +134 -0
  31. data/merb_generators/templates/ruboss_config/project.properties +18 -0
  32. data/merb_generators/templates/ruboss_config/projectair.properties +24 -0
  33. data/merb_generators/templates/ruboss_config/ruboss.yml +16 -0
  34. data/merb_generators/templates/ruboss_config/swfobject.js +5 -0
  35. data/merb_generators/templates/ruboss_controller/controller.as.erb +40 -0
  36. data/merb_generators/templates/ruboss_flex_app/mainapp.mxml +34 -0
  37. data/merb_generators/templates/ruboss_resource_controller/controller_ar.rb.erb +49 -0
  38. data/merb_generators/templates/ruboss_resource_controller/controller_dm.rb.erb +46 -0
  39. data/merb_generators/templates/ruboss_resource_controller/spec/controllers/%file_name%_spec.rb +7 -0
  40. data/merb_generators/templates/ruboss_resource_controller/spec/requests/%file_name%_spec.rb +1 -0
  41. data/merb_generators/templates/ruboss_resource_controller/test/controllers/%file_name%_test.rb +17 -0
  42. data/rails_generators/ruboss_config/USAGE +18 -0
  43. data/rails_generators/ruboss_config/ruboss_config_generator.rb +114 -0
  44. data/rails_generators/ruboss_config/templates/actionscript.properties +16 -0
  45. data/rails_generators/ruboss_config/templates/actionscriptair.properties +16 -0
  46. data/rails_generators/ruboss_config/templates/expressInstall.swf +0 -0
  47. data/rails_generators/ruboss_config/templates/flex.properties +2 -0
  48. data/rails_generators/ruboss_config/templates/html-template/AC_OETags.js +276 -0
  49. data/rails_generators/ruboss_config/templates/html-template/history/history.css +6 -0
  50. data/rails_generators/ruboss_config/templates/html-template/history/history.js +645 -0
  51. data/rails_generators/ruboss_config/templates/html-template/history/historyFrame.html +29 -0
  52. data/rails_generators/ruboss_config/templates/html-template/index.template.html +121 -0
  53. data/rails_generators/ruboss_config/templates/html-template/playerProductInstall.swf +0 -0
  54. data/rails_generators/ruboss_config/templates/index.html.erb +18 -0
  55. data/rails_generators/ruboss_config/templates/mainair-app.xml +134 -0
  56. data/rails_generators/ruboss_config/templates/mainapp-config.xml +21 -0
  57. data/rails_generators/ruboss_config/templates/mainapp.mxml +31 -0
  58. data/rails_generators/ruboss_config/templates/project-textmate.erb +52 -0
  59. data/rails_generators/ruboss_config/templates/project.properties +18 -0
  60. data/rails_generators/ruboss_config/templates/projectair.properties +24 -0
  61. data/rails_generators/ruboss_config/templates/ruboss.yml +14 -0
  62. data/rails_generators/ruboss_config/templates/ruboss_tasks.rake +5 -0
  63. data/rails_generators/ruboss_config/templates/swfobject.js +5 -0
  64. data/rails_generators/ruboss_controller/USAGE +11 -0
  65. data/rails_generators/ruboss_controller/ruboss_controller_generator.rb +31 -0
  66. data/rails_generators/ruboss_controller/templates/controller.as.erb +40 -0
  67. data/rails_generators/ruboss_scaffold/USAGE +35 -0
  68. data/rails_generators/ruboss_scaffold/ruboss_scaffold_generator.rb +177 -0
  69. data/rails_generators/ruboss_scaffold/templates/component.mxml.erb +149 -0
  70. data/rails_generators/ruboss_scaffold/templates/controller.rb.erb +97 -0
  71. data/rails_generators/ruboss_scaffold/templates/fixtures.yml.erb +35 -0
  72. data/rails_generators/ruboss_scaffold/templates/migration.rb.erb +19 -0
  73. data/rails_generators/ruboss_scaffold/templates/model.as.erb +42 -0
  74. data/rails_generators/ruboss_scaffold/templates/model.rb.erb +11 -0
  75. data/rails_generators/ruboss_yaml_scaffold/USAGE +14 -0
  76. data/rails_generators/ruboss_yaml_scaffold/ruboss_yaml_scaffold_generator.rb +44 -0
  77. data/rcl-1.0.txt +0 -0
  78. metadata +197 -0
@@ -0,0 +1,49 @@
1
+ class <%= class_name %> < Application
2
+ provides :xml, :fxml
3
+
4
+ # GET /<%= resource_path %>
5
+ def index
6
+ @<%= plural_model %> = <%= model_class_name %>.find(:all)
7
+ display @<%= plural_model %>
8
+ end
9
+
10
+ # GET /<%= resource_path %>/:id
11
+ def show
12
+ @<%= singular_model %> = <%= model_class_name %>.find_by_id(params[:id])
13
+ raise NotFound unless @<%= singular_model %>
14
+ display @<%= singular_model %>
15
+ end
16
+
17
+ # POST /<%= resource_path %>
18
+ def create
19
+ @<%= singular_model %> = <%= model_class_name %>.new(params[:<%= singular_model %>])
20
+ if @<%= singular_model %>.save
21
+ display @<%= singular_model %>
22
+ else
23
+ display @<%= singular_model %>.errors
24
+ end
25
+ end
26
+
27
+ # PUT /<%= resource_path %>/:id
28
+ def update
29
+ @<%= singular_model %> = <%= model_class_name %>.find_by_id(params[:id])
30
+ raise NotFound unless @<%= singular_model %>
31
+ if @<%= singular_model %>.update_attributes(params[:<%= singular_model %>])
32
+ display @<%= singular_model %>
33
+ else
34
+ display @<%= singular_model %>.errors
35
+ end
36
+ end
37
+
38
+ # DELETE /<%= resource_path %>/:id
39
+ def destroy
40
+ @<%= singular_model %> = <%= model_class_name %>.find_by_id(params[:id])
41
+ raise NotFound unless @<%= singular_model %>
42
+ if @<%= singular_model %>.destroy
43
+ display @<%= singular_model %>
44
+ else
45
+ display @<%= singular_model %>.errors
46
+ end
47
+ end
48
+
49
+ end
@@ -0,0 +1,46 @@
1
+ <% with_modules(modules) do -%>
2
+ class <%= class_name %> < Application
3
+ provides :xml, :fxml
4
+
5
+ def index
6
+ @<%= plural_model %> = <%= model_class_name %>.all
7
+ display @<%= plural_model %>
8
+ end
9
+
10
+ def show
11
+ @<%= singular_model %> = <%= model_class_name %>.get(<%= params_for_get %>)
12
+ raise NotFound unless @<%= singular_model %>
13
+ display @<%= singular_model %>
14
+ end
15
+
16
+ def create
17
+ @<%= singular_model %> = <%= model_class_name %>.new(params[:<%= singular_model %>])
18
+ if @<%= singular_model %>.save
19
+ display @<%= singular_model %>
20
+ else
21
+ display @<%= singular_model %>.errors
22
+ end
23
+ end
24
+
25
+ def update
26
+ @<%= singular_model %> = <%= model_class_name %>.get(<%= params_for_get %>)
27
+ raise NotFound unless @<%= singular_model %>
28
+ if @<%= singular_model %>.update_attributes(params[:<%= singular_model %>]) || !@<%= singular_model %>.dirty?
29
+ display @<%= singular_model %>
30
+ else
31
+ display @<%= singular_model %>.errors
32
+ end
33
+ end
34
+
35
+ def destroy
36
+ @<%= singular_model %> = <%= model_class_name %>.get(<%= params_for_get %>)
37
+ raise NotFound unless @<%= singular_model %>
38
+ if @<%= singular_model %>.destroy
39
+ display @<%= singular_model %>
40
+ else
41
+ display @<%= singular_model %>.errors
42
+ end
43
+ end
44
+
45
+ end # <%= class_name %>
46
+ <% end -%>
@@ -0,0 +1,7 @@
1
+ require File.join(File.dirname(__FILE__), <%= go_up(modules.size + 1) %>, 'spec_helper.rb')
2
+
3
+ describe <%= full_class_name %>, "index action" do
4
+ before(:each) do
5
+ dispatch_to(<%= full_class_name %>, :index)
6
+ end
7
+ end
@@ -0,0 +1 @@
1
+ require File.join(File.dirname(__FILE__), <%= go_up(modules.size + 1) %>, 'spec_helper.rb')
@@ -0,0 +1,17 @@
1
+ require File.join(File.dirname(__FILE__), <%= go_up(modules.size + 1) %>, "test_helper")
2
+
3
+ # Re-raise errors caught by the controller.
4
+ class <%= full_class_name %>; def rescue_action(e) raise e end; end
5
+
6
+ class <%= full_class_name %>Test < Test::Unit::TestCase
7
+
8
+ def setup
9
+ @controller = <%= full_class_name %>.build(fake_request)
10
+ @controller.dispatch('index')
11
+ end
12
+
13
+ # Replace this with your real tests.
14
+ def test_should_be_setup
15
+ assert false
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ Description:
2
+ Generates the primary Ruboss directory structure, sets up Flex Builder
3
+ specific descriptor files and options fetches the latest published
4
+ Ruboss Framework SWC file.
5
+
6
+ You can generate Flex Builder configuration for either *pure* Flex
7
+ project or an AIR project. To generate AIR configuration pass the -a
8
+ (--air) option to the generator.
9
+
10
+ Examples:
11
+ `./script/generate ruboss_config` # generates project structure and a
12
+ # default Flex app configuration. Fetches
13
+ # latest ruboss framework SWC to "lib"
14
+ # folder
15
+ `./script/generate ruboss_config -a` # as above but generates an AIR app
16
+ # and configuration
17
+ `./script/generate ruboss_config -s` # generates Flex app but does not fetch
18
+ # the ruboss framework SWC.
@@ -0,0 +1,114 @@
1
+ require 'open-uri'
2
+
3
+ class RubossConfigGenerator < Rails::Generator::Base
4
+ include Ruboss::Configuration
5
+
6
+ attr_reader :project_name,
7
+ :flex_project_name,
8
+ :base_package,
9
+ :base_folder,
10
+ :command_controller_name,
11
+ :component_names,
12
+ :application_tag,
13
+ :use_air
14
+
15
+ def initialize(runtime_args, runtime_options = {})
16
+ super
17
+ @project_name, @flex_project_name, @command_controller_name, @base_package, @base_folder = extract_names
18
+
19
+ # if we are updating main file only we probably want to maintain the type of project it is
20
+ if options[:main_only]
21
+ project_file_name = APP_ROOT + '/.project'
22
+ if File.exist?(project_file_name)
23
+ puts "Cannot combine -m (--main-app) and -a (--air) flags at the same time for an existing application.\n" <<
24
+ 'If you want to convert to AIR, remove -m flag.' if options[:air_config]
25
+ @use_air = true if File.read(project_file_name) =~/com.adobe.flexbuilder.apollo.apollobuilder/m
26
+ else
27
+ puts "Flex Builder project file doesn't exist. You should run 'ruboss_config' with -a (--air) option " <<
28
+ "or no arguments first to generate primary project structure."
29
+ exit 0;
30
+ end
31
+ else
32
+ @use_air = options[:air_config]
33
+ end
34
+
35
+ if @use_air
36
+ @application_tag = 'WindowedApplication'
37
+ else
38
+ @application_tag = 'Application'
39
+ end
40
+
41
+ @component_names = []
42
+ if File.exists?("app/flex/#{base_folder}/components/generated")
43
+ @component_names = list_mxml_files("app/flex/#{base_folder}/components/generated")
44
+ end
45
+ end
46
+
47
+ def manifest
48
+ record do |m|
49
+ if !options[:main_only]
50
+ m.file 'ruboss_tasks.rake', 'lib/tasks/ruboss_tasks.rake'
51
+ m.file 'flex.properties', '.flexProperties'
52
+ m.file 'ruboss.yml', 'config/ruboss.yml'
53
+ if @use_air
54
+ m.template 'actionscriptair.properties', '.actionScriptProperties'
55
+ m.template 'projectair.properties', '.project'
56
+ else
57
+ m.template 'actionscript.properties', '.actionScriptProperties'
58
+ m.template 'project.properties', '.project'
59
+ end
60
+
61
+ m.directory 'html-template/history'
62
+ %w(index.template.html AC_OETags.js playerProductInstall.swf).each do |file|
63
+ m.file "html-template/#{file}", "html-template/#{file}"
64
+ end
65
+
66
+ %w(history.css history.js historyFrame.html).each do |file|
67
+ m.file "html-template/history/#{file}", "html-template/history/#{file}"
68
+ end
69
+
70
+ %w(components controllers commands models events).each do |dir|
71
+ m.directory "app/flex/#{base_folder}/#{dir}"
72
+ end
73
+
74
+ m.directory "app/flex/#{base_folder}/components/generated"
75
+
76
+ framework_release = Ruboss::RUBOSS_FRAMEWORK_VERSION
77
+ framework_distribution_url = "http://ruboss.com/releases/ruboss-#{framework_release}.swc"
78
+ framework_destination_file = "lib/ruboss-#{framework_release}.swc"
79
+
80
+ if !options[:skip_framework] && !File.exist?(framework_destination_file)
81
+ puts "fetching #{framework_release} framework binary from: #{framework_distribution_url} ..."
82
+ open(framework_destination_file, "wb").write(open(framework_distribution_url).read)
83
+ puts "done. saved to #{framework_destination_file}"
84
+ end
85
+
86
+ m.file 'swfobject.js', 'public/javascripts/swfobject.js'
87
+ m.file 'expressInstall.swf', 'public/expressInstall.swf'
88
+ m.template 'index.html.erb', 'public/index.html'
89
+
90
+ m.dependency 'ruboss_controller', @args
91
+ end
92
+ m.template 'project-textmate.erb', "#{project_name.underscore}.tmproj"
93
+ m.template 'mainapp.mxml', File.join('app/flex', "#{project_name}.mxml")
94
+ m.template 'mainapp-config.xml', File.join('app/flex', "#{project_name}-config.xml")
95
+ m.template 'mainair-app.xml', File.join('app/flex', "#{project_name}-app.xml") if @use_air
96
+ end
97
+ end
98
+
99
+ protected
100
+ def add_options!(opt)
101
+ opt.separator ''
102
+ opt.separator 'Options:'
103
+ opt.on("-m", "--main-only", "Only generate the main Flex/AIR application file.",
104
+ "Default: false") { |v| options[:main_only] = v }
105
+ opt.on("-a", "--air", "Configure AIR project instead of Flex. Flex is default.",
106
+ "Default: false") { |v| options[:air_config] = v }
107
+ opt.on("-s", "--skip-framework", "Don't fetch the latest framework binary. You'll have to link/build the framework yourself.",
108
+ "Default: false") { |v| options[:skip_framework] = v }
109
+ end
110
+
111
+ def banner
112
+ "Usage: #{$0} #{spec.name}"
113
+ end
114
+ end
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <actionScriptProperties mainApplicationPath="<%= project_name %>.mxml" version="3">
3
+ <compiler additionalCompilerArguments="-locale en_US -keep-as3-metadata+=Resource,HasOne,HasMany,BelongsTo,DateTime,Lazy,Ignored" copyDependentFiles="true" enableModuleDebug="true" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="true" htmlHistoryManagement="true" htmlPlayerVersion="9.0.28" htmlPlayerVersionCheck="true" outputFolderPath="public/bin" rootURL="http://localhost:3000/bin" sourceFolderPath="app/flex" strict="true" useApolloConfig="false" verifyDigests="true" warn="true">
4
+ <compilerSourcePath/>
5
+ <libraryPath defaultLinkType="1">
6
+ <libraryPathEntry kind="4" path=""/>
7
+ <libraryPathEntry kind="1" linkType="1" path="lib"/>
8
+ </libraryPath>
9
+ <sourceAttachmentPath/>
10
+ </compiler>
11
+ <applications>
12
+ <application path="<%= project_name %>.mxml"/>
13
+ </applications>
14
+ <modules/>
15
+ <buildCSSFiles/>
16
+ </actionScriptProperties>
@@ -0,0 +1,16 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <actionScriptProperties mainApplicationPath="<%= project_name %>.mxml" version="3">
3
+ <compiler additionalCompilerArguments="-locale en_US -keep-as3-metadata+=Resource,HasOne,HasMany,BelongsTo,DateTime,Lazy,Ignored" copyDependentFiles="true" enableModuleDebug="true" generateAccessible="false" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="false" htmlPlayerVersion="9.0.28" htmlPlayerVersionCheck="true" outputFolderPath="bin-debug" sourceFolderPath="app/flex" strict="true" useApolloConfig="true" verifyDigests="true" warn="true">
4
+ <compilerSourcePath/>
5
+ <libraryPath defaultLinkType="1">
6
+ <libraryPathEntry kind="4" path=""/>
7
+ <libraryPathEntry kind="1" linkType="1" path="lib"/>
8
+ </libraryPath>
9
+ <sourceAttachmentPath/>
10
+ </compiler>
11
+ <applications>
12
+ <application path="<%= project_name %>.mxml"/>
13
+ </applications>
14
+ <modules/>
15
+ <buildCSSFiles/>
16
+ </actionScriptProperties>
@@ -0,0 +1,2 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <flexProperties flexServerType="0" toolCompile="true" useServerFlexSDK="false" version="1"/>
@@ -0,0 +1,276 @@
1
+ // Flash Player Version Detection - Rev 1.6
2
+ // Detect Client Browser type
3
+ // Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
4
+ var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
5
+ var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
6
+ var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
7
+
8
+ function ControlVersion()
9
+ {
10
+ var version;
11
+ var axo;
12
+ var e;
13
+
14
+ // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
15
+
16
+ try {
17
+ // version will be set for 7.X or greater players
18
+ axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
19
+ version = axo.GetVariable("$version");
20
+ } catch (e) {
21
+ }
22
+
23
+ if (!version)
24
+ {
25
+ try {
26
+ // version will be set for 6.X players only
27
+ axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
28
+
29
+ // installed player is some revision of 6.0
30
+ // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
31
+ // so we have to be careful.
32
+
33
+ // default to the first public version
34
+ version = "WIN 6,0,21,0";
35
+
36
+ // throws if AllowScripAccess does not exist (introduced in 6.0r47)
37
+ axo.AllowScriptAccess = "always";
38
+
39
+ // safe to call for 6.0r47 or greater
40
+ version = axo.GetVariable("$version");
41
+
42
+ } catch (e) {
43
+ }
44
+ }
45
+
46
+ if (!version)
47
+ {
48
+ try {
49
+ // version will be set for 4.X or 5.X player
50
+ axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
51
+ version = axo.GetVariable("$version");
52
+ } catch (e) {
53
+ }
54
+ }
55
+
56
+ if (!version)
57
+ {
58
+ try {
59
+ // version will be set for 3.X player
60
+ axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
61
+ version = "WIN 3,0,18,0";
62
+ } catch (e) {
63
+ }
64
+ }
65
+
66
+ if (!version)
67
+ {
68
+ try {
69
+ // version will be set for 2.X player
70
+ axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
71
+ version = "WIN 2,0,0,11";
72
+ } catch (e) {
73
+ version = -1;
74
+ }
75
+ }
76
+
77
+ return version;
78
+ }
79
+
80
+ // JavaScript helper required to detect Flash Player PlugIn version information
81
+ function GetSwfVer(){
82
+ // NS/Opera version >= 3 check for Flash plugin in plugin array
83
+ var flashVer = -1;
84
+
85
+ if (navigator.plugins != null && navigator.plugins.length > 0) {
86
+ if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
87
+ var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
88
+ var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
89
+ var descArray = flashDescription.split(" ");
90
+ var tempArrayMajor = descArray[2].split(".");
91
+ var versionMajor = tempArrayMajor[0];
92
+ var versionMinor = tempArrayMajor[1];
93
+ var versionRevision = descArray[3];
94
+ if (versionRevision == "") {
95
+ versionRevision = descArray[4];
96
+ }
97
+ if (versionRevision[0] == "d") {
98
+ versionRevision = versionRevision.substring(1);
99
+ } else if (versionRevision[0] == "r") {
100
+ versionRevision = versionRevision.substring(1);
101
+ if (versionRevision.indexOf("d") > 0) {
102
+ versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
103
+ }
104
+ }
105
+ var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
106
+ }
107
+ }
108
+ // MSN/WebTV 2.6 supports Flash 4
109
+ else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
110
+ // WebTV 2.5 supports Flash 3
111
+ else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
112
+ // older WebTV supports Flash 2
113
+ else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
114
+ else if ( isIE && isWin && !isOpera ) {
115
+ flashVer = ControlVersion();
116
+ }
117
+ return flashVer;
118
+ }
119
+
120
+ // When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
121
+ function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
122
+ {
123
+ versionStr = GetSwfVer();
124
+ if (versionStr == -1 ) {
125
+ return false;
126
+ } else if (versionStr != 0) {
127
+ if(isIE && isWin && !isOpera) {
128
+ // Given "WIN 2,0,0,11"
129
+ tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"]
130
+ tempString = tempArray[1]; // "2,0,0,11"
131
+ versionArray = tempString.split(","); // ['2', '0', '0', '11']
132
+ } else {
133
+ versionArray = versionStr.split(".");
134
+ }
135
+ var versionMajor = versionArray[0];
136
+ var versionMinor = versionArray[1];
137
+ var versionRevision = versionArray[2];
138
+
139
+ // is the major.revision >= requested major.revision AND the minor version >= requested minor
140
+ if (versionMajor > parseFloat(reqMajorVer)) {
141
+ return true;
142
+ } else if (versionMajor == parseFloat(reqMajorVer)) {
143
+ if (versionMinor > parseFloat(reqMinorVer))
144
+ return true;
145
+ else if (versionMinor == parseFloat(reqMinorVer)) {
146
+ if (versionRevision >= parseFloat(reqRevision))
147
+ return true;
148
+ }
149
+ }
150
+ return false;
151
+ }
152
+ }
153
+
154
+ function AC_AddExtension(src, ext)
155
+ {
156
+ if (src.indexOf('?') != -1)
157
+ return src.replace(/\?/, ext+'?');
158
+ else
159
+ return src + ext;
160
+ }
161
+
162
+ function AC_Generateobj(objAttrs, params, embedAttrs)
163
+ {
164
+ var str = '';
165
+ if (isIE && isWin && !isOpera)
166
+ {
167
+ str += '<object ';
168
+ for (var i in objAttrs)
169
+ str += i + '="' + objAttrs[i] + '" ';
170
+ str += '>';
171
+ for (var i in params)
172
+ str += '<param name="' + i + '" value="' + params[i] + '" /> ';
173
+ str += '</object>';
174
+ } else {
175
+ str += '<embed ';
176
+ for (var i in embedAttrs)
177
+ str += i + '="' + embedAttrs[i] + '" ';
178
+ str += '> </embed>';
179
+ }
180
+
181
+ document.write(str);
182
+ }
183
+
184
+ function AC_FL_RunContent(){
185
+ var ret =
186
+ AC_GetArgs
187
+ ( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
188
+ , "application/x-shockwave-flash"
189
+ );
190
+ AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
191
+ }
192
+
193
+ function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
194
+ var ret = new Object();
195
+ ret.embedAttrs = new Object();
196
+ ret.params = new Object();
197
+ ret.objAttrs = new Object();
198
+ for (var i=0; i < args.length; i=i+2){
199
+ var currArg = args[i].toLowerCase();
200
+
201
+ switch (currArg){
202
+ case "classid":
203
+ break;
204
+ case "pluginspage":
205
+ ret.embedAttrs[args[i]] = args[i+1];
206
+ break;
207
+ case "src":
208
+ case "movie":
209
+ args[i+1] = AC_AddExtension(args[i+1], ext);
210
+ ret.embedAttrs["src"] = args[i+1];
211
+ ret.params[srcParamName] = args[i+1];
212
+ break;
213
+ case "onafterupdate":
214
+ case "onbeforeupdate":
215
+ case "onblur":
216
+ case "oncellchange":
217
+ case "onclick":
218
+ case "ondblClick":
219
+ case "ondrag":
220
+ case "ondragend":
221
+ case "ondragenter":
222
+ case "ondragleave":
223
+ case "ondragover":
224
+ case "ondrop":
225
+ case "onfinish":
226
+ case "onfocus":
227
+ case "onhelp":
228
+ case "onmousedown":
229
+ case "onmouseup":
230
+ case "onmouseover":
231
+ case "onmousemove":
232
+ case "onmouseout":
233
+ case "onkeypress":
234
+ case "onkeydown":
235
+ case "onkeyup":
236
+ case "onload":
237
+ case "onlosecapture":
238
+ case "onpropertychange":
239
+ case "onreadystatechange":
240
+ case "onrowsdelete":
241
+ case "onrowenter":
242
+ case "onrowexit":
243
+ case "onrowsinserted":
244
+ case "onstart":
245
+ case "onscroll":
246
+ case "onbeforeeditfocus":
247
+ case "onactivate":
248
+ case "onbeforedeactivate":
249
+ case "ondeactivate":
250
+ case "type":
251
+ case "codebase":
252
+ ret.objAttrs[args[i]] = args[i+1];
253
+ break;
254
+ case "id":
255
+ case "width":
256
+ case "height":
257
+ case "align":
258
+ case "vspace":
259
+ case "hspace":
260
+ case "class":
261
+ case "title":
262
+ case "accesskey":
263
+ case "name":
264
+ case "tabindex":
265
+ ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
266
+ break;
267
+ default:
268
+ ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
269
+ }
270
+ }
271
+ ret.objAttrs["classid"] = classid;
272
+ if (mimeType) ret.embedAttrs["type"] = mimeType;
273
+ return ret;
274
+ }
275
+
276
+