goldencobra 1.4.0 → 1.4.27

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 (119) hide show
  1. data/README.markdown +3 -2
  2. data/app/assets/images/goldencobra/Jcrop.gif +0 -0
  3. data/app/assets/javascripts/goldencobra/active_admin.js +145 -84
  4. data/app/assets/javascripts/goldencobra/jquery.Jcrop.min.js +22 -0
  5. data/app/assets/javascripts/goldencobra/jquery.color.js +661 -0
  6. data/app/assets/stylesheets/goldencobra/active_admin.css.scss +375 -252
  7. data/app/assets/stylesheets/goldencobra/{application.css → application.css.scss} +0 -0
  8. data/app/assets/stylesheets/goldencobra/ikusei_active_admin.scss +35 -26
  9. data/app/assets/stylesheets/goldencobra/jquery.Jcrop.min.css +29 -0
  10. data/app/controllers/goldencobra/api/v2/articles_controller.rb +221 -0
  11. data/app/controllers/goldencobra/api/v2/locales_controller.rb +31 -0
  12. data/app/controllers/goldencobra/api/v2/settings_controller.rb +31 -0
  13. data/app/controllers/goldencobra/articles_controller.rb +42 -16
  14. data/app/controllers/goldencobra/sessions_controller.rb +8 -1
  15. data/app/helpers/goldencobra/application_helper.rb +3 -1
  16. data/app/helpers/goldencobra/articles_helper.rb +14 -8
  17. data/app/middleware/goldencobra/handle_invalid_percent_encoding.rb +40 -0
  18. data/app/models/ability.rb +43 -48
  19. data/app/models/goldencobra/article.rb +292 -218
  20. data/app/models/goldencobra/article_author.rb +19 -0
  21. data/app/models/goldencobra/article_image.rb +2 -0
  22. data/app/models/goldencobra/articletype.rb +30 -28
  23. data/app/models/goldencobra/author.rb +5 -3
  24. data/app/models/goldencobra/domain.rb +2 -0
  25. data/app/models/goldencobra/import.rb +2 -2
  26. data/app/models/goldencobra/link_checker.rb +64 -0
  27. data/app/models/goldencobra/menue.rb +4 -2
  28. data/app/models/goldencobra/permission.rb +3 -1
  29. data/app/models/goldencobra/redirector.rb +131 -0
  30. data/app/models/goldencobra/setting.rb +29 -3
  31. data/app/models/goldencobra/upload.rb +60 -1
  32. data/app/models/goldencobra/url_builder.rb +58 -0
  33. data/app/models/goldencobra/vita.rb +4 -0
  34. data/app/models/goldencobra/widget.rb +10 -0
  35. data/app/models/user.rb +1 -1
  36. data/app/views/goldencobra/admin/articles/_article_type.html.erb +1 -1
  37. data/app/views/goldencobra/admin/articles/_articles_index.html.erb +3 -3
  38. data/app/views/goldencobra/admin/articles/_image_module_sidebar.html.erb +19 -7
  39. data/app/views/goldencobra/admin/articles/_layout_sidebar.html.erb +2 -2
  40. data/app/views/goldencobra/admin/articles/_link_checker.html.erb +4 -4
  41. data/app/views/goldencobra/admin/articles/_link_checker_index.html.erb +1 -1
  42. data/app/views/goldencobra/admin/articles/_select_article_type.html.erb +8 -8
  43. data/app/views/goldencobra/admin/articles/_sort_articles_index.html.erb +1 -1
  44. data/app/views/goldencobra/admin/articles/_widgets_sidebar.html.erb +2 -2
  45. data/app/views/goldencobra/admin/articles/toggle_expert_mode.js.erb +2 -2
  46. data/app/views/goldencobra/admin/settings/_index.html.erb +14 -0
  47. data/app/views/goldencobra/admin/settings/_key_value.html.erb +12 -0
  48. data/app/views/goldencobra/admin/settings/_settings_group.html.erb +14 -0
  49. data/app/views/goldencobra/admin/shared/_help.html.erb +12 -10
  50. data/app/views/goldencobra/admin/shared/_item.html.erb +4 -4
  51. data/app/views/goldencobra/admin/shared/_overview.html.erb +14 -4
  52. data/app/views/goldencobra/admin/shared/load_overviewtree.js.erb +6 -0
  53. data/app/views/goldencobra/admin/uploads/_jcrop.html.erb +23 -0
  54. data/app/views/goldencobra/articles/_edit_article_link.html.erb +1 -1
  55. data/app/views/goldencobra/articles/show.rss.builder +5 -0
  56. data/app/views/goldencobra/articles/sitemap.xml.builder +15 -1
  57. data/app/views/goldencobra/manage/_admin_article_management.html.erb +1 -1
  58. data/app/views/goldencobra/manage/_admin_article_management_content.html.erb +4 -4
  59. data/app/views/goldencobra/manage/render_admin_menue.html.erb +1 -0
  60. data/app/views/goldencobra/manage/render_admin_menue.js.erb +0 -1
  61. data/app/views/goldencobra/sessions/_login.html.erb +4 -4
  62. data/app/views/goldencobra/sessions/_register.html.erb +6 -6
  63. data/app/views/layouts/goldencobra/active_admin_resque.html.erb +1 -1
  64. data/app/worker/articles_cache_worker.rb +1 -1
  65. data/config/initializers/check_for_missing_articletypes.rb +40 -37
  66. data/config/initializers/devise.rb +3 -1
  67. data/config/initializers/http_validator.rb +9 -2
  68. data/config/initializers/liquid_tags.rb +2 -2
  69. data/config/locales/active_admin.de.yml +509 -3
  70. data/config/locales/active_admin.en.yml +580 -64
  71. data/config/locales/de.yml +478 -4
  72. data/config/locales/en.yml +406 -10
  73. data/config/pre-commit.rb +3 -0
  74. data/config/routes.rb +12 -1
  75. data/config/settings.yml +51 -50
  76. data/db/migrate/20130114154115_add_sorter_to_goldencobra_permissions.rb +4 -1
  77. data/db/migrate/20140204221345_add_operator_to_goldencobra_permissions.rb +5 -0
  78. data/db/migrate/20140411152728_add_creator_id_to_goldencobra_articles.rb +5 -0
  79. data/db/migrate/20140505144517_add_taggingcounter.rb +15 -0
  80. data/db/migrate/20140603084537_add_domain_to_goldencobra_permissions.rb +7 -0
  81. data/db/migrate/20140615200342_resize_link_checkfield.rb +13 -0
  82. data/db/migrate/20140626135753_add_externalreferee_to_goldencobra_articles.rb +6 -0
  83. data/db/migrate/20140702103024_add_externaldate_to_goldencobra_articles.rb +5 -0
  84. data/db/migrate/20140702105550_add_remoteurl_to_goldencobra_uploads.rb +5 -0
  85. data/db/migrate/20140702142818_add_image_gallery_type_to_goldencobra_articles.rb +5 -0
  86. data/db/migrate/20140819101033_add_urlpath_to_goldencobra_articles.rb +5 -0
  87. data/db/migrate/20141009104216_set_db_and_tables_to_utf8.rb +20 -0
  88. data/db/migrate/20141104115144_create_goldencobra_redirectors.rb +15 -0
  89. data/db/migrate/20141112124531_add_globalsorting_to_goldencobra_articles.rb +7 -0
  90. data/db/migrate/20141124170930_add_indiex_to_gc.rb +26 -0
  91. data/db/migrate/20150115111024_create_goldencobra_article_authors.rb +28 -0
  92. data/db/migrate/20150115134707_add_remove_author_stuff.rb +11 -0
  93. data/db/migrate/20150417153454_add_status_to_goldencobra_vita_steps.rb +5 -0
  94. data/db/seeds.rb +4 -153
  95. data/lib/generators/goldencobra/articletype/templates/edit_index.html.erb +1 -1
  96. data/lib/generators/goldencobra/articletype/templates/initializer.rb +4 -2
  97. data/lib/generators/goldencobra/install_generator.rb +3 -0
  98. data/lib/generators/goldencobra/server_generator.rb +67 -0
  99. data/lib/generators/goldencobra/templates/active_admin.rb.erb +3 -0
  100. data/lib/generators/goldencobra/templates/robots.txt +5 -0
  101. data/lib/generators/goldencobra/templates/views/articletypes/default/_edit_index.html.erb +9 -0
  102. data/lib/generators/goldencobra/templates/views/articletypes/default/_edit_show.html.erb +0 -0
  103. data/lib/generators/goldencobra/templates/views/articletypes/default/_index.html.erb +31 -18
  104. data/lib/generators/goldencobra/templates/views/articletypes/default/_show.html.erb +22 -15
  105. data/lib/goldencobra/engine.rb +19 -3
  106. data/lib/goldencobra/version.rb +1 -1
  107. data/lib/tasks/article_cache.rake +19 -0
  108. data/lib/tasks/i18n.rake +1 -1
  109. data/lib/tasks/import.rake +31 -3
  110. data/lib/tasks/link_checker.rake +4 -2
  111. metadata +217 -23
  112. data/config/locales/activerecord.de.yml +0 -227
  113. data/config/locales/activerecord.en.yml +0 -148
  114. data/config/locales/devise.de.yml +0 -54
  115. data/config/locales/devise.en.yml +0 -57
  116. data/config/locales/formtastic.de.yml +0 -10
  117. data/config/locales/formtastic.en.yml +0 -10
  118. data/config/locales/goldencobra.de.yml +0 -40
  119. data/config/locales/goldencobra.en.yml +0 -3
