social_stream 0.12.14 → 0.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (179) hide show
  1. data/base/app/controllers/groups_controller.rb +3 -2
  2. data/base/app/controllers/posts_controller.rb +2 -10
  3. data/base/app/helpers/activities_helper.rb +2 -1
  4. data/base/app/models/activity_object.rb +28 -0
  5. data/base/app/models/actor.rb +10 -0
  6. data/base/app/models/group.rb +7 -3
  7. data/base/app/models/user.rb +7 -2
  8. data/base/app/views/activities/_new.html.erb +0 -1
  9. data/base/app/views/activity_objects/_activity_object.html.erb +3 -3
  10. data/base/app/views/comments/_new.html.erb +2 -3
  11. data/base/app/views/groups/_new.html.erb +0 -3
  12. data/base/app/views/notifications/activities/_like.text.erb +1 -1
  13. data/base/app/views/objects/_new_activity.html.erb +2 -2
  14. data/base/app/views/objects/_show.html.erb +1 -1
  15. data/base/db/migrate/20111124100618_object_actors.rb +50 -0
  16. data/base/lib/social_stream-base.rb +2 -1
  17. data/base/lib/social_stream/ability/base.rb +1 -1
  18. data/base/lib/social_stream/base/version.rb +1 -1
  19. data/base/lib/social_stream/controllers/objects.rb +33 -0
  20. data/base/lib/social_stream/models/object.rb +33 -28
  21. data/base/lib/social_stream/test_helpers/controllers.rb +3 -1
  22. data/base/lib/tasks/db/populate.rake +9 -2
  23. data/base/spec/controllers/comments_controller_spec.rb +9 -6
  24. data/base/spec/controllers/groups_controller_spec.rb +7 -5
  25. data/base/spec/controllers/posts_controller_spec.rb +45 -9
  26. data/base/spec/controllers/users_controller_spec.rb +3 -1
  27. data/base/spec/factories/activity.rb +3 -2
  28. data/base/spec/factories/comment.rb +3 -2
  29. data/base/spec/factories/group.rb +2 -1
  30. data/base/spec/factories/post.rb +5 -4
  31. data/base/spec/models/activity_authorization_spec.rb +5 -4
  32. data/base/spec/models/group_spec.rb +5 -2
  33. data/base/spec/models/post_spec.rb +6 -2
  34. data/documents/app/assets/stylesheets/show.css.scss +4 -0
  35. data/documents/app/controllers/documents_controller.rb +2 -10
  36. data/documents/app/views/audios/_audio_processed.html.erb +1 -1
  37. data/documents/app/views/audios/_audio_processing.html.erb +1 -1
  38. data/documents/app/views/common_documents/_document_info.html.erb +5 -0
  39. data/documents/app/views/documents/_document.html.erb +1 -1
  40. data/documents/app/views/pictures/_picture.html.erb +4 -4
  41. data/documents/app/views/videos/_video_processed.html.erb +1 -1
  42. data/documents/app/views/videos/_video_processing.html.erb +1 -1
  43. data/documents/lib/social_stream/documents/version.rb +1 -1
  44. data/documents/social_stream-documents.gemspec +1 -1
  45. data/documents/spec/factories/document.rb +7 -6
  46. data/documents/spec/factories/picture.rb +7 -6
  47. data/documents/spec/spec_helper.rb +6 -1
  48. data/events/db/migrate/20111102145626_add_more_fields_to_events.rb +0 -4
  49. data/events/db/migrate/20111104182420_add_details_to_events.rb +0 -26
  50. data/events/lib/social_stream/events/version.rb +1 -1
  51. data/events/social_stream-events.gemspec +1 -1
  52. data/lib/social_stream/version.rb +1 -1
  53. data/linkser/.gitignore +14 -0
  54. data/linkser/.rspec +1 -0
  55. data/linkser/Gemfile +5 -0
  56. data/linkser/MIT-LICENSE +20 -0
  57. data/linkser/README.rdoc +6 -0
  58. data/linkser/Rakefile +26 -0
  59. data/{documents/app/views/audios/_mediapreviews.html.erb → linkser/app/assets/javascripts/linkser.js.erb} +0 -0
  60. data/linkser/app/assets/javascripts/social_stream-linkser.js +1 -0
  61. data/linkser/app/assets/stylesheets/linkser.css.scss +1 -0
  62. data/linkser/app/assets/stylesheets/social_stream-linkser.css +3 -0
  63. data/linkser/config/locales/en.yml +3 -0
  64. data/linkser/config/locales/es.yml +3 -0
  65. data/linkser/config/routes.rb +3 -0
  66. data/linkser/lib/generators/social_stream/linkser/install_generator.rb +24 -0
  67. data/linkser/lib/social_stream-linkser.rb +9 -0
  68. data/linkser/lib/social_stream/linkser/engine.rb +7 -0
  69. data/linkser/lib/social_stream/linkser/version.rb +5 -0
  70. data/linkser/lib/social_stream/migrations/linkser.rb +9 -0
  71. data/linkser/social_stream-linkser.gemspec +26 -0
  72. data/linkser/spec/dummy/Rakefile +7 -0
  73. data/linkser/spec/dummy/app/controllers/application_controller.rb +3 -0
  74. data/linkser/spec/dummy/app/helpers/application_helper.rb +2 -0
  75. data/linkser/spec/dummy/app/views/layouts/application.html.erb +14 -0
  76. data/linkser/spec/dummy/config.ru +4 -0
  77. data/linkser/spec/dummy/config/application.rb +45 -0
  78. data/linkser/spec/dummy/config/boot.rb +10 -0
  79. data/linkser/spec/dummy/config/database.yml +22 -0
  80. data/linkser/spec/dummy/config/environment.rb +5 -0
  81. data/linkser/spec/dummy/config/environments/development.rb +25 -0
  82. data/linkser/spec/dummy/config/environments/production.rb +49 -0
  83. data/linkser/spec/dummy/config/environments/test.rb +37 -0
  84. data/linkser/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  85. data/linkser/spec/dummy/config/initializers/devise.rb +176 -0
  86. data/linkser/spec/dummy/config/initializers/inflections.rb +10 -0
  87. data/linkser/spec/dummy/config/initializers/mime_types.rb +5 -0
  88. data/linkser/spec/dummy/config/initializers/secret_token.rb +7 -0
  89. data/linkser/spec/dummy/config/initializers/session_store.rb +8 -0
  90. data/linkser/spec/dummy/config/locales/en.yml +5 -0
  91. data/linkser/spec/dummy/config/navigation.rb +0 -0
  92. data/linkser/spec/dummy/config/relations.yml +39 -0
  93. data/linkser/spec/dummy/config/routes.rb +60 -0
  94. data/linkser/spec/dummy/db/.gitkeep +0 -0
  95. data/linkser/spec/dummy/documents/documents/000/000/001/original.pdf +157 -0
  96. data/linkser/spec/dummy/documents/documents/000/000/002/original.pdf +157 -0
  97. data/linkser/spec/dummy/documents/documents/000/000/003/original.pdf +157 -0
  98. data/linkser/spec/dummy/documents/documents/000/000/004/original.pdf +157 -0
  99. data/linkser/spec/dummy/documents/documents/000/000/005/original.pdf +157 -0
  100. data/linkser/spec/dummy/documents/documents/000/000/006/original.pdf +157 -0
  101. data/linkser/spec/dummy/documents/documents/000/000/007/original.pdf +157 -0
  102. data/linkser/spec/dummy/documents/documents/000/000/008/original.pdf +157 -0
  103. data/linkser/spec/dummy/documents/documents/000/000/009/original.pdf +157 -0
  104. data/linkser/spec/dummy/documents/documents/000/000/010/original.pdf +157 -0
  105. data/linkser/spec/dummy/documents/pictures/000/000/011/original.png +0 -0
  106. data/linkser/spec/dummy/documents/pictures/000/000/011/thumb.png +0 -0
  107. data/linkser/spec/dummy/documents/pictures/000/000/011/thumb0.png +0 -0
  108. data/linkser/spec/dummy/documents/pictures/000/000/012/original.png +0 -0
  109. data/linkser/spec/dummy/documents/pictures/000/000/012/thumb.png +0 -0
  110. data/linkser/spec/dummy/documents/pictures/000/000/012/thumb0.png +0 -0
  111. data/linkser/spec/dummy/documents/pictures/000/000/013/original.png +0 -0
  112. data/linkser/spec/dummy/documents/pictures/000/000/013/thumb.png +0 -0
  113. data/linkser/spec/dummy/documents/pictures/000/000/013/thumb0.png +0 -0
  114. data/linkser/spec/dummy/documents/pictures/000/000/014/original.png +0 -0
  115. data/linkser/spec/dummy/documents/pictures/000/000/014/thumb.png +0 -0
  116. data/linkser/spec/dummy/documents/pictures/000/000/014/thumb0.png +0 -0
  117. data/linkser/spec/dummy/documents/pictures/000/000/015/original.png +0 -0
  118. data/linkser/spec/dummy/documents/pictures/000/000/015/thumb.png +0 -0
  119. data/linkser/spec/dummy/documents/pictures/000/000/015/thumb0.png +0 -0
  120. data/linkser/spec/dummy/documents/pictures/000/000/016/original.png +0 -0
  121. data/linkser/spec/dummy/documents/pictures/000/000/016/thumb.png +0 -0
  122. data/linkser/spec/dummy/documents/pictures/000/000/016/thumb0.png +0 -0
  123. data/linkser/spec/dummy/documents/pictures/000/000/017/original.png +0 -0
  124. data/linkser/spec/dummy/documents/pictures/000/000/017/thumb.png +0 -0
  125. data/linkser/spec/dummy/documents/pictures/000/000/017/thumb0.png +0 -0
  126. data/linkser/spec/dummy/documents/pictures/000/000/018/original.png +0 -0
  127. data/linkser/spec/dummy/documents/pictures/000/000/018/thumb.png +0 -0
  128. data/linkser/spec/dummy/documents/pictures/000/000/018/thumb0.png +0 -0
  129. data/linkser/spec/dummy/documents/pictures/000/000/019/original.png +0 -0
  130. data/linkser/spec/dummy/documents/pictures/000/000/019/thumb.png +0 -0
  131. data/linkser/spec/dummy/documents/pictures/000/000/019/thumb0.png +0 -0
  132. data/linkser/spec/dummy/documents/pictures/000/000/020/original.png +0 -0
  133. data/linkser/spec/dummy/documents/pictures/000/000/020/thumb.png +0 -0
  134. data/linkser/spec/dummy/documents/pictures/000/000/020/thumb0.png +0 -0
  135. data/linkser/spec/dummy/public/404.html +26 -0
  136. data/linkser/spec/dummy/public/422.html +26 -0
  137. data/linkser/spec/dummy/public/500.html +26 -0
  138. data/linkser/spec/dummy/public/favicon.ico +0 -0
  139. data/linkser/spec/dummy/public/javascripts/application.js +2 -0
  140. data/linkser/spec/dummy/public/javascripts/controls.js +965 -0
  141. data/linkser/spec/dummy/public/javascripts/dragdrop.js +974 -0
  142. data/linkser/spec/dummy/public/javascripts/effects.js +1123 -0
  143. data/linkser/spec/dummy/public/javascripts/prototype.js +6001 -0
  144. data/linkser/spec/dummy/public/javascripts/rails.js +191 -0
  145. data/linkser/spec/dummy/public/stylesheets/.gitkeep +0 -0
  146. data/linkser/spec/dummy/script/rails +6 -0
  147. data/linkser/spec/integration/navigation_spec.rb +9 -0
  148. data/linkser/spec/socialstream_linkser_spec.rb +7 -0
  149. data/linkser/spec/spec_helper.rb +48 -0
  150. data/linkser/spec/support/cancan.rb +1 -0
  151. data/linkser/spec/support/db.rb +8 -0
  152. data/linkser/spec/support/devise.rb +4 -0
  153. data/linkser/spec/support/mock.rb +4 -0
  154. data/linkser/vendor/assets/javascripts/jquery.jplayer.js +78 -0
  155. data/linkser/vendor/assets/stylesheets/jplayer.blue.monday.css +448 -0
  156. data/linkser/vendor/assets/stylesheets/jplayer.blue.monday.jpg +0 -0
  157. data/linkser/vendor/assets/stylesheets/jplayer.blue.monday.video.play.hover.png +0 -0
  158. data/linkser/vendor/assets/stylesheets/jplayer.blue.monday.video.play.png +0 -0
  159. data/linkser/vendor/assets/stylesheets/jquery.lightbox.css +101 -0
  160. data/linkser/vendor/assets/stylesheets/pbar-ani.gif +0 -0
  161. data/presence/app/assets/images/status/offline.png +0 -0
  162. data/presence/app/assets/javascripts/chat_interface_manager.js.erb +65 -16
  163. data/presence/app/assets/javascripts/xmpp_client_management.js.erb +13 -3
  164. data/presence/app/controllers/xmpp_controller.rb +2 -5
  165. data/presence/app/views/chat/_contacts.html.erb +10 -9
  166. data/presence/app/views/chat/_settings.html.erb +4 -4
  167. data/presence/app/views/xmpp/active_users.html.erb +10 -10
  168. data/presence/config/locales/en.yml +6 -1
  169. data/presence/config/locales/es.yml +7 -1
  170. data/presence/config/routes.rb +1 -4
  171. data/presence/lib/social_stream/presence/version.rb +1 -1
  172. data/social_stream.gemspec +3 -3
  173. metadata +127 -23
  174. data/documents/app/views/audios/index.js.erb +0 -1
  175. data/documents/app/views/documents/index.js.erb +0 -1
  176. data/documents/app/views/pictures/_mediapreviews.html.erb +0 -8
  177. data/documents/app/views/pictures/index.js.erb +0 -1
  178. data/presence/app/views/xmpp/index.html +0 -18
  179. data/presence/app/views/xmpp/test.html.erb +0 -11