@@ -2,7 +2,8 @@
2
2
 
3
3
  [![Build Status](https://secure.travis-ci.org/ikusei/Goldencobra.png)](http://travis-ci.org/ikusei/Goldencobra)
4
4
 
5
- This Project is still under development
5
+ This Project is still under development.
6
+ This repository is now in sync with http://git.ikusei.de/projects/GC/repos/basis-modul/browse and now always up to date!
6
7
 
7
8
  #Powered by
8
9
  - ActiveAdmin
@@ -11,7 +12,7 @@ Installation of Goldencobra into a fresh Ruby on Rails project:
11
12
 
12
13
  #Requirements
13
14
  * Ruby 1.9.2-p180+ (recommended 1.9.3-p286)
14
- * Rails 3.2.8
15
+ * Rails 3.2.16
15
16
  * Mysql 5.5.x (tested with e.g. 5.5.19)
16
17
 
17
18
 
@@ -3,6 +3,8 @@
3
3
  //= require goldencobra/notifications
4
4
  //= require goldencobra/countable
5
5
  // require goldencobra/togetherjs besser in actve_admin_js über url einbinden
6
+ //= require goldencobra/jquery.color
7
+ //= require goldencobra/jquery.Jcrop.min
6
8
 
7
9
 
8
10
  //Live Support Settings
@@ -19,10 +21,32 @@ var TogetherJSConfig_on = {
19
21
  };
20
22
 
21
23
  $(function() {
24
+
25
+ //Wenn es get_goldencobra_articles_per_remote im 'Artikel bearbeiten' gibt,
26
+ // hole alle Goldencobra:Article :id,:title, :ancestry
27
+ var $select_parent_articles = $(".get_goldencobra_articles_per_remote");
28
+ if ( $select_parent_articles.length ){
29
+ $.ajax({
30
+ url: "/api/v2/articles.json"
31
+ }).done(function(data){
32
+ var selected_parent_id = $select_parent_articles.find("option:selected").val();
33
+ $select_parent_articles.html("<option value=''></option>");
34
+ $.each( data, function(index,value){
35
+ var selected_option = "";
36
+ if (value.id == selected_parent_id){
37
+ selected_option = " selected='selected' ";
38
+ }
39
+ $select_parent_articles.append("<option value='" + value.id + "' " + selected_option + ">" + value.parent_path + "</option>") ;
40
+ });
41
+ $select_parent_articles.trigger("chosen:updated");
42
+ return false;
43
+ });
44
+ }
45
+
22
46
  //Importer optionen Ein und Ausblendbar machen
23
- $('table.importer_assoziations tr.head td.nested_model_header span.button').bind("click", function(){
24
- id_to_class = $(this).closest(".head").attr('id');
25
- $('tr.model_group.' + id_to_class).toggle();
47
+ $("table.importer_assoziations tr.head td.nested_model_header span.button").bind("click", function(){
48
+ var id_to_class = $(this).closest(".head").attr("id");
49
+ $("tr.model_group." + id_to_class).toggle();
26
50
  if ($(this).html() == "Felder anzeigen"){
27
51
  $(this).html("Felder ausblenden");
28
52
  }else{
@@ -30,64 +54,64 @@ $(function() {
30
54
  }
31
55
  });
32
56
 
33
- if (typeof tinyMCESetting_theme_advanced_blockformats === 'undefined') {
34
- var tinyMCESetting_theme_advanced_blockformats = "p,h1,h2,h3,div"
57
+ if (typeof tinyMCESetting_theme_advanced_blockformats === "undefined") {
58
+ var tinyMCESetting_theme_advanced_blockformats = "p,h1,h2,h3,div";
35
59
  }
36
60
 
37
- $('textarea.tinymce-no-buttons').tinymce({
61
+ $("textarea.tinymce-no-buttons").tinymce({
38
62
  script_url: "/assets/goldencobra/tiny_mce.js",
39
- mode : "textareas",
40
- theme : "advanced",
41
- theme_advanced_buttons1 : "",
42
- theme_advanced_buttons2 : "",
43
- theme_advanced_buttons3 : "",
44
- theme_advanced_toolbar_location : "top",
45
- theme_advanced_toolbar_align : "center",
46
- theme_advanced_resizing : false,
47
- relative_urls : true,
48
- convert_urls : false,
49
- theme_advanced_blockformats : tinyMCESetting_theme_advanced_blockformats,
50
- plugins : "autolink,paste",
51
- dialog_type : "modal",
52
- paste_auto_cleanup_on_paste : true
63
+ mode: "textareas",
64
+ theme: "advanced",
65
+ theme_advanced_buttons1: "",
66
+ theme_advanced_buttons2: "",
67
+ theme_advanced_buttons3: "",
68
+ theme_advanced_toolbar_location: "top",
69
+ theme_advanced_toolbar_align: "center",
70
+ theme_advanced_resizing: false,
71
+ relative_urls: true,
72
+ convert_urls: false,
73
+ theme_advanced_blockformats: tinyMCESetting_theme_advanced_blockformats,
74
+ plugins: "autolink,paste",
75
+ dialog_type: "modal",
76
+ paste_auto_cleanup_on_paste: true
53
77
  });
54
78
 
55
79
 
56
80
  $('textarea.tinymce').tinymce({
57
81
  script_url: "/assets/goldencobra/tiny_mce.js",
58
- mode : "textareas",
59
- theme : "advanced",
60
- theme_advanced_buttons1 : "formatselect, bold, italic, underline, strikethrough,|, bullist, numlist, blockquote, |, pastetext,pasteword, |, undo, redo, |, link, unlink, code, fullscreen",
61
- theme_advanced_buttons2 : "",
62
- theme_advanced_buttons3 : "",
63
- theme_advanced_toolbar_location : "top",
64
- theme_advanced_toolbar_align : "center",
65
- theme_advanced_resizing : false,
66
- relative_urls : true,
67
- convert_urls : false,
68
- theme_advanced_blockformats : tinyMCESetting_theme_advanced_blockformats,
69
- plugins : "fullscreen,autolink,paste",
70
- dialog_type : "modal",
71
- paste_auto_cleanup_on_paste : true
82
+ mode: "textareas",
83
+ theme: "advanced",
84
+ theme_advanced_buttons1: "formatselect, bold, italic, underline, strikethrough,|, bullist, numlist, blockquote, |, pastetext,pasteword, |, undo, redo, |, link, unlink, code, fullscreen",
85
+ theme_advanced_buttons2: "",
86
+ theme_advanced_buttons3: "",
87
+ theme_advanced_toolbar_location: "top",
88
+ theme_advanced_toolbar_align: "center",
89
+ theme_advanced_resizing: false,
90
+ relative_urls: true,
91
+ convert_urls: false,
92
+ theme_advanced_blockformats: tinyMCESetting_theme_advanced_blockformats,
93
+ plugins: "fullscreen,autolink,paste",
94
+ dialog_type: "modal",
95
+ paste_auto_cleanup_on_paste: true
72
96
  });
73
97
 
74
98
  $('textarea.tinymce_extended').tinymce({
75
99
  script_url: "/assets/goldencobra/tiny_mce.js",
76
- mode : "textareas",
77
- theme : "advanced",
78
- theme_advanced_buttons1 : "formatselect, bold, italic, underline, strikethrough,|, bullist, numlist, blockquote, |, pastetext,pasteword, |, undo, redo, |, link, unlink, code, fullscreen",
79
- theme_advanced_buttons2 : "removeformat, fontsizeselect, forecolor, backcolor, forecolorpicker, backcolorpicker",
80
- theme_advanced_buttons3 : "tablecontrols",
81
- theme_advanced_toolbar_location : "top",
82
- theme_advanced_toolbar_align : "left",
83
- theme_advanced_resizing : false,
84
- relative_urls : true,
85
- convert_urls : false,
86
- theme_advanced_blockformats : tinyMCESetting_theme_advanced_blockformats,
87
- plugins : "fullscreen,autolink,paste,table",
88
- dialog_type : "modal",
89
- paste_auto_cleanup_on_paste : true,
90
- verify_html : false
100
+ mode: "textareas",
101
+ theme: "advanced",
102
+ theme_advanced_buttons1: "formatselect, bold, italic, underline, strikethrough,|, bullist, numlist, blockquote, |, pastetext,pasteword, |, undo, redo, |, link, unlink, code, fullscreen",
103
+ theme_advanced_buttons2: "removeformat, fontsizeselect, forecolor, backcolor, forecolorpicker, backcolorpicker",
104
+ theme_advanced_buttons3: "tablecontrols",
105
+ theme_advanced_toolbar_location: "top",
106
+ theme_advanced_toolbar_align: "left",
107
+ theme_advanced_resizing: false,
108
+ relative_urls: true,
109
+ convert_urls: false,
110
+ theme_advanced_blockformats: tinyMCESetting_theme_advanced_blockformats,
111
+ plugins: "fullscreen,autolink,paste,table",
112
+ dialog_type: "modal",
113
+ paste_auto_cleanup_on_paste: true,
114
+ verify_html: false
91
115
  });
92
116
 
93
117
  //TextCounter auf title, subtitle, Teaser, Summary, Breadcrumb, url_name
@@ -103,28 +127,28 @@ $(function() {
103
127
  });
104
128
 
105
129
  //Foldable overview in sidebar
106
- $("div.overview-sidebar div.folder").bind("click", function(){
130
+ $("div.overview-sidebar div.folder").live("click", function(){
107
131
  $(this).closest('li').find("ul:first").slideToggle();
108
132
  });
109
133
  $("div.overview-sidebar div.folder").trigger("click");
110
134
 
111
135
  //Add Button Background Jobs zu Settings
112
- $('#einstellungen ul').append("<li><a href='/admin/background'>Background Jobs</a></li>")
136
+ //$('#einstellungen ul').append("<li><a href='/admin/background'>Background Jobs</a></li>")
113
137
 
114
138
  $('.metadescription_hint').tinymce({
115
139
  script_url: "/assets/goldencobra/tiny_mce.js",
116
- mode : "textareas",
117
- theme : "advanced",
140
+ mode: "textareas",
141
+ theme: "advanced",
118
142
  readonly: 1,
119
- theme_advanced_default_background_color : "#f4f4f4",
120
- theme_advanced_buttons1 : "",
121
- theme_advanced_buttons2 : "",
122
- theme_advanced_buttons3 : "",
123
- theme_advanced_toolbar_location : "bottom",
124
- theme_advanced_toolbar_align : "center",
125
- theme_advanced_resizing : false,
126
- body_id : "metadescription-tinymce-body",
127
- content_css : "/assets/goldencobra/active_admin.css"
143
+ theme_advanced_default_background_color: "#f4f4f4",
144
+ theme_advanced_buttons1: "",
145
+ theme_advanced_buttons2: "",
146
+ theme_advanced_buttons3: "",
147
+ theme_advanced_toolbar_location: "bottom",
148
+ theme_advanced_toolbar_align: "center",
149
+ theme_advanced_resizing: false,
150
+ body_id: "metadescription-tinymce-body",
151
+ content_css: "/assets/goldencobra/active_admin.css"
128
152
  });
129
153
 
130
154
  function postInitWork() {
@@ -146,10 +170,10 @@ $(function() {
146
170
  $("#goldencobra_image_maganger").fadeOut();
147
171
  });
148
172
 
149
- $('#footer').html("<p>Goldencobra</p>")
173
+ $('#footer').html("<p>Goldencobra</p>");
150
174
 
151
175
  //die fieldsets bekommen einen button zum auf und zu klappen
152
- $('div#main_content > form > fieldset.foldable > legend').prepend("<div class='foldable_icon_wrapper'><div class='foldable_icon'></div></div>")
176
+ $('div#main_content > form > fieldset.foldable > legend').prepend("<div class='foldable_icon_wrapper'><div class='foldable_icon'></div></div>");
153
177
  $('div#main_content > form > fieldset.foldable > legend').bind("click", function(){
154
178
  $(this).closest("fieldset").find(".foldable_icon").toggleClass("open");
155
179
  $(this).closest("fieldset").find('ol').slideToggle();
@@ -157,14 +181,23 @@ $(function() {
157
181
  $('div#main_content > form > fieldset.foldable.closed legend').trigger("click");
158
182
 
159
183
  //die sidebar_section bekommen einen button zum auf und zu klappen
160
- $('div#sidebar div.sidebar_section h3').prepend("<div class='foldable_icon_wrapper'><div class='foldable_icon'></div></div>")
184
+ $('div#sidebar div.sidebar_section h3').prepend("<div class='foldable_icon_wrapper'><div class='foldable_icon'></div></div>");
161
185
  $('div#sidebar div.sidebar_section h3').bind("click", function(){
162
186
  $(this).closest(".sidebar_section").find(".foldable_icon").toggleClass("open");
163
187
  $(this).closest(".sidebar_section").find('.panel_contents').slideToggle();
164
188
  });
165
- $('div#sidebar div.sidebar_section:not(#overview_sidebar_section, #layout_positions_sidebar_section) h3').trigger("click");
189
+ $('div#sidebar div.sidebar_section:not(#layout_positions_sidebar_section) h3').trigger("click");
166
190
  $('div#sidebar div.sidebar_section .warning').closest("div.sidebar_section").addClass("warning").find("h3").trigger("click");
167
191
 
192
+
193
+ //die Settings sub groups bekommen ein button zum aufklappen
194
+ $('div#goldencobra_settings_wrapper .foldable').prepend("<div class='foldable_icon_wrapper'><div class='foldable_icon'></div></div>");
195
+ $('div#goldencobra_settings_wrapper .foldable').bind("click", function(){
196
+ $(this).closest(".settings_group_title").find(".foldable_icon").toggleClass("open");
197
+ $(this).closest(".settings_level").children('.settings_sub_group').slideToggle();
198
+ });
199
+
200
+
168
201
  $(".chzn-select").chosen();
169
202
  $(".chzn-select-deselect").chosen({ allow_single_deselect: true });
170
203
  $("a.button").live("click", function(){
@@ -174,28 +207,29 @@ $(function() {
174
207
 
175
208
  //Menuepunkte bekommen eine funktion zum auf und zu klappen
176
209
  $('div#overview_sidebar div.title a').bind("click", function(){
177
- $(this).children("ul").hide();
210
+ $(this).children("ul").hide();
178
211
  });
179
212
 
180
213
  $('div#overview_sidebar div.title a').trigger("click");
181
214
 
182
- $("#main_content form input:submit").attr("value", $("#main_content form input:submit").attr("value") + " (⌘-S)");
215
+ $("#main_content form:not(.without_short_key) input:submit").attr("value", $("#main_content form input:submit").attr("value") + " (⌘-S)");
216
+
183
217
  key('⌘+s, ctrl+s', function() {
184
- $("#main_content form input:submit").trigger("click");
185
- return false;
218
+ $("#main_content form input:submit").trigger("click");
219
+ return false;
186
220
  });
187
221
 
188
222
  $("body.show #title_bar .action_items a[href$='edit']").append(" (⌘-E)");
189
223
  key('⌘+e, ctrl+e', function(){
190
- target = $("#title_bar .action_items a[href$='edit']").attr("href");
191
- window.location = target;
192
- return false;
224
+ target = $("#title_bar .action_items a[href$='edit']").attr("href");
225
+ window.location = target;
226
+ return false;
193
227
  });
194
228
 
195
229
  //Short Key for Life support on every Page
196
- key('⌘+k, ctrl+k', function(){
197
- call_for_help();
198
- })
230
+ key('⌘+k, ctrl+k', function(){
231
+ call_for_help();
232
+ });
199
233
 
200
234
  // $("#title_bar .action_items a[href$='revert']").append(" (⌘-Z)");
201
235
  // key('⌘+z, ctrl+z', function(){
@@ -217,13 +251,13 @@ $(function() {
217
251
  // für jede checkbox die dazugehörigen input felder holen und anhängen
218
252
  checkBoxesDays.each(function(i, el) {
219
253
  // checkbox muss neue css styles erhalten
220
- var addCssBox = {"float" : "left", "width" : "50px", "margin-top" : "8px"};
254
+ var addCssBox = {"float": "left", "width": "50px", "margin-top": "8px"};
221
255
  $(el).height(50).find("label").css(addCssBox);
222
256
  // selektoren für start und end inputs eines tages
223
257
  var startInput = $("#widget_offline_time_start_" + engDaysShort[i] + "_input");
224
258
  var endInput = $("#widget_offline_time_end_" + engDaysShort[i] + "_input");
225
259
  // label der inputs entfernen und benötigten css style ergänzen
226
- var addCssInput = {"float" : "left", "width" : "180px"};
260
+ var addCssInput = {"float": "left", "width": "180px"};
227
261
  $(startInput).css(addCssInput).find("label").remove();
228
262
  $(endInput).css(addCssInput).find("label").remove();
229
263
  // inputs zur checkbox gruppieren
@@ -231,16 +265,43 @@ $(function() {
231
265
  $(endInput).appendTo(el);
232
266
  });
233
267
  /**** END DOM Manipulation *****/
268
+
269
+ $("ul.link_checker_ul div.link_checker_label").click(function(){
270
+ $(this).siblings(".link_checker_sources").toggle();
271
+ });
272
+
273
+ // optimize header menu bar
274
+ $('#utility_nav').after('<div style="clear: both;"></div>');
275
+ $('#wrapper > #header').css('height', 'auto').css('min-width', '890px').css('filter', 'none');
276
+
277
+ // own logo per app from settings url
278
+ changeLogoFromSetting();
234
279
  });
235
280
 
236
- function call_for_help (argument) {
281
+ function call_for_help(argument) {
237
282
  TogetherJS(this);
238
283
  return false;
239
284
  }
240
285
 
241
- $(function() {
242
- $("ul.link_checker_ul div.link_checker_label").click(function(){
243
- $(this).siblings(".link_checker_sources").toggle();
244
- });
245
- });
246
286
 
287
+ /**
288
+ *
289
+ * get ajax logo url for chanigng admin backend logo picture
290
+ *
291
+ */
292
+ function changeLogoFromSetting() {
293
+ $.ajax({
294
+ type : 'GET',
295
+ url : '/api/v2/setting_string',
296
+ data : { 'setting_key': 'goldencobra.random_logo_url' },
297
+ success: function (data) {
298
+ if (data && data.indexOf('translation missing') == -1) {
299
+ // change background image of header logo
300
+ $('#header h1').css('background', 'url("' + data + '") no-repeat scroll center top / 100px auto rgba(0, 0, 0, 0)');
301
+ } else {
302
+ // set standard url of header logo for fallback
303
+ $('#header h1').css('background', 'url("/assets/goldencobra/cobra.png") no-repeat scroll center top / auto auto rgba(0, 0, 0, 0)');
304
+ }
305
+ }
306
+ });
307
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * jquery.Jcrop.min.js v0.9.12 (build:20130202)
3
+ * jQuery Image Cropping Plugin - released under MIT License
4
+ * Copyright (c) 2008-2013 Tapmodo Interactive LLC
5
+ * https://github.com/tapmodo/Jcrop
6
+ */
7
+ (function(a){a.Jcrop=function(b,c){function i(a){return Math.round(a)+"px"}function j(a){return d.baseClass+"-"+a}function k(){return a.fx.step.hasOwnProperty("backgroundColor")}function l(b){var c=a(b).offset();return[c.left,c.top]}function m(a){return[a.pageX-e[0],a.pageY-e[1]]}function n(b){typeof b!="object"&&(b={}),d=a.extend(d,b),a.each(["onChange","onSelect","onRelease","onDblClick"],function(a,b){typeof d[b]!="function"&&(d[b]=function(){})})}function o(a,b,c){e=l(D),bc.setCursor(a==="move"?a:a+"-resize");if(a==="move")return bc.activateHandlers(q(b),v,c);var d=_.getFixed(),f=r(a),g=_.getCorner(r(f));_.setPressed(_.getCorner(f)),_.setCurrent(g),bc.activateHandlers(p(a,d),v,c)}function p(a,b){return function(c){if(!d.aspectRatio)switch(a){case"e":c[1]=b.y2;break;case"w":c[1]=b.y2;break;case"n":c[0]=b.x2;break;case"s":c[0]=b.x2}else switch(a){case"e":c[1]=b.y+1;break;case"w":c[1]=b.y+1;break;case"n":c[0]=b.x+1;break;case"s":c[0]=b.x+1}_.setCurrent(c),bb.update()}}function q(a){var b=a;return bd.watchKeys
8
+ (),function(a){_.moveOffset([a[0]-b[0],a[1]-b[1]]),b=a,bb.update()}}function r(a){switch(a){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function s(a){return function(b){return d.disabled?!1:a==="move"&&!d.allowMove?!1:(e=l(D),W=!0,o(a,m(b)),b.stopPropagation(),b.preventDefault(),!1)}}function t(a,b,c){var d=a.width(),e=a.height();d>b&&b>0&&(d=b,e=b/a.width()*a.height()),e>c&&c>0&&(e=c,d=c/a.height()*a.width()),T=a.width()/d,U=a.height()/e,a.width(d).height(e)}function u(a){return{x:a.x*T,y:a.y*U,x2:a.x2*T,y2:a.y2*U,w:a.w*T,h:a.h*U}}function v(a){var b=_.getFixed();b.w>d.minSelect[0]&&b.h>d.minSelect[1]?(bb.enableHandles(),bb.done()):bb.release(),bc.setCursor(d.allowSelect?"crosshair":"default")}function w(a){if(d.disabled)return!1;if(!d.allowSelect)return!1;W=!0,e=l(D),bb.disableHandles(),bc.setCursor("crosshair");var b=m(a);return _.setPressed(b),bb.update(),bc.activateHandlers(x,v,a.type.substring
9
+ (0,5)==="touch"),bd.watchKeys(),a.stopPropagation(),a.preventDefault(),!1}function x(a){_.setCurrent(a),bb.update()}function y(){var b=a("<div></div>").addClass(j("tracker"));return g&&b.css({opacity:0,backgroundColor:"white"}),b}function be(a){G.removeClass().addClass(j("holder")).addClass(a)}function bf(a,b){function t(){window.setTimeout(u,l)}var c=a[0]/T,e=a[1]/U,f=a[2]/T,g=a[3]/U;if(X)return;var h=_.flipCoords(c,e,f,g),i=_.getFixed(),j=[i.x,i.y,i.x2,i.y2],k=j,l=d.animationDelay,m=h[0]-j[0],n=h[1]-j[1],o=h[2]-j[2],p=h[3]-j[3],q=0,r=d.swingSpeed;c=k[0],e=k[1],f=k[2],g=k[3],bb.animMode(!0);var s,u=function(){return function(){q+=(100-q)/r,k[0]=Math.round(c+q/100*m),k[1]=Math.round(e+q/100*n),k[2]=Math.round(f+q/100*o),k[3]=Math.round(g+q/100*p),q>=99.8&&(q=100),q<100?(bh(k),t()):(bb.done(),bb.animMode(!1),typeof b=="function"&&b.call(bs))}}();t()}function bg(a){bh([a[0]/T,a[1]/U,a[2]/T,a[3]/U]),d.onSelect.call(bs,u(_.getFixed())),bb.enableHandles()}function bh(a){_.setPressed([a[0],a[1]]),_.setCurrent([a[2],
10
+ a[3]]),bb.update()}function bi(){return u(_.getFixed())}function bj(){return _.getFixed()}function bk(a){n(a),br()}function bl(){d.disabled=!0,bb.disableHandles(),bb.setCursor("default"),bc.setCursor("default")}function bm(){d.disabled=!1,br()}function bn(){bb.done(),bc.activateHandlers(null,null)}function bo(){G.remove(),A.show(),A.css("visibility","visible"),a(b).removeData("Jcrop")}function bp(a,b){bb.release(),bl();var c=new Image;c.onload=function(){var e=c.width,f=c.height,g=d.boxWidth,h=d.boxHeight;D.width(e).height(f),D.attr("src",a),H.attr("src",a),t(D,g,h),E=D.width(),F=D.height(),H.width(E).height(F),M.width(E+L*2).height(F+L*2),G.width(E).height(F),ba.resize(E,F),bm(),typeof b=="function"&&b.call(bs)},c.src=a}function bq(a,b,c){var e=b||d.bgColor;d.bgFade&&k()&&d.fadeTime&&!c?a.animate({backgroundColor:e},{queue:!1,duration:d.fadeTime}):a.css("backgroundColor",e)}function br(a){d.allowResize?a?bb.enableOnly():bb.enableHandles():bb.disableHandles(),bc.setCursor(d.allowSelect?"crosshair":"default"),bb
11
+ .setCursor(d.allowMove?"move":"default"),d.hasOwnProperty("trueSize")&&(T=d.trueSize[0]/E,U=d.trueSize[1]/F),d.hasOwnProperty("setSelect")&&(bg(d.setSelect),bb.done(),delete d.setSelect),ba.refresh(),d.bgColor!=N&&(bq(d.shade?ba.getShades():G,d.shade?d.shadeColor||d.bgColor:d.bgColor),N=d.bgColor),O!=d.bgOpacity&&(O=d.bgOpacity,d.shade?ba.refresh():bb.setBgOpacity(O)),P=d.maxSize[0]||0,Q=d.maxSize[1]||0,R=d.minSize[0]||0,S=d.minSize[1]||0,d.hasOwnProperty("outerImage")&&(D.attr("src",d.outerImage),delete d.outerImage),bb.refresh()}var d=a.extend({},a.Jcrop.defaults),e,f=navigator.userAgent.toLowerCase(),g=/msie/.test(f),h=/msie [1-6]\./.test(f);typeof b!="object"&&(b=a(b)[0]),typeof c!="object"&&(c={}),n(c);var z={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},A=a(b),B=!0;if(b.tagName=="IMG"){if(A[0].width!=0&&A[0].height!=0)A.width(A[0].width),A.height(A[0].height);else{var C=new Image;C.src=A[0].src,A.width(C.width),A.height(C.height)}var D=A.clone().removeAttr("id").
12
+ css(z).show();D.width(A.width()),D.height(A.height()),A.after(D).hide()}else D=A.css(z).show(),B=!1,d.shade===null&&(d.shade=!0);t(D,d.boxWidth,d.boxHeight);var E=D.width(),F=D.height(),G=a("<div />").width(E).height(F).addClass(j("holder")).css({position:"relative",backgroundColor:d.bgColor}).insertAfter(A).append(D);d.addClass&&G.addClass(d.addClass);var H=a("<div />"),I=a("<div />").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),J=a("<div />").width("100%").height("100%").css("zIndex",320),K=a("<div />").css({position:"absolute",zIndex:600}).dblclick(function(){var a=_.getFixed();d.onDblClick.call(bs,a)}).insertBefore(D).append(I,J);B&&(H=a("<img />").attr("src",D.attr("src")).css(z).width(E).height(F),I.append(H)),h&&K.css({overflowY:"hidden"});var L=d.boundary,M=y().width(E+L*2).height(F+L*2).css({position:"absolute",top:i(-L),left:i(-L),zIndex:290}).mousedown(w),N=d.bgColor,O=d.bgOpacity,P,Q,R,S,T,U,V=!0,W,X,Y;e=l(D);var Z=function(){function a(){var a={},b=["touchstart"
13
+ ,"touchmove","touchend"],c=document.createElement("div"),d;try{for(d=0;d<b.length;d++){var e=b[d];e="on"+e;var f=e in c;f||(c.setAttribute(e,"return;"),f=typeof c[e]=="function"),a[b[d]]=f}return a.touchstart&&a.touchend&&a.touchmove}catch(g){return!1}}function b(){return d.touchSupport===!0||d.touchSupport===!1?d.touchSupport:a()}return{createDragger:function(a){return function(b){return d.disabled?!1:a==="move"&&!d.allowMove?!1:(e=l(D),W=!0,o(a,m(Z.cfilter(b)),!0),b.stopPropagation(),b.preventDefault(),!1)}},newSelection:function(a){return w(Z.cfilter(a))},cfilter:function(a){return a.pageX=a.originalEvent.changedTouches[0].pageX,a.pageY=a.originalEvent.changedTouches[0].pageY,a},isSupported:a,support:b()}}(),_=function(){function h(d){d=n(d),c=a=d[0],e=b=d[1]}function i(a){a=n(a),f=a[0]-c,g=a[1]-e,c=a[0],e=a[1]}function j(){return[f,g]}function k(d){var f=d[0],g=d[1];0>a+f&&(f-=f+a),0>b+g&&(g-=g+b),F<e+g&&(g+=F-(e+g)),E<c+f&&(f+=E-(c+f)),a+=f,c+=f,b+=g,e+=g}function l(a){var b=m();switch(a){case"ne":return[
14
+ b.x2,b.y];case"nw":return[b.x,b.y];case"se":return[b.x2,b.y2];case"sw":return[b.x,b.y2]}}function m(){if(!d.aspectRatio)return p();var f=d.aspectRatio,g=d.minSize[0]/T,h=d.maxSize[0]/T,i=d.maxSize[1]/U,j=c-a,k=e-b,l=Math.abs(j),m=Math.abs(k),n=l/m,r,s,t,u;return h===0&&(h=E*10),i===0&&(i=F*10),n<f?(s=e,t=m*f,r=j<0?a-t:t+a,r<0?(r=0,u=Math.abs((r-a)/f),s=k<0?b-u:u+b):r>E&&(r=E,u=Math.abs((r-a)/f),s=k<0?b-u:u+b)):(r=c,u=l/f,s=k<0?b-u:b+u,s<0?(s=0,t=Math.abs((s-b)*f),r=j<0?a-t:t+a):s>F&&(s=F,t=Math.abs(s-b)*f,r=j<0?a-t:t+a)),r>a?(r-a<g?r=a+g:r-a>h&&(r=a+h),s>b?s=b+(r-a)/f:s=b-(r-a)/f):r<a&&(a-r<g?r=a-g:a-r>h&&(r=a-h),s>b?s=b+(a-r)/f:s=b-(a-r)/f),r<0?(a-=r,r=0):r>E&&(a-=r-E,r=E),s<0?(b-=s,s=0):s>F&&(b-=s-F,s=F),q(o(a,b,r,s))}function n(a){return a[0]<0&&(a[0]=0),a[1]<0&&(a[1]=0),a[0]>E&&(a[0]=E),a[1]>F&&(a[1]=F),[Math.round(a[0]),Math.round(a[1])]}function o(a,b,c,d){var e=a,f=c,g=b,h=d;return c<a&&(e=c,f=a),d<b&&(g=d,h=b),[e,g,f,h]}function p(){var d=c-a,f=e-b,g;return P&&Math.abs(d)>P&&(c=d>0?a+P:a-P),Q&&Math.abs
15
+ (f)>Q&&(e=f>0?b+Q:b-Q),S/U&&Math.abs(f)<S/U&&(e=f>0?b+S/U:b-S/U),R/T&&Math.abs(d)<R/T&&(c=d>0?a+R/T:a-R/T),a<0&&(c-=a,a-=a),b<0&&(e-=b,b-=b),c<0&&(a-=c,c-=c),e<0&&(b-=e,e-=e),c>E&&(g=c-E,a-=g,c-=g),e>F&&(g=e-F,b-=g,e-=g),a>E&&(g=a-F,e-=g,b-=g),b>F&&(g=b-F,e-=g,b-=g),q(o(a,b,c,e))}function q(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var a=0,b=0,c=0,e=0,f,g;return{flipCoords:o,setPressed:h,setCurrent:i,getOffset:j,moveOffset:k,getCorner:l,getFixed:m}}(),ba=function(){function f(a,b){e.left.css({height:i(b)}),e.right.css({height:i(b)})}function g(){return h(_.getFixed())}function h(a){e.top.css({left:i(a.x),width:i(a.w),height:i(a.y)}),e.bottom.css({top:i(a.y2),left:i(a.x),width:i(a.w),height:i(F-a.y2)}),e.right.css({left:i(a.x2),width:i(E-a.x2)}),e.left.css({width:i(a.x)})}function j(){return a("<div />").css({position:"absolute",backgroundColor:d.shadeColor||d.bgColor}).appendTo(c)}function k(){b||(b=!0,c.insertBefore(D),g(),bb.setBgOpacity(1,0,1),H.hide(),l(d.shadeColor||d.bgColor,1),bb.
16
+ isAwake()?n(d.bgOpacity,1):n(1,1))}function l(a,b){bq(p(),a,b)}function m(){b&&(c.remove(),H.show(),b=!1,bb.isAwake()?bb.setBgOpacity(d.bgOpacity,1,1):(bb.setBgOpacity(1,1,1),bb.disableHandles()),bq(G,0,1))}function n(a,e){b&&(d.bgFade&&!e?c.animate({opacity:1-a},{queue:!1,duration:d.fadeTime}):c.css({opacity:1-a}))}function o(){d.shade?k():m(),bb.isAwake()&&n(d.bgOpacity)}function p(){return c.children()}var b=!1,c=a("<div />").css({position:"absolute",zIndex:240,opacity:0}),e={top:j(),left:j().height(F),right:j().height(F),bottom:j()};return{update:g,updateRaw:h,getShades:p,setBgColor:l,enable:k,disable:m,resize:f,refresh:o,opacity:n}}(),bb=function(){function k(b){var c=a("<div />").css({position:"absolute",opacity:d.borderOpacity}).addClass(j(b));return I.append(c),c}function l(b,c){var d=a("<div />").mousedown(s(b)).css({cursor:b+"-resize",position:"absolute",zIndex:c}).addClass("ord-"+b);return Z.support&&d.bind("touchstart.jcrop",Z.createDragger(b)),J.append(d),d}function m(a){var b=d.handleSize,e=l(a,c++
17
+ ).css({opacity:d.handleOpacity}).addClass(j("handle"));return b&&e.width(b).height(b),e}function n(a){return l(a,c++).addClass("jcrop-dragbar")}function o(a){var b;for(b=0;b<a.length;b++)g[a[b]]=n(a[b])}function p(a){var b,c;for(c=0;c<a.length;c++){switch(a[c]){case"n":b="hline";break;case"s":b="hline bottom";break;case"e":b="vline right";break;case"w":b="vline"}e[a[c]]=k(b)}}function q(a){var b;for(b=0;b<a.length;b++)f[a[b]]=m(a[b])}function r(a,b){d.shade||H.css({top:i(-b),left:i(-a)}),K.css({top:i(b),left:i(a)})}function t(a,b){K.width(Math.round(a)).height(Math.round(b))}function v(){var a=_.getFixed();_.setPressed([a.x,a.y]),_.setCurrent([a.x2,a.y2]),w()}function w(a){if(b)return x(a)}function x(a){var c=_.getFixed();t(c.w,c.h),r(c.x,c.y),d.shade&&ba.updateRaw(c),b||A(),a?d.onSelect.call(bs,u(c)):d.onChange.call(bs,u(c))}function z(a,c,e){if(!b&&!c)return;d.bgFade&&!e?D.animate({opacity:a},{queue:!1,duration:d.fadeTime}):D.css("opacity",a)}function A(){K.show(),d.shade?ba.opacity(O):z(O,!0),b=!0}function B
18
+ (){F(),K.hide(),d.shade?ba.opacity(1):z(1),b=!1,d.onRelease.call(bs)}function C(){h&&J.show()}function E(){h=!0;if(d.allowResize)return J.show(),!0}function F(){h=!1,J.hide()}function G(a){a?(X=!0,F()):(X=!1,E())}function L(){G(!1),v()}var b,c=370,e={},f={},g={},h=!1;d.dragEdges&&a.isArray(d.createDragbars)&&o(d.createDragbars),a.isArray(d.createHandles)&&q(d.createHandles),d.drawBorders&&a.isArray(d.createBorders)&&p(d.createBorders),a(document).bind("touchstart.jcrop-ios",function(b){a(b.currentTarget).hasClass("jcrop-tracker")&&b.stopPropagation()});var M=y().mousedown(s("move")).css({cursor:"move",position:"absolute",zIndex:360});return Z.support&&M.bind("touchstart.jcrop",Z.createDragger("move")),I.append(M),F(),{updateVisible:w,update:x,release:B,refresh:v,isAwake:function(){return b},setCursor:function(a){M.css("cursor",a)},enableHandles:E,enableOnly:function(){h=!0},showHandles:C,disableHandles:F,animMode:G,setBgOpacity:z,done:L}}(),bc=function(){function f(b){M.css({zIndex:450}),b?a(document).bind("touchmove.jcrop"
19
+ ,k).bind("touchend.jcrop",l):e&&a(document).bind("mousemove.jcrop",h).bind("mouseup.jcrop",i)}function g(){M.css({zIndex:290}),a(document).unbind(".jcrop")}function h(a){return b(m(a)),!1}function i(a){return a.preventDefault(),a.stopPropagation(),W&&(W=!1,c(m(a)),bb.isAwake()&&d.onSelect.call(bs,u(_.getFixed())),g(),b=function(){},c=function(){}),!1}function j(a,d,e){return W=!0,b=a,c=d,f(e),!1}function k(a){return b(m(Z.cfilter(a))),!1}function l(a){return i(Z.cfilter(a))}function n(a){M.css("cursor",a)}var b=function(){},c=function(){},e=d.trackDocument;return e||M.mousemove(h).mouseup(i).mouseout(i),D.before(M),{activateHandlers:j,setCursor:n}}(),bd=function(){function e(){d.keySupport&&(b.show(),b.focus())}function f(a){b.hide()}function g(a,b,c){d.allowMove&&(_.moveOffset([b,c]),bb.updateVisible(!0)),a.preventDefault(),a.stopPropagation()}function i(a){if(a.ctrlKey||a.metaKey)return!0;Y=a.shiftKey?!0:!1;var b=Y?10:1;switch(a.keyCode){case 37:g(a,-b,0);break;case 39:g(a,b,0);break;case 38:g(a,0,-b);break;
20
+ case 40:g(a,0,b);break;case 27:d.allowSelect&&bb.release();break;case 9:return!0}return!1}var b=a('<input type="radio" />').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),c=a("<div />").css({position:"absolute",overflow:"hidden"}).append(b);return d.keySupport&&(b.keydown(i).blur(f),h||!d.fixedSupport?(b.css({position:"absolute",left:"-20px"}),c.append(b).insertBefore(D)):b.insertBefore(D)),{watchKeys:e}}();Z.support&&M.bind("touchstart.jcrop",Z.newSelection),J.hide(),br(!0);var bs={setImage:bp,animateTo:bf,setSelect:bg,setOptions:bk,tellSelect:bi,tellScaled:bj,setClass:be,disable:bl,enable:bm,cancel:bn,release:bb.release,destroy:bo,focus:bd.watchKeys,getBounds:function(){return[E*T,F*U]},getWidgetSize:function(){return[E,F]},getScaleFactor:function(){return[T,U]},getOptions:function(){return d},ui:{holder:G,selection:K}};return g&&G.bind("selectstart",function(){return!1}),A.data("Jcrop",bs),bs},a.fn.Jcrop=function(b,c){var d;return this.each(function(){if(a(this).data("Jcrop")){if(
21
+ b==="api")return a(this).data("Jcrop");a(this).data("Jcrop").setOptions(b)}else this.tagName=="IMG"?a.Jcrop.Loader(this,function(){a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d)}):(a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d))}),this},a.Jcrop.Loader=function(b,c,d){function g(){f.complete?(e.unbind(".jcloader"),a.isFunction(c)&&c.call(f)):window.setTimeout(g,50)}var e=a(b),f=e[0];e.bind("load.jcloader",g).bind("error.jcloader",function(b){e.unbind(".jcloader"),a.isFunction(d)&&d.call(f)}),f.complete&&a.isFunction(c)&&(e.unbind(".jcloader"),c.call(f))},a.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:null,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne","se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges
22
+ :!0,fixedSupport:!0,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}})(jQuery);
@@ -0,0 +1,661 @@
1
+ /*!
2
+ * jQuery Color Animations v2.0pre
3
+ * http://jquery.org/
4
+ *
5
+ * Copyright 2011 John Resig
6
+ * Dual licensed under the MIT or GPL Version 2 licenses.
7
+ * http://jquery.org/license
8
+ */
9
+
10
+ (function( jQuery, undefined ){
11
+ var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color outlineColor".split(" "),
12
+
13
+ // plusequals test for += 100 -= 100
14
+ rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
15
+ // a set of RE's that can match strings and generate color tuples.
16
+ stringParsers = [{
17
+ re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
18
+ parse: function( execResult ) {
19
+ return [
20
+ execResult[ 1 ],
21
+ execResult[ 2 ],
22
+ execResult[ 3 ],
23
+ execResult[ 4 ]
24
+ ];
25
+ }
26
+ }, {
27
+ re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
28
+ parse: function( execResult ) {
29
+ return [
30
+ 2.55 * execResult[1],
31
+ 2.55 * execResult[2],
32
+ 2.55 * execResult[3],
33
+ execResult[ 4 ]
34
+ ];
35
+ }
36
+ }, {
37
+ re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/,
38
+ parse: function( execResult ) {
39
+ return [
40
+ parseInt( execResult[ 1 ], 16 ),
41
+ parseInt( execResult[ 2 ], 16 ),
42
+ parseInt( execResult[ 3 ], 16 )
43
+ ];
44
+ }
45
+ }, {
46
+ re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/,
47
+ parse: function( execResult ) {
48
+ return [
49
+ parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
50
+ parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
51
+ parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
52
+ ];
53
+ }
54
+ }, {
55
+ re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/,
56
+ space: "hsla",
57
+ parse: function( execResult ) {
58
+ return [
59
+ execResult[1],
60
+ execResult[2] / 100,
61
+ execResult[3] / 100,
62
+ execResult[4]
63
+ ];
64
+ }
65
+ }],
66
+
67
+ // jQuery.Color( )
68
+ color = jQuery.Color = function( color, green, blue, alpha ) {
69
+ return new jQuery.Color.fn.parse( color, green, blue, alpha );
70
+ },
71
+ spaces = {
72
+ rgba: {
73
+ cache: "_rgba",
74
+ props: {
75
+ red: {
76
+ idx: 0,
77
+ type: "byte",
78
+ empty: true
79
+ },
80
+ green: {
81
+ idx: 1,
82
+ type: "byte",
83
+ empty: true
84
+ },
85
+ blue: {
86
+ idx: 2,
87
+ type: "byte",
88
+ empty: true
89
+ },
90
+ alpha: {
91
+ idx: 3,
92
+ type: "percent",
93
+ def: 1
94
+ }
95
+ }
96
+ },
97
+ hsla: {
98
+ cache: "_hsla",
99
+ props: {
100
+ hue: {
101
+ idx: 0,
102
+ type: "degrees",
103
+ empty: true
104
+ },
105
+ saturation: {
106
+ idx: 1,
107
+ type: "percent",
108
+ empty: true
109
+ },
110
+ lightness: {
111
+ idx: 2,
112
+ type: "percent",
113
+ empty: true
114
+ }
115
+ }
116
+ }
117
+ },
118
+ propTypes = {
119
+ "byte": {
120
+ floor: true,
121
+ min: 0,
122
+ max: 255
123
+ },
124
+ "percent": {
125
+ min: 0,
126
+ max: 1
127
+ },
128
+ "degrees": {
129
+ mod: 360,
130
+ floor: true
131
+ }
132
+ },
133
+ rgbaspace = spaces.rgba.props,
134
+ support = color.support = {},
135
+
136
+ // colors = jQuery.Color.names
137
+ colors,
138
+
139
+ // local aliases of functions called often
140
+ each = jQuery.each;
141
+
142
+ spaces.hsla.props.alpha = rgbaspace.alpha;
143
+
144
+ function clamp( value, prop, alwaysAllowEmpty ) {
145
+ var type = propTypes[ prop.type ] || {},
146
+ allowEmpty = prop.empty || alwaysAllowEmpty;
147
+
148
+ if ( allowEmpty && value == null ) {
149
+ return null;
150
+ }
151
+ if ( prop.def && value == null ) {
152
+ return prop.def;
153
+ }
154
+ if ( type.floor ) {
155
+ value = ~~value;
156
+ } else {
157
+ value = parseFloat( value );
158
+ }
159
+ if ( value == null || isNaN( value ) ) {
160
+ return prop.def;
161
+ }
162
+ if ( type.mod ) {
163
+ value = value % type.mod;
164
+ // -10 -> 350
165
+ return value < 0 ? type.mod + value : value;
166
+ }
167
+
168
+ // for now all property types without mod have min and max
169
+ return type.min > value ? type.min : type.max < value ? type.max : value;
170
+ }
171
+
172
+ function stringParse( string ) {
173
+ var inst = color(),
174
+ rgba = inst._rgba = [];
175
+
176
+ string = string.toLowerCase();
177
+
178
+ each( stringParsers, function( i, parser ) {
179
+ var match = parser.re.exec( string ),
180
+ values = match && parser.parse( match ),
181
+ parsed,
182
+ spaceName = parser.space || "rgba",
183
+ cache = spaces[ spaceName ].cache;
184
+
185
+
186
+ if ( values ) {
187
+ parsed = inst[ spaceName ]( values );
188
+
189
+ // if this was an rgba parse the assignment might happen twice
190
+ // oh well....
191
+ inst[ cache ] = parsed[ cache ];
192
+ rgba = inst._rgba = parsed._rgba;
193
+
194
+ // exit each( stringParsers ) here because we matched
195
+ return false;
196
+ }
197
+ });
198
+
199
+ // Found a stringParser that handled it
200
+ if ( rgba.length !== 0 ) {
201
+
202
+ // if this came from a parsed string, force "transparent" when alpha is 0
203
+ // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
204
+ if ( Math.max.apply( Math, rgba ) === 0 ) {
205
+ jQuery.extend( rgba, colors.transparent );
206
+ }
207
+ return inst;
208
+ }
209
+
210
+ // named colors / default - filter back through parse function
211
+ if ( string = colors[ string ] ) {
212
+ return string;
213
+ }
214
+ }
215
+
216
+ color.fn = color.prototype = {
217
+ constructor: color,
218
+ parse: function( red, green, blue, alpha ) {
219
+ if ( red === undefined ) {
220
+ this._rgba = [ null, null, null, null ];
221
+ return this;
222
+ }
223
+ if ( red instanceof jQuery || red.nodeType ) {
224
+ red = red instanceof jQuery ? red.css( green ) : jQuery( red ).css( green );
225
+ green = undefined;
226
+ }
227
+
228
+ var inst = this,
229
+ type = jQuery.type( red ),
230
+ rgba = this._rgba = [],
231
+ source;
232
+
233
+ // more than 1 argument specified - assume ( red, green, blue, alpha )
234
+ if ( green !== undefined ) {
235
+ red = [ red, green, blue, alpha ];
236
+ type = "array";
237
+ }
238
+
239
+ if ( type === "string" ) {
240
+ return this.parse( stringParse( red ) || colors._default );
241
+ }
242
+
243
+ if ( type === "array" ) {
244
+ each( rgbaspace, function( key, prop ) {
245
+ rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
246
+ });
247
+ return this;
248
+ }
249
+
250
+ if ( type === "object" ) {
251
+ if ( red instanceof color ) {
252
+ each( spaces, function( spaceName, space ) {
253
+ if ( red[ space.cache ] ) {
254
+ inst[ space.cache ] = red[ space.cache ].slice();
255
+ }
256
+ });
257
+ } else {
258
+ each( spaces, function( spaceName, space ) {
259
+ each( space.props, function( key, prop ) {
260
+ var cache = space.cache;
261
+
262
+ // if the cache doesn't exist, and we know how to convert
263
+ if ( !inst[ cache ] && space.to ) {
264
+
265
+ // if the value was null, we don't need to copy it
266
+ // if the key was alpha, we don't need to copy it either
267
+ if ( red[ key ] == null || key === "alpha") {
268
+ return;
269
+ }
270
+ inst[ cache ] = space.to( inst._rgba );
271
+ }
272
+
273
+ // this is the only case where we allow nulls for ALL properties.
274
+ // call clamp with alwaysAllowEmpty
275
+ inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
276
+ });
277
+ });
278
+ }
279
+ return this;
280
+ }
281
+ },
282
+ is: function( compare ) {
283
+ var is = color( compare ),
284
+ same = true,
285
+ myself = this;
286
+
287
+ each( spaces, function( _, space ) {
288
+ var isCache = is[ space.cache ],
289
+ localCache;
290
+ if (isCache) {
291
+ localCache = myself[ space.cache ] || space.to && space.to( myself._rgba ) || [];
292
+ each( space.props, function( _, prop ) {
293
+ if ( isCache[ prop.idx ] != null ) {
294
+ same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
295
+ return same;
296
+ }
297
+ });
298
+ }
299
+ return same;
300
+ });
301
+ return same;
302
+ },
303
+ _space: function() {
304
+ var used = [],
305
+ inst = this;
306
+ each( spaces, function( spaceName, space ) {
307
+ if ( inst[ space.cache ] ) {
308
+ used.push( spaceName );
309
+ }
310
+ });
311
+ return used.pop();
312
+ },
313
+ transition: function( other, distance ) {
314
+ var end = color( other ),
315
+ spaceName = end._space(),
316
+ space = spaces[ spaceName ],
317
+ start = this[ space.cache ] || space.to( this._rgba ),
318
+ result = start.slice();
319
+
320
+ end = end[ space.cache ];
321
+ each( space.props, function( key, prop ) {
322
+ var index = prop.idx,
323
+ startValue = start[ index ],
324
+ endValue = end[ index ],
325
+ type = propTypes[ prop.type ] || {};
326
+
327
+ // if null, don't override start value
328
+ if ( endValue === null ) {
329
+ return;
330
+ }
331
+ // if null - use end
332
+ if ( startValue === null ) {
333
+ result[ index ] = endValue;
334
+ } else {
335
+ if ( type.mod ) {
336
+ if ( endValue - startValue > type.mod / 2 ) {
337
+ startValue += type.mod;
338
+ } else if ( startValue - endValue > type.mod / 2 ) {
339
+ startValue -= type.mod;
340
+ }
341
+ }
342
+ result[ prop.idx ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
343
+ }
344
+ });
345
+ return this[ spaceName ]( result );
346
+ },
347
+ blend: function( opaque ) {
348
+ // if we are already opaque - return ourself
349
+ if ( this._rgba[ 3 ] === 1 ) {
350
+ return this;
351
+ }
352
+
353
+ var rgb = this._rgba.slice(),
354
+ a = rgb.pop(),
355
+ blend = color( opaque )._rgba;
356
+
357
+ return color( jQuery.map( rgb, function( v, i ) {
358
+ return ( 1 - a ) * blend[ i ] + a * v;
359
+ }));
360
+ },
361
+ toRgbaString: function() {
362
+ var prefix = "rgba(",
363
+ rgba = jQuery.map( this._rgba, function( v, i ) {
364
+ return v == null ? ( i > 2 ? 1 : 0 ) : v;
365
+ });
366
+
367
+ if ( rgba[ 3 ] === 1 ) {
368
+ rgba.pop();
369
+ prefix = "rgb(";
370
+ }
371
+
372
+ return prefix + rgba.join(",") + ")";
373
+ },
374
+ toHslaString: function() {
375
+ var prefix = "hsla(",
376
+ hsla = jQuery.map( this.hsla(), function( v, i ) {
377
+ if ( v == null ) {
378
+ v = i > 2 ? 1 : 0;
379
+ }
380
+
381
+ // catch 1 and 2
382
+ if ( i && i < 3 ) {
383
+ v = Math.round( v * 100 ) + "%";
384
+ }
385
+ return v;
386
+ });
387
+
388
+ if ( hsla[ 3 ] === 1 ) {
389
+ hsla.pop();
390
+ prefix = "hsl(";
391
+ }
392
+ return prefix + hsla.join(",") + ")";
393
+ },
394
+ toHexString: function( includeAlpha ) {
395
+ var rgba = this._rgba.slice(),
396
+ alpha = rgba.pop();
397
+
398
+ if ( includeAlpha ) {
399
+ rgba.push( ~~( alpha * 255 ) );
400
+ }
401
+
402
+ return "#" + jQuery.map( rgba, function( v, i ) {
403
+
404
+ // default to 0 when nulls exist
405
+ v = ( v || 0 ).toString( 16 );
406
+ return v.length === 1 ? "0" + v : v;
407
+ }).join("");
408
+ },
409
+ toString: function() {
410
+ return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
411
+ }
412
+ };
413
+ color.fn.parse.prototype = color.fn;
414
+
415
+ // hsla conversions adapted from:
416
+ // http://www.google.com/codesearch/p#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/inspector/front-end/Color.js&d=7&l=193
417
+
418
+ function hue2rgb( p, q, h ) {
419
+ h = ( h + 1 ) % 1;
420
+ if ( h * 6 < 1 ) {
421
+ return p + (q - p) * 6 * h;
422
+ }
423
+ if ( h * 2 < 1) {
424
+ return q;
425
+ }
426
+ if ( h * 3 < 2 ) {
427
+ return p + (q - p) * ((2/3) - h) * 6;
428
+ }
429
+ return p;
430
+ }
431
+
432
+ spaces.hsla.to = function ( rgba ) {
433
+ if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
434
+ return [ null, null, null, rgba[ 3 ] ];
435
+ }
436
+ var r = rgba[ 0 ] / 255,
437
+ g = rgba[ 1 ] / 255,
438
+ b = rgba[ 2 ] / 255,
439
+ a = rgba[ 3 ],
440
+ max = Math.max( r, g, b ),
441
+ min = Math.min( r, g, b ),
442
+ diff = max - min,
443
+ add = max + min,
444
+ l = add * 0.5,
445
+ h, s;
446
+
447
+ if ( min === max ) {
448
+ h = 0;
449
+ } else if ( r === max ) {
450
+ h = ( 60 * ( g - b ) / diff ) + 360;
451
+ } else if ( g === max ) {
452
+ h = ( 60 * ( b - r ) / diff ) + 120;
453
+ } else {
454
+ h = ( 60 * ( r - g ) / diff ) + 240;
455
+ }
456
+
457
+ if ( l === 0 || l === 1 ) {
458
+ s = l;
459
+ } else if ( l <= 0.5 ) {
460
+ s = diff / add;
461
+ } else {
462
+ s = diff / ( 2 - add );
463
+ }
464
+ return [ Math.round(h) % 360, s, l, a == null ? 1 : a ];
465
+ };
466
+
467
+ spaces.hsla.from = function ( hsla ) {
468
+ if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
469
+ return [ null, null, null, hsla[ 3 ] ];
470
+ }
471
+ var h = hsla[ 0 ] / 360,
472
+ s = hsla[ 1 ],
473
+ l = hsla[ 2 ],
474
+ a = hsla[ 3 ],
475
+ q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
476
+ p = 2 * l - q,
477
+ r, g, b;
478
+
479
+ return [
480
+ Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
481
+ Math.round( hue2rgb( p, q, h ) * 255 ),
482
+ Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
483
+ a
484
+ ];
485
+ };
486
+
487
+
488
+ each( spaces, function( spaceName, space ) {
489
+ var props = space.props,
490
+ cache = space.cache,
491
+ to = space.to,
492
+ from = space.from;
493
+
494
+ // makes rgba() and hsla()
495
+ color.fn[ spaceName ] = function( value ) {
496
+
497
+ // generate a cache for this space if it doesn't exist
498
+ if ( to && !this[ cache ] ) {
499
+ this[ cache ] = to( this._rgba );
500
+ }
501
+ if ( value === undefined ) {
502
+ return this[ cache ].slice();
503
+ }
504
+
505
+ var type = jQuery.type( value ),
506
+ arr = ( type === "array" || type === "object" ) ? value : arguments,
507
+ local = this[ cache ].slice(),
508
+ ret;
509
+
510
+ each( props, function( key, prop ) {
511
+ var val = arr[ type === "object" ? key : prop.idx ];
512
+ if ( val == null ) {
513
+ val = local[ prop.idx ];
514
+ }
515
+ local[ prop.idx ] = clamp( val, prop );
516
+ });
517
+
518
+ if ( from ) {
519
+ ret = color( from( local ) );
520
+ ret[ cache ] = local;
521
+ return ret;
522
+ } else {
523
+ return color( local );
524
+ }
525
+ };
526
+
527
+ // makes red() green() blue() alpha() hue() saturation() lightness()
528
+ each( props, function( key, prop ) {
529
+ // alpha is included in more than one space
530
+ if ( color.fn[ key ] ) {
531
+ return;
532
+ }
533
+ color.fn[ key ] = function( value ) {
534
+ var vtype = jQuery.type( value ),
535
+ fn = ( key === 'alpha' ? ( this._hsla ? 'hsla' : 'rgba' ) : spaceName ),
536
+ local = this[ fn ](),
537
+ cur = local[ prop.idx ],
538
+ match;
539
+
540
+ if ( vtype === "undefined" ) {
541
+ return cur;
542
+ }
543
+
544
+ if ( vtype === "function" ) {
545
+ value = value.call( this, cur );
546
+ vtype = jQuery.type( value );
547
+ }
548
+ if ( value == null && prop.empty ) {
549
+ return this;
550
+ }
551
+ if ( vtype === "string" ) {
552
+ match = rplusequals.exec( value );
553
+ if ( match ) {
554
+ value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
555
+ }
556
+ }
557
+ local[ prop.idx ] = value;
558
+ return this[ fn ]( local );
559
+ };
560
+ });
561
+ });
562
+
563
+ // add .fx.step functions
564
+ each( stepHooks, function( i, hook ) {
565
+ jQuery.cssHooks[ hook ] = {
566
+ set: function( elem, value ) {
567
+ var parsed, backgroundColor, curElem;
568
+
569
+ if ( jQuery.type( value ) !== 'string' || ( parsed = stringParse( value ) ) )
570
+ {
571
+ value = color( parsed || value );
572
+ if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
573
+ curElem = hook === "backgroundColor" ? elem.parentNode : elem;
574
+ do {
575
+ backgroundColor = jQuery.curCSS( curElem, "backgroundColor" );
576
+ } while (
577
+ ( backgroundColor === "" || backgroundColor === "transparent" ) &&
578
+ ( curElem = curElem.parentNode ) &&
579
+ curElem.style
580
+ );
581
+
582
+ value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
583
+ backgroundColor :
584
+ "_default" );
585
+ }
586
+
587
+ value = value.toRgbaString();
588
+ }
589
+ elem.style[ hook ] = value;
590
+ }
591
+ };
592
+ jQuery.fx.step[ hook ] = function( fx ) {
593
+ if ( !fx.colorInit ) {
594
+ fx.start = color( fx.elem, hook );
595
+ fx.end = color( fx.end );
596
+ fx.colorInit = true;
597
+ }
598
+ jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
599
+ };
600
+ });
601
+
602
+ // detect rgba support
603
+ jQuery(function() {
604
+ var div = document.createElement( "div" ),
605
+ div_style = div.style;
606
+
607
+ div_style.cssText = "background-color:rgba(1,1,1,.5)";
608
+ support.rgba = div_style.backgroundColor.indexOf( "rgba" ) > -1;
609
+ });
610
+
611
+ // Some named colors to work with
612
+ // From Interface by Stefan Petre
613
+ // http://interface.eyecon.ro/
614
+ colors = jQuery.Color.names = {
615
+ aqua: "#00ffff",
616
+ azure: "#f0ffff",
617
+ beige: "#f5f5dc",
618
+ black: "#000000",
619
+ blue: "#0000ff",
620
+ brown: "#a52a2a",
621
+ cyan: "#00ffff",
622
+ darkblue: "#00008b",
623
+ darkcyan: "#008b8b",
624
+ darkgrey: "#a9a9a9",
625
+ darkgreen: "#006400",
626
+ darkkhaki: "#bdb76b",
627
+ darkmagenta: "#8b008b",
628
+ darkolivegreen: "#556b2f",
629
+ darkorange: "#ff8c00",
630
+ darkorchid: "#9932cc",
631
+ darkred: "#8b0000",
632
+ darksalmon: "#e9967a",
633
+ darkviolet: "#9400d3",
634
+ fuchsia: "#ff00ff",
635
+ gold: "#ffd700",
636
+ green: "#008000",
637
+ indigo: "#4b0082",
638
+ khaki: "#f0e68c",
639
+ lightblue: "#add8e6",
640
+ lightcyan: "#e0ffff",
641
+ lightgreen: "#90ee90",
642
+ lightgrey: "#d3d3d3",
643
+ lightpink: "#ffb6c1",
644
+ lightyellow: "#ffffe0",
645
+ lime: "#00ff00",
646
+ magenta: "#ff00ff",
647
+ maroon: "#800000",
648
+ navy: "#000080",
649
+ olive: "#808000",
650
+ orange: "#ffa500",
651
+ pink: "#ffc0cb",
652
+ purple: "#800080",
653
+ violet: "#800080",
654
+ red: "#ff0000",
655
+ silver: "#c0c0c0",
656
+ white: "#ffffff",
657
+ yellow: "#ffff00",
658
+ transparent: [ null, null, null, 0 ],
659
+ _default: "#ffffff"
660
+ };
661
+ })( jQuery );