@@ -0,0 +1,191 @@
1
+ (function() {
2
+ // Technique from Juriy Zaytsev
3
+ // http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
4
+ function isEventSupported(eventName) {
5
+ var el = document.createElement('div');
6
+ eventName = 'on' + eventName;
7
+ var isSupported = (eventName in el);
8
+ if (!isSupported) {
9
+ el.setAttribute(eventName, 'return;');
10
+ isSupported = typeof el[eventName] == 'function';
11
+ }
12
+ el = null;
13
+ return isSupported;
14
+ }
15
+
16
+ function isForm(element) {
17
+ return Object.isElement(element) && element.nodeName.toUpperCase() == 'FORM'
18
+ }
19
+
20
+ function isInput(element) {
21
+ if (Object.isElement(element)) {
22
+ var name = element.nodeName.toUpperCase()
23
+ return name == 'INPUT' || name == 'SELECT' || name == 'TEXTAREA'
24
+ }
25
+ else return false
26
+ }
27
+
28
+ var submitBubbles = isEventSupported('submit'),
29
+ changeBubbles = isEventSupported('change')
30
+
31
+ if (!submitBubbles || !changeBubbles) {
32
+ // augment the Event.Handler class to observe custom events when needed
33
+ Event.Handler.prototype.initialize = Event.Handler.prototype.initialize.wrap(
34
+ function(init, element, eventName, selector, callback) {
35
+ init(element, eventName, selector, callback)
36
+ // is the handler being attached to an element that doesn't support this event?
37
+ if ( (!submitBubbles && this.eventName == 'submit' && !isForm(this.element)) ||
38
+ (!changeBubbles && this.eventName == 'change' && !isInput(this.element)) ) {
39
+ // "submit" => "emulated:submit"
40
+ this.eventName = 'emulated:' + this.eventName
41
+ }
42
+ }
43
+ )
44
+ }
45
+
46
+ if (!submitBubbles) {
47
+ // discover forms on the page by observing focus events which always bubble
48
+ document.on('focusin', 'form', function(focusEvent, form) {
49
+ // special handler for the real "submit" event (one-time operation)
50
+ if (!form.retrieve('emulated:submit')) {
51
+ form.on('submit', function(submitEvent) {
52
+ var emulated = form.fire('emulated:submit', submitEvent, true)
53
+ // if custom event received preventDefault, cancel the real one too
54
+ if (emulated.returnValue === false) submitEvent.preventDefault()
55
+ })
56
+ form.store('emulated:submit', true)
57
+ }
58
+ })
59
+ }
60
+
61
+ if (!changeBubbles) {
62
+ // discover form inputs on the page
63
+ document.on('focusin', 'input, select, texarea', function(focusEvent, input) {
64
+ // special handler for real "change" events
65
+ if (!input.retrieve('emulated:change')) {
66
+ input.on('change', function(changeEvent) {
67
+ input.fire('emulated:change', changeEvent, true)
68
+ })
69
+ input.store('emulated:change', true)
70
+ }
71
+ })
72
+ }
73
+
74
+ function handleRemote(element) {
75
+ var method, url, params;
76
+
77
+ var event = element.fire("ajax:before");
78
+ if (event.stopped) return false;
79
+
80
+ if (element.tagName.toLowerCase() === 'form') {
81
+ method = element.readAttribute('method') || 'post';
82
+ url = element.readAttribute('action');
83
+ params = element.serialize();
84
+ } else {
85
+ method = element.readAttribute('data-method') || 'get';
86
+ url = element.readAttribute('href');
87
+ params = {};
88
+ }
89
+
90
+ new Ajax.Request(url, {
91
+ method: method,
92
+ parameters: params,
93
+ evalScripts: true,
94
+
95
+ onComplete: function(request) { element.fire("ajax:complete", request); },
96
+ onSuccess: function(request) { element.fire("ajax:success", request); },
97
+ onFailure: function(request) { element.fire("ajax:failure", request); }
98
+ });
99
+
100
+ element.fire("ajax:after");
101
+ }
102
+
103
+ function handleMethod(element) {
104
+ var method = element.readAttribute('data-method'),
105
+ url = element.readAttribute('href'),
106
+ csrf_param = $$('meta[name=csrf-param]')[0],
107
+ csrf_token = $$('meta[name=csrf-token]')[0];
108
+
109
+ var form = new Element('form', { method: "POST", action: url, style: "display: none;" });
110
+ element.parentNode.insert(form);
111
+
112
+ if (method !== 'post') {
113
+ var field = new Element('input', { type: 'hidden', name: '_method', value: method });
114
+ form.insert(field);
115
+ }
116
+
117
+ if (csrf_param) {
118
+ var param = csrf_param.readAttribute('content'),
119
+ token = csrf_token.readAttribute('content'),
120
+ field = new Element('input', { type: 'hidden', name: param, value: token });
121
+ form.insert(field);
122
+ }
123
+
124
+ form.submit();
125
+ }
126
+
127
+
128
+ document.on("click", "*[data-confirm]", function(event, element) {
129
+ var message = element.readAttribute('data-confirm');
130
+ if (!confirm(message)) event.stop();
131
+ });
132
+
133
+ document.on("click", "a[data-remote]", function(event, element) {
134
+ if (event.stopped) return;
135
+ handleRemote(element);
136
+ event.stop();
137
+ });
138
+
139
+ document.on("click", "a[data-method]", function(event, element) {
140
+ if (event.stopped) return;
141
+ handleMethod(element);
142
+ event.stop();
143
+ });
144
+
145
+ document.on("submit", function(event) {
146
+ var element = event.findElement(),
147
+ message = element.readAttribute('data-confirm');
148
+ if (message && !confirm(message)) {
149
+ event.stop();
150
+ return false;
151
+ }
152
+
153
+ var inputs = element.select("input[type=submit][data-disable-with]");
154
+ inputs.each(function(input) {
155
+ input.disabled = true;
156
+ input.writeAttribute('data-original-value', input.value);
157
+ input.value = input.readAttribute('data-disable-with');
158
+ });
159
+
160
+ var element = event.findElement("form[data-remote]");
161
+ if (element) {
162
+ handleRemote(element);
163
+ event.stop();
164
+ }
165
+ });
166
+
167
+ document.on("ajax:after", "form", function(event, element) {
168
+ var inputs = element.select("input[type=submit][disabled=true][data-disable-with]");
169
+ inputs.each(function(input) {
170
+ input.value = input.readAttribute('data-original-value');
171
+ input.removeAttribute('data-original-value');
172
+ input.disabled = false;
173
+ });
174
+ });
175
+
176
+ Ajax.Responders.register({
177
+ onCreate: function(request) {
178
+ var csrf_meta_tag = $$('meta[name=csrf-token]')[0];
179
+
180
+ if (csrf_meta_tag) {
181
+ var header = 'X-CSRF-Token',
182
+ token = csrf_meta_tag.readAttribute('content');
183
+
184
+ if (!request.options.requestHeaders) {
185
+ request.options.requestHeaders = {};
186
+ }
187
+ request.options.requestHeaders[header] = token;
188
+ }
189
+ }
190
+ });
191
+ })();
File without changes
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
3
+
4
+ APP_PATH = File.expand_path('../../config/application', __FILE__)
5
+ require File.expand_path('../../config/boot', __FILE__)
6
+ require 'rails/commands'
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Navigation" do
4
+ include Capybara
5
+
6
+ it "should be a valid app" do
7
+ ::Rails.application.should be_a(Dummy::Application)
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe SocialStream::Linkser do
4
+ it "should be valid" do
5
+ SocialStream::Linkser.should be_a(Module)
6
+ end
7
+ end
@@ -0,0 +1,48 @@
1
+ # Configure Rails Envinronment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../dummy/config/environment.rb", __FILE__)
5
+ require "rails/test_help"
6
+ require "rspec/rails"
7
+
8
+ ActionMailer::Base.delivery_method = :test
9
+ ActionMailer::Base.perform_deliveries = true
10
+ ActionMailer::Base.default_url_options[:host] = "test.com"
11
+
12
+ Rails.backtrace_cleaner.remove_silencers!
13
+
14
+ # Configure capybara for integration testing
15
+ require "capybara/rails"
16
+
17
+ Capybara.default_driver = :rack_test
18
+ Capybara.default_selector = :css
19
+
20
+ ActiveRecord::Migration.verbose = false
21
+
22
+ # Load support files
23
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
24
+
25
+ # Load Factories
26
+ require 'factory_girl'
27
+
28
+ if (Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.8.0'))
29
+ base_path = File.join(Gem::Specification.find_by_name('social_stream-base').full_gem_path, 'spec')
30
+ else
31
+ base_path = File.join(Gem::GemPathSearcher.new.find('social_stream-base').full_gem_path, 'spec')
32
+ end
33
+ [ base_path, File.dirname(__FILE__) ].each do |path|
34
+ Dir["#{path}/factories/*.rb"].each {|f| require f}
35
+ end
36
+
37
+ =begin
38
+ RSpec.configure do |config|
39
+ # Remove this line if you don't want RSpec's should and should_not
40
+ # methods or matchers
41
+ require 'rspec/expectations'
42
+ config.include RSpec::Matchers
43
+
44
+ # == Mock Framework
45
+ config.mock_with :rspec
46
+ end
47
+ =end
48
+
@@ -0,0 +1 @@
1
+ require 'cancan/matchers'
@@ -0,0 +1,8 @@
1
+ require 'social_stream/migrations/linkser'
2
+
3
+
4
+ SocialStream::Migrations::Linkser.new.down
5
+ SocialStream::Migrations::Base.new.down
6
+
7
+ SocialStream::Migrations::Base.new.up
8
+ SocialStream::Migrations::Linkser.new.up
@@ -0,0 +1,4 @@
1
+ RSpec.configure do |config|
2
+ # Add authentication helpers
3
+ config.include Devise::TestHelpers, :type => :controller
4
+ end
@@ -0,0 +1,4 @@
1
+ RSpec.configure do |config|
2
+ # == Mock Framework
3
+ config.mock_with :rspec
4
+ end
@@ -0,0 +1,78 @@
1
+ /*
2
+ * jPlayer Plugin for jQuery JavaScript Library
3
+ * http://www.happyworm.com/jquery/jplayer
4
+ *
5
+ * Copyright (c) 2009 - 2010 Happyworm Ltd
6
+ * Dual licensed under the MIT and GPL licenses.
7
+ * - http://www.opensource.org/licenses/mit-license.php
8
+ * - http://www.gnu.org/copyleft/gpl.html
9
+ *
10
+ * Author: Mark J Panaghiston
11
+ * Version: 2.0.0
12
+ * Date: 20th December 2010
13
+ */
14
+
15
+ (function(c,h){c.fn.jPlayer=function(a){var b=typeof a==="string",d=Array.prototype.slice.call(arguments,1),f=this;a=!b&&d.length?c.extend.apply(null,[true,a].concat(d)):a;if(b&&a.charAt(0)==="_")return f;b?this.each(function(){var e=c.data(this,"jPlayer"),g=e&&c.isFunction(e[a])?e[a].apply(e,d):e;if(g!==e&&g!==h){f=g;return false}}):this.each(function(){var e=c.data(this,"jPlayer");if(e){e.option(a||{})._init();e.option(a||{})}else c.data(this,"jPlayer",new c.jPlayer(a,this))});return f};c.jPlayer=
16
+ function(a,b){if(arguments.length){this.element=c(b);this.options=c.extend(true,{},this.options,a);var d=this;this.element.bind("remove.jPlayer",function(){d.destroy()});this._init()}};c.jPlayer.event={ready:"jPlayer_ready",resize:"jPlayer_resize",error:"jPlayer_error",warning:"jPlayer_warning",loadstart:"jPlayer_loadstart",progress:"jPlayer_progress",suspend:"jPlayer_suspend",abort:"jPlayer_abort",emptied:"jPlayer_emptied",stalled:"jPlayer_stalled",play:"jPlayer_play",pause:"jPlayer_pause",loadedmetadata:"jPlayer_loadedmetadata",
17
+ loadeddata:"jPlayer_loadeddata",waiting:"jPlayer_waiting",playing:"jPlayer_playing",canplay:"jPlayer_canplay",canplaythrough:"jPlayer_canplaythrough",seeking:"jPlayer_seeking",seeked:"jPlayer_seeked",timeupdate:"jPlayer_timeupdate",ended:"jPlayer_ended",ratechange:"jPlayer_ratechange",durationchange:"jPlayer_durationchange",volumechange:"jPlayer_volumechange"};c.jPlayer.htmlEvent=["loadstart","abort","emptied","stalled","loadedmetadata","loadeddata","canplaythrough","ratechange"];c.jPlayer.pause=
18
+ function(){c.each(c.jPlayer.prototype.instances,function(a,b){b.data("jPlayer").status.srcSet&&b.jPlayer("pause")})};c.jPlayer.timeFormat={showHour:false,showMin:true,showSec:true,padHour:false,padMin:true,padSec:true,sepHour:":",sepMin:":",sepSec:""};c.jPlayer.convertTime=function(a){a=new Date(a*1E3);var b=a.getUTCHours(),d=a.getUTCMinutes();a=a.getUTCSeconds();b=c.jPlayer.timeFormat.padHour&&b<10?"0"+b:b;d=c.jPlayer.timeFormat.padMin&&d<10?"0"+d:d;a=c.jPlayer.timeFormat.padSec&&a<10?"0"+a:a;return(c.jPlayer.timeFormat.showHour?
19
+ b+c.jPlayer.timeFormat.sepHour:"")+(c.jPlayer.timeFormat.showMin?d+c.jPlayer.timeFormat.sepMin:"")+(c.jPlayer.timeFormat.showSec?a+c.jPlayer.timeFormat.sepSec:"")};c.jPlayer.uaMatch=function(a){a=a.toLowerCase();var b=/(opera)(?:.*version)?[ \/]([\w.]+)/,d=/(msie) ([\w.]+)/,f=/(mozilla)(?:.*? rv:([\w.]+))?/;a=/(webkit)[ \/]([\w.]+)/.exec(a)||b.exec(a)||d.exec(a)||a.indexOf("compatible")<0&&f.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}};c.jPlayer.browser={};var m=c.jPlayer.uaMatch(navigator.userAgent);
20
+ if(m.browser){c.jPlayer.browser[m.browser]=true;c.jPlayer.browser.version=m.version}c.jPlayer.prototype={count:0,version:{script:"2.0.0",needFlash:"2.0.0",flash:"unknown"},options:{swfPath:"js",solution:"html, flash",supplied:"mp3",preload:"metadata",volume:0.8,muted:false,backgroundColor:"#000000",cssSelectorAncestor:"#jp_interface_1",cssSelector:{videoPlay:".jp-video-play",play:".jp-play",pause:".jp-pause",stop:".jp-stop",seekBar:".jp-seek-bar",playBar:".jp-play-bar",mute:".jp-mute",unmute:".jp-unmute",
21
+ volumeBar:".jp-volume-bar",volumeBarValue:".jp-volume-bar-value",currentTime:".jp-current-time",duration:".jp-duration"},idPrefix:"jp",errorAlerts:false,warningAlerts:false},instances:{},status:{src:"",media:{},paused:true,format:{},formatType:"",waitForPlay:true,waitForLoad:true,srcSet:false,video:false,seekPercent:0,currentPercentRelative:0,currentPercentAbsolute:0,currentTime:0,duration:0},_status:{volume:h,muted:false,width:0,height:0},internal:{ready:false,instance:h,htmlDlyCmdId:h},solution:{html:true,
22
+ flash:true},format:{mp3:{codec:'audio/mpeg; codecs="mp3"',flashCanPlay:true,media:"audio"},m4a:{codec:'audio/mp4; codecs="mp4a.40.2"',flashCanPlay:true,media:"audio"},oga:{codec:'audio/ogg; codecs="vorbis"',flashCanPlay:false,media:"audio"},wav:{codec:'audio/wav; codecs="1"',flashCanPlay:false,media:"audio"},webma:{codec:'audio/webm; codecs="vorbis"',flashCanPlay:false,media:"audio"},m4v:{codec:'video/mp4; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:true,media:"video"},ogv:{codec:'video/ogg; codecs="theora, vorbis"',
23
+ flashCanPlay:false,media:"video"},webmv:{codec:'video/webm; codecs="vorbis, vp8"',flashCanPlay:false,media:"video"}},_init:function(){var a=this;this.element.empty();this.status=c.extend({},this.status,this._status);this.internal=c.extend({},this.internal);this.formats=[];this.solutions=[];this.require={};this.htmlElement={};this.html={};this.html.audio={};this.html.video={};this.flash={};this.css={};this.css.cs={};this.css.jq={};this.status.volume=this._limitValue(this.options.volume,0,1);this.status.muted=
24
+ this.options.muted;this.status.width=this.element.css("width");this.status.height=this.element.css("height");this.element.css({"background-color":this.options.backgroundColor});c.each(this.options.supplied.toLowerCase().split(","),function(e,g){var i=g.replace(/^\s+|\s+$/g,"");if(a.format[i]){var j=false;c.each(a.formats,function(n,k){if(i===k){j=true;return false}});j||a.formats.push(i)}});c.each(this.options.solution.toLowerCase().split(","),function(e,g){var i=g.replace(/^\s+|\s+$/g,"");if(a.solution[i]){var j=
25
+ false;c.each(a.solutions,function(n,k){if(i===k){j=true;return false}});j||a.solutions.push(i)}});this.internal.instance="jp_"+this.count;this.instances[this.internal.instance]=this.element;this.element.attr("id")===""&&this.element.attr("id",this.options.idPrefix+"_jplayer_"+this.count);this.internal.self=c.extend({},{id:this.element.attr("id"),jq:this.element});this.internal.audio=c.extend({},{id:this.options.idPrefix+"_audio_"+this.count,jq:h});this.internal.video=c.extend({},{id:this.options.idPrefix+
26
+ "_video_"+this.count,jq:h});this.internal.flash=c.extend({},{id:this.options.idPrefix+"_flash_"+this.count,jq:h,swf:this.options.swfPath+(this.options.swfPath!==""&&this.options.swfPath.slice(-1)!=="/"?"/":"")+"Jplayer.swf"});this.internal.poster=c.extend({},{id:this.options.idPrefix+"_poster_"+this.count,jq:h});c.each(c.jPlayer.event,function(e,g){if(a.options[e]!==h){a.element.bind(g+".jPlayer",a.options[e]);a.options[e]=h}});this.htmlElement.poster=document.createElement("img");this.htmlElement.poster.id=
27
+ this.internal.poster.id;this.htmlElement.poster.onload=function(){if(!a.status.video||a.status.waitForPlay)a.internal.poster.jq.show()};this.element.append(this.htmlElement.poster);this.internal.poster.jq=c("#"+this.internal.poster.id);this.internal.poster.jq.css({width:this.status.width,height:this.status.height});this.internal.poster.jq.hide();this.require.audio=false;this.require.video=false;c.each(this.formats,function(e,g){a.require[a.format[g].media]=true});this.html.audio.available=false;if(this.require.audio){this.htmlElement.audio=
28
+ document.createElement("audio");this.htmlElement.audio.id=this.internal.audio.id;this.html.audio.available=!!this.htmlElement.audio.canPlayType}this.html.video.available=false;if(this.require.video){this.htmlElement.video=document.createElement("video");this.htmlElement.video.id=this.internal.video.id;this.html.video.available=!!this.htmlElement.video.canPlayType}this.flash.available=this._checkForFlash(10);this.html.canPlay={};this.flash.canPlay={};c.each(this.formats,function(e,g){a.html.canPlay[g]=
29
+ a.html[a.format[g].media].available&&""!==a.htmlElement[a.format[g].media].canPlayType(a.format[g].codec);a.flash.canPlay[g]=a.format[g].flashCanPlay&&a.flash.available});this.html.desired=false;this.flash.desired=false;c.each(this.solutions,function(e,g){if(e===0)a[g].desired=true;else{var i=false,j=false;c.each(a.formats,function(n,k){if(a[a.solutions[0]].canPlay[k])if(a.format[k].media==="video")j=true;else i=true});a[g].desired=a.require.audio&&!i||a.require.video&&!j}});this.html.support={};
30
+ this.flash.support={};c.each(this.formats,function(e,g){a.html.support[g]=a.html.canPlay[g]&&a.html.desired;a.flash.support[g]=a.flash.canPlay[g]&&a.flash.desired});this.html.used=false;this.flash.used=false;c.each(this.solutions,function(e,g){c.each(a.formats,function(i,j){if(a[g].support[j]){a[g].used=true;return false}})});this.html.used||this.flash.used||this._error({type:c.jPlayer.error.NO_SOLUTION,context:"{solution:'"+this.options.solution+"', supplied:'"+this.options.supplied+"'}",message:c.jPlayer.errorMsg.NO_SOLUTION,
31
+ hint:c.jPlayer.errorHint.NO_SOLUTION});this.html.active=false;this.html.audio.gate=false;this.html.video.gate=false;this.flash.active=false;this.flash.gate=false;if(this.flash.used){var b="id="+escape(this.internal.self.id)+"&vol="+this.status.volume+"&muted="+this.status.muted;if(c.browser.msie&&Number(c.browser.version)<=8){var d='<object id="'+this.internal.flash.id+'"';d+=' classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"';d+=' codebase="'+document.URL.substring(0,document.URL.indexOf(":"))+
32
+ '://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"';d+=' type="application/x-shockwave-flash"';d+=' width="0" height="0">';d+="</object>";var f=[];f[0]='<param name="movie" value="'+this.internal.flash.swf+'" />';f[1]='<param name="quality" value="high" />';f[2]='<param name="FlashVars" value="'+b+'" />';f[3]='<param name="allowScriptAccess" value="always" />';f[4]='<param name="bgcolor" value="'+this.options.backgroundColor+'" />';b=document.createElement(d);for(d=0;d<f.length;d++)b.appendChild(document.createElement(f[d]));
33
+ this.element.append(b)}else{f='<embed name="'+this.internal.flash.id+'" id="'+this.internal.flash.id+'" src="'+this.internal.flash.swf+'"';f+=' width="0" height="0" bgcolor="'+this.options.backgroundColor+'"';f+=' quality="high" FlashVars="'+b+'"';f+=' allowScriptAccess="always"';f+=' type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />';this.element.append(f)}this.internal.flash.jq=c("#"+this.internal.flash.id);this.internal.flash.jq.css({width:"0px",
34
+ height:"0px"})}if(this.html.used){if(this.html.audio.available){this._addHtmlEventListeners(this.htmlElement.audio,this.html.audio);this.element.append(this.htmlElement.audio);this.internal.audio.jq=c("#"+this.internal.audio.id)}if(this.html.video.available){this._addHtmlEventListeners(this.htmlElement.video,this.html.video);this.element.append(this.htmlElement.video);this.internal.video.jq=c("#"+this.internal.video.id);this.internal.video.jq.css({width:"0px",height:"0px"})}}this.html.used&&!this.flash.used&&
35
+ window.setTimeout(function(){a.internal.ready=true;a.version.flash="n/a";a._trigger(c.jPlayer.event.ready)},100);c.each(this.options.cssSelector,function(e,g){a._cssSelector(e,g)});this._updateInterface();this._updateButtons(false);this._updateVolume(this.status.volume);this._updateMute(this.status.muted);this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide();c.jPlayer.prototype.count++},destroy:function(){this._resetStatus();this._updateInterface();this._seeked();this.css.jq.currentTime.length&&
36
+ this.css.jq.currentTime.text("");this.css.jq.duration.length&&this.css.jq.duration.text("");this.status.srcSet&&this.pause();c.each(this.css.jq,function(a,b){b.unbind(".jPlayer")});this.element.removeData("jPlayer");this.element.unbind(".jPlayer");this.element.empty();this.instances[this.internal.instance]=h},enable:function(){},disable:function(){},_addHtmlEventListeners:function(a,b){var d=this;a.preload=this.options.preload;a.muted=this.options.muted;a.addEventListener("progress",function(){if(b.gate&&
37
+ !d.status.waitForLoad){d._getHtmlStatus(a);d._updateInterface();d._trigger(c.jPlayer.event.progress)}},false);a.addEventListener("timeupdate",function(){if(b.gate&&!d.status.waitForLoad){d._getHtmlStatus(a);d._updateInterface();d._trigger(c.jPlayer.event.timeupdate)}},false);a.addEventListener("durationchange",function(){if(b.gate&&!d.status.waitForLoad){d.status.duration=this.duration;d._getHtmlStatus(a);d._updateInterface();d._trigger(c.jPlayer.event.durationchange)}},false);a.addEventListener("play",
38
+ function(){if(b.gate&&!d.status.waitForLoad){d._updateButtons(true);d._trigger(c.jPlayer.event.play)}},false);a.addEventListener("playing",function(){if(b.gate&&!d.status.waitForLoad){d._updateButtons(true);d._seeked();d._trigger(c.jPlayer.event.playing)}},false);a.addEventListener("pause",function(){if(b.gate&&!d.status.waitForLoad){d._updateButtons(false);d._trigger(c.jPlayer.event.pause)}},false);a.addEventListener("waiting",function(){if(b.gate&&!d.status.waitForLoad){d._seeking();d._trigger(c.jPlayer.event.waiting)}},
39
+ false);a.addEventListener("canplay",function(){if(b.gate&&!d.status.waitForLoad){a.volume=d._volumeFix(d.status.volume);d._trigger(c.jPlayer.event.canplay)}},false);a.addEventListener("seeking",function(){if(b.gate&&!d.status.waitForLoad){d._seeking();d._trigger(c.jPlayer.event.seeking)}},false);a.addEventListener("seeked",function(){if(b.gate&&!d.status.waitForLoad){d._seeked();d._trigger(c.jPlayer.event.seeked)}},false);a.addEventListener("suspend",function(){if(b.gate&&!d.status.waitForLoad){d._seeked();
40
+ d._trigger(c.jPlayer.event.suspend)}},false);a.addEventListener("ended",function(){if(b.gate&&!d.status.waitForLoad){if(!c.jPlayer.browser.webkit)d.htmlElement.media.currentTime=0;d.htmlElement.media.pause();d._updateButtons(false);d._getHtmlStatus(a,true);d._updateInterface();d._trigger(c.jPlayer.event.ended)}},false);a.addEventListener("error",function(){if(b.gate&&!d.status.waitForLoad){d._updateButtons(false);d._seeked();if(d.status.srcSet){d.status.waitForLoad=true;d.status.waitForPlay=true;
41
+ d.status.video&&d.internal.video.jq.css({width:"0px",height:"0px"});d._validString(d.status.media.poster)&&d.internal.poster.jq.show();d.css.jq.videoPlay.length&&d.css.jq.videoPlay.show();d._error({type:c.jPlayer.error.URL,context:d.status.src,message:c.jPlayer.errorMsg.URL,hint:c.jPlayer.errorHint.URL})}}},false);c.each(c.jPlayer.htmlEvent,function(f,e){a.addEventListener(this,function(){b.gate&&!d.status.waitForLoad&&d._trigger(c.jPlayer.event[e])},false)})},_getHtmlStatus:function(a,b){var d=0,
42
+ f=0,e=0,g=0;d=a.currentTime;f=this.status.duration>0?100*d/this.status.duration:0;if(typeof a.seekable==="object"&&a.seekable.length>0){e=this.status.duration>0?100*a.seekable.end(a.seekable.length-1)/this.status.duration:100;g=100*a.currentTime/a.seekable.end(a.seekable.length-1)}else{e=100;g=f}if(b)f=g=d=0;this.status.seekPercent=e;this.status.currentPercentRelative=g;this.status.currentPercentAbsolute=f;this.status.currentTime=d},_resetStatus:function(){this.status=c.extend({},this.status,c.jPlayer.prototype.status)},
43
+ _trigger:function(a,b,d){a=c.Event(a);a.jPlayer={};a.jPlayer.version=c.extend({},this.version);a.jPlayer.status=c.extend(true,{},this.status);a.jPlayer.html=c.extend(true,{},this.html);a.jPlayer.flash=c.extend(true,{},this.flash);if(b)a.jPlayer.error=c.extend({},b);if(d)a.jPlayer.warning=c.extend({},d);this.element.trigger(a)},jPlayerFlashEvent:function(a,b){if(a===c.jPlayer.event.ready&&!this.internal.ready){this.internal.ready=true;this.version.flash=b.version;this.version.needFlash!==this.version.flash&&
44
+ this._error({type:c.jPlayer.error.VERSION,context:this.version.flash,message:c.jPlayer.errorMsg.VERSION+this.version.flash,hint:c.jPlayer.errorHint.VERSION});this._trigger(a)}if(this.flash.gate)switch(a){case c.jPlayer.event.progress:this._getFlashStatus(b);this._updateInterface();this._trigger(a);break;case c.jPlayer.event.timeupdate:this._getFlashStatus(b);this._updateInterface();this._trigger(a);break;case c.jPlayer.event.play:this._seeked();this._updateButtons(true);this._trigger(a);break;case c.jPlayer.event.pause:this._updateButtons(false);
45
+ this._trigger(a);break;case c.jPlayer.event.ended:this._updateButtons(false);this._trigger(a);break;case c.jPlayer.event.error:this.status.waitForLoad=true;this.status.waitForPlay=true;this.status.video&&this.internal.flash.jq.css({width:"0px",height:"0px"});this._validString(this.status.media.poster)&&this.internal.poster.jq.show();this.css.jq.videoPlay.length&&this.css.jq.videoPlay.show();this.status.video?this._flash_setVideo(this.status.media):this._flash_setAudio(this.status.media);this._error({type:c.jPlayer.error.URL,
46
+ context:b.src,message:c.jPlayer.errorMsg.URL,hint:c.jPlayer.errorHint.URL});break;case c.jPlayer.event.seeking:this._seeking();this._trigger(a);break;case c.jPlayer.event.seeked:this._seeked();this._trigger(a);break;default:this._trigger(a)}return false},_getFlashStatus:function(a){this.status.seekPercent=a.seekPercent;this.status.currentPercentRelative=a.currentPercentRelative;this.status.currentPercentAbsolute=a.currentPercentAbsolute;this.status.currentTime=a.currentTime;this.status.duration=a.duration},
47
+ _updateButtons:function(a){this.status.paused=!a;if(this.css.jq.play.length&&this.css.jq.pause.length)if(a){this.css.jq.play.hide();this.css.jq.pause.show()}else{this.css.jq.play.show();this.css.jq.pause.hide()}},_updateInterface:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.width(this.status.seekPercent+"%");this.css.jq.playBar.length&&this.css.jq.playBar.width(this.status.currentPercentRelative+"%");this.css.jq.currentTime.length&&this.css.jq.currentTime.text(c.jPlayer.convertTime(this.status.currentTime));
48
+ this.css.jq.duration.length&&this.css.jq.duration.text(c.jPlayer.convertTime(this.status.duration))},_seeking:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.addClass("jp-seeking-bg")},_seeked:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.removeClass("jp-seeking-bg")},setMedia:function(a){var b=this;this._seeked();clearTimeout(this.internal.htmlDlyCmdId);var d=this.html.audio.gate,f=this.html.video.gate,e=false;c.each(this.formats,function(g,i){var j=b.format[i].media==="video";
49
+ c.each(b.solutions,function(n,k){if(b[k].support[i]&&b._validString(a[i])){var l=k==="html";if(j)if(l){b.html.audio.gate=false;b.html.video.gate=true;b.flash.gate=false}else{b.html.audio.gate=false;b.html.video.gate=false;b.flash.gate=true}else if(l){b.html.audio.gate=true;b.html.video.gate=false;b.flash.gate=false}else{b.html.audio.gate=false;b.html.video.gate=false;b.flash.gate=true}if(b.flash.active||b.html.active&&b.flash.gate||d===b.html.audio.gate&&f===b.html.video.gate)b.clearMedia();else if(d!==
50
+ b.html.audio.gate&&f!==b.html.video.gate){b._html_pause();b.status.video&&b.internal.video.jq.css({width:"0px",height:"0px"});b._resetStatus()}if(j){if(l){b._html_setVideo(a);b.html.active=true;b.flash.active=false}else{b._flash_setVideo(a);b.html.active=false;b.flash.active=true}b.css.jq.videoPlay.length&&b.css.jq.videoPlay.show();b.status.video=true}else{if(l){b._html_setAudio(a);b.html.active=true;b.flash.active=false}else{b._flash_setAudio(a);b.html.active=false;b.flash.active=true}b.css.jq.videoPlay.length&&
51
+ b.css.jq.videoPlay.hide();b.status.video=false}e=true;return false}});if(e)return false});if(e){if(this._validString(a.poster))if(this.htmlElement.poster.src!==a.poster)this.htmlElement.poster.src=a.poster;else this.internal.poster.jq.show();else this.internal.poster.jq.hide();this.status.srcSet=true;this.status.media=c.extend({},a);this._updateButtons(false);this._updateInterface()}else{this.status.srcSet&&!this.status.waitForPlay&&this.pause();this.html.audio.gate=false;this.html.video.gate=false;
52
+ this.flash.gate=false;this.html.active=false;this.flash.active=false;this._resetStatus();this._updateInterface();this._updateButtons(false);this.internal.poster.jq.hide();this.html.used&&this.require.video&&this.internal.video.jq.css({width:"0px",height:"0px"});this.flash.used&&this.internal.flash.jq.css({width:"0px",height:"0px"});this._error({type:c.jPlayer.error.NO_SUPPORT,context:"{supplied:'"+this.options.supplied+"'}",message:c.jPlayer.errorMsg.NO_SUPPORT,hint:c.jPlayer.errorHint.NO_SUPPORT})}},
53
+ clearMedia:function(){this._resetStatus();this._updateButtons(false);this.internal.poster.jq.hide();clearTimeout(this.internal.htmlDlyCmdId);if(this.html.active)this._html_clearMedia();else this.flash.active&&this._flash_clearMedia()},load:function(){if(this.status.srcSet)if(this.html.active)this._html_load();else this.flash.active&&this._flash_load();else this._urlNotSetError("load")},play:function(a){a=typeof a==="number"?a:NaN;if(this.status.srcSet)if(this.html.active)this._html_play(a);else this.flash.active&&
54
+ this._flash_play(a);else this._urlNotSetError("play")},videoPlay:function(){this.play()},pause:function(a){a=typeof a==="number"?a:NaN;if(this.status.srcSet)if(this.html.active)this._html_pause(a);else this.flash.active&&this._flash_pause(a);else this._urlNotSetError("pause")},pauseOthers:function(){var a=this;c.each(this.instances,function(b,d){a.element!==d&&d.data("jPlayer").status.srcSet&&d.jPlayer("pause")})},stop:function(){if(this.status.srcSet)if(this.html.active)this._html_pause(0);else this.flash.active&&
55
+ this._flash_pause(0);else this._urlNotSetError("stop")},playHead:function(a){a=this._limitValue(a,0,100);if(this.status.srcSet)if(this.html.active)this._html_playHead(a);else this.flash.active&&this._flash_playHead(a);else this._urlNotSetError("playHead")},mute:function(){this.status.muted=true;this.html.used&&this._html_mute(true);this.flash.used&&this._flash_mute(true);this._updateMute(true);this._updateVolume(0);this._trigger(c.jPlayer.event.volumechange)},unmute:function(){this.status.muted=false;
56
+ this.html.used&&this._html_mute(false);this.flash.used&&this._flash_mute(false);this._updateMute(false);this._updateVolume(this.status.volume);this._trigger(c.jPlayer.event.volumechange)},_updateMute:function(a){if(this.css.jq.mute.length&&this.css.jq.unmute.length)if(a){this.css.jq.mute.hide();this.css.jq.unmute.show()}else{this.css.jq.mute.show();this.css.jq.unmute.hide()}},volume:function(a){a=this._limitValue(a,0,1);this.status.volume=a;this.html.used&&this._html_volume(a);this.flash.used&&this._flash_volume(a);
57
+ this.status.muted||this._updateVolume(a);this._trigger(c.jPlayer.event.volumechange)},volumeBar:function(a){if(!this.status.muted&&this.css.jq.volumeBar){var b=this.css.jq.volumeBar.offset();a=a.pageX-b.left;b=this.css.jq.volumeBar.width();this.volume(a/b)}},volumeBarValue:function(a){this.volumeBar(a)},_updateVolume:function(a){this.css.jq.volumeBarValue.length&&this.css.jq.volumeBarValue.width(a*100+"%")},_volumeFix:function(a){var b=0.0010*Math.random();return a+(a<0.5?b:-b)},_cssSelectorAncestor:function(a,
58
+ b){this.options.cssSelectorAncestor=a;b&&c.each(this.options.cssSelector,function(d,f){self._cssSelector(d,f)})},_cssSelector:function(a,b){var d=this;if(typeof b==="string")if(c.jPlayer.prototype.options.cssSelector[a]){this.css.jq[a]&&this.css.jq[a].length&&this.css.jq[a].unbind(".jPlayer");this.options.cssSelector[a]=b;this.css.cs[a]=this.options.cssSelectorAncestor+" "+b;this.css.jq[a]=b?c(this.css.cs[a]):[];this.css.jq[a].length&&this.css.jq[a].bind("click.jPlayer",function(f){d[a](f);c(this).blur();
59
+ return false});b&&this.css.jq[a].length!==1&&this._warning({type:c.jPlayer.warning.CSS_SELECTOR_COUNT,context:this.css.cs[a],message:c.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.css.jq[a].length+" found for "+a+" method.",hint:c.jPlayer.warningHint.CSS_SELECTOR_COUNT})}else this._warning({type:c.jPlayer.warning.CSS_SELECTOR_METHOD,context:a,message:c.jPlayer.warningMsg.CSS_SELECTOR_METHOD,hint:c.jPlayer.warningHint.CSS_SELECTOR_METHOD});else this._warning({type:c.jPlayer.warning.CSS_SELECTOR_STRING,
60
+ context:b,message:c.jPlayer.warningMsg.CSS_SELECTOR_STRING,hint:c.jPlayer.warningHint.CSS_SELECTOR_STRING})},seekBar:function(a){if(this.css.jq.seekBar){var b=this.css.jq.seekBar.offset();a=a.pageX-b.left;b=this.css.jq.seekBar.width();this.playHead(100*a/b)}},playBar:function(a){this.seekBar(a)},currentTime:function(){},duration:function(){},option:function(a,b){var d=a;if(arguments.length===0)return c.extend(true,{},this.options);if(typeof a==="string"){var f=a.split(".");if(b===h){for(var e=c.extend(true,
61
+ {},this.options),g=0;g<f.length;g++)if(e[f[g]]!==h)e=e[f[g]];else{this._warning({type:c.jPlayer.warning.OPTION_KEY,context:a,message:c.jPlayer.warningMsg.OPTION_KEY,hint:c.jPlayer.warningHint.OPTION_KEY});return h}return e}e=d={};for(g=0;g<f.length;g++)if(g<f.length-1){e[f[g]]={};e=e[f[g]]}else e[f[g]]=b}this._setOptions(d);return this},_setOptions:function(a){var b=this;c.each(a,function(d,f){b._setOption(d,f)});return this},_setOption:function(a,b){var d=this;switch(a){case "cssSelectorAncestor":this.options[a]=
62
+ b;c.each(d.options.cssSelector,function(f,e){d._cssSelector(f,e)});break;case "cssSelector":c.each(b,function(f,e){d._cssSelector(f,e)})}return this},resize:function(a){this.html.active&&this._resizeHtml(a);this.flash.active&&this._resizeFlash(a);this._trigger(c.jPlayer.event.resize)},_resizePoster:function(){},_resizeHtml:function(){},_resizeFlash:function(a){this.internal.flash.jq.css({width:a.width,height:a.height})},_html_initMedia:function(){this.status.srcSet&&!this.status.waitForPlay&&this.htmlElement.media.pause();
63
+ this.options.preload!=="none"&&this._html_load();this._trigger(c.jPlayer.event.timeupdate)},_html_setAudio:function(a){var b=this;c.each(this.formats,function(d,f){if(b.html.support[f]&&a[f]){b.status.src=a[f];b.status.format[f]=true;b.status.formatType=f;return false}});this.htmlElement.media=this.htmlElement.audio;this._html_initMedia()},_html_setVideo:function(a){var b=this;c.each(this.formats,function(d,f){if(b.html.support[f]&&a[f]){b.status.src=a[f];b.status.format[f]=true;b.status.formatType=
64
+ f;return false}});this.htmlElement.media=this.htmlElement.video;this._html_initMedia()},_html_clearMedia:function(){if(this.htmlElement.media){this.htmlElement.media.id===this.internal.video.id&&this.internal.video.jq.css({width:"0px",height:"0px"});this.htmlElement.media.pause();this.htmlElement.media.src="";c.browser.msie&&Number(c.browser.version)>=9||this.htmlElement.media.load()}},_html_load:function(){if(this.status.waitForLoad){this.status.waitForLoad=false;this.htmlElement.media.src=this.status.src;
65
+ try{this.htmlElement.media.load()}catch(a){}}clearTimeout(this.internal.htmlDlyCmdId)},_html_play:function(a){var b=this;this._html_load();this.htmlElement.media.play();if(!isNaN(a))try{this.htmlElement.media.currentTime=a}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.play(a)},100);return}this._html_checkWaitForPlay()},_html_pause:function(a){var b=this;a>0?this._html_load():clearTimeout(this.internal.htmlDlyCmdId);this.htmlElement.media.pause();if(!isNaN(a))try{this.htmlElement.media.currentTime=
66
+ a}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.pause(a)},100);return}a>0&&this._html_checkWaitForPlay()},_html_playHead:function(a){var b=this;this._html_load();try{if(typeof this.htmlElement.media.seekable==="object"&&this.htmlElement.media.seekable.length>0)this.htmlElement.media.currentTime=a*this.htmlElement.media.seekable.end(this.htmlElement.media.seekable.length-1)/100;else if(this.htmlElement.media.duration>0&&!isNaN(this.htmlElement.media.duration))this.htmlElement.media.currentTime=
67
+ a*this.htmlElement.media.duration/100;else throw"e";}catch(d){this.internal.htmlDlyCmdId=setTimeout(function(){b.playHead(a)},100);return}this.status.waitForLoad||this._html_checkWaitForPlay()},_html_checkWaitForPlay:function(){if(this.status.waitForPlay){this.status.waitForPlay=false;this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide();if(this.status.video){this.internal.poster.jq.hide();this.internal.video.jq.css({width:this.status.width,height:this.status.height})}}},_html_volume:function(a){if(this.html.audio.available)this.htmlElement.audio.volume=
68
+ a;if(this.html.video.available)this.htmlElement.video.volume=a},_html_mute:function(a){if(this.html.audio.available)this.htmlElement.audio.muted=a;if(this.html.video.available)this.htmlElement.video.muted=a},_flash_setAudio:function(a){var b=this;try{c.each(this.formats,function(f,e){if(b.flash.support[e]&&a[e]){switch(e){case "m4a":b._getMovie().fl_setAudio_m4a(a[e]);break;case "mp3":b._getMovie().fl_setAudio_mp3(a[e])}b.status.src=a[e];b.status.format[e]=true;b.status.formatType=e;return false}});
69
+ if(this.options.preload==="auto"){this._flash_load();this.status.waitForLoad=false}}catch(d){this._flashError(d)}},_flash_setVideo:function(a){var b=this;try{c.each(this.formats,function(f,e){if(b.flash.support[e]&&a[e]){switch(e){case "m4v":b._getMovie().fl_setVideo_m4v(a[e])}b.status.src=a[e];b.status.format[e]=true;b.status.formatType=e;return false}});if(this.options.preload==="auto"){this._flash_load();this.status.waitForLoad=false}}catch(d){this._flashError(d)}},_flash_clearMedia:function(){this.internal.flash.jq.css({width:"0px",
70
+ height:"0px"});try{this._getMovie().fl_clearMedia()}catch(a){this._flashError(a)}},_flash_load:function(){try{this._getMovie().fl_load()}catch(a){this._flashError(a)}this.status.waitForLoad=false},_flash_play:function(a){try{this._getMovie().fl_play(a)}catch(b){this._flashError(b)}this.status.waitForLoad=false;this._flash_checkWaitForPlay()},_flash_pause:function(a){try{this._getMovie().fl_pause(a)}catch(b){this._flashError(b)}if(a>0){this.status.waitForLoad=false;this._flash_checkWaitForPlay()}},
71
+ _flash_playHead:function(a){try{this._getMovie().fl_play_head(a)}catch(b){this._flashError(b)}this.status.waitForLoad||this._flash_checkWaitForPlay()},_flash_checkWaitForPlay:function(){if(this.status.waitForPlay){this.status.waitForPlay=false;this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide();if(this.status.video){this.internal.poster.jq.hide();this.internal.flash.jq.css({width:this.status.width,height:this.status.height})}}},_flash_volume:function(a){try{this._getMovie().fl_volume(a)}catch(b){this._flashError(b)}},
72
+ _flash_mute:function(a){try{this._getMovie().fl_mute(a)}catch(b){this._flashError(b)}},_getMovie:function(){return document[this.internal.flash.id]},_checkForFlash:function(a){var b=false,d;if(window.ActiveXObject)try{new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+a);b=true}catch(f){}else if(navigator.plugins&&navigator.mimeTypes.length>0)if(d=navigator.plugins["Shockwave Flash"])if(navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/,"$1")>=a)b=true;return c.browser.msie&&
73
+ Number(c.browser.version)>=9?false:b},_validString:function(a){return a&&typeof a==="string"},_limitValue:function(a,b,d){return a<b?b:a>d?d:a},_urlNotSetError:function(a){this._error({type:c.jPlayer.error.URL_NOT_SET,context:a,message:c.jPlayer.errorMsg.URL_NOT_SET,hint:c.jPlayer.errorHint.URL_NOT_SET})},_flashError:function(a){this._error({type:c.jPlayer.error.FLASH,context:this.internal.flash.swf,message:c.jPlayer.errorMsg.FLASH+a.message,hint:c.jPlayer.errorHint.FLASH})},_error:function(a){this._trigger(c.jPlayer.event.error,
74
+ a);if(this.options.errorAlerts)this._alert("Error!"+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+a.context)},_warning:function(a){this._trigger(c.jPlayer.event.warning,h,a);if(this.options.errorAlerts)this._alert("Warning!"+(a.message?"\n\n"+a.message:"")+(a.hint?"\n\n"+a.hint:"")+"\n\nContext: "+a.context)},_alert:function(a){alert("jPlayer "+this.version.script+" : id='"+this.internal.self.id+"' : "+a)}};c.jPlayer.error={FLASH:"e_flash",NO_SOLUTION:"e_no_solution",NO_SUPPORT:"e_no_support",
75
+ URL:"e_url",URL_NOT_SET:"e_url_not_set",VERSION:"e_version"};c.jPlayer.errorMsg={FLASH:"jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ",NO_SOLUTION:"No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.",NO_SUPPORT:"It is not possible to play any media format provided in setMedia() on this browser using your current options.",URL:"Media URL could not be loaded.",URL_NOT_SET:"Attempt to issue media playback commands, while no media url is set.",
76
+ VERSION:"jPlayer "+c.jPlayer.prototype.version.script+" needs Jplayer.swf version "+c.jPlayer.prototype.version.needFlash+" but found "};c.jPlayer.errorHint={FLASH:"Check your swfPath option and that Jplayer.swf is there.",NO_SOLUTION:"Review the jPlayer options: support and supplied.",NO_SUPPORT:"Video or audio formats defined in the supplied option are missing.",URL:"Check media URL is valid.",URL_NOT_SET:"Use setMedia() to set the media URL.",VERSION:"Update jPlayer files."};c.jPlayer.warning=
77
+ {CSS_SELECTOR_COUNT:"e_css_selector_count",CSS_SELECTOR_METHOD:"e_css_selector_method",CSS_SELECTOR_STRING:"e_css_selector_string",OPTION_KEY:"e_option_key"};c.jPlayer.warningMsg={CSS_SELECTOR_COUNT:"The number of methodCssSelectors found did not equal one: ",CSS_SELECTOR_METHOD:"The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.",CSS_SELECTOR_STRING:"The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.",OPTION_KEY:"The option requested in jPlayer('option') is undefined."};
78
+ c.jPlayer.warningHint={CSS_SELECTOR_COUNT:"Check your css selector and the ancestor.",CSS_SELECTOR_METHOD:"Check your method name.",CSS_SELECTOR_STRING:"Check your css selector is a string.",OPTION_KEY:"Check your option name."}})(jQuery);
@@ -0,0 +1,448 @@
1
+ /*
2
+ * Skin for jPlayer Plugin (jQuery JavaScript Library)
3
+ * http://www.happyworm.com/jquery/jplayer
4
+ *
5
+ * Skin Name: Blue Monday
6
+ *
7
+ * Copyright (c) 2010 Happyworm Ltd
8
+ * Dual licensed under the MIT and GPL licenses.
9
+ * - http://www.opensource.org/licenses/mit-license.php
10
+ * - http://www.gnu.org/copyleft/gpl.html
11
+ *
12
+ * Author: Silvia Benvenuti
13
+ * Skin Version: 3.0 (jPlayer 2.0.0)
14
+ * Date: 20th December 2010
15
+ */
16
+
17
+ div.jp-audio,
18
+ div.jp-video {
19
+
20
+ /* Edit the font-size to counteract inherited font sizing.
21
+ * Eg. 1.25em = 1 / 0.8em
22
+ */
23
+
24
+ font-size:1.25em;
25
+
26
+ font-family:Verdana, Arial, sans-serif;
27
+ line-height:1.6;
28
+ color: #666;
29
+ }
30
+ div.jp-audio {
31
+ width:330px;
32
+ }
33
+ div.jp-video-270p {
34
+ width:480px;
35
+ }
36
+ div.jp-video-360p {
37
+ width:640px;
38
+ }
39
+ div.jp-interface {
40
+ position: relative;
41
+ background-color:#eee;
42
+ /* width:418px; */
43
+ width:100%;
44
+ border:1px solid #009be3;
45
+ }
46
+ div.jp-audio div.jp-type-single div.jp-interface {
47
+ height:40px;
48
+ border-bottom:none;
49
+ }
50
+ div.jp-audio div.jp-type-playlist div.jp-interface {
51
+ height:80px;
52
+ }
53
+ div.jp-video div.jp-type-single div.jp-interface {
54
+ height:60px;
55
+ border-bottom:none;
56
+ }
57
+ div.jp-video div.jp-type-playlist div.jp-interface {
58
+ height:60px;
59
+ }
60
+ div.jp-interface ul.jp-controls {
61
+ list-style-type:none;
62
+ padding:0;
63
+ margin: 0;
64
+ }
65
+ div.jp-interface ul.jp-controls li {
66
+ /* position: absolute; */
67
+ display:inline;
68
+ }
69
+ div.jp-interface ul.jp-controls a {
70
+ position: absolute;
71
+ overflow:hidden;
72
+ text-indent:-9999px;
73
+ }
74
+ a.jp-play,
75
+ a.jp-pause {
76
+ width:40px;
77
+ height:40px;
78
+ z-index:1;
79
+ }
80
+ div.jp-audio div.jp-type-single a.jp-play,
81
+ div.jp-audio div.jp-type-single a.jp-pause {
82
+ top:0px;
83
+ left:10px;
84
+ }
85
+ div.jp-audio div.jp-type-playlist a.jp-play,
86
+ div.jp-audio div.jp-type-playlist a.jp-pause {
87
+ top:0px;
88
+ left:10px;
89
+ }
90
+ div.jp-video a.jp-play,
91
+ div.jp-video a.jp-pause {
92
+ top:15px;
93
+ }
94
+ div.jp-video-270p div.jp-type-single a.jp-play,
95
+ div.jp-video-270p div.jp-type-single a.jp-pause {
96
+ left:195px;
97
+ }
98
+ div.jp-video-270p div.jp-type-playlist a.jp-play,
99
+ div.jp-video-270p div.jp-type-playlist a.jp-pause {
100
+ left:220px;
101
+ }
102
+ div.jp-video-360p div.jp-type-single a.jp-play,
103
+ div.jp-video-360p div.jp-type-single a.jp-pause {
104
+ left:275px;
105
+ }
106
+ div.jp-video-360p div.jp-type-playlist a.jp-play,
107
+ div.jp-video-360p div.jp-type-playlist a.jp-pause {
108
+ left:300px;
109
+ }
110
+ a.jp-play {
111
+ background: url("jplayer.blue.monday.jpg") 0 0 no-repeat;
112
+ }
113
+ a.jp-play:hover {
114
+ background: url("jplayer.blue.monday.jpg") -41px 0 no-repeat;
115
+ }
116
+ a.jp-pause {
117
+ background: url("jplayer.blue.monday.jpg") 0 -42px no-repeat;
118
+ display: none;
119
+ }
120
+ a.jp-pause:hover {
121
+ background: url("jplayer.blue.monday.jpg") -41px -42px no-repeat;
122
+ }
123
+ div.jp-audio div.jp-type-single a.jp-stop {
124
+ top:6px;
125
+ left:60px;
126
+ }
127
+ div.jp-audio div.jp-type-playlist a.jp-stop {
128
+ top:6px;
129
+ left:96px;
130
+ }
131
+ div.jp-video a.jp-stop {
132
+ top:21px;
133
+ }
134
+ div.jp-video-270p div.jp-type-single a.jp-stop {
135
+ left:245px;
136
+ }
137
+ div.jp-video-270p div.jp-type-playlist a.jp-stop {
138
+ left:298px;
139
+ }
140
+ div.jp-video-360p div.jp-type-single a.jp-stop {
141
+ left:325px;
142
+ }
143
+ div.jp-video-360p div.jp-type-playlist a.jp-stop {
144
+ left:378px;
145
+ }
146
+ a.jp-stop {
147
+ background: url("jplayer.blue.monday.jpg") 0 -83px no-repeat;
148
+ width:28px;
149
+ height:28px;
150
+ z-index:1;
151
+ }
152
+ a.jp-stop:hover {
153
+ background: url("jplayer.blue.monday.jpg") -29px -83px no-repeat;
154
+ }
155
+ div.jp-audio div.jp-type-playlist a.jp-previous {
156
+ left:20px;
157
+ top:26px;
158
+ }
159
+ div.jp-video div.jp-type-playlist a.jp-previous {
160
+ top:21px;
161
+ }
162
+ div.jp-video-270p div.jp-type-playlist a.jp-previous {
163
+ left:192px;
164
+ }
165
+ div.jp-video-360p div.jp-type-playlist a.jp-previous {
166
+ left:272px;
167
+ }
168
+ a.jp-previous {
169
+ background: url("jplayer.blue.monday.jpg") 0 -112px no-repeat;
170
+ width:28px;
171
+ height:28px;
172
+ }
173
+ a.jp-previous:hover {
174
+ background: url("jplayer.blue.monday.jpg") -29px -112px no-repeat;
175
+ }
176
+ div.jp-audio div.jp-type-playlist a.jp-next {
177
+ left:88px;
178
+ top:26px;
179
+ }
180
+ div.jp-video div.jp-type-playlist a.jp-next {
181
+ top:21px;
182
+ }
183
+ div.jp-video-270p div.jp-type-playlist a.jp-next {
184
+ left:260px;
185
+ }
186
+ div.jp-video-360p div.jp-type-playlist a.jp-next {
187
+ left:340px;
188
+ }
189
+ a.jp-next {
190
+ background: url("jplayer.blue.monday.jpg") 0 -141px no-repeat;
191
+ width:28px;
192
+ height:28px;
193
+ }
194
+ a.jp-next:hover {
195
+ background: url("jplayer.blue.monday.jpg") -29px -141px no-repeat;
196
+ }
197
+ div.jp-progress {
198
+ position: absolute;
199
+ overflow:hidden;
200
+ background-color: #ddd;
201
+ }
202
+ div.jp-audio div.jp-type-single div.jp-progress {
203
+ top:13px;
204
+ left:100px;
205
+ width:122px;
206
+ height:15px;
207
+ }
208
+ div.jp-audio div.jp-type-playlist div.jp-progress {
209
+ top:13px;
210
+ left:134px;
211
+ width:122px;
212
+ height:15px;
213
+ }
214
+ div.jp-video div.jp-progress {
215
+ top:0px;
216
+ left:0px;
217
+ width:100%;
218
+ height:10px;
219
+ }
220
+ div.jp-seek-bar {
221
+ background: url("jplayer.blue.monday.jpg") 0 -202px repeat-x;
222
+ width:0px;
223
+ /* height:15px; */
224
+ height:100%;
225
+ cursor: pointer;
226
+ }
227
+ div.jp-play-bar {
228
+ background: url("jplayer.blue.monday.jpg") 0 -218px repeat-x ;
229
+ width:0px;
230
+ /* height:15px; */
231
+ height:100%;
232
+ }
233
+
234
+ /* The seeking class is added/removed inside jPlayer */
235
+ div.jp-seeking-bg {
236
+ background: url("pbar-ani.gif");
237
+ }
238
+
239
+ a.jp-mute,
240
+ a.jp-unmute {
241
+ width:18px;
242
+ height:15px;
243
+ }
244
+ div.jp-audio div.jp-type-single a.jp-mute,
245
+ div.jp-audio div.jp-type-single a.jp-unmute {
246
+ top:13px;
247
+ left:244px;
248
+ }
249
+ div.jp-audio div.jp-type-playlist a.jp-mute,
250
+ div.jp-audio div.jp-type-playlist a.jp-unmute {
251
+ top:13px;
252
+ left:266px;
253
+ }
254
+ div.jp-video a.jp-mute,
255
+ div.jp-video a.jp-unmute {
256
+ top:27px;
257
+ }
258
+ div.jp-video-270p div.jp-type-single a.jp-mute,
259
+ div.jp-video-270p div.jp-type-single a.jp-unmute {
260
+ left:304px;
261
+ }
262
+ div.jp-video-270p div.jp-type-playlist a.jp-unmute,
263
+ div.jp-video-270p div.jp-type-playlist a.jp-mute {
264
+ left:363px;
265
+ }
266
+ div.jp-video-360p div.jp-type-single a.jp-mute,
267
+ div.jp-video-360p div.jp-type-single a.jp-unmute {
268
+ left:384px;
269
+ }
270
+ div.jp-video-360p div.jp-type-playlist a.jp-mute,
271
+ div.jp-video-360p div.jp-type-playlist a.jp-unmute {
272
+ left:443px;
273
+ }
274
+ a.jp-mute {
275
+ background: url("jplayer.blue.monday.jpg") 0 -186px no-repeat;
276
+ }
277
+ a.jp-mute:hover {
278
+ background: url("jplayer.blue.monday.jpg") -19px -170px no-repeat;
279
+ }
280
+ a.jp-unmute {
281
+ background: url("jplayer.blue.monday.jpg") 0 -170px no-repeat;
282
+ display: none;
283
+ }
284
+ a.jp-unmute:hover {
285
+ background: url("jplayer.blue.monday.jpg") -19px -186px no-repeat;
286
+ }
287
+ div.jp-volume-bar {
288
+ position: absolute;
289
+ overflow:hidden;
290
+ background: url("jplayer.blue.monday.jpg") 0 -250px repeat-x;
291
+ width:46px;
292
+ height:5px;
293
+ cursor: pointer;
294
+ }
295
+ div.jp-audio div.jp-type-single div.jp-volume-bar {
296
+ top:18px;
297
+ left:272px;
298
+ }
299
+ div.jp-audio div.jp-type-playlist div.jp-volume-bar {
300
+ top:18px;
301
+ left:194px;
302
+ }
303
+ div.jp-video div.jp-volume-bar {
304
+ top:32px;
305
+ }
306
+ div.jp-video-270p div.jp-type-single div.jp-volume-bar {
307
+ left:332px;
308
+ }
309
+ div.jp-video-270p div.jp-type-playlist div.jp-volume-bar {
310
+ left:391px;
311
+ }
312
+ div.jp-video-360p div.jp-type-single div.jp-volume-bar {
313
+ left:412px;
314
+ }
315
+ div.jp-video-360p div.jp-type-playlist div.jp-volume-bar {
316
+ left:471px;
317
+ }
318
+ div.jp-volume-bar-value {
319
+ background: url("jplayer.blue.monday.jpg") 0 -256px repeat-x;
320
+ width:0px;
321
+ height:5px;
322
+ }
323
+ div.jp-current-time,
324
+ div.jp-duration {
325
+ position: absolute;
326
+ font-size:.64em;
327
+ font-style:oblique;
328
+ }
329
+ div.jp-duration {
330
+ text-align: right;
331
+ }
332
+ div.jp-audio div.jp-type-single div.jp-current-time,
333
+ div.jp-audio div.jp-type-single div.jp-duration {
334
+ top:30px;
335
+ left:100px;
336
+ width:122px;
337
+ }
338
+ div.jp-audio div.jp-type-playlist div.jp-current-time,
339
+ div.jp-audio div.jp-type-playlist div.jp-duration {
340
+ top:30px;
341
+ left:134px;
342
+ width:122px;
343
+ }
344
+ div.jp-video div.jp-current-time,
345
+ div.jp-video div.jp-duration {
346
+ top:10px;
347
+ left:0px;
348
+ width:98%;
349
+ padding:0 1%;
350
+ }
351
+ div.jp-playlist {
352
+ /* width:418px; */
353
+ width:100%;
354
+ background-color:#ccc;
355
+ border:1px solid #009be3;
356
+ border-top:none;
357
+ }
358
+ div.jp-playlist ul {
359
+ list-style-type:none;
360
+ margin:0;
361
+ padding:0 20px;
362
+ /* background-color:#ccc; */
363
+ /* border:1px solid #009be3; */
364
+ /* border-top:none; */
365
+ /* width:378px; */
366
+ font-size:.72em;
367
+ }
368
+
369
+
370
+ div.jp-type-single div.jp-playlist li {
371
+ padding:5px 0 5px 20px;
372
+ font-weight:bold;
373
+ }
374
+ div.jp-type-playlist div.jp-playlist li {
375
+ padding:5px 0 4px 20px;
376
+ border-bottom:1px solid #eee;
377
+ }
378
+ /*
379
+ div.jp-video div.jp-playlist li {
380
+ padding:5px 0 5px 20px;
381
+ font-weight:bold;
382
+ }
383
+ */
384
+ div.jp-type-playlist div.jp-playlist li.jp-playlist-last {
385
+ padding:5px 0 5px 20px;
386
+ border-bottom:none;
387
+ }
388
+ div.jp-type-playlist div.jp-playlist li.jp-playlist-current {
389
+ list-style-type:square;
390
+ list-style-position:inside;
391
+ padding-left:8px;
392
+ }
393
+ div.jp-type-playlist div.jp-playlist a {
394
+ color: #666;
395
+ text-decoration: none;
396
+ }
397
+ div.jp-type-playlist div.jp-playlist a:hover {
398
+ color:#0d88c1;
399
+ }
400
+ div.jp-type-playlist div.jp-playlist a.jp-playlist-current {
401
+ color:#0d88c1;
402
+ }
403
+ div.jp-type-playlist div.jp-playlist div.jp-free-media {
404
+ display:inline;
405
+ margin-left:20px;
406
+ }
407
+
408
+ div.jp-video div.jp-video-play {
409
+ background: transparent url("jplayer.blue.monday.video.play.png") no-repeat center;
410
+ /* position: relative; */
411
+ position: absolute;
412
+ cursor:pointer;
413
+ z-index:2;
414
+ }
415
+ div.jp-video div.jp-video-play:hover {
416
+ background: transparent url("jplayer.blue.monday.video.play.hover.png") no-repeat center;
417
+ }
418
+ div.jp-video-270p div.jp-video-play {
419
+ top:-270px;
420
+ width:480px;
421
+ height:270px;
422
+ }
423
+ div.jp-video-360p div.jp-video-play {
424
+ top:-360px;
425
+ width:640px;
426
+ height:360px;
427
+ }
428
+
429
+ div.jp-jplayer {
430
+ width:0px;
431
+ height:0px;
432
+ }
433
+ div.jp-video div.jp-jplayer {
434
+ border:1px solid #009be3;
435
+ border-bottom:none;
436
+ z-index:1;
437
+ }
438
+ div.jp-video-270p div.jp-jplayer {
439
+ width:480px;
440
+ height:270px;
441
+ }
442
+ div.jp-video-360p div.jp-jplayer {
443
+ width:640px;
444
+ height:360px;
445
+ }
446
+ div.jp-jplayer {
447
+ background-color: #000000;
448
+ }