MP3-jPlayer - Version 1.8

Version Description

  • Fixed bug in javascript that caused problems in WordPress 3.5 (players broke after a couple of clicks).
  • Fixed bug when single quotes ended up in a popout title (it broke players).
  • Fixed bug in widget when it was set with a non-existent page id (it broke players).
  • Fixed bug with mp3j_put function (it could pick up the adjacent post's tracks in some scenarios).
  • Fixed bug with https urls.
  • Fixed bug in pick parameter.
  • Fixed bug with 'Allow mp3s from other domains' option (it affected single players when it was unticked).
  • Fixed display of hours on long mp3s (player will display the hours only when needed).
  • Fixed css that was hiding playlists in Opera browser.
  • Fixed titles running into captions.
  • Fixed titles obscuring slider motion (not IE proof).
  • Added 'images' parameter on [mp3-jplayer], they can be set per track and are carried to the popout.
  • Added easier styling option via a 'style' parameter that can be used in shortcodes (takes class names separated by spaces). Some classes are included as follows: bigger1 bigger2 bigger3 bigger4 bigger5 smaller outline dark text bars100 bars150 bars200 bars250 nolistbutton nopopoutbutton nostop nopn wtransbars btransbars. See examples on the demo page.
  • Added new download option 'loggedin' which shows alternative text/link if visitor is not logged in.
  • Added shortcode [mp3-popout] which creates a link to a popout player.
  • Added volume slider option and shortcode parameter for [mp3t] and [mp3j] players.
  • Added order control of library mp3s (when using 'FEED:LIB'), options are (asc/desc) by upload date, title, filename, or caption/filename, this is a global setting (not per player).
  • Added new shortcode parameter (fsort="desc") for reversing folder playlist order.
  • Added option to run player shortcodes in manually written excerpts.
  • Added template tag - mp3j_div() for use in theme files when using players in hidden/collapsable tabs, lightboxes etc (allows players to function ok in hidden elements if flash gets used).
  • Added option to bypass jQuery / jQueryUI script requests.
  • Added choice of separators to use when writing playlists in shortcodes/widgets.
  • Many more improvements and minor fixes.
Download this release

Release Info

Developer simon.ward
Plugin Icon 128x128 MP3-jPlayer
Version 1.8
Comparing to
See all releases

Code changes from version 1.7.3 to 1.8

Files changed (65) hide show
  1. css/images/Thumbs.db +0 -0
  2. css/images/buttons-popoutE.png +0 -0
  3. css/images/buttons-popoutF.png +0 -0
  4. css/images/case-grad-x.png +0 -0
  5. css/images/case2-l.png +0 -0
  6. css/images/case2-r.png +0 -0
  7. css/images/case2-x.png +0 -0
  8. css/images/case2dark-l.png +0 -0
  9. css/images/case2dark-r.png +0 -0
  10. css/images/case2dark-x.png +0 -0
  11. css/images/mp3t-poshandle.png +0 -0
  12. css/images/play-dark2-b.png +0 -0
  13. css/images/play-dark2-w.png +0 -0
  14. css/images/play-dark2.png +0 -0
  15. css/images/shadow-l.png +0 -0
  16. css/images/shadow-r.png +0 -0
  17. css/images/shadow-x.png +0 -0
  18. css/images/stop-dark2-b.png +0 -0
  19. css/images/stop-dark2-w.png +0 -0
  20. css/images/stop-dark2.png +0 -0
  21. css/images/transport-dark.png +0 -0
  22. css/images/transport-darkbg-trans2.png +0 -0
  23. css/images/transport-hard-+trans.png +0 -0
  24. css/images/transport-hard.png +0 -0
  25. css/images/transport-hardK.png +0 -0
  26. css/images/transport-hardW-shiny.png +0 -0
  27. css/images/transport-hardZ.png +0 -0
  28. css/images/transport-shard-B.png +0 -0
  29. css/images/transport-shard.png +0 -0
  30. css/images/volhandle-dark2-b.png +0 -0
  31. css/images/volhandle-dark2-w.png +0 -0
  32. css/images/volhandle-dark2.png +0 -0
  33. css/{mp3j-admin.css → mp3j-admin-1.8.css} +74 -0
  34. css/mp3j-help.css +26 -0
  35. css/player-darkgrey.css +0 -265
  36. css/player-silver.css +0 -264
  37. css/player-silverALT.css +364 -102
  38. css/player-text.css +0 -368
  39. css/players-1-8-dark.css +464 -0
  40. css/players-1-8-silver.css +491 -0
  41. css/players-1-8-text.css +440 -0
  42. js/jquery.ui.touch-punch.min.js +11 -0
  43. js/mp3-jplayer-1.8.js +511 -0
  44. js/mp3-jplayer.js +0 -211
  45. js/{mp3j-admin.js → mp3j-admin-1.8.js} +72 -46
  46. js/mp3j-functions.js +0 -401
  47. js/popout.js +0 -148
  48. mp3j_admin.php +665 -0
  49. mp3j_frontend.php +547 -917
  50. mp3j_main.php +807 -1084
  51. mp3j_sc-widget.php +81 -0
  52. mp3j_widget.php +132 -204
  53. mp3jplayer.php +52 -84
  54. popout-mp3j.php +0 -183
  55. popout.php +181 -0
  56. readme.txt +41 -13
  57. screenshot-1.png +0 -0
  58. screenshot-2.png +0 -0
  59. screenshot-3.png +0 -0
  60. screenshot-4.png +0 -0
  61. screenshot-5.png +0 -0
  62. screenshot-6.png +0 -0
  63. screenshot-7.png +0 -0
  64. screenshot-8.png +0 -0
  65. template-tag-help.htm +8 -15
css/images/Thumbs.db CHANGED
Binary file
css/images/buttons-popoutE.png ADDED
Binary file
css/images/buttons-popoutF.png ADDED
Binary file
css/images/case-grad-x.png ADDED
Binary file
css/images/case2-l.png DELETED
Binary file
css/images/case2-r.png DELETED
Binary file
css/images/case2-x.png DELETED
Binary file
css/images/case2dark-l.png DELETED
Binary file
css/images/case2dark-r.png DELETED
Binary file
css/images/case2dark-x.png DELETED
Binary file
css/images/mp3t-poshandle.png ADDED
Binary file
css/images/play-dark2-b.png ADDED
Binary file
css/images/play-dark2-w.png ADDED
Binary file
css/images/play-dark2.png ADDED
Binary file
css/images/shadow-l.png ADDED
Binary file
css/images/shadow-r.png ADDED
Binary file
css/images/shadow-x.png ADDED
Binary file
css/images/stop-dark2-b.png ADDED
Binary file
css/images/stop-dark2-w.png ADDED
Binary file
css/images/stop-dark2.png ADDED
Binary file
css/images/transport-dark.png DELETED
Binary file
css/images/transport-darkbg-trans2.png ADDED
Binary file
css/images/transport-hard-+trans.png ADDED
Binary file
css/images/transport-hard.png DELETED
Binary file
css/images/transport-hardK.png ADDED
Binary file
css/images/transport-hardW-shiny.png ADDED
Binary file
css/images/transport-hardZ.png ADDED
Binary file
css/images/transport-shard-B.png ADDED
Binary file
css/images/transport-shard.png DELETED
Binary file
css/images/volhandle-dark2-b.png ADDED
Binary file
css/images/volhandle-dark2-w.png ADDED
Binary file
css/images/volhandle-dark2.png ADDED
Binary file
css/{mp3j-admin.css → mp3j-admin-1.8.css} RENAMED
@@ -11,3 +11,77 @@
11
  #H { BORDER: 0; CURSOR: crosshair; FLOAT: left; HEIGHT: 154px; POSITION: relative; WIDTH: 25px; PADDING: 0; TOP: 4px; -moz-user-select: none; -khtml-user-select: none; user-select: none; }
12
  #Hslide { BACKGROUND: url('images/arrow.gif'); HEIGHT: 8px; WIDTH: 20px; POSITION: absolute; _font-size: 1px; line-height: 1px; }
13
  #Hmodel { POSITION: relative; TOP: -5px; BORDER: 1px solid #555; WIDTH: 25px; height:166px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  #H { BORDER: 0; CURSOR: crosshair; FLOAT: left; HEIGHT: 154px; POSITION: relative; WIDTH: 25px; PADDING: 0; TOP: 4px; -moz-user-select: none; -khtml-user-select: none; user-select: none; }
12
  #Hslide { BACKGROUND: url('images/arrow.gif'); HEIGHT: 8px; WIDTH: 20px; POSITION: absolute; _font-size: 1px; line-height: 1px; }
13
  #Hmodel { POSITION: relative; TOP: -5px; BORDER: 1px solid #555; WIDTH: 25px; height:166px; }
14
+
15
+
16
+
17
+ a.fox_buttonlink {
18
+ background:#eaf2fa;
19
+ border:1px solid #afcfdb;
20
+ padding:1px 12px 2px 10px;
21
+ text-decoration:none;
22
+ -webkit-border-radius: 3px;
23
+ -moz-border-radius: 3px;
24
+ border-radius: 3px;
25
+ }
26
+ a.fox_buttonlink:hover { background:#dbeafa; border:1px solid #99bac7; color:#222; }
27
+
28
+ a.bl2 { padding:0px 31px 1px 31px; }
29
+
30
+ div#fox_library-list, div#fox_folder-list {
31
+ padding:10px 20px 10px 20px;
32
+ margin:10px 0px 10px 35px;
33
+ background:#f9f9f9;
34
+ border:1px solid #f1f1f1;
35
+ }
36
+
37
+ div.wrap {
38
+ border: 0px solid #FF3300;
39
+ margin:0px 10px 0 20px;
40
+ max-width:1200px;
41
+ }
42
+ div.wrap p { margin:0 0 4px 0; }
43
+ div.wrap h1 { font-weight:500; font-size: 22px; line-height:22px; margin:20px 0 5px 0; padding:0; }
44
+ div.wrap h2 { font-size: 10px; line-height:10px; margin:0; padding:0; }
45
+ div.wrap h3 { margin:0 0 8px 20px; }
46
+ div.wrap h4 { margin:20px 0 0px 0; }
47
+
48
+ div.wrap p.jtick {
49
+ margin:0 0 2px 24px;
50
+ }
51
+ div.wrap p.jtick2 {
52
+ margin:0 0 2px 35px;
53
+ }
54
+ div.wrap p.jtext {
55
+ margin:0 0 10px 20px;
56
+ }
57
+
58
+ .joptionswrap {
59
+ border-top:0px solid #eee;
60
+ margin:30px 0 40px 0px;
61
+ }
62
+ .joptionswrap h4 {
63
+ margin:6px 0 3px 0;
64
+ width:250px;
65
+ }
66
+ .jopbox {
67
+ border:1px solid #f0f0f0;
68
+ padding:10px 20px;
69
+ margin-bottom:15px;
70
+ }
71
+ a.bl3 {
72
+ display:block;
73
+ width:200px;
74
+ padding:0 0 0 20px;
75
+ margin:5px 0 1px 0;
76
+ /* background:#f0f0f0;
77
+ border:1px solid #d0d0d0;
78
+ color:#696969; */
79
+ }
80
+ a.bl3:hover { /* background:#e9e9e9; border:1px solid #c9c9c9; color:#606060; */ }
81
+
82
+ .clearB { clear:both; }
83
+ .Ahelp1 { float:left; width:300px; border-top:0px solid #ccc; }
84
+
85
+ #tog_0-list p { margin:10px 0 10px 0; }
86
+ #tog_0-list h4 { margin:10px 0 10px 0; }
87
+
css/mp3j-help.css ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+ /* ----------------------------------------- */
12
+
13
+ a.fox_buttonlink { background:#eaf2fa; border:1px solid #afcfdb; padding:2px 12px 2px 10px; text-decoration:none;
14
+ -webkit-border-radius: 3px;
15
+ -moz-border-radius: 3px;
16
+ border-radius: 3px; }
17
+ a.fox_buttonlink:hover { background:#dbeafa; border:1px solid #99bac7; color:#222; }
18
+
19
+ a.bl2 { padding:0px 31px 0px 30px; }
20
+
21
+ div#fox_library-list, div#fox_folder-list {
22
+ padding:10px 20px 10px 20px;
23
+ margin:10px 120px 10px 35px;
24
+ background:#f9f9f9;
25
+ border:1px solid #f1f1f1;
26
+ }
css/player-darkgrey.css DELETED
@@ -1,265 +0,0 @@
1
- /*
2
- MP3-jPlayer 1.7 - Dark Grey Player
3
-
4
- - This style sheet allows for the user 'colour settings' set from admin. The commented-out properties are set by the plugin,
5
- they can be overidden by setting them directly in the sheet.
6
- - The class .mp3j_widgetmods is added when mods="y" is used in a shortcode/widget. It can
7
- be added to the following elements:
8
-
9
- on [mp3-jplayer]
10
- div.player-track-title, div.player-artist, div.dloadmp3-MI, div.playlist-toggle-MI, div.mp3j-popout-MI, div.statusMI, div.jp-playlist li
11
- on [mp3-album] :
12
- on [mp3-basic] :
13
- on [mp3j] or [mp3t] : */
14
-
15
- /* === [mp3-jplayer] ============================== */
16
-
17
- /* POSITION AND WIDTH */
18
- div.wrap-MI { border:0; margin:0; background:transparent;
19
- /* position || float */
20
- /* width */
21
- min-width:116px;
22
- }
23
- div.jp-innerwrap,
24
- div.jp-interface,
25
- div.innertab,
26
- div.bars_holder,
27
- div.playlist-wrap-MI {
28
- width:100%;
29
- }
30
-
31
- div.jp-innerwrap { position:relative !important; background:transparent; border:0; margin:0;}
32
- div.jp-interface { position:relative !important; height:95px; min-height:67px; border:0; margin:0; cursor:default; }
33
-
34
- /* BACKGROUNDS */
35
- div.innerx { position:absolute; width:auto; height:40px; left:9px; right:8px; bottom:-3px; background:url('images/case2dark-x.png') repeat-x left bottom; }
36
- div.innerleft { position:absolute; width:10px; height:40px; left:-1px; bottom:-3px; background:url('images/case2dark-l.png') no-repeat left bottom; }
37
- div.innerright { position:absolute; width:10px; height:40px; right:-2px; bottom:-3px; background:url('images/case2dark-r.png') no-repeat left bottom; }
38
- div.innertab { position:absolute; left:0px; top:0px; bottom:37px;
39
- /* background */
40
- /* opacity */
41
- }
42
-
43
- /* SCREEN TEXT */
44
- div.player-track-title,
45
- div.player-artist,
46
- div.jp-play-time,
47
- div.jp-total-time,
48
- div.statusMI {
49
- /* color */
50
- }
51
-
52
- div.player-track-title { position:absolute; font:normal normal 500 14px 'verdana', 'Lucida Grande', 'arial', sans-serif; top:8px; left:10px; white-space:normal; width:auto; max-width:97%; line-height:16px; z-index:50; }
53
- div.player-track-title.mp3j_widgetmods { font-size: 11px; top: 7px; }
54
- div.player-artist { position:absolute; font:normal normal 500 10px 'verdana', 'Lucida Grande', 'arial', sans-serif; top:27px; left:26px; width:auto; max-width:95%; line-height:12px; height:auto; overflow:hidden; z-index:50; }
55
- div.player-artist.mp3j_widgetmods { font-size: 9px; top:23px; }
56
-
57
- div.jp-play-time,
58
- div.jp-total-time,
59
- div.statusMI {
60
- position:absolute; font:normal normal 500 8px 'verdana', 'Lucida Grande', 'arial', sans-serif; bottom:40px; text-align:left; z-index:50;
61
- }
62
- div.jp-play-time { right:79px; font-size:8px; }
63
- div.jp-total-time { right:7px; opacity:0.8; font-size:8px; }
64
- div.statusMI { right:34px; width:40px; font-size:8px; line-height:10px !important; height:10px !important; }
65
-
66
- span.mp3-finding,
67
- span.mp3-loading,
68
- span.mp3-tint {
69
- margin:0px 0px 0px -3px; padding:0px 0px 0px 3px !important; font-size:8px !important; line-height:10px !important; height:10px !important; overflow:hidden !important; -moz-border-radius:2px !important; -webkit-border-radius:2px !important; border-radius:2px !important;
70
- }
71
- span.mp3-finding {background:transparent url('../css/images/finding-bar1f.gif') repeat-y 0px 3px;
72
- /* opacity */
73
- }
74
- span.mp3-loading { background:transparent url('../css/images/finding-bar1f.gif') repeat-y 0px 3px;
75
- /* opacity */
76
- }
77
- span.mp3-tint { margin:0px 2px 0px -3px; opacity:.5; filter:alpha(opacity=50);
78
- /* background */
79
- }
80
-
81
- /* DIV TRANSPORT since 1.6 */
82
- /* Transport wrap */
83
- div.transport-MI { position:absolute; width:auto; height:38px; right:2px; bottom:-2px; border:0; }
84
-
85
- /* playpause button */
86
- div.buttons_mp3j { text-indent:-9999px !important; float:right; width:30px; height: 34px; margin:0px; background: transparent url("images/transport-dark.png") -110px 1px no-repeat !important; }
87
- div.buttons_mp3j:hover { background:transparent url("images/transport-dark.png") -110px -31px no-repeat !important; }
88
- div.buttons_mp3jpause { text-indent:-9999px !important; float:right; width:30px; height: 34px; margin:0px; background: transparent url("images/transport-dark.png") -4px 1px no-repeat !important; }
89
- div.buttons_mp3jpause:hover { background:transparent url("images/transport-dark.png") -4px -31px no-repeat !important; }
90
-
91
- /* prev & next buttons */
92
- div.Prev_mp3j, div.Next_mp3j { text-indent:-9999px !important; float:right; height: 28px; }
93
- div.Prev_mp3j { width:22px; margin:0px 2px 0px 0px; background: transparent url("images/transport-dark.png") -34px -1px no-repeat !important; }
94
- div.Prev_mp3j:hover { background: transparent url("images/transport-dark.png") -34px -33px no-repeat !important; }
95
- div.Next_mp3j { width:19px; margin:0px 1px 0px 0px; background: transparent url("images/transport-dark.png") -57px -1px no-repeat !important; }
96
- div.Next_mp3j:hover { background: transparent url("images/transport-dark.png") -57px -33px no-repeat !important; }
97
-
98
- /* stop button */
99
- div.stop_mp3j { text-indent:-9999px !important; float:right; width:26px; height: 34px; margin:0px 1px 0px 2px; background: transparent url("images/transport-dark.png") -81px 1px no-repeat !important; }
100
- div.stop_mp3j:hover { background:transparent url("images/transport-dark.png") -81px -31px no-repeat !important; }
101
-
102
- /* PLAYLIST TOGGLE */
103
- div.playlist-toggle-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif; bottom:2px; left:1px; color:#a2a2a2; padding:2px 6px 3px 5px; line-height:9px; min-width:24px; background:#4a4a4a; -moz-border-radius-top:2px; -webkit-border-top-radius:2px; cursor:default; }
104
- div.playlist-toggle-MI:hover { background:#595959; color:#aaa; border-right:0px solid #636363; }
105
-
106
- /* DOWNLOAD BUTTON */
107
- div.dloadmp3-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; bottom:38px; margin:0px !important; font-size:9px !important; text-align:center; left:0px; width:41%; min-width:75px; max-width:125px; padding:0px 0px 0px 0px !important; border:0px; background:transparent url('images/t10b.png') repeat left top !important; color:#fff; line-height:11px !important; -moz-border-radius-topright:3px; -webkit-border-top-right-radius:3px; overflow:hidden; z-index:150; cursor:default; }
108
- div.dloadmp3-MI.betweenlinks { background:transparent url('images/t10b.png') repeat left top !important; }
109
- div.dloadmp3-MI.whilelinks { background:transparent url('images/t50b.png') repeat left top !important; }
110
- div.dloadmp3-MI.whilelinks:hover { background:transparent url('images/t40b.png') repeat left top !important; }
111
-
112
- div.dloadmp3-MI a { color:#ececec; display:block; width:auto; padding:1px 5px 2px 2px !important; margin:0px !important; background:transparent; text-decoration:none !important; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; font-size:9px !important; line-height:11px !important; /* after font declaration */ height:100%; border-bottom:none; visibility:hidden; }
113
- div.dloadmp3-MI a:hover { outline: none; border-bottom: none; color: #ececec; }
114
- div.dloadmp3-MI.betweenlinks a { visibility: hidden; }
115
- div.dloadmp3-MI.whilelinks a { color: #f3f3f3; visibility: inherit; }
116
- div.dloadmp3-MI.whilelinks a:hover { color: #fff; }
117
-
118
- /* POPOUT BUTTON */
119
- div.mp3j-popout-MI { position:absolute; font:normal normal 500 10px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif; bottom:17px; left:1px; height:16px; color:#a2a2a2; padding:3px 6px 0px 29px; line-height:11px; border:0px solid #686868; background:#555 url('images/buttons-popout.png') no-repeat -5px -5px; -moz-border-radius:2px; -webkit-border-radius:2px; cursor:default; }
120
- div.mp3j-popout-MI:hover { color:#aaa; background:#606060 url('images/buttons-popout.png') no-repeat -5px -35px; }
121
-
122
- /* BARS */
123
- .ui-state-disabled { cursor:default !important; }
124
- .ui-slider { position:relative; text-align:left; }
125
- .ui-slider .ui-slider-handle { position:absolute; z-index:200; cursor:default; }
126
- .ui-slider .ui-slider-range { position:absolute; z-index:1; font-size:.7em; display:block; border:0; }
127
- .ui-slider-horizontal .ui-slider-range { top:0; height:100%; }
128
- .ui-slider-horizontal .ui-slider-range-min { left:0; }
129
- .ui-slider-horizontal .ui-slider-range-max { right:0; }
130
- .ui-state-default,
131
- .ui-widget-content .ui-state-default { outline:none; border:0px; }
132
-
133
- /* VOLUME */
134
- div.MIsliderVolume { position:absolute; top:0px; right:4px; width:108px !important; height:4px !important; background:transparent; border:0px; font-size:1px; cursor:default; z-index:150; }
135
- div.MIsliderVolume .ui-widget-header,
136
- div.vol_mp3j .ui-widget-header {
137
- /* background */
138
- }
139
- div.MIsliderVolume .ui-slider-handle,
140
- div.vol_mp3j .ui-slider-handle {
141
- height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; top:-3px; border:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; background:transparent url('images/vol-handle.png') no-repeat -21px 0px; z-index:150; overflow:hidden !important; cursor:default;
142
- }
143
- div.MIsliderVolume .ui-slider-handle:hover,
144
- div.vol_mp3j .ui-slider-handle:hover {
145
- background:transparent url('images/vol-handle.png') no-repeat -1px 0px;
146
- }
147
- div.MIsliderVolume .ui-state-active,
148
- div.MIsliderVolume .ui-widget-content .ui-state-active,
149
- div.vol_mp3j .ui-state-active,
150
- div.vol_mp3j .ui-widget-content .ui-state-active {
151
- border:0px; background:transparent url('images/vol-handle.png') no-repeat -1px 0px; outline:none;
152
- }
153
-
154
- /* LOADER AND SLIDER */
155
- div.bars_holder { position:absolute; top:0px; left:0px; border-left:0px solid #ccc; bottom:37px; font-size:1px; cursor:default;
156
- background:transparent url('images/t40b.png') repeat-x left bottom; /* 1px highlight top of control bar */
157
- }
158
- /* LOAD BAR */
159
- div.loadMI_mp3j { position:absolute; top:0px; left:0px; bottom:1px;
160
- /* background */
161
- /* opacity */
162
- }
163
- /* POSITION SLIDER */
164
- div.bars_holder .ui-widget-header { border:0px !important;
165
- /* background */
166
- /* opacity */
167
- }
168
- div.bars_holder .ui-slider-horizontal { bottom:1px; }
169
- div.posbarMI_mp3j { position:absolute; left:0px; top:0px; bottom:1px; width:100%; }
170
- div.posbarMI_mp3j .ui-slider-handle { top:-6px; margin-left:-10px !important; border:0px; bottom:-2px; width:20px !important; z-index:100; background:none; cursor:e-resize; padding:0px !important; }
171
- div.posbarMI_mp3j .ui-slider-handle:hover { background:none; z-index:100; }
172
-
173
- /* PLAYLIST */
174
- div.listwrap_mp3j { position:relative; padding:0; margin-top:0px; /* background */ }
175
- div.playlist-wrap-MI { position:relative; }
176
- div.playlist-wrap-MI ul { position:static !important; border:0 !important; }
177
- div.playlist-colour { position:absolute; width:100%; height:100%; left:0px; top:0px;
178
- /* background */
179
- /* opacity */
180
- }
181
- ul.UL_mp3j { margin:0px !important; padding:0px 0px 0px 0px !important; list-style-type:none !important; list-style:none !important; list-style-image:none !important; }
182
- ul.UL-MI_mp3j { margin:0px !important; padding:0px 0px 0px 0px !important; list-style-type:none !important; list-style:none !important; list-style-image:none !important; font-weight: 500 !important;
183
- /* background */
184
- }
185
- ul.UL_mp3j li { margin:0px !important; padding:0px 0px 0px 15px !important; content:none !important; background:none !important; }
186
- ul.UL_mp3j li:before { content:none !important; }
187
- ul.UL-MI_mp3j li { margin:0px !important; padding:0px 0px 1px 0px !important; content:none !important; font-weight:500 !important; line-height:28px !important; letter-spacing:0px !important; font-size:11px !important; word-spacing:0px !important; margin:0px 1px 0px 1px !important; }
188
- ul.UL-MI_mp3j li:before { content:none !important; }
189
- ul.UL-MI_mp3j.mp3j_widgetmods li { font-size:10px !important; line-height:26px !important; }
190
-
191
- ul.UL-MI_mp3j li a { font-size:11px !important; border:0 !important; content:none !important; line-height:28px !important; font-weight:500 !important; text-decoration:none !important; display:block !important; width:auto !important; font-family:'verdana', 'Lucida Grande', 'arial', sans-serif !important; outline:none !important; padding:0px 0px 0px 14px !important; }
192
- ul.UL-MI_mp3j.mp3j_widgetmods li a { font-size:10px !important; line-height:26px !important; }
193
-
194
-
195
- /* === [mp3j] & [mp3t] [mp3j-link] ============================ */
196
- .mp3j-link-play { cursor:pointer; }
197
-
198
- span.wrap_inline_mp3j { position:relative; width:auto; cursor:pointer !important; padding:0; white-space:nowrap; text-align:left; }
199
- span.wrap_inline_mp3j:hover .buttons_mp3j { background:transparent url('images/transport-shard.png') no-repeat -80px -35px; }
200
-
201
- span.indi_mp3j { position:relative; padding-left:2px; font-size: 0.7em !important; }
202
-
203
- /* bars wrap */
204
- span.bars_mp3j { position:absolute; width:100%; height:100%; }
205
-
206
- /* bars for [mp3t] */
207
- span.load_mp3j { position:absolute; /* background */ top:20px; left:0px; height:2px; }
208
- span.posbar_mp3j { position:absolute; width:100%; height:100%; border:0px solid #f77; }
209
- span.posbar_mp3j .ui-widget-header { z-index:-500; }
210
- span.posbar_mp3j .ui-slider-handle { top: 2px; margin-left: -11px !important; border: 0px solid #888; height: 21px; width: 19px !important; z-index: 500;
211
- background: transparent url('images/inlineHandle1.png') no-repeat 8px 0px;
212
- opacity:0.75;
213
- filter:alpha(opacity=75);
214
- cursor: default; padding:0px !important; }
215
- span.posbar_mp3j .ui-slider-handle:hover {
216
- background: transparent url('images/inlineHandle1.png') no-repeat 8px -30px;
217
- }
218
-
219
- /* bars for [mp3j], [mp3-album], & [mp3PL] */
220
- span.loadB_mp3j { position:absolute; /*background */ top:20px; left:0px; height:2px; }
221
- span.posbarB_mp3j { position:absolute; width:100%; height:100%; border:0; z-index:450; cursor:pointer; }
222
- span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:450; height:100%; }
223
- span.posbarB_mp3j .ui-slider-handle { top: 0px; margin-left: -6px !important; border: 0px solid #888; height: 23px; width: 12px !important; z-index: 500;
224
- background: transparent url('images/inlineHandle2.png') no-repeat -3px -3px;
225
- cursor: default; padding:0px !important; }
226
- span.posbarB_mp3j .ui-slider-handle:hover { background: transparent url('images/inlineHandle2.png') no-repeat -3px -33px; }
227
-
228
- /* SPAN TRANSPORT since 1.5 */
229
- span.group_wrap { position:relative; margin:0px 0px 0px 0px; width:auto; }
230
-
231
- /* playpause button */
232
- span.textbutton_mp3j, span.T_mp3j { position:relative; width:auto; margin:0px; padding:0px; }
233
- span.buttons_mp3j { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard.png') no-repeat -80px -3px; }
234
- span.buttons_mp3j:hover { background:transparent url('images/transport-shard.png') no-repeat -80px -35px; }
235
- span.buttons_mp3jpause { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard.png') no-repeat -2px -3px; }
236
- span.buttons_mp3jpause:hover { background:transparent url('images/transport-shard.png') no-repeat -2px -35px; }
237
-
238
- /* prev & next buttons*/
239
- span.Prev_mp3j, span.Next_mp3j { position:relative; margin:0px 0px 0px 3px; padding:2px 0px 3px 12px; }
240
- span.Prev_mp3j { background: transparent url('images/transport-shard.png') no-repeat -25px -4px; }
241
- span.Prev_mp3j:hover { background: transparent url('images/transport-shard.png') no-repeat -25px -36px; }
242
- span.Next_mp3j { background: transparent url('images/transport-shard.png') no-repeat -44px -4px; }
243
- span.Next_mp3j:hover { background: transparent url('images/transport-shard.png') no-repeat -44px -36px; }
244
-
245
- /* -- player & list containers -- */
246
- div.basiclist-player-wrap { padding: 0px 0px 10px 0px; }
247
- div.album-player-wrap { padding: 20px 0px 15px 0px; }
248
- div.listwrap-album-mp3j { padding: 0px 0px 5px 0px; /* background */ }
249
-
250
- /* image for [mp3-album] */
251
- div.img_mp3j { float:right; margin: 10px 0px 25px 30px; padding: 0px !important; }
252
- div.img_mp3j a { position:relative; margin:0 !important; padding:0 !important; }
253
- div.img_mp3j img { position:relative; margin:0 !important; padding:2px !important; border: 2px solid #ccc; }
254
-
255
- div.Holder_mp3j, div.Holderg_mp3j { position:relative; }
256
- div.Holderg_mp3j { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; /* width */ }
257
-
258
- div.vol_mp3j { position:absolute; top:-12px; right:7px; width:100px; height:4px; background: transparent url('images/t10g.png') repeat left top; }
259
- div.vol_mp3j .ui-widget-header { /* background */ z-index:50; height:100%; }
260
- div.vol_mp3j .ui-slider-handle { top:-4px; background: transparent url('images/vol-handle.png') no-repeat -21px 0px; }
261
- div.vol_mp3j .ui-slider-handle:hover { background: transparent url('images/vol-handle.png') no-repeat -1px 0px; }
262
- div.vol_mp3j .ui-state-active, div.vol_mp3j .ui-widget-content .ui-state-active { background: transparent url('images/vol-handle.png') no-repeat -1px 0px; }
263
-
264
- #debug_mp3j { position:relative; border:1px solid #ccc; padding:10px; width:200px; }
265
- /* end_____________________________________________________________________________________ */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/player-silver.css DELETED
@@ -1,264 +0,0 @@
1
- /*
2
- MP3-jPlayer 1.7 - Silver Player
3
-
4
- - This style sheet allows for the user 'colour settings' set from admin. The commented-out properties are set by the plugin,
5
- they can be overidden by setting them directly in the sheet.
6
- - The class .mp3j_widgetmods is added when mods="y" is used in a shortcode/widget. It can
7
- be added to the following elements:
8
-
9
- on [mp3-jplayer]
10
- div.player-track-title, div.player-artist, div.dloadmp3-MI, div.playlist-toggle-MI, div.mp3j-popout-MI, div.statusMI, div.jp-playlist li
11
- on [mp3-album] :
12
- on [mp3-basic] :
13
- on [mp3j] or [mp3t] : */
14
-
15
- /* === [mp3-jplayer] ============================== */
16
-
17
- /* POSITION AND WIDTH */
18
- div.wrap-MI { border:0; margin:0; background:transparent;
19
- /* position || float */
20
- /* width */
21
- min-width:116px;
22
- }
23
- div.jp-innerwrap,
24
- div.jp-interface,
25
- div.innertab,
26
- div.bars_holder,
27
- div.playlist-wrap-MI {
28
- width:100%;
29
- }
30
-
31
- div.jp-innerwrap { position:relative !important; background:transparent; border:0; margin:0; }
32
- div.jp-interface { position:relative !important; height:96px; min-height:67px; border:0; margin:0; cursor:default; }
33
-
34
- /* BACKGROUNDS */
35
- div.innerx { position:absolute; width:auto; height:40px; left:9px; right:8px; bottom:0px; background:url('images/case2-x.png') repeat-x left bottom; }
36
- div.innerleft { position:absolute; width:10px; height:40px; left:-1px; bottom:0px; background:url('images/case2-l.png') no-repeat left bottom; }
37
- div.innerright { position:absolute; width:10px; height:40px; right:-2px; bottom:0px; background:url('images/case2-r.png') no-repeat left bottom; }
38
- div.innertab { position:absolute; left:0px; top:0px; bottom:40px;
39
- /* background */
40
- /* opacity */
41
- }
42
-
43
- /* SCREEN TEXT */
44
- div.player-track-title,
45
- div.player-artist,
46
- div.jp-play-time,
47
- div.jp-total-time,
48
- div.statusMI {
49
- /* color */
50
- }
51
-
52
- div.player-track-title { position:absolute; font:normal normal 500 14px 'verdana', 'Lucida Grande', 'arial', sans-serif; top:7px; left:9px; width:auto; max-width:97%; line-height:16px; z-index:50; }
53
- div.player-track-title.mp3j_widgetmods { font-size: 11px; top: 7px; }
54
- div.player-artist { position:absolute; font:normal normal 500 10px 'verdana', 'Lucida Grande', 'arial', sans-serif; top:25px; left:28px; width:auto; max-width:95%; line-height:12px; height:auto; z-index:50; }
55
- div.player-artist.mp3j_widgetmods { font-size: 9px; top:22px; }
56
-
57
- div.jp-play-time,
58
- div.jp-total-time,
59
- div.statusMI {
60
- position:absolute; font:normal normal 500 8px 'verdana', 'Lucida Grande', 'arial', sans-serif; bottom:43px; text-align:left; z-index:50;
61
- }
62
- div.jp-play-time { right:79px; font-size:8px; }
63
- div.jp-total-time { right:7px; opacity:0.8; font-size:8px; }
64
- div.statusMI { right:34px; width:40px; font-size:8px; line-height:10px !important; height:10px !important; }
65
-
66
- span.mp3-finding,
67
- span.mp3-loading,
68
- span.mp3-tint {
69
- margin:0px 0px 0px -3px; padding:0px 0px 0px 3px !important; font-size:8px !important; line-height:10px !important; height:10px !important; overflow:hidden !important; -moz-border-radius:2px !important; -webkit-border-radius:2px !important; border-radius:2px !important;
70
- }
71
- span.mp3-finding {background:transparent url('../css/images/finding-bar1f.gif') repeat-y 0px 3px;
72
- /* opacity */
73
- }
74
- span.mp3-loading { background:transparent url('../css/images/finding-bar1f.gif') repeat-y 0px 3px;
75
- /* opacity */
76
- }
77
- span.mp3-tint { margin:0px 2px 0px -3px; opacity:.5; filter:alpha(opacity=50);
78
- /* background */
79
- }
80
-
81
- /* DIV TRANSPORT since 1.6 */
82
- /* Transport wrap */
83
- div.transport-MI { position:absolute; width:auto; height:38px; right:2px; bottom:0px; border:0; }
84
-
85
- /* playpause button */
86
- div.buttons_mp3j { text-indent:-9999px !important; float:right; width:30px; height: 34px; margin:0px; background: transparent url("images/transport-hard.png") -110px 1px no-repeat !important; }
87
- div.buttons_mp3j:hover { background:transparent url("images/transport-hard.png") -110px -31px no-repeat !important; }
88
- div.buttons_mp3jpause { text-indent:-9999px !important; float:right; width:30px; height: 34px; margin:0px; background: transparent url("images/transport-hard.png") -2px 1px no-repeat !important; }
89
- div.buttons_mp3jpause:hover { background:transparent url("images/transport-hard.png") -2px -31px no-repeat !important; }
90
-
91
- /* prev & next buttons */
92
- div.Prev_mp3j, div.Next_mp3j { text-indent:-9999px !important; float:right; height: 28px; }
93
- div.Prev_mp3j { width:22px; margin:0px 2px 0px 0px; background: transparent url("images/transport-hard.png") -32px -1px no-repeat !important; }
94
- div.Prev_mp3j:hover { background: transparent url("images/transport-hard.png") -32px -33px no-repeat !important; }
95
- div.Next_mp3j { width:19px; margin:0px 1px 0px 0px; background: transparent url("images/transport-hard.png") -57px -1px no-repeat !important; }
96
- div.Next_mp3j:hover { background: transparent url("images/transport-hard.png") -57px -33px no-repeat !important; }
97
-
98
- /* stop button */
99
- div.stop_mp3j { text-indent:-9999px !important; float:right; width:26px; height: 34px; margin:0px 1px 0px 2px; background: transparent url("images/transport-hard.png") -81px 1px no-repeat !important; }
100
- div.stop_mp3j:hover { background:transparent url("images/transport-hard.png") -81px -31px no-repeat !important; }
101
-
102
- /* PLAYLIST TOGGLE */
103
- div.playlist-toggle-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif; bottom:5px; left:2px; color:#707070; padding:2px 6px 2px 5px; line-height:9px; min-width:24px; background:#b9b9b9; -moz-border-radius:1px; -webkit-border-radius:1px; cursor:default; }
104
- div.playlist-toggle-MI:hover { background:#c6c6c6; color:#808080; border-right:1px solid #a9a9a9; }
105
-
106
- /* DOWNLOAD BUTTON */
107
- div.dloadmp3-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; bottom:40px; margin:0px !important; font-size:9px !important; text-align:center; left:0px; width:41%; min-width:75px; max-width:125px; padding:0px 0px 0px 0px !important; border:0px; background:transparent url('images/t10b.png') repeat left top !important; color:#fff; line-height:11px !important; -moz-border-radius-topright:3px; -webkit-border-top-right-radius:3px; overflow:hidden; z-index:150; cursor:default; }
108
- div.dloadmp3-MI.betweenlinks { background:transparent url('images/t10b.png') repeat left top !important; }
109
- div.dloadmp3-MI.whilelinks { background:transparent url('images/t50b.png') repeat left top !important; }
110
- div.dloadmp3-MI.whilelinks:hover { background:transparent url('images/t40b.png') repeat left top !important; }
111
-
112
- div.dloadmp3-MI a { color:#ececec; display:block; width:auto; padding:1px 5px 2px 2px !important; margin:0px !important; background:transparent; text-decoration:none !important; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; font-size:9px !important; line-height:11px !important; /* after font declaration */ height:100%; border-bottom:none; visibility:hidden; }
113
- div.dloadmp3-MI a:hover { outline: none; border-bottom: none; color: #ececec; }
114
- div.dloadmp3-MI.betweenlinks a { visibility: hidden; }
115
- div.dloadmp3-MI.whilelinks a { color: #f3f3f3; visibility: inherit; }
116
- div.dloadmp3-MI.whilelinks a:hover { color: #fff; }
117
-
118
- /* POPOUT BUTTON */
119
- div.mp3j-popout-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif; bottom:18px; left:1px; height:16px; color:#595959; padding:3px 5px 0px 28px; min-width:2px; line-height:11px; border:1px solid #acacac; background:#bfbfbf url('images/buttons-popout.png') no-repeat -5px -65px; -moz-border-radius:2px; -webkit-border-radius:2px; cursor:default; }
120
- div.mp3j-popout-MI:hover { color:#606060; background:#c6c6c6 url('images/buttons-popout.png') no-repeat -5px -95px; }
121
-
122
- /* BARS */
123
- .ui-state-disabled { cursor:default !important; }
124
- .ui-slider { position:relative; text-align:left; }
125
- .ui-slider .ui-slider-handle { position:absolute; z-index:200; cursor:default; }
126
- .ui-slider .ui-slider-range { position:absolute; z-index:1; font-size:.7em; display:block; border:0; }
127
- .ui-slider-horizontal .ui-slider-range { top:0; height:100%; }
128
- .ui-slider-horizontal .ui-slider-range-min { left:0; }
129
- .ui-slider-horizontal .ui-slider-range-max { right:0; }
130
- .ui-state-default,
131
- .ui-widget-content .ui-state-default { outline:none; border:0px; }
132
-
133
- /* VOLUME */
134
- div.MIsliderVolume { position:absolute; top:0px; right:4px; width:108px !important; height:4px !important; background:transparent; border:0px; font-size:1px; cursor:default; z-index:150; }
135
- div.MIsliderVolume .ui-widget-header,
136
- div.vol_mp3j .ui-widget-header {
137
- /* background */
138
- }
139
- div.MIsliderVolume .ui-slider-handle,
140
- div.vol_mp3j .ui-slider-handle {
141
- height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; top:-3px; border:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; background:transparent url('images/vol-handle.png') no-repeat -1px 0px; z-index:150; overflow:hidden !important; cursor:default;
142
- }
143
- div.MIsliderVolume .ui-slider-handle:hover,
144
- div.vol_mp3j .ui-slider-handle:hover {
145
- background:transparent url('images/vol-handle.png') no-repeat -21px 0px;
146
- }
147
- div.MIsliderVolume .ui-state-active,
148
- div.MIsliderVolume .ui-widget-content .ui-state-active,
149
- div.vol_mp3j .ui-state-active,
150
- div.vol_mp3j .ui-widget-content .ui-state-active {
151
- border:0px; background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none;
152
- }
153
-
154
- /* LOADER AND SLIDER */
155
- div.bars_holder { position:absolute; top:0px; left:0px; border-left:0px solid #ccc; bottom:39px; font-size:1px; cursor:default;
156
- background:transparent url('images/t60w.png') repeat-x left bottom; /* 1px highlight top of control bar */
157
- }
158
- /* LOAD BAR */
159
- div.loadMI_mp3j { position:absolute; top:0px; left:0px; bottom:1px;
160
- /* background */
161
- /* opacity */
162
- }
163
- /* POSITION SLIDER */
164
- div.bars_holder .ui-widget-header { border:0px !important;
165
- /* background */
166
- /* opacity */
167
- }
168
- div.bars_holder .ui-slider-horizontal { top:0px; bottom:1px; }
169
- div.posbarMI_mp3j { position:absolute; left:0px; top:0px; bottom:1px; width:100%; }
170
- div.posbarMI_mp3j .ui-slider-handle { top:-6px; margin-left:-15px !important; border:0px; bottom:-2px; width:30px !important; z-index:100; background:none; cursor:e-resize; padding:0px !important; }
171
- div.posbarMI_mp3j .ui-slider-handle:hover { background:none; z-index:100; }
172
-
173
- /* PLAYLIST */
174
- div.listwrap_mp3j { position:relative; padding: 0px 0px 0px 0px; margin-top:-2px; /* background */ }
175
- div.playlist-wrap-MI { position:relative; }
176
- div.playlist-wrap-MI ul { position:static; }
177
- div.playlist-colour { position:absolute; width:100%; height:100%; left:0px; top:0px;
178
- /* background */
179
- /* opacity */
180
- }
181
- ul.UL_mp3j { margin:0px !important; padding:0px 0px 0px 0px !important; list-style-type:none !important; list-style:none !important; list-style-image:none !important; }
182
- ul.UL-MI_mp3j { margin:0px !important; padding:0px 0px 0px 0px !important; list-style-type:none !important; list-style:none !important; list-style-image:none !important; font-weight: 500 !important;
183
- /* background */
184
- }
185
- ul.UL_mp3j li { margin:0px !important; padding:0px 0px 0px 15px !important; content:none !important; background:none !important; }
186
- ul.UL_mp3j li:before { content:none !important; }
187
- ul.UL-MI_mp3j li { margin:0px !important; padding:0px 0px 1px 0px !important; content:none !important; font-weight:500 !important; line-height:28px !important; letter-spacing:0px !important; font-size:11px !important; word-spacing:0px !important; margin:0px 1px 0px 1px !important; }
188
- ul.UL-MI_mp3j li:before { content:none !important; }
189
- ul.UL-MI_mp3j.mp3j_widgetmods li { font-size:10px !important; line-height:26px !important; }
190
-
191
- ul.UL-MI_mp3j li a { font-size:11px !important; border:0 !important; content:none !important; line-height:28px !important; font-weight:500 !important; text-decoration:none !important; display:block !important; width:auto !important; font-family:'verdana', 'Lucida Grande', 'arial', sans-serif !important; outline:none !important; padding:0px 0px 0px 14px !important; }
192
- ul.UL-MI_mp3j.mp3j_widgetmods li a { font-size:10px !important; line-height:26px !important; }
193
-
194
- /* === [mp3j] & [mp3t] ============================ */
195
- span.wrap_inline_mp3j { position:relative; width:auto; cursor:pointer; padding:0; white-space:nowrap; text-align:left; }
196
- span.wrap_inline_mp3j:hover .buttons_mp3j { background:transparent url('images/transport-shard.png') no-repeat -80px -35px; }
197
-
198
- span.indi_mp3j { position:relative; padding-left:2px; font-size: 0.7em !important; }
199
-
200
- /* bars wrap */
201
- span.bars_mp3j { position:absolute; width:100%; height:100%; }
202
-
203
- /* bars for [mp3t] */
204
- span.load_mp3j { position:absolute; /* background */ top:20px; left:0px; height:2px; }
205
- span.posbar_mp3j { position:absolute; width:100%; height:100%; border:0px solid #f77; }
206
- span.posbar_mp3j .ui-widget-header { z-index:-500; }
207
- span.posbar_mp3j .ui-slider-handle { top: 2px; margin-left: -11px !important; border: 0px solid #888; height: 21px; width: 19px !important; z-index: 500;
208
- background: transparent url('images/inlineHandle1.png') no-repeat 8px 0px;
209
- opacity:0.75;
210
- filter:alpha(opacity=75);
211
- cursor: default; padding:0px !important; }
212
- span.posbar_mp3j .ui-slider-handle:hover { background: transparent url('images/inlineHandle1.png') no-repeat 8px -30px; }
213
-
214
- /* bars for [mp3j], [mp3-album], & [mp3PL] */
215
- span.loadB_mp3j { position:absolute; /*background */ top:20px; left:0px; height:2px; }
216
- span.posbarB_mp3j { position:absolute; width:100%; height:100%; border:0; z-index:450; cursor:pointer; }
217
- span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:450; height:100%; }
218
- span.posbarB_mp3j .ui-slider-handle { top: 0px; margin-left: -6px !important; border: 0px solid #888; height: 23px; width: 12px !important; z-index: 500;
219
- background: transparent url('images/inlineHandle2.png') no-repeat -3px -3px;
220
- cursor: default; padding:0px !important; }
221
- span.posbarB_mp3j .ui-slider-handle:hover { background: transparent url('images/inlineHandle2.png') no-repeat -3px -33px; }
222
-
223
- /* SPAN TRANSPORT */
224
- span.group_wrap { position:relative; margin:0px 0px 0px 0px; width:auto; }
225
-
226
- /* playpause button */
227
- span.textbutton_mp3j, span.T_mp3j { position:relative; width:auto; margin:0px; padding:0px; }
228
- span.buttons_mp3j { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard.png') no-repeat -80px -3px; }
229
- span.buttons_mp3j:hover { background:transparent url('images/transport-shard.png') no-repeat -80px -35px; }
230
- span.buttons_mp3jpause { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard.png') no-repeat -2px -3px; }
231
- span.buttons_mp3jpause:hover { background:transparent url('images/transport-shard.png') no-repeat -2px -35px; }
232
-
233
- /* prev & next buttons*/
234
- span.Prev_mp3j, span.Next_mp3j { position:relative; margin:0px 0px 0px 3px; padding:2px 0px 3px 12px; }
235
- span.Prev_mp3j { background: transparent url('images/transport-shard.png') no-repeat -25px -4px; }
236
- span.Prev_mp3j:hover { background: transparent url('images/transport-shard.png') no-repeat -25px -36px; }
237
- span.Next_mp3j { background: transparent url('images/transport-shard.png') no-repeat -44px -4px; }
238
- span.Next_mp3j:hover { background: transparent url('images/transport-shard.png') no-repeat -44px -36px; }
239
-
240
- /* -- player & list containers -- */
241
- div.basiclist-player-wrap { padding: 0px 0px 10px 0px; }
242
-
243
- div.album-player-wrap { padding: 20px 0px 15px 0px; }
244
- div.listwrap-album-mp3j { padding: 0px 0px 5px 0px; /* background */ }
245
-
246
- /* image for [mp3-album] */
247
- div.img_mp3j { float:right; margin: 10px 0px 25px 30px; padding: 0px !important; }
248
- div.img_mp3j a { position:relative; margin:0 !important; padding:0 !important; }
249
- div.img_mp3j img { position:relative; margin:0 !important; padding:2px !important; border: 2px solid #ccc; }
250
-
251
- div.Holder_mp3j, div.Holderg_mp3j { position:relative; }
252
- div.Holderg_mp3j { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; /* width */ }
253
-
254
- div.vol_mp3j { position:absolute; top:-12px; right:7px; width:100px; height:4px; background: transparent url('images/t10g.png') repeat left top; }
255
- div.vol_mp3j .ui-widget-header { /* background */ z-index:50; height:100%; }
256
- div.vol_mp3j .ui-slider-handle { top:-4px; background: transparent url('images/vol-handle.png') no-repeat -21px 0px; }
257
- div.vol_mp3j .ui-slider-handle:hover { background: transparent url('images/vol-handle.png') no-repeat -1px 0px; }
258
- div.vol_mp3j .ui-state-active, div.vol_mp3j .ui-widget-content .ui-state-active { background: transparent url('images/vol-handle.png') no-repeat -1px 0px; }
259
-
260
-
261
- .mp3j-link-play { cursor:pointer; }
262
-
263
- #debug_mp3j { position:relative; border:1px solid #ccc; padding:10px; width:200px; }
264
- /* end_____________________________________________________________________________________ */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/player-silverALT.css CHANGED
@@ -1,16 +1,7 @@
1
  /*
2
- MP3-jPlayer 1.7 - Silver Player
3
-
4
- - This style sheet allows for the user 'colour settings' set from admin. The commented-out properties are set by the plugin,
5
- they can be overidden by setting them directly in the sheet.
6
- - The class .mp3j_widgetmods is added when mods="y" is used in a shortcode/widget. It can
7
- be added to the following elements:
8
-
9
- on [mp3-jplayer]
10
- div.player-track-title, div.player-artist, div.dloadmp3-MI, div.playlist-toggle-MI, div.mp3j-popout-MI, div.statusMI, div.jp-playlist li
11
- on [mp3-album] :
12
- on [mp3-basic] :
13
- on [mp3j] or [mp3t] : */
14
 
15
  /* === [mp3-jplayer] ============================== */
16
 
@@ -62,7 +53,7 @@
62
  div.innertab {
63
  position: absolute;
64
  width: 100%;
65
- bottom: 0px;
66
  left: 0px;
67
  top: 0px;
68
  /* background */
@@ -70,23 +61,27 @@
70
  }
71
 
72
 
73
- /* SCREEN TEXT */
74
  div.player-track-title,
75
  div.player-artist,
76
  div.jp-play-time,
77
  div.jp-total-time,
78
  div.statusMI {
79
- /* color */
80
  }
81
 
82
  div.player-track-title { position:absolute; font:normal normal 500 13px 'verdana', 'Lucida Grande', 'arial', sans-serif; top:8px; left:9px; width:auto; max-width:97%; line-height:15px; z-index:50; }
83
  div.player-track-title.mp3j_widgetmods { font-size: 11px; top: 9px; }
84
  div.player-artist { position:absolute; font:normal normal 500 10px 'verdana', 'Lucida Grande', 'arial', sans-serif; top:24px; left:28px; width:auto; max-width:95%; line-height:12px; height:auto; z-index:50; }
85
  div.player-artist.mp3j_widgetmods { font-size: 9px; }
86
-
87
-
 
 
 
88
 
89
  /* STATUS */
 
 
90
  div.jp-play-time,
91
  div.jp-total-time,
92
  div.statusMI {
@@ -95,22 +90,67 @@
95
  div.jp-play-time { right:79px; font-size:8px; }
96
  div.jp-total-time { right:7px; opacity:0.8; font-size:8px; }
97
  div.statusMI { right:34px; width:40px; font-size:8px; line-height:10px !important; height:10px !important; }
 
 
98
 
99
- span.mp3-finding,
100
- span.mp3-loading,
101
- span.mp3-tint {
102
- margin:0px 0px 0px -3px; padding:0px 0px 0px 3px !important; font-size:8px !important; line-height:10px !important; height:10px !important; overflow:hidden !important; -moz-border-radius:2px !important; -webkit-border-radius:2px !important; border-radius:2px !important;
 
103
  }
104
- span.mp3-finding {background:transparent url('../css/images/finding-bar1f.gif') repeat-y 0px 3px;
105
- /* opacity */
 
106
  }
107
- span.mp3-loading { background:transparent url('../css/images/finding-bar1f.gif') repeat-y 0px 3px;
108
- /* opacity */
 
109
  }
110
- span.mp3-tint { margin:0px 2px 0px -3px; opacity:.5; filter:alpha(opacity=50);
111
- /* background */
 
 
112
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
115
  /* DIV TRANSPORT since 1.6 */
116
  /* Transport wrap */
@@ -138,9 +178,9 @@
138
  div.playlist-toggle-MI:hover { background:#c6c6c6; color:#808080; border-right:1px solid #a9a9a9; }
139
 
140
  /* DOWNLOAD BUTTON */
141
- div.dloadmp3-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; bottom:49px; margin:0px !important; font-size:9px !important; text-align:center; left:0px; width:41%; min-width:75px; max-width:125px; padding:0px 0px 0px 0px !important; border:0px; background:transparent url('images/t10b.png') repeat left top !important; color:#fff; line-height:11px !important; -moz-border-radius-topright:3px; -webkit-border-top-right-radius:3px; overflow:hidden; z-index:150; cursor:default; }
142
  div.dloadmp3-MI.betweenlinks { background:transparent url('images/t10b.png') repeat left top !important; }
143
- div.dloadmp3-MI.whilelinks { background:#696969 !important; }
144
  div.dloadmp3-MI.whilelinks:hover { background:#777 !important; }
145
 
146
  div.dloadmp3-MI a { color:#ececec; display:block; width:auto; padding:1px 5px 2px 2px !important; margin:0px !important; background:transparent; text-decoration:none !important; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; font-size:9px !important; line-height:11px !important; /* after font declaration */ height:100%; border-bottom:none; visibility:hidden; }
@@ -149,6 +189,8 @@
149
  div.dloadmp3-MI.whilelinks a { color: #f3f3f3; visibility: inherit; }
150
  div.dloadmp3-MI.whilelinks a:hover { color: #fff; }
151
 
 
 
152
  /* POPOUT BUTTON */
153
  div.mp3j-popout-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif; bottom:18px; left:0px; height:16px; color:#595959; padding:3px 5px 0px 28px; min-width:2px; line-height:11px; border:1px solid #acacac; background:#bfbfbf url('images/buttons-popout.png') no-repeat -5px -5px; -moz-border-radius:2px; -webkit-border-radius:2px; cursor:default; z-index:30; }
154
  div.mp3j-popout-MI:hover { color:#606060; background:#c6c6c6 url('images/buttons-popout.png') no-repeat -5px -35px; }
@@ -169,8 +211,6 @@
169
  }
170
 
171
 
172
-
173
-
174
  div.MIsliderVolume { position:absolute;
175
  top:7px;
176
  right: 10px;
@@ -223,16 +263,17 @@
223
  border-left: 0px;
224
  border-right: 0px;
225
  margin-right: 20px;
226
-
227
-
228
  }
229
 
230
-
 
 
 
231
  div.posbarMI_mp3j { position: absolute;
232
- background: #989898;
233
  top: 0px;
234
  font-size: 5px;
235
- border: 1px solid #989898;
236
  border-bottom: 0px solid #888;
237
  border-left: 0px solid #888;
238
  left: 0px;
@@ -257,12 +298,11 @@
257
  outline: none; }
258
 
259
  /* LOAD BAR */
260
- div.loadMI_mp3j { position:absolute; top:7px; left:0px; bottom:0px;
261
  /* background */
262
  /* opacity */
263
  }
264
 
265
-
266
  div.bars_holder .ui-progressbar .ui-progressbar-value {margin: 0px; height:100%;
267
  /* background */
268
  /* opacity */
@@ -288,82 +328,304 @@
288
  }
289
  ul.UL_mp3j li { margin:0px !important; padding:0px 0px 0px 15px !important; content:none !important; background:none !important; }
290
  ul.UL_mp3j li:before { content:none !important; }
291
- ul.UL-MI_mp3j li { margin:0px !important; padding:0px 0px 1px 0px !important; content:none !important; font-weight:500 !important; line-height:28px !important; letter-spacing:0px !important; font-size:11px !important; word-spacing:0px !important; margin:0px 1px 0px 1px !important; }
292
  ul.UL-MI_mp3j li:before { content:none !important; }
293
- ul.UL-MI_mp3j.mp3j_widgetmods li { font-size:10px !important; line-height:26px !important; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
294
 
295
- ul.UL-MI_mp3j li a { font-size:11px !important; border:0 !important; content:none !important; line-height:28px !important; font-weight:500 !important; text-decoration:none !important; display:block !important; width:auto !important; font-family:'verdana', 'Lucida Grande', 'arial', sans-serif !important; outline:none !important; padding:0px 0px 0px 14px !important; }
296
- ul.UL-MI_mp3j.mp3j_widgetmods li a { font-size:10px !important; line-height:26px !important; }
 
 
 
 
 
 
297
 
298
 
299
- /* === [mp3-album] ================================ */
300
- /* === [mp3j] & [mp3t] ============================ */
301
- span.wrap_inline_mp3j { position:relative; width:auto; cursor:pointer; padding:0; white-space:nowrap; text-align:left; }
302
- span.wrap_inline_mp3j:hover .buttons_mp3j { background:transparent url('images/transport-shard.png') no-repeat -80px -35px; }
 
 
303
 
304
- span.indi_mp3j { position:relative; padding-left:2px; font-size: 0.7em !important; }
305
 
306
- /* bars wrap */
307
- span.bars_mp3j { position:absolute; width:100%; height:100%; }
308
-
309
- /* bars for [mp3t] */
310
- span.load_mp3j { position:absolute; /* background */ top:20px; left:0px; height:2px; }
311
- span.posbar_mp3j { position:absolute; width:100%; height:100%; border:0px solid #f77; }
312
- span.posbar_mp3j .ui-widget-header { z-index:-500; }
313
- span.posbar_mp3j .ui-slider-handle { top: 2px; margin-left: -11px !important; border: 0px solid #888; height: 21px; width: 19px !important; z-index: 500;
314
- background: transparent url('images/inlineHandle1.png') no-repeat 8px 0px;
315
- opacity:0.75;
316
- filter:alpha(opacity=75);
317
- cursor: default; padding:0px !important; }
318
- span.posbar_mp3j .ui-slider-handle:hover {
319
- background: transparent url('images/inlineHandle1.png') no-repeat 8px -30px;
320
- }
321
-
322
- /* bars for [mp3j], [mp3-album], & [mp3PL] */
323
- span.loadB_mp3j { position:absolute; /*background */ top:20px; left:0px; height:2px; }
324
- span.posbarB_mp3j { position:absolute; width:100%; height:100%; border:0; z-index:450; cursor:pointer; }
325
- span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:450; height:100%; }
326
- span.posbarB_mp3j .ui-slider-handle { top: 0px; margin-left: -6px !important; border: 0px solid #888; height: 23px; width: 12px !important; z-index: 500; background: transparent url('images/inlineHandle2.png') no-repeat -3px -3px; cursor: default; padding:0px !important; }
327
- span.posbarB_mp3j .ui-slider-handle:hover { background: transparent url('images/inlineHandle2.png') no-repeat -3px -33px; }
328
 
329
- /* SPAN TRANSPORT */
330
- span.group_wrap { position:relative; margin:0px 0px 0px 0px; width:auto; }
 
 
 
 
 
 
 
331
 
332
- /* playpause button */
333
- span.textbutton_mp3j, span.T_mp3j { position:relative; width:auto; margin:0px; padding:0px; }
334
- span.buttons_mp3j { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard.png') no-repeat -80px -3px; }
335
- span.buttons_mp3j:hover { background:transparent url('images/transport-shard.png') no-repeat -80px -35px; }
336
- span.buttons_mp3jpause { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard.png') no-repeat -2px -3px; }
337
- span.buttons_mp3jpause:hover { background:transparent url('images/transport-shard.png') no-repeat -2px -35px; }
338
-
339
- /* prev & next buttons*/
340
- span.Prev_mp3j, span.Next_mp3j { position:relative; margin:0px 0px 0px 3px; padding:2px 0px 3px 12px; }
341
- span.Prev_mp3j { background: transparent url('images/transport-shard.png') no-repeat -25px -4px; }
342
- span.Prev_mp3j:hover { background: transparent url('images/transport-shard.png') no-repeat -25px -36px; }
343
- span.Next_mp3j { background: transparent url('images/transport-shard.png') no-repeat -44px -4px; }
344
- span.Next_mp3j:hover { background: transparent url('images/transport-shard.png') no-repeat -44px -36px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
345
 
346
- /* -- player & list containers -- */
347
- div.basiclist-player-wrap { padding: 0px 0px 10px 0px; }
348
 
349
- div.album-player-wrap { padding: 20px 0px 15px 0px; }
350
- div.listwrap-album-mp3j { padding: 0px 0px 5px 0px; /* background */ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
351
 
352
- /* image for [mp3-album] */
353
- div.img_mp3j { float:right; margin: 10px 0px 25px 30px; padding: 0px !important; }
354
- div.img_mp3j a { position:relative; margin:0 !important; padding:0 !important; }
355
- div.img_mp3j img { position:relative; margin:0 !important; padding:2px !important; border: 2px solid #ccc; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
356
 
357
- div.Holder_mp3j, div.Holderg_mp3j { position:relative; }
358
- div.Holderg_mp3j { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; /* width */ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
359
 
360
- div.vol_mp3j { position:absolute; top:-12px; right:7px; width:100px; height:4px; background: transparent url('images/t10g.png') repeat left top; }
361
- div.vol_mp3j .ui-widget-header { /* background */ z-index:50; height:100%; }
362
- div.vol_mp3j .ui-slider-handle { top:-4px; background: transparent url('images/vol-handle.png') no-repeat -21px 0px; }
363
- div.vol_mp3j .ui-slider-handle:hover { background: transparent url('images/vol-handle.png') no-repeat -1px 0px; }
364
- div.vol_mp3j .ui-state-active, div.vol_mp3j .ui-widget-content .ui-state-active { background: transparent url('images/vol-handle.png') no-repeat -1px 0px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
365
 
366
- .mp3j-link-play { cursor:pointer; }
 
 
 
 
367
 
368
- #debug_mp3j { position:relative; border:1px solid #ccc; padding:10px; width:200px; }
369
- /* end_____________________________________________________________________________________ */
 
 
1
  /*
2
+ MP3-jPlayer 1.7.8 - Silver Player (alternative style)
3
+
4
+ */
 
 
 
 
 
 
 
 
 
5
 
6
  /* === [mp3-jplayer] ============================== */
7
 
53
  div.innertab {
54
  position: absolute;
55
  width: 100%;
56
+ bottom: 10px;
57
  left: 0px;
58
  top: 0px;
59
  /* background */
61
  }
62
 
63
 
64
+ /* SCREEN TEXT
65
  div.player-track-title,
66
  div.player-artist,
67
  div.jp-play-time,
68
  div.jp-total-time,
69
  div.statusMI {
 
70
  }
71
 
72
  div.player-track-title { position:absolute; font:normal normal 500 13px 'verdana', 'Lucida Grande', 'arial', sans-serif; top:8px; left:9px; width:auto; max-width:97%; line-height:15px; z-index:50; }
73
  div.player-track-title.mp3j_widgetmods { font-size: 11px; top: 9px; }
74
  div.player-artist { position:absolute; font:normal normal 500 10px 'verdana', 'Lucida Grande', 'arial', sans-serif; top:24px; left:28px; width:auto; max-width:95%; line-height:12px; height:auto; z-index:50; }
75
  div.player-artist.mp3j_widgetmods { font-size: 9px; }
76
+
77
+ div.player-track-title span { font:normal normal 500 10px 'verdana', 'Lucida Grande', 'arial', sans-serif; padding-left:10px; max-width:95%; line-height:12px; }
78
+ div.player-track-title.mp3j_widgetmods span { font-size: 9px; }
79
+
80
+ */
81
 
82
  /* STATUS */
83
+
84
+ /*
85
  div.jp-play-time,
86
  div.jp-total-time,
87
  div.statusMI {
90
  div.jp-play-time { right:79px; font-size:8px; }
91
  div.jp-total-time { right:7px; opacity:0.8; font-size:8px; }
92
  div.statusMI { right:34px; width:40px; font-size:8px; line-height:10px !important; height:10px !important; }
93
+
94
+
95
 
96
+ span.mp3-finding,
97
+ span.Smp3-finding,
98
+ span.mp3-tint,
99
+ span.mp3-gtint {
100
+ padding:0px 0px 0px 3px !important; font-size:8px !important; line-height:10px !important; height:10px !important; overflow:hidden !important; -moz-border-radius:5px !important; -webkit-border-radius:5px !important; border-radius:5px !important;
101
  }
102
+ span.mp3-finding, span.Smp3-finding {
103
+ margin:0px 0px 0px -2px;
104
+ background:url('images/finding-bar1f.gif') repeat-y 0px 3px;
105
  }
106
+ span.mp3-tint {
107
+ margin:0px 2px 0px -3px;
108
+ opacity:.5; filter:alpha(opacity=50);
109
  }
110
+ span.mp3-gtint {
111
+ margin:0px 2px 0px -3px;
112
+ opacity:.5; filter:alpha(opacity=50);
113
+ background:#777;
114
  }
115
+ span.Smp3-finding { margin:0px 0px 0px 3px; }
116
+ */
117
+
118
+
119
+
120
+ /* SCREEN
121
+ ----------------- */
122
+ div.player-track-title, div.jp-play-time, div.jp-total-time, div.statusMI { position:absolute; z-index:50; /* color set from admin */ font:normal normal 500 14px/16px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
123
+
124
+ div.player-track-title { top:9px; left:9px; width:auto; right:10px; }
125
+ div.player-track-title span { font-size:10px; line-height:12px; padding-left:10px; max-width:95%; }
126
+
127
+
128
+ div.jp-play-time, div.jp-total-time, div.statusMI { font-size:8px; line-height:10px !important; bottom:52px; text-align:left; font-family:Verdana, Arial, Helvetica, sans-serif; }
129
+ div.jp-play-time { right:84px; }
130
+ div.jp-total-time { right:6px; opacity:0.8; width:auto; }
131
 
132
+
133
+
134
+
135
+ span.mp3-finding, span.Smp3-finding, span.mp3-tint, span.mp3-gtint { padding:0px 0px 0px 6px !important; font-size:8px !important; line-height:10px !important; height:10px !important; overflow:hidden !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
136
+ span.mp3-finding, span.Smp3-finding { margin:0px 0px 0px -2px; background:url('images/finding-bar1f.gif') repeat 0px 3px; }
137
+ span.mp3-tint { margin:0px 2px 0px -6px; opacity:.5; filter:alpha(opacity=50); /* background set from admin */ }
138
+ span.mp3-gtint { margin:0px 2px 0px -6px; opacity:.5; filter:alpha(opacity=50); background:#777; }
139
+ span.Smp3-finding { margin:0px 0px 0px 3px; }
140
+ span.tintmarg { margin:0 2px 0 3px; }
141
+
142
+ div.statusMI { right:27px; width:52px !important; height:10px; }
143
+ .statusMI span.mp3-finding, .statusMI span.Smp3-finding, .statusMI span.mp3-tint, .statusMI span.mp3-gtint { padding:0px 0px 0px 6px !important; }
144
+ .statusMI span.mp3-tint, .statusMI span.mp3-gtint { margin:0px 2px 0px -6px; }
145
+
146
+ .MI-image { position:absolute; top:0; left:0; padding:0; }
147
+ .MI-image img { border:none; padding:0px; background-color:#bbb; }
148
+ .MI-image a:hover img { /* background-colour set from admin */ }
149
+
150
+
151
+
152
+
153
+
154
 
155
  /* DIV TRANSPORT since 1.6 */
156
  /* Transport wrap */
178
  div.playlist-toggle-MI:hover { background:#c6c6c6; color:#808080; border-right:1px solid #a9a9a9; }
179
 
180
  /* DOWNLOAD BUTTON */
181
+ div.dloadmp3-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; bottom:49px; margin:0px !important; font-size:9px !important; text-align:center; left:0px; width:41%; min-width:75px; max-width:225px; padding:0px 0px 0px 0px !important; border:0px; background:transparent url('images/t10b.png') repeat left top !important; color:#fff; line-height:11px !important; -moz-border-radius-topright:3px; -webkit-border-top-right-radius:3px; overflow:hidden; z-index:150; cursor:default; }
182
  div.dloadmp3-MI.betweenlinks { background:transparent url('images/t10b.png') repeat left top !important; }
183
+ div.dloadmp3-MI.whilelinks, div.dloadmp3-MI.logintext { background:#696969 !important; }
184
  div.dloadmp3-MI.whilelinks:hover { background:#777 !important; }
185
 
186
  div.dloadmp3-MI a { color:#ececec; display:block; width:auto; padding:1px 5px 2px 2px !important; margin:0px !important; background:transparent; text-decoration:none !important; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; font-size:9px !important; line-height:11px !important; /* after font declaration */ height:100%; border-bottom:none; visibility:hidden; }
189
  div.dloadmp3-MI.whilelinks a { color: #f3f3f3; visibility: inherit; }
190
  div.dloadmp3-MI.whilelinks a:hover { color: #fff; }
191
 
192
+ div.dloadmp3-MI p { color:#ececec; display:block; width:auto; padding:1px 5px 2px 2px !important; margin:0px !important; background:transparent; text-decoration:none !important; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; font-size:9px !important; line-height:11px !important; /* after font declaration */ height:100%; border-bottom:none; visibility:visible; }
193
+
194
  /* POPOUT BUTTON */
195
  div.mp3j-popout-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif; bottom:18px; left:0px; height:16px; color:#595959; padding:3px 5px 0px 28px; min-width:2px; line-height:11px; border:1px solid #acacac; background:#bfbfbf url('images/buttons-popout.png') no-repeat -5px -5px; -moz-border-radius:2px; -webkit-border-radius:2px; cursor:default; z-index:30; }
196
  div.mp3j-popout-MI:hover { color:#606060; background:#c6c6c6 url('images/buttons-popout.png') no-repeat -5px -35px; }
211
  }
212
 
213
 
 
 
214
  div.MIsliderVolume { position:absolute;
215
  top:7px;
216
  right: 10px;
263
  border-left: 0px;
264
  border-right: 0px;
265
  margin-right: 20px;
 
 
266
  }
267
 
268
+ div.poscolMI_mp3j { position:absolute; top:0px; left:0px; bottom:1px;
269
+ /* background */
270
+ /* opacity */
271
+ }
272
  div.posbarMI_mp3j { position: absolute;
273
+ /*background: #989898;*/
274
  top: 0px;
275
  font-size: 5px;
276
+ border: 0px solid #989898;
277
  border-bottom: 0px solid #888;
278
  border-left: 0px solid #888;
279
  left: 0px;
298
  outline: none; }
299
 
300
  /* LOAD BAR */
301
+ div.loadMI_mp3j { position:absolute; top:6px; left:0px; bottom:0px;
302
  /* background */
303
  /* opacity */
304
  }
305
 
 
306
  div.bars_holder .ui-progressbar .ui-progressbar-value {margin: 0px; height:100%;
307
  /* background */
308
  /* opacity */
328
  }
329
  ul.UL_mp3j li { margin:0px !important; padding:0px 0px 0px 15px !important; content:none !important; background:none !important; }
330
  ul.UL_mp3j li:before { content:none !important; }
331
+ ul.UL-MI_mp3j li { margin:0px !important; padding:0px 0px 1px 0px !important; font-weight:500 !important; line-height:16px !important; letter-spacing:0px !important; font-size:11px !important; word-spacing:0px !important; margin:0px 1px 0px 1px !important; }
332
  ul.UL-MI_mp3j li:before { content:none !important; }
333
+ ul.UL-MI_mp3j.mp3j_widgetmods li { font-size:10px !important; line-height:14px !important; }
334
+
335
+ ul.UL-MI_mp3j li a { font-size:11px !important; border:0 !important; line-height:16px !important; font-weight:500 !important; text-decoration:none !important; display:block !important; width:auto !important; font-family:'verdana', 'Lucida Grande', 'arial', sans-serif !important; outline:none !important; padding:6px 0px 6px 14px !important; }
336
+ ul.UL-MI_mp3j.mp3j_widgetmods li a { font-size:10px !important; line-height:14px !important; }
337
+
338
+ .MI-image { position:absolute; top:0; left:0; padding:0; }
339
+ .MI-image a img { border:none; padding:1px; background-color:#ccc; }
340
+ .MI-image a:hover img { /* background-colour */ }
341
+
342
+
343
+ /*-------------------------
344
+ [mp3j] & [mp3t] SHORTCODES
345
+ ==================================== */
346
+ span.wrap_inline_mp3j { position:relative; width:auto; cursor:pointer; padding:0; white-space:nowrap; text-align:left; }
347
+ /*span.wrap_inline_mp3j:hover .buttons_mp3j { background:transparent url('images/transport-shard-B.png') no-repeat -80px -35px; }*/
348
+ span.indi_mp3j { position:relative; padding-left:2px; font-size: 0.7em !important; }
349
+
350
+ /* BARS */
351
+ span.bars_mp3j { position:absolute; width:100%; height:100%; }
352
+ span.load_mp3j, span.loadB_mp3j { position:absolute; /* background */ top:20px; left:0px; height:2px; }
353
+ /* mp3t */
354
+ span.posbar_mp3j { position:absolute; width:100%; height:100%; border:0px solid #f77; }
355
+ span.posbar_mp3j .ui-widget-header { z-index:-500; }
356
+ span.posbar_mp3j .ui-slider-handle { top: 2px; margin-left:-2px; border:1px solid #999; height:21px; width:4px; z-index:500; background:url('images/t20b.png') repeat; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
357
+ span.posbar_mp3j .ui-slider-handle:hover { background:url('images/t15b.png') repeat; border-color:#aaa; }
358
+ /* mp3j */
359
+ span.posbarB_mp3j { position:absolute; width:100%; height:100%; border:0; z-index:450; cursor:pointer; }
360
+ span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:450; height:100%; }
361
+ span.posbarB_mp3j .ui-slider-handle { top: 0px; margin-left:-6px !important; border:0px solid #888; height:23px; width:12px !important; z-index: 500; background: transparent url('images/inlineHandle2.png') no-repeat -3px -3px; cursor: default; padding:0px !important; }
362
+ span.posbarB_mp3j .ui-slider-handle:hover { background: transparent url('images/inlineHandle2.png') no-repeat -3px -33px; }
363
+
364
+ /* SPAN TRANSPORT */
365
+ span.group_wrap { position:relative; margin:0px 0px 0px 0px; width:auto; }
366
+ span.textbutton_mp3j, span.T_mp3j { position:relative; width:auto; margin:0px; padding:0px; }
367
+ span.buttons_mp3j { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -80px -3px; }
368
+ span.buttons_mp3j:hover { background:transparent url('images/transport-shard-B.png') no-repeat -80px -35px; }
369
+ span.buttons_mp3jpause { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -2px -3px; }
370
+ span.buttons_mp3jpause:hover { background:transparent url('images/transport-shard-B.png') no-repeat -2px -35px; }
371
 
372
+ /* VOLUMES */
373
+ span.vol_mp3t { position:absolute; top:-4px; right:4px; width:90%; max-width:100px; height:2px; }
374
+ span.vol_mp3j { position:absolute; top:-9px; right:5px; width:85%; max-width:100px; height:2px; }
375
+ span.vol_mp3j.flipped { right:4px; }
376
+ span.vol_mp3t .ui-widget-header, span.vol_mp3j .ui-widget-header { background: transparent url('images/vol-grad60b2.png') repeat left top; z-index:500; height:100%; }
377
+ span.vol_mp3t .ui-slider-handle, span.vol_mp3j .ui-slider-handle { height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; border:0px !important; border-radius:2px; -moz-border-radius:2px; -webkit-border-radius:2px; z-index:600; overflow:hidden !important; cursor:default; top:-6px; background: transparent url('images/vol-handle.png') no-repeat -1px 0px; }
378
+ span.vol_mp3t .ui-slider-handle:hover, span.vol_mp3j .ui-slider-handle:hover { background: transparent url('images/vol-handle.png') no-repeat -21px 0px; }
379
+ span.vol_mp3t .ui-state-active, span.vol_mp3t .ui-widget-content .ui-state-active, span.vol_mp3j .ui-state-active, span.vol_mp3j .ui-widget-content .ui-state-active { background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none; border:0px; }
380
 
381
 
382
+ /*----------------------
383
+ [mp3j-popout] SHORTCODE
384
+ ================================================= */
385
+ .mp3j-popout-link-wrap { cursor:pointer; position:relative; clear:left; }
386
+ .mp3j-popout-link { float:left; margin:0 5px 0 0; min-width:22px; min-height:18px; background:url('images/buttons-popout.png') no-repeat -10px -65px; }
387
+ .mp3j-popout-link-wrap:hover .mp3j-popout-link { background:url('images/buttons-popout.png') no-repeat -10px -95px; }
388
 
 
389
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
390
 
391
+
392
+ /*=================================================
393
+
394
+ MODS
395
+ (via 'style' param in shortcode)
396
+ ================================================= */
397
+
398
+ /* ===== "nolistbutton" ===== */
399
+ .nolistbutton div.playlist-toggle-MI { visibility:hidden; }
400
 
401
+ /* ===== "nopopoutbutton" ===== */
402
+ .nopopoutbutton div.mp3j-popout-MI { display:none; }
403
+
404
+ /* ===== "nopn" ===== */
405
+ .nopn div.Prev_mp3j { display:none; }
406
+ .nopn div.Next_mp3j { display:none; }
407
+
408
+ /* ===== "nostop" ===== */
409
+ .nostop div.stop_mp3j { display:none; }
410
+
411
+
412
+ /* ===== "bars100" ===== */
413
+ .bars100 div.player-track-title { left:112px; }
414
+ .bars100 div.dloadmp3-MI { left:102px; width:36%;}
415
+ .bars100 div.bars_holder { left:102px; width:auto; }
416
+ .bars100 .MI-image img { padding:1px; }
417
+ .bars100 div.player-track-title { top:20px; }
418
+
419
+ /* ===== "bars150" ===== */
420
+ .bars150 div.player-track-title { left:162px; }
421
+ .bars150 div.dloadmp3-MI { left:152px; width:33%;}
422
+ .bars150 div.bars_holder { left:152px; width:auto; }
423
+ .bars150 .MI-image img { padding:1px; }
424
+ .bars150 div.player-track-title { top:20px; }
425
+
426
+ /* ===== "bars200" ===== */
427
+ .bars200 div.player-track-title { left:212px; }
428
+ .bars200 div.dloadmp3-MI { left:202px; width:30%; }
429
+ .bars200 div.bars_holder { left:202px; width:auto; }
430
+ .bars200 .MI-image img { padding:1px; }
431
+ .bars200 div.player-track-title { top:20px; }
432
+
433
+ /* ===== "bars250" ===== */
434
+ .bars250 div.player-track-title { left:262px; }
435
+ .bars250 div.dloadmp3-MI { left:252px; width:27%;}
436
+ .bars250 div.bars_holder { left:252px; width:auto; }
437
+ .bars250 .MI-image img { padding:1px; }
438
+ .bars250 div.player-track-title { top:20px; }
439
+
440
+ /* ===== "bars300" ===== */
441
+ .bars300 div.player-track-title { left:312px; }
442
+ .bars300 div.dloadmp3-MI { left:302px; width:24%; }
443
+ .bars300 div.bars_holder { left:302px; width:auto; }
444
+ .bars300 .MI-image img { padding:1px; }
445
+ .bars300 div.player-track-title { top:20px; }
446
+
447
+ /* ===== "bars350" ===== */
448
+ .bars350 div.player-track-title { left:362px; }
449
+ .bars350 div.dloadmp3-MI { left:352px; width:21%;}
450
+ .bars350 div.bars_holder { left:352px; width:auto; }
451
+ .bars350 .MI-image img { padding:1px; }
452
+ .bars350 div.player-track-title { top:20px; }
453
+
454
+ /* ===== "bars400" ===== */
455
+ .bars400 div.player-track-title { left:412px; }
456
+ .bars400 div.dloadmp3-MI { left:402px; width:18%; }
457
+ .bars400 div.bars_holder { left:402px; width:auto; }
458
+ .bars400 .MI-image img { padding:1px; }
459
+ .bars400 div.player-track-title { top:20px; }
460
+
461
+ /* ===== bigger1 ===== */
462
+ .bigger1 { font-size:18px; line-height:26px !important; margin:0 !important; }
463
+ .bigger1 span.load_mp3j,
464
+ .bigger1 span.loadB_mp3j { top:24px; left:0px; height:2px; }
465
+ .bigger1 span.posbar_mp3j .ui-slider-handle { top: 3px; height:24px; width:6px !important; margin-left:-3px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
466
+ .bigger1 span.posbarB_mp3j .ui-slider-handle { top: 3px; margin-left:-3px !important; border:1px solid #999; height:24px; width:6px !important; z-index:500; background:url('images/mp3t-poshandle.png') repeat-y -50px 0px; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
467
+ .bigger1 span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/mp3t-poshandle.png') repeat-y 0px 0px; border-color:#aaa; }
468
+ .bigger1 span.buttons_mp3j { position:relative; margin:0px; margin-left:5px !important; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -80px 0px; }
469
+ .bigger1 span.buttons_mp3j:hover { background:transparent url('images/transport-shard-B.png') no-repeat -80px -32px; }
470
+ .bigger1 span.buttons_mp3jpause { position:relative; margin:0px; margin-left:5px !important; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -2px 0px; }
471
+ .bigger1 span.buttons_mp3jpause:hover { background:transparent url('images/transport-shard-B.png') no-repeat -2px -32px; }
472
+ .bigger1 span.vol_mp3j { position:absolute; top:-6px; right:7px; width:85%; max-width:100px; height:2px; }
473
 
474
+ .bigger1 div.player-track-title { font:normal normal 500 18px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
 
475
 
476
+ .bigger1 div.player-track-title span { font:normal normal 500 14px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
477
+ .bigger1 ul.UL-MI_mp3j li a, .bigger1 ul.UL-MI_mp3j li { font-size:16px !important; line-height:19px !important; }
478
+ .bigger1 .indi_mp3j { font-size: 0.6em !important; }
479
+
480
+ /* ===== "bigger2" ===== */
481
+ .bigger2 div.player-track-title { font:normal normal 500 36px/38px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
482
+ .bigger2 div.player-track-title span { font:normal normal 500 20px/22px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
483
+ .bigger2 ul.UL-MI_mp3j li a, .bigger2 ul.UL-MI_mp3j li { font-size:20px !important; line-height:24px !important; }
484
+ .bigger2 { font-size:23px; line-height:25px !important; margin:0 !important; }
485
+ .bigger2 span.load_mp3j,
486
+ .bigger2 span.loadB_mp3j { top:26px; left:0px; height:2px; }
487
+ .bigger2 span.posbar_mp3j .ui-slider-handle { top: 0px; height:28px; width:6px !important; margin-left:-3px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
488
+ .bigger2 span.posbarB_mp3j .ui-slider-handle { top: -1px; margin-left:-3px !important; border:1px solid #999; height:29px; width:8px !important; z-index:500; border-color:#aaa; background:url('images/mp3t-poshandle.png') repeat-y 0px 0px; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
489
+ .bigger2 span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/mp3t-poshandle.png') repeat-y -50px 0px; border-color:#999; }
490
+ .bigger2 span.buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:2px 0px 4px 20px !important; background:url('images/play-dark2-b.png') no-repeat -186px center; border:0px solid #bbb; margin-left:10px; }
491
+ .bigger2 span.buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -437px center; }
492
+ .bigger2 span.buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:0px 0px 2px 20px !important; background:url('images/stop-dark2-b.png') repeat-y 0px top; border:0px solid #bbb; margin-left:10px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
493
+ .bigger2 span.buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
494
+ .bigger2 span.vol_mp3j { position:absolute; top:-12px; right:4px; width:85%; max-width:100px; height:2px; }
495
+ .bigger2 span.vol_mp3t { position:absolute; top:-10px; width:85%; max-width:100px; height:2px; }
496
+ .bigger2 .Smp3-finding,
497
+ .bigger2 .mp3-tint,
498
+ .bigger2 .mp3-gtint { margin-left:8px; margin-right:6px; padding:0px 0px 0px 10px !important; font-size:12px !important; line-height:12px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
499
+ .bigger2 .mp3-gtint { margin:0 6px 0 -16px; }
500
+ .bigger2 .indi_mp3j { font-size: 0.5em !important; padding-left:0px; }
501
+
502
+ .bigger2.wh .buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:2px 0px 4px 20px !important; background:url('images/play-dark2-w.png') no-repeat -186px center; border:0px solid #bbb; margin-left:10px; }
503
+ .bigger2.wh .buttons_mp3j:hover { background:url('images/play-dark2-w.png') no-repeat -437px center; }
504
+ .bigger2.wh .buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:0px 0px 2px 20px !important; background:url('images/stop-dark2-w.png') repeat-y 0px top; border:0px solid #bbb; margin-left:10px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
505
+ .bigger2.wh .buttons_mp3jpause:hover { background:url('images/stop-dark2-w.png') repeat-y -350px top; }
506
 
507
+
508
+
509
+ /* ===== bigger3 ===== */
510
+ .bigger3 { font-size:28px; line-height:36px !important; margin:0 !important; }
511
+ .bigger3 .load_mp3j, .bigger3 .loadB_mp3j { top:37px; left:0px; height:3px; }
512
+ .bigger3 .posbar_mp3j .ui-slider-handle, .bigger3 .posbarB_mp3j .ui-slider-handle { top: 0px; border:1px solid #bbb; height:40px; width:12px !important; margin-left:-5px !important; background:url('images/stop-dark2.png') repeat-y -350px top; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
513
+ .bigger3 .posbar_mp3j .ui-slider-handle:hover, .bigger3 .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2.png') repeat-y 0px top; border:1px solid #aaa; }
514
+ .bigger3 .indi_mp3j { font-size: 0.5em !important; }
515
+ .bigger3 span.buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:8px 0px 12px 30px !important; background:url('images/play-dark2.png') no-repeat -177px center; border:0px solid #bbb; margin-left:12px; }
516
+ .bigger3 span.buttons_mp3j:hover { background:url('images/play-dark2.png') no-repeat -428px center; }
517
+ .bigger3 span.buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:2px 0px 6px 30px !important; background:url('images/stop-dark2.png') repeat-y 0px top; border:0px solid #bbb; margin-left:12px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
518
+ .bigger3 span.buttons_mp3jpause:hover { background:url('images/stop-dark2.png') repeat-y -350px top; }
519
+ .bigger3 .vol_mp3j { height:1px; max-width:110px; right:64px; top:-8px; }
520
+ .bigger3 .vol_mp3t { height:1px; max-width:110px; right:16px; top:-5px; }
521
+ .bigger3 .vol_mp3j .ui-slider-handle, .bigger3 .vol_mp3t .ui-slider-handle { height:14px !important; width:33px !important; margin-left:-16px; border-bottom:1px solid #ccc !important; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; top:-14px; background:url('images/volhandle-dark2.png') no-repeat -10px bottom; }
522
+ .bigger3 .vol_mp3j .ui-slider-handle:hover, .bigger3 .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2.png') no-repeat -257px bottom; }
523
+ .bigger3 .Smp3-finding,
524
+ .bigger3 .mp3-tint,
525
+ .bigger3 .mp3-gtint { margin-left:8px; padding:0px 0px 0px 14px !important; font-size:18px !important; line-height:20px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
526
+ .bigger3 .mp3-gtint { margin:0 2px 0 -14px; }
527
+ .bigger3 div.player-track-title { font:normal normal 500 44px/46px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
528
+ .bigger3 div.player-track-title span { font:normal normal 500 28px/30px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
529
+ .bigger3 ul.UL-MI_mp3j li a, .bigger3 ul.UL-MI_mp3j li { font-size:28px !important; line-height:30px !important; }
530
+
531
+ .bigger3.bl span.buttons_mp3j { background:url('images/play-dark2-b.png') no-repeat -177px center; }
532
+ .bigger3.bl span.buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -428px center; }
533
+ .bigger3.bl span.buttons_mp3jpause { background:url('images/stop-dark2-b.png') repeat-y 0px top; }
534
+ .bigger3.bl span.buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
535
+ .bigger3.bl span.vol_mp3j .ui-slider-handle, .bigger3.bl span.vol_mp3t .ui-slider-handle { background:url('images/volhandle-dark2-b.png') no-repeat -10px bottom; }
536
+ .bigger3.bl span.vol_mp3j .ui-slider-handle:hover, .bigger3.bl span.vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-b.png') no-repeat -257px bottom; }
537
 
538
+
539
+
540
+ /* ===== bigger4 ===== */
541
+ .bigger4 { font-size:38px; line-height:46px !important; margin:0 !important; }
542
+ .bigger4 .load_mp3j, .bigger4 .loadB_mp3j { top:46px; left:0px; height:3px; }
543
+ .bigger4 .posbar_mp3j .ui-slider-handle, .bigger4 .posbarB_mp3j .ui-slider-handle { top: -2px; border:1px solid #bbb; height:52px; width:16px !important; margin-left:-8px !important; background:url('images/stop-dark2.png') repeat-y -350px top; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
544
+ .bigger4 .posbar_mp3j .ui-slider-handle:hover, .bigger4 .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2.png') repeat-y 0px top; border:1px solid #aaa; }
545
+ .bigger4 .indi_mp3j { font-size: 0.5em !important; }
546
+ .bigger4 span.buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:8px 0px 12px 40px !important; background:url('images/play-dark2.png') no-repeat -167px center; border:0px solid #bbb; margin-left:15px; }
547
+ .bigger4 span.buttons_mp3j:hover { background:url('images/play-dark2.png') no-repeat -418px center; }
548
+ .bigger4 span.buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:2px 0px 4px 40px !important; background:url('images/stop-dark2.png') repeat-y 0px top; border:0px solid #bbb; margin-left:15px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
549
+ .bigger4 span.buttons_mp3jpause:hover { background:url('images/stop-dark2.png') repeat-y -350px top; }
550
+ .bigger4 .vol_mp3j { height:1px; max-width:110px; right:86px; top:-8px; }
551
+ .bigger4 .vol_mp3t { height:1px; max-width:110px; right:20px; top:-5px; }
552
+ .bigger4 .vol_mp3j .ui-slider-handle, .bigger4 .vol_mp3t .ui-slider-handle { height:20px !important; width:43px !important; margin-left:-21px; border-bottom:1px solid #ccc !important; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; top:-20px; background:url('images/volhandle-dark2.png') no-repeat -10px bottom; }
553
+ .bigger4 .vol_mp3j .ui-slider-handle:hover, .bigger4 .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2.png') no-repeat -257px bottom; }
554
+ .bigger4 .Smp3-finding,
555
+ .bigger4 .mp3-tint,
556
+ .bigger4 .mp3-gtint { margin-left:8px; margin-right:6px; padding:0px 0px 0px 14px !important; font-size:18px !important; line-height:20px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
557
+ .bigger4 .mp3-gtint { margin:0 6px 0 -20px; }
558
+
559
+ .bigger4 div.player-track-title { font:normal normal 500 44px/46px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
560
+ .bigger4 div.player-track-title span { font:normal normal 500 28px/30px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
561
+ .bigger4 ul.UL-MI_mp3j li a, .bigger4 ul.UL-MI_mp3j li { font-size:28px !important; line-height:30px !important; }
562
+
563
+ .bigger4.bl .posbar_mp3j .ui-slider-handle, .bigger4.bl .posbarB_mp3j .ui-slider-handle { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
564
+ .bigger4.bl .posbar_mp3j .ui-slider-handle:hover, .bigger4.bl .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2-b.png') repeat-y 0px top; }
565
+ .bigger4.bl .buttons_mp3j { background:url('images/play-dark2-b.png') no-repeat -167px center; }
566
+ .bigger4.bl .buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -418px center; }
567
+ .bigger4.bl .buttons_mp3jpause { background:url('images/stop-dark2-b.png') repeat-y 0px top; }
568
+ .bigger4.bl .buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
569
+ .bigger4.bl .vol_mp3j .ui-slider-handle, .bigger4.bl .vol_mp3t .ui-slider-handle { background:url('images/volhandle-dark2-b.png') no-repeat -10px bottom; }
570
+ .bigger4.bl .vol_mp3j .ui-slider-handle:hover, .bigger4.bl .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-b.png') no-repeat -257px bottom; }
571
 
572
+
573
+
574
+ /* ===== bigger5 ===== */
575
+ .bigger5 { font-size:48px; line-height:60px !important; margin:0 !important; }
576
+ .bigger5 .load_mp3j, .bigger5 .loadB_mp3j { top:63px; left:0px; height:4px; }
577
+ .bigger5 .posbar_mp3j .ui-slider-handle, .bigger5 .posbarB_mp3j .ui-slider-handle { top: -1px; border:1px solid #bbb; height:69px; width:20px !important; margin-left:-10px !important; background:url('images/stop-dark2.png') repeat-y -350px top; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
578
+ .bigger5 .posbar_mp3j .ui-slider-handle:hover, .bigger5 .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2.png') repeat-y 0px top; border:1px solid #aaa; }
579
+ .bigger5 .indi_mp3j { font-size: 0.5em !important; }
580
+ .bigger5 span.buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:8px 0px 13px 52px !important; background:url('images/play-dark2.png') no-repeat -154px center; border:0px solid #bbb; margin-left:20px; }
581
+ .bigger5 span.buttons_mp3j:hover { background:url('images/play-dark2.png') no-repeat -405px center; }
582
+ .bigger5 span.buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:3px 0px 8px 52px !important; background:url('images/stop-dark2.png') repeat-y 0px top; border:0px solid #bbb; margin-left:15px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
583
+ .bigger5 span.buttons_mp3jpause:hover { background:url('images/stop-dark2.png') repeat-y -350px top; }
584
+ .bigger5 .vol_mp3j { height:1px; max-width:170px; right:115px; top:-10px; }
585
+ .bigger5 .vol_mp3t { height:1px; max-width:170px; right:33px; top:-5px; }
586
+ .bigger5 .vol_mp3j .ui-slider-handle, .bigger5 .vol_mp3t .ui-slider-handle { height:30px !important; width:55px !important; margin-left:-21px; border-bottom:1px solid #aaa !important; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; top:-30px; background:url('images/volhandle-dark2.png') no-repeat -10px bottom; }
587
+ .bigger5 .vol_mp3j .ui-slider-handle:hover, .bigger5 .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2.png') no-repeat -257px bottom; }
588
+ .bigger5 .Smp3-finding,
589
+ .bigger5 .mp3-tint,
590
+ .bigger5 .mp3-gtint { margin-left:8px; margin-right:6px; padding:0px 0px 0px 14px !important; font-size:18px !important; line-height:20px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
591
+ .bigger5 .mp3-gtint { margin:0 6px 0 -20px; }
592
+
593
+ .bigger5.bl .posbar_mp3j .ui-slider-handle, .bigger5.bl .posbarB_mp3j .ui-slider-handle { background:url('images/stop-dark2-b.png') repeat-y -350px top; border:1px solid #888; }
594
+ .bigger5.bl .posbar_mp3j .ui-slider-handle:hover, .bigger5.bl .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2-b.png') repeat-y 0px top; border:1px solid #777; }
595
+ .bigger5.bl .buttons_mp3j { background:url('images/play-dark2-b.png') no-repeat -154px center; border:0px solid #bbb; margin-left:20px; }
596
+ .bigger5.bl .buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -405px center; }
597
+ .bigger5.bl .buttons_mp3jpause { background:url('images/stop-dark2-b.png') repeat-y 0px top; }
598
+ .bigger5.bl .buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
599
+ .bigger5.bl .vol_mp3j .ui-slider-handle, .bigger5.bl .vol_mp3t .ui-slider-handle { background:url('images/volhandle-dark2-b.png') no-repeat -10px bottom; }
600
+ .bigger5.bl .vol_mp3j .ui-slider-handle:hover, .bigger5.bl .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-b.png') no-repeat -257px bottom; }
601
+
602
+
603
+ /* ===== "smaller" ===== */
604
+ .smaller div.player-track-title { font:normal normal 500 11px/13px 'verdana', 'Lucida Grande', 'arial', sans-serif !important; left:3px; right:5px; }
605
+ .smaller div.player-track-title span { font:normal normal 500 10px/10px 'verdana', 'Lucida Grande', 'arial', sans-serif !important; padding:0; }
606
+ .smaller ul.UL-MI_mp3j li a, .smaller ul.UL-MI_mp3j li { font-size:10px !important; font-family:'verdana', Helvetica, sans-serif !important; line-height:13px !important; }
607
+
608
+
609
+ /* ===== outline ==== */
610
+ span.outline { font-size:14px; line-height:22px !important; margin:0 !important; }
611
+ .outline span.vol_mp3t { position:absolute; top:-4px; right:4px; width:90%; max-width:100px; height:2px; background: transparent; }
612
+ .outline span.vol_mp3j { position:absolute; top:-9px; right:7px; width:85%; max-width:100px; height:2px; background: transparent; }
613
+ .outline span.buttons_mp3j { padding:2px 0px 5px 20px !important; background: transparent url('images/transport-outline.png') no-repeat -80px -1px; border:0; margin:0; }
614
+ .outline span.buttons_mp3j:hover { background:transparent url('images/transport-outline.png') no-repeat -80px -33px; }
615
+ .outline span.buttons_mp3jpause { padding:2px 0px 5px 20px !important; background: transparent url('images/transport-outline.png') no-repeat 1px -1px; border:0; margin:0; }
616
+ .outline span.buttons_mp3jpause:hover { background:transparent url('images/transport-outline.png') no-repeat 1px -33px; }
617
+ .outline span.posbarB_mp3j { position:absolute; width:100%; height:100%; border:0px solid #f77; }
618
+ .outline span.posbarB_mp3j .ui-widget-header { z-index:-500; }
619
+ .outline span.posbarB_mp3j .ui-slider-handle { top: 0px; margin-left:0px; border:1px solid #aaa; height:23px; width:5px !important; z-index:500; background:url('images/t10b.png') repeat; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
620
+ .outline span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/t20b.png') repeat; border-color:#777; }
621
 
622
+
623
+ /* ===== wtransbars ==== */
624
+ .wtransbars div.loadMI_mp3j { background:#fff; opacity:0.1; filter:alpha(opacity=10); }
625
+ .wtransbars div.poscolMI_mp3j { background:#fff url('http://sjward.org/wp-content/plugins/mp3-jplayer/css/images/posbar-soften-tipped-2.png') repeat-y right top; opacity:0.15; filter:alpha(opacity=15); }
626
+ .wtransbars div.player-track-title { color:#fff; }
627
 
628
+ /* ===== btransbars ==== */
629
+ .btransbars div.loadMI_mp3j { background:#000; opacity:0.1; filter:alpha(opacity=10); }
630
+ .btransbars div.poscolMI_mp3j { background:#000 url('http://sjward.org/wp-content/plugins/mp3-jplayer/css/images/posbar-soften-tipped-2.png') repeat-y right top; opacity:0.15; filter:alpha(opacity=15); }
631
+ .btransbars div.player-track-title { color:#000; }
css/player-text.css DELETED
@@ -1,368 +0,0 @@
1
- /*
2
- MP3-jPlayer 1.7 - Text based Player
3
-
4
- - This style sheet allows for the user 'colour settings' set from admin. The commented-out properties are set by the plugin,
5
- they can be overidden by setting them directly in the sheet.
6
- - The class .mp3j_widgetmods is added when mods="y" is used in a shortcode/widget. It can
7
- be added to the following elements:
8
-
9
- on [mp3-jplayer]
10
- div.player-track-title, div.player-artist, div.dloadmp3-MI, div.playlist-toggle-MI, div.mp3j-popout-MI, div.statusMI, div.jp-playlist li
11
- on [mp3-album] :
12
- on [mp3-basic] :
13
- on [mp3j] or [mp3t] : */
14
-
15
- /* === [mp3-jplayer] ============================== */
16
- /* POSITION AND WIDTH */
17
- div.wrap-MI { border:0; margin:0; background:transparent;
18
- /* position || float */
19
- /* width */
20
- min-width:116px;
21
- }
22
- div.jp-innerwrap,
23
- div.jp-interface,
24
- div.innertab,
25
- div.bars_holder,
26
- div.playlist-wrap-MI {
27
- width:100%;
28
- }
29
-
30
- div.jp-innerwrap { position:relative !important; background:transparent; border:0; margin:0; }
31
- div.jp-interface { position:relative !important; height:96px; min-height:67px; border-top:0px solid #e8e8e8; margin:0; cursor:default; }
32
-
33
- /* BACKGROUNDS */
34
- div.innerx { position: absolute; visibility: hidden; }
35
- div.innerleft { position: absolute; visibility: hidden; }
36
- div.innerright { position: absolute; visibility: hidden; }
37
-
38
- /* SCREEN BACKGROUND -------------- */
39
- div.innertab {
40
- position: absolute;
41
- width: 100%;
42
- bottom: 47px;
43
- left: 0px;
44
- top: 0px;
45
- /* background */
46
- /* opacity */
47
- }
48
-
49
- /* SCREEN TEXT */
50
- div.player-track-title,
51
- div.player-artist,
52
- div.jp-play-time,
53
- div.jp-total-time,
54
- div.statusMI {
55
- /* color */
56
- }
57
-
58
-
59
- div.player-track-title {
60
- position: absolute;
61
- top: 4px;
62
- left: 15px;
63
- font-size: 16px;
64
- width: auto;
65
- max-width: 97%;
66
- height:auto;
67
- overflow: visible;
68
- z-index: 50;
69
- font-family: 'trebuchet ms', Arial, sans-serif;
70
- }
71
- div.player-track-title.mp3j_widgetmods {
72
- font-size: 14px;
73
- }
74
-
75
-
76
- div.player-artist {
77
- position: absolute;
78
- top: 27px;
79
- left: 16px;
80
- width: auto;
81
- max-width: 96%;
82
- padding: 0px 0px 0px 0px;
83
- font-size: 12px;
84
- font-style: italic;
85
- opacity:0.7;
86
- filter:alpha(opacity=70);
87
- line-height:14px;
88
- overflow: visible;
89
- /*overflow: hidden;*/
90
- z-index: 50;
91
- font-family: 'trebuchet ms', Arial, sans-serif;
92
- }
93
- div.player-artist.mp3j_widgetmods {
94
- font-size: 11px;
95
- }
96
-
97
-
98
- div.jp-play-time,
99
- div.jp-total-time,
100
- div.statusMI { position: absolute;
101
- left: 2px;
102
- text-align: left;
103
- font-size: 11px;
104
- z-index: 50;
105
- font-family: 'trebuchet ms', Arial, sans-serif;
106
- }
107
-
108
- div.jp-play-time { bottom: 26px; width:37px; opacity:0.6; filter:alpha(opacity=60); }
109
- /*div.jp-total-time { top: 63px; width:37px; visibility:hidden; } */
110
- div.jp-total-time { visibility:hidden; }
111
- div.statusMI { bottom: 26px; left: 37px; }
112
-
113
- /*span.mp3-finding { background: url('../css/images/finding-bar1b.gif') repeat-y -4px 3px; margin-left: -3px; padding-left: 4px; }
114
- span.mp3-loading { background: url('../css/images/finding-bar1b.gif') repeat-y -4px 3px; margin-left: -3px; padding-left: 4px; } */
115
-
116
-
117
- span.mp3-finding, span.mp3-loading, span.mp3-tint {
118
- margin: 0px 0px 0px -3px !important;
119
- padding: 0px 0px 0px 3px !important;
120
- font-size: 8px !important;
121
- line-height: 10px !important;
122
- height: 10px !important;
123
- overflow: hidden !important;
124
- }
125
- span.mp3-finding { background: transparent url('../css/images/finding-bar1f.gif') repeat-y 0px 3px; /* opacity */ }
126
- span.mp3-loading { background: transparent url('../css/images/finding-bar1f.gif') repeat-y 0px 3px; /* opacity */ }
127
-
128
- span.mp3-tint {
129
- margin: 0px 2px 0px -3px !important;
130
- /* background */
131
- opacity:.4;
132
- filter:alpha(opacity=40);
133
- }
134
-
135
-
136
- /* DIV TRANSPORT since 1.6 */
137
- /* Transport wrap */
138
- div.transport-MI { position:absolute; width:auto; height:30px; right:2px; bottom:17px; border:0; }
139
- div.transport-MI div { font-family: 'trebuchet ms', Arial, sans-serif; font-weight:700; /* color */ }
140
- div.transport-MI div:hover { /* color */ }
141
-
142
- /* playpause button */
143
- div.buttons_mp3j { text-indent:4px !important; white-space:nowrap; float:right; width:32px; overflow:hidden !important; height: 25px; margin:0 6px 0 0px; background: transparent !important; line-height:25px !important; font-size:14px; }
144
- div.buttons_mp3j:hover { background:transparent !important; }
145
- div.buttons_mp3jpause { text-indent:-29px; white-space:nowrap; !important; float:right; width:38px; overflow:hidden !important; height: 25px; margin:0 -3px 0 3px; background: transparent !important; line-height:25px !important; font-size:14px; }
146
- div.buttons_mp3jpause:hover { background:transparent !important; }
147
-
148
- /* prev & next buttons */
149
- div.Prev_mp3j, div.Next_mp3j { text-indent:0px !important; float:right; height: 23px; line-height:23px !important; font-size:12px; }
150
- div.Prev_mp3j { width:36px; margin:2px 0px 0px 0px; background: transparent !important; }
151
- div.Prev_mp3j:hover { background: transparent !important; }
152
- div.Next_mp3j { width:36px; margin:2px 0px 0px 0px; background: transparent !important; font-size:12px; }
153
- div.Next_mp3j:hover { background: transparent !important; }
154
-
155
- /* stop button */
156
- div.stop_mp3j { text-indent:0px !important; float:right; width:31px; height: 25px; margin:0px 0px 0px 4px; background: transparent !important; line-height:25px !important; font-size:14px; }
157
- div.stop_mp3j:hover { background:transparent !important; }
158
-
159
-
160
- /* other buttons*/
161
- div.playlist-toggle-MI {
162
- position: absolute;
163
- bottom: 10px;
164
- right: 1px;
165
- width: auto;
166
- font-size: 10px;
167
- opacity:0.6;
168
- filter:alpha(opacity=60);
169
- font-family: 'trebuchet ms', Arial, sans-serif;
170
- }
171
-
172
- div.playlist-toggle-MI:hover {
173
- opacity:0.9;
174
- filter:alpha(opacity=90);
175
- }
176
-
177
- div.dloadmp3-MI {
178
- position: absolute;
179
- font-size: 10px;
180
- bottom: 10px;
181
- height: auto;
182
- left:2px !important;
183
- margin:0;
184
- font-family: 'trebuchet ms', Arial, sans-serif;
185
- }
186
- div.dloadmp3-MI.mp3j_widgetmods {
187
- font-size: 10px;
188
- }
189
-
190
- div.dloadmp3-MI.betweenlinks { }
191
- div.dloadmp3-MI.whilelinks { }
192
- div.dloadmp3-MI.whilelinks:hover { }
193
-
194
- div.dloadmp3-MI a { color:#888; font-size: inherit; margin:0px !important; padding: 0px !important; background:none; text-decoration:none; }
195
- div.dloadmp3-MI a:hover { background:none; color:#333; }
196
-
197
- div.dloadmp3-MI.betweenlinks a { display: none; }
198
- div.dloadmp3-MI.whilelinks a { display: block; color:#888; }
199
- div.dloadmp3-MI.whilelinks a:hover { color:#333; text-decoration:none; }
200
-
201
- div.mp3j-popout-MI {
202
- position: absolute;
203
- font: normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif;
204
- top: 0px;
205
- right: 3px;
206
- height: auto;
207
- opacity:0.6;
208
- filter:alpha(opacity=60);
209
- padding: 0px;
210
- margin: 0px;
211
- line-height: 11px;
212
- border: 0px solid #acacac;
213
- background: none;
214
- cursor: default;
215
- z-index:500;
216
- }
217
- div.mp3j-popout-MI:hover {
218
- opacity:1.0;
219
- filter:alpha(opacity=100);
220
- }
221
-
222
- /* BARS */
223
- .ui-state-disabled { cursor:default !important; }
224
- .ui-slider { position:relative; text-align:left; }
225
- .ui-slider .ui-slider-handle { position:absolute; z-index:200; cursor:default; }
226
- .ui-slider .ui-slider-range { position:absolute; z-index:1; font-size:.7em; display:block; border:0; }
227
- .ui-slider-horizontal .ui-slider-range { top:0; height:100%; }
228
- .ui-slider-horizontal .ui-slider-range-min { left:0; }
229
- .ui-slider-horizontal .ui-slider-range-max { right:0; }
230
- .ui-state-default,
231
- .ui-widget-content .ui-state-default { outline:none; border:0px; }
232
-
233
- /* VOLUME */
234
- div.MIsliderVolume { position:absolute; bottom:48px; right:4px; width:108px !important; height:1px !important; background:transparent; border:0px; font-size:1px; cursor:default; z-index:150; }
235
- div.MIsliderVolume .ui-widget-header,
236
- div.vol_mp3j .ui-widget-header {
237
- /* background */
238
- }
239
- div.MIsliderVolume .ui-slider-handle,
240
- div.vol_mp3j .ui-slider-handle {
241
- height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; top:-5px; border:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; background:transparent url('images/vol-handle.png') no-repeat -41px 0px; z-index:150; overflow:hidden !important; cursor:default;
242
- }
243
- div.MIsliderVolume .ui-slider-handle:hover,
244
- div.vol_mp3j .ui-slider-handle:hover {
245
- background:transparent url('images/vol-handle.png') no-repeat -21px 0px;
246
- }
247
- div.MIsliderVolume .ui-state-active,
248
- div.MIsliderVolume .ui-widget-content .ui-state-active,
249
- div.vol_mp3j .ui-state-active,
250
- div.vol_mp3j .ui-widget-content .ui-state-active {
251
- border:0px; background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none;
252
- }
253
-
254
- /* LOADER AND SLIDER */
255
- div.bars_holder { position:absolute; top:0px; left:0px; border-left:0px solid #ccc; bottom:48px; font-size:1px; cursor:default;
256
- background:transparent url('images/t10b.png') repeat-x left bottom; /* 1px highlight top of control bar */
257
- }
258
- /* LOAD BAR */
259
- div.loadMI_mp3j { position:absolute; top:0px; left:0px; bottom:1px;
260
- /* background */
261
- /* opacity */
262
- }
263
- /* POSITION SLIDER */
264
- div.bars_holder .ui-widget-header { border:0px !important;
265
- /* background */
266
- /* opacity */
267
- }
268
- div.bars_holder .ui-slider-horizontal { top:0px; bottom:1px; }
269
- div.posbarMI_mp3j { position:absolute; left:0px; top:0px; bottom:1px; width:100%; }
270
- div.posbarMI_mp3j .ui-slider-handle { top:-6px; margin-left:-5px !important; border:0px; bottom:-2px; width:15px !important; z-index:100; background:none; cursor:e-resize; padding:0px !important; }
271
- div.posbarMI_mp3j .ui-slider-handle:hover { background:none; z-index:100; }
272
-
273
- /* PLAYLIST */
274
- div.listwrap_mp3j { position:relative; padding: 0px 0px 0px 0px; margin-top:0px; /* background */ }
275
- div.playlist-wrap-MI { position:relative; }
276
- div.playlist-wrap-MI ul { position:static; border-top:1px solid #e4e4e4; }
277
-
278
-
279
- div.playlist-colour { position:absolute; width:100%; height:100%; left:0px; top:0px;
280
- /* background */
281
- /* opacity */
282
- }
283
- ul.UL_mp3j { margin:0px !important; padding:0px 0px 0px 0px !important; list-style-type:none !important; list-style:none !important; list-style-image:none !important; }
284
- ul.UL-MI_mp3j { margin:0px !important; padding:0px 0px 0px 0px !important; list-style-type:none !important; list-style:none !important; list-style-image:none !important; font-weight: 500 !important;
285
- /* background */
286
- }
287
- ul.UL_mp3j li { margin:0px !important; padding:0px 0px 0px 15px !important; content:none !important; background:none !important; }
288
- ul.UL_mp3j li:before { content:none !important; }
289
- ul.UL-MI_mp3j li { margin:0px !important; padding:0px 0px 1px 0px !important; content:none !important; font-weight:500 !important; line-height:28px !important; letter-spacing:0px; font-size:12px !important; word-spacing:0px; margin:0px 1px 0px 1px !important; }
290
- ul.UL-MI_mp3j li:before { content:none !important; }
291
- ul.UL-MI_mp3j.mp3j_widgetmods li { font-size:11px !important; line-height:26px !important; }
292
-
293
- ul.UL-MI_mp3j li a { font-size:12px !important; border:0 !important; content:none !important; line-height:28px !important; font-weight:500 !important; text-decoration:none !important; display:block !important; width:auto !important; font-family:'verdana', 'Lucida Grande', 'arial', sans-serif !important; outline:none !important; padding:0px 0px 0px 14px !important; }
294
- ul.UL-MI_mp3j.mp3j_widgetmods li a { font-size:11px !important; line-height:26px !important; }
295
-
296
-
297
- /* === [mp3j] & [mp3t] ============================ */
298
- span.wrap_inline_mp3j { position:relative; width:auto; cursor:pointer; padding:0; white-space:nowrap; text-align:left; }
299
- span.wrap_inline_mp3j:hover .buttons_mp3j { background:transparent url('images/transport-outline.png') no-repeat -80px -34px; }
300
-
301
- span.indi_mp3j { position:relative; padding-left:2px; font-size: 0.7em !important; }
302
-
303
- /* bars wrap */
304
- span.bars_mp3j { position:absolute; width:100%; height:100%; }
305
-
306
- /* bars for [mp3t] */
307
- span.load_mp3j { position:absolute; /* background */ top:20px; left:0px; height:2px; }
308
- span.posbar_mp3j { position:absolute; width:100%; height:100%; border:0px solid #f77; }
309
- span.posbar_mp3j .ui-widget-header { z-index:-500; }
310
- span.posbar_mp3j .ui-slider-handle { top: 2px; margin-left: -11px !important; border: 0px solid #888; height: 21px; width: 19px !important; z-index: 500;
311
- background: transparent url('images/inlineHandle1.png') no-repeat 8px -30px;
312
- opacity:0.65;
313
- filter:alpha(opacity=65);
314
- cursor: default; padding:0px !important; }
315
- span.posbar_mp3j .ui-slider-handle:hover { background: transparent url('images/inlineHandle1.png') no-repeat 8px 0px; }
316
-
317
- /* bars for [mp3j], [mp3-album], & [mp3PL] */
318
- span.loadB_mp3j { position:absolute; /*background */ top:19px; left:0px; height:2px; }
319
- span.posbarB_mp3j { position:absolute; width:100%; height:100%; border:0; z-index:450; cursor:pointer; }
320
- span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:450; height:100%; }
321
- span.posbarB_mp3j .ui-slider-handle { top: 1px; margin-left: -11px !important; border: 0px solid #888; height: 21px; width: 19px !important; z-index: 500;
322
- background: transparent url('images/inlineHandle1.png') no-repeat 8px -30px;
323
- opacity:0.65;
324
- filter:alpha(opacity=65);
325
- cursor: default; padding:0px !important; }
326
- span.posbarB_mp3j .ui-slider-handle:hover { background: transparent url('images/inlineHandle1.png') no-repeat 8px 0px; }
327
-
328
- /* SPAN TRANSPORT */
329
- span.group_wrap { position:relative; margin:0px 0px 0px 0px; width:auto; }
330
-
331
- /* playpause button */
332
- span.textbutton_mp3j, span.T_mp3j { position:relative; width:auto; margin:0px; padding:0px; }
333
- span.buttons_mp3j { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-outline.png') no-repeat -80px -2px; }
334
- span.buttons_mp3j:hover { background:transparent url('images/transport-outline.png') no-repeat -80px -34px; }
335
- span.buttons_mp3jpause { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-outline.png') no-repeat 1px -2px; }
336
- span.buttons_mp3jpause:hover { background:transparent url('images/transport-outline.png') no-repeat 1px -34px; }
337
-
338
- /* prev & next buttons*/
339
- span.Prev_mp3j, span.Next_mp3j { position:relative; margin:0px 0px 0px 3px; padding:2px 0px 3px 12px; }
340
- span.Prev_mp3j { background: transparent url('images/transport-outline.png') no-repeat -25px -4px; }
341
- span.Prev_mp3j:hover { background: transparent url('images/transport-outline.png') no-repeat -25px -36px; }
342
- span.Next_mp3j { background: transparent url('images/transport-outline.png') no-repeat -44px -4px; }
343
- span.Next_mp3j:hover { background: transparent url('images/transport-outline.png') no-repeat -44px -36px; }
344
-
345
- /* -- player & list containers -- */
346
- div.basiclist-player-wrap { padding: 0px 0px 10px 0px; }
347
-
348
- div.album-player-wrap { padding: 20px 0px 15px 0px; }
349
- div.listwrap-album-mp3j { padding: 0px 0px 5px 0px; /* background */ }
350
-
351
- /* image for [mp3-album] */
352
- div.img_mp3j { float:right; margin: 10px 0px 25px 30px; padding: 0px !important; }
353
- div.img_mp3j a { position:relative; margin:0 !important; padding:0 !important; }
354
- div.img_mp3j img { position:relative; margin:0 !important; padding:2px !important; border: 2px solid #ccc; }
355
-
356
- div.Holder_mp3j, div.Holderg_mp3j { position:relative; }
357
- div.Holderg_mp3j { border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; /* width */ }
358
-
359
- div.vol_mp3j { position:absolute; top:-12px; right:7px; width:100px; height:4px; background: transparent url('images/t10g.png') repeat left top; }
360
- div.vol_mp3j .ui-widget-header { /* background */ z-index:50; height:100%; }
361
- div.vol_mp3j .ui-slider-handle { top:-4px; background: transparent url('images/vol-handle.png') no-repeat -21px 0px; }
362
- div.vol_mp3j .ui-slider-handle:hover { background: transparent url('images/vol-handle.png') no-repeat -1px 0px; }
363
- div.vol_mp3j .ui-state-active, div.vol_mp3j .ui-widget-content .ui-state-active { background: transparent url('images/vol-handle.png') no-repeat -1px 0px; }
364
-
365
- .mp3j-link-play { cursor:pointer; }
366
-
367
- #debug_mp3j { position:relative; border:1px solid #ccc; padding:10px; width:200px; }
368
- /* end_____________________________________________________________________________________ */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
css/players-1-8-dark.css ADDED
@@ -0,0 +1,464 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ MP3-jPlayer 1.8 - Dark
3
+ www.sjward.org */
4
+
5
+ /*---------------------
6
+ [mp3-jplayer] SHORTCODE
7
+ ==================================== */
8
+
9
+ /* SKIN
10
+ --------------- */
11
+ /* MAIN WRAPPER (default class) */
12
+ div.wrap-MI { border:0; margin:0; background:none; min-width:116px; /* position||float set in-line! */ /* width set in-line! */ }
13
+
14
+ /* SUB WRAPPERS */
15
+ div.jp-innerwrap, div.jp-interface, div.listwrap_mp3j, div.playlist-wrap-MI { position:relative !important; width:100%; border:0; margin:0; padding:0; }
16
+ div.jp-innerwrap { background:none; }
17
+ div.jp-interface { background:url('images/shadow-x.png') repeat-x left bottom; height:101px/*player default height*/; min-height:67px; cursor:default; }
18
+ div.listwrap_mp3j { margin-top:0px; /* background set from admin */ }
19
+
20
+ /* BACKGROUNDS */
21
+ div.innerx, div.innerleft, div.innerright, div.innertab { position:absolute; }
22
+ div.innerx { background:url('images/case-grad-x.png') repeat-x left -119px; width:auto; height:35px; left:0px; right:0px; bottom:3px; }
23
+ div.innerleft { background:url('images/shadow-l.png') no-repeat left bottom; width:1px; height:40px; left:-1px; bottom:0px; }
24
+ div.innerright { background:url('images/shadow-r.png') no-repeat right bottom; width:2px; height:40px; right:-2px; bottom:0px; }
25
+ div.innertab { /* background and opacity set from admin */ left:0px; top:0px; width:100%; bottom:38px; }
26
+
27
+ /* PLAYLIST
28
+ ----------------- */
29
+ div.playlist-colour { position:absolute; width:100%; height:100%; left:0px; top:0px; /* background set from admin */ /* opacity set from admin */ }
30
+ div.playlist-wrap-MI ul { position:static; }
31
+ ul.UL-MI_mp3j { margin:0px !important; padding:0px 0px 0px 0px !important; list-style-type:none !important; list-style:none !important; list-style-image:none !important; font-weight: 500 !important; /* background */ }
32
+ ul.UL-MI_mp3j li { margin:0px !important; padding:0px 0px 1px 0px !important; font-weight:500 !important; line-height:15px !important; letter-spacing:0px !important; font-size:11px !important; word-spacing:0px !important; margin:0px 1px 0px 1px !important; }
33
+ ul.UL-MI_mp3j li:before { content:none !important; }
34
+ ul.UL-MI_mp3j li a { font-size:11px !important; border:0 !important; line-height:15px !important; font-weight:500 !important; text-decoration:none !important; display:block !important; width:auto !important; font-family:'verdana', 'Lucida Grande', 'arial', sans-serif !important; outline:none !important; padding:6px 0px 6px 14px !important; }
35
+
36
+ /* SCREEN
37
+ ----------------- */
38
+ div.player-track-title, div.jp-play-time, div.jp-total-time, div.statusMI { position:absolute; z-index:50; /* color set from admin */ font:normal normal 500 14px/16px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
39
+
40
+ div.player-track-title { top:7px; left:9px; width:auto; right:10px; }
41
+ div.player-track-title span { font-size:10px; line-height:12px; padding-left:10px; max-width:95%; }
42
+
43
+ div.jp-play-time, div.jp-total-time, div.statusMI { font-size:8px; line-height:10px !important; bottom:42px; text-align:left; font-family:Verdana, Arial, Helvetica, sans-serif; }
44
+ div.jp-play-time { right:84px; }
45
+ div.jp-total-time { right:6px; opacity:0.8; width:auto; }
46
+
47
+ span.mp3-finding, span.Smp3-finding, span.mp3-tint, span.mp3-gtint { padding:0px 0px 0px 6px !important; font-size:8px !important; line-height:10px !important; height:10px !important; overflow:hidden !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
48
+ span.mp3-finding, span.Smp3-finding { margin:0px 0px 0px -2px; background:url('images/finding-bar1f.gif') repeat 0px 3px; }
49
+ span.mp3-tint { margin:0px 2px 0px -6px; opacity:.5; filter:alpha(opacity=50); /* background */ }
50
+ span.mp3-gtint { margin:0px 2px 0px -6px; opacity:.5; filter:alpha(opacity=50); background:#777; }
51
+ span.Smp3-finding { margin:0px 0px 0px 3px; }
52
+ span.tintmarg { margin:0 2px 0 3px; }
53
+
54
+ div.statusMI { right:27px; width:52px !important; height:10px; }
55
+ .statusMI span.mp3-finding, .statusMI span.Smp3-finding, .statusMI span.mp3-tint, .statusMI span.mp3-gtint { padding:0px 0px 0px 6px !important; }
56
+ .statusMI span.mp3-tint, .statusMI span.mp3-gtint { margin:0px 2px 0px -6px; }
57
+
58
+ .MI-image { position:absolute; top:0; left:0; padding:0; }
59
+ .MI-image img { border:none; padding:0px; background-color:#777; }
60
+ .MI-image a:hover img { /* background-colour */ }
61
+
62
+ /* BUTTONS
63
+ ----------------- */
64
+ /* TRANSPORT BUTTONS */
65
+ div.transport-MI { position:absolute; width:auto; height:38px; right:2px; bottom:0px; border:0; }
66
+ /*div.transport-MI div { background-image: url("images/transport-hardV-shiny.png"); text-indent:-9999px !important; float:right; }*/
67
+ div.transport-MI div { background-image: url("images/transport-darkbg-trans2.png"); text-indent:-9999px !important; float:right; }
68
+ /* play */
69
+ div.buttons_mp3j { width:30px; height:32px; margin:1px 0px 0px 0px; background-position:-110px 0px; }
70
+ div.buttons_mp3j:hover { background-position:-110px -32px; }
71
+ /* pause */
72
+ div.buttons_mp3jpause { width:30px; height:32px; margin:1px 0px 0px 0px; background-position:-2px 0px; }
73
+ div.buttons_mp3jpause:hover { background-position:-2px -32px; }
74
+ /* prev n next */
75
+ div.Prev_mp3j { width:22px; height:28px; margin:1px 4px 0px 0px; background-position:-32px -1px; }
76
+ div.Prev_mp3j:hover { background-position:-32px -33px; }
77
+ div.Next_mp3j { width:19px; height:28px; margin:1px 3px 0px 0px; background-position:-57px -1px; }
78
+ div.Next_mp3j:hover { background-position:-57px -33px; }
79
+ /* stop */
80
+ div.stop_mp3j { width:26px; height:32px; margin:1px 3px 0px 0px; background-position:-81px 0px; }
81
+ div.stop_mp3j:hover { background-position:-81px -32px; }
82
+
83
+ /* PLAYLIST TOGGLE */
84
+ div.playlist-toggle-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif; bottom:4px; left:1px; padding:2px 6px 2px 5px; line-height:9px; min-width:24px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; cursor:default; background:#505050; color:#a2a2a2; }
85
+ div.playlist-toggle-MI:hover { background:#585858; color:#aaa; border-right:0px solid #a9a9a9; }
86
+
87
+ /* DOWNLOAD BUTTON */
88
+ div.dloadmp3-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; bottom:39px; margin:0px !important; font-size:9px !important; text-align:center; left:0px; width:41%; min-width:75px; max-width:425px; padding:0px 0px 0px 0px !important; border:0px; background:transparent url('images/t10b.png') repeat left top !important; color:#fff; line-height:11px !important; -moz-border-radius-topright:3px; -webkit-border-top-right-radius:3px; overflow:hidden; z-index:150; cursor:default; }
89
+ div.dloadmp3-MI.whilelinks, div.dloadmp3-MI.logintext { background:transparent url('images/t50b.png') repeat left top !important; }
90
+ div.dloadmp3-MI.whilelinks:hover { background:transparent url('images/t40b.png') repeat left top !important; }
91
+ div.dloadmp3-MI a { color:#ececec; display:block; width:auto; padding:1px 5px 2px 2px !important; margin:0px !important; background:transparent; text-decoration:none !important; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; font-size:9px !important; line-height:11px !important; /* after font declaration */ height:100%; border-bottom:none; visibility:hidden; }
92
+ div.dloadmp3-MI a:hover { outline: none; border-bottom: none; color: #ececec; }
93
+ div.dloadmp3-MI.whilelinks a { color: #f3f3f3; visibility: inherit; }
94
+ div.dloadmp3-MI.whilelinks a:hover { color: #fff; }
95
+ div.dloadmp3-MI p { color:#ececec; display:block; width:auto; padding:1px 5px 2px 2px !important; margin:0px !important; background:transparent; text-decoration:none !important; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; font-size:9px !important; line-height:11px !important; /* after font declaration */ height:100%; border-bottom:none; visibility:visible; }
96
+
97
+ /* POPOUT BUTTON */
98
+ div.mp3j-popout-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif; bottom:17px; left:0px; height:16px; padding:3px 5px 0px 28px; min-width:2px; line-height:11px; border:1px solid #585858; background-color:#aaa; background-image:url('images/buttons-popoutE.png'); background-repeat:no-repeat; background-position:-8px -6px; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; cursor:default;
99
+ color:#a2a2a2; }
100
+ div.mp3j-popout-MI:hover { color:#aaa; background-position:-8px -36px; }
101
+
102
+ /* BARS
103
+ ----------------- */
104
+ .ui-state-disabled { cursor:default !important; }
105
+ .ui-slider { position:relative; text-align:left; }
106
+ .ui-slider .ui-slider-handle { position:absolute; z-index:200; cursor:default; }
107
+ .ui-slider .ui-slider-range { position:absolute; z-index:1; font-size:.7em; display:block; border:0; }
108
+ .ui-slider-horizontal .ui-slider-range { top:0; height:100%; }
109
+ .ui-slider-horizontal .ui-slider-range-min { left:0; }
110
+ .ui-slider-horizontal .ui-slider-range-max { right:0; }
111
+ .ui-state-default, .ui-widget-content .ui-state-default { outline:none; border:0px; }
112
+
113
+ /* VOLUME */
114
+ div.MIsliderVolume { position:absolute; top:0px; right:4px; width:108px; height:4px !important; background:transparent; border:0px; font-size:1px; cursor:default; z-index:150; }
115
+ div.MIsliderVolume .ui-widget-header { /* background */ }
116
+ div.MIsliderVolume .ui-slider-handle { border:0px; height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; top:-3px; border:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; background:transparent url('images/vol-handle.png') no-repeat -1px 0px; z-index:150; overflow:hidden !important; cursor:default; }
117
+ div.MIsliderVolume .ui-slider-handle:hover { background:transparent url('images/vol-handle.png') no-repeat -21px 0px; }
118
+ div.MIsliderVolume .ui-state-active, div.MIsliderVolume .ui-widget-content .ui-state-active { border:0px; background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none; }
119
+
120
+ /* LOADER AND POS SLIDER */
121
+ div.bars_holder, div.loadMI_mp3j, div.poscolMI_mp3j, div.posbarMI_mp3j { position:absolute; top:0px; left:0px; }
122
+ div.bars_holder { right:0; width:100%; bottom:38px; font-size:1px; cursor:default; background:url('images/t40b.png')/*t50g.png*/ repeat-x left bottom;/* 1px highlight top of control bar */ }
123
+ div.loadMI_mp3j { bottom:1px; /* background */ /* opacity */ }
124
+ div.poscolMI_mp3j { bottom:1px; /* background */ /* opacity */ }
125
+ div.bars_holder .ui-widget-header, div.bars_holder .ui-widget-content { border:0px !important; background:none; }
126
+ div.bars_holder .ui-slider-horizontal { top:0px; bottom:1px; height:auto; z-index:90; }
127
+ div.posbarMI_mp3j { bottom:1px; width:100%; }
128
+ div.posbarMI_mp3j .ui-slider-handle { top:-6px; margin-left:-1px !important; border:0; bottom:-2px; width:2px !important; z-index:100; background:none; cursor:default ; padding:0px !important; }
129
+ div.posbarMI_mp3j .ui-slider-handle:hover { background:none; z-index:100; }
130
+
131
+
132
+ /*-------------------------
133
+ [mp3j] & [mp3t] SHORTCODES
134
+ ==================================== */
135
+ span.wrap_inline_mp3j { position:relative; width:auto; cursor:pointer; padding:0; white-space:nowrap; text-align:left; }
136
+ /*span.wrap_inline_mp3j:hover .buttons_mp3j { background:transparent url('images/transport-shard-B.png') no-repeat -80px -35px; }*/
137
+ span.indi_mp3j { position:relative; padding-left:2px; font-size: 0.7em !important; }
138
+
139
+ /* BARS */
140
+ span.bars_mp3j { position:absolute; width:100%; height:100%; }
141
+ span.load_mp3j, span.loadB_mp3j { position:absolute; /* background */ top:20px; left:0px; height:2px; }
142
+ /* mp3t */
143
+ span.posbar_mp3j { position:absolute; width:100%; height:100%; border:0px solid #f77; }
144
+ span.posbar_mp3j .ui-widget-header { z-index:-500; }
145
+ span.posbar_mp3j .ui-slider-handle { top: 2px; margin-left:-2px; border:1px solid #999; height:21px; width:4px; z-index:500; background:url('images/t20b.png') repeat; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
146
+ span.posbar_mp3j .ui-slider-handle:hover { background:url('images/t15b.png') repeat; border-color:#aaa; }
147
+ /* mp3j */
148
+ span.posbarB_mp3j { position:absolute; width:100%; height:100%; border:0; z-index:450; cursor:pointer; }
149
+ span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:450; height:100%; }
150
+ span.posbarB_mp3j .ui-slider-handle { top: 0px; margin-left:-6px !important; border:0px solid #888; height:23px; width:12px !important; z-index: 500; background: transparent url('images/inlineHandle2.png') no-repeat -3px -3px; cursor: default; padding:0px !important; }
151
+ span.posbarB_mp3j .ui-slider-handle:hover { background: transparent url('images/inlineHandle2.png') no-repeat -3px -33px; }
152
+
153
+ /* SPAN TRANSPORT */
154
+ span.group_wrap { position:relative; margin:0px 0px 0px 0px; width:auto; }
155
+ span.textbutton_mp3j, span.T_mp3j { position:relative; width:auto; margin:0px; padding:0px; }
156
+ span.buttons_mp3j { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -80px -3px; }
157
+ span.buttons_mp3j:hover { background:transparent url('images/transport-shard-B.png') no-repeat -80px -35px; }
158
+ span.buttons_mp3jpause { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -2px -3px; }
159
+ span.buttons_mp3jpause:hover { background:transparent url('images/transport-shard-B.png') no-repeat -2px -35px; }
160
+
161
+ /* VOLUMES */
162
+ span.vol_mp3t { position:absolute; top:-4px; right:4px; width:90%; max-width:100px; height:2px; }
163
+ span.vol_mp3j { position:absolute; top:-9px; right:5px; width:85%; max-width:100px; height:2px; }
164
+ span.vol_mp3j.flipped { right:4px; }
165
+ span.vol_mp3t .ui-widget-header, span.vol_mp3j .ui-widget-header { background: transparent url('images/vol-grad60b2.png') repeat left top; z-index:500; height:100%; }
166
+ span.vol_mp3t .ui-slider-handle, span.vol_mp3j .ui-slider-handle { height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; border:0px !important; border-radius:2px; -moz-border-radius:2px; -webkit-border-radius:2px; z-index:600; overflow:hidden !important; cursor:default; top:-6px; background: transparent url('images/vol-handle.png') no-repeat -1px 0px; }
167
+ span.vol_mp3t .ui-slider-handle:hover, span.vol_mp3j .ui-slider-handle:hover { background: transparent url('images/vol-handle.png') no-repeat -21px 0px; }
168
+ span.vol_mp3t .ui-state-active, span.vol_mp3t .ui-widget-content .ui-state-active, span.vol_mp3j .ui-state-active, span.vol_mp3j .ui-widget-content .ui-state-active { background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none; border:0px; }
169
+
170
+
171
+ /*----------------------
172
+ [mp3j-popout] SHORTCODE
173
+ ================================================= */
174
+ .mp3j-popout-link-wrap { cursor:pointer; position:relative; clear:left; }
175
+ .mp3j-popout-link { float:left; margin:0 5px 0 0; min-width:22px; min-height:18px; background:url('images/buttons-popout.png') no-repeat -10px -65px; }
176
+ .mp3j-popout-link-wrap:hover .mp3j-popout-link { background:url('images/buttons-popout.png') no-repeat -10px -95px; }
177
+
178
+
179
+ /*-------------
180
+ CUSTOM CLASSES
181
+ (via 'style' param in shortcode)
182
+ ================================================= */
183
+
184
+ /* ===== "silver" ===== */
185
+ .silver .innerx { background-position:left -45px; }
186
+ .silver .transport-MI { height:37px; }
187
+ .silver .transport-MI div { background-image:url("images/transport-hardW-shiny.png"); }
188
+ .silver .bars_holder { background:url('images/t60w.png') repeat-x left bottom; }
189
+ .silver .mp3j-popout-MI { color:#6c6c6c; background-position:-8px -65px; border-color:#b2b2b2; background-color:#aaa; }
190
+ .silver .mp3j-popout-MI:hover { color:#606060; background-position:-8px -95px; }
191
+ .silver div.playlist-toggle-MI { background:#bcbcbc; color:#707070; }
192
+ .silver div.playlist-toggle-MI:hover { background:#c6c6c6; color:#777; }
193
+ .silver .MI-image img { background-color:#bbb; }
194
+
195
+
196
+ /* ===== "text" ===== */
197
+ div.wrap-MI.text { /*min-width:300px;*/ }
198
+ .text div.innerx, .text div.innerleft, .text div.innerright { position: absolute; visibility: hidden; }
199
+ .text div.innertab { bottom: 38px; }
200
+ .text div.jp-interface { background:none; }
201
+ .text div.player-track-title { font:normal normal 500 16px/18px 'trebuchet ms', Arial, sans-serif; }
202
+ .text div.player-track-title span { font:italic normal 500 12px/14px 'trebuchet ms', Arial, sans-serif; opacity:0.7; filter:alpha(opacity=70); }
203
+ .text div.jp-play-time, .text div.jp-total-time, .text div.statusMI { bottom:20px; font-size:11px; font-family: 'trebuchet ms', Arial, sans-serif; }
204
+ .text div.jp-play-time { width:37px; left:0px; opacity:0.6; filter:alpha(opacity=60); }
205
+ .text div.jp-total-time { width:37px; left:100px; display:none; }
206
+ .text div.statusMI { left:37px; width:70px !important; }
207
+ .text div.transport-MI { height:26px; right:2px; bottom:12px; }
208
+ .text div.transport-MI div { font-family: 'trebuchet ms', Arial, sans-serif; font-weight:700; overflow:hidden !important; background:none !important; white-space:nowrap !important; }
209
+ .text div.buttons_mp3j { text-indent:4px !important; width:32px; overflow:hidden !important; height: 25px; margin:0 6px 0 0px; background:none !important; line-height:25px !important; font-size:14px; }
210
+ .text div.buttons_mp3jpause { text-indent:-29px !important; width:38px; overflow:hidden !important; height: 25px; margin:0 -3px 0 3px; background:none !important; line-height:25px !important; font-size:14px; }
211
+ .text div.Prev_mp3j, .text div.Next_mp3j { text-indent:0px !important; height:23px; line-height:23px !important; font-size:12px; width:36px; margin:2px 0px 0px 0px; }
212
+ .text div.stop_mp3j { text-indent:0px !important; width:31px; height:25px; margin:0px 0px 0px 4px; line-height:25px !important; font-size:14px; }
213
+
214
+ .text div.playlist-toggle-MI { bottom: 7px; font-family:'trebuchet ms', Arial, sans-serif; background:none; padding:0; opacity:0.6; filter:alpha(opacity=60); }
215
+ .text div.playlist-toggle-MI:hover { opacity:1.0; filter:alpha(opacity=100); }
216
+ .text div.dloadmp3-MI { font-size:11px; bottom: 6px; height:auto; right:0px !important; left:auto; margin:0; font-family: 'trebuchet ms', Arial, sans-serif; text-align:right; background:none !important; }
217
+ .text div.dloadmp3-MI a { color:#888; font-size:inherit; margin:0px !important; padding: 0px !important; background:none !important; text-decoration:none; }
218
+ .text div.dloadmp3-MI a:hover { color:#555; background:none !important; }
219
+ .text div.dloadmp3-MI.betweenlinks a { display:none; background:none !important; }
220
+ .text div.dloadmp3-MI.whilelinks a { display:block; background:none !important; }
221
+ .text div.dloadmp3-MI.whilelinks a:hover { text-decoration:none; background:none !important; }
222
+ .text div.dloadmp3-MI p { font-size: inherit; margin:0px !important; padding: 0px !important; background:none !important; text-decoration:none; }
223
+ .text div.mp3j-popout-MI { color:#888; font:normal normal 500 11px 'trebuchet ms', 'arial', sans-serif; bottom:15px; right:155px; left:auto; width:auto; opacity:1; filter:alpha(opacity=100); padding:0px; line-height:12px; border:0; background:none; cursor:default; z-index:500; }
224
+ .text div.mp3j-popout-MI:hover { color:#555; opacity:1.0; filter:alpha(opacity=100); }
225
+ .text div.MIsliderVolume { position:absolute; bottom:38px; top:auto; right:4px; width:108px !important; height:1px !important; background:transparent; border:0px; font-size:1px; cursor:default; z-index:150; }
226
+ .text div.MIsliderVolume .ui-slider-handle, .text div.vol_mp3j .ui-slider-handle { height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; top:-7px; border:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; background:transparent url('images/vol-handle.png') no-repeat -41px 0px; z-index:150; overflow:hidden !important; cursor:default; }
227
+ .text div.MIsliderVolume .ui-slider-handle:hover, .text div.vol_mp3j .ui-slider-handle:hover { background:transparent url('images/vol-handle.png') no-repeat -21px 0px; }
228
+ .text div.MIsliderVolume .ui-state-active, .text div.MIsliderVolume .ui-widget-content .ui-state-active, .text div.vol_mp3j .ui-state-active, .text div.vol_mp3j .ui-widget-content .ui-state-active { border:0px; background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none; }
229
+
230
+ .text div.dloadmp3-MI.whilelinks, .text div.dloadmp3-MI.logintext { background:none !important; }
231
+
232
+
233
+
234
+ /* ===== "noscreen" ===== */
235
+ .noscreen div.jp-interface { height:44px; min-height:44px; }
236
+ .noscreen div.player-track-title { display:none; }
237
+ .noscreen div.bars_holder { top:auto; bottom:0px; height:7px; }
238
+ .noscreen div.innertab { bottom: 0px; top:0; display:none; }
239
+ .noscreen div.dloadmp3-MI { bottom: 11px; }
240
+ .noscreen div.transport-MI { bottom:17px; }
241
+ .noscreen div.jp-play-time, .noscreen div.jp-total-time, .noscreen div.statusMI { bottom:25px; }
242
+ .noscreen div.playlist-toggle-MI { bottom: 12px; }
243
+ .noscreen div.mp3j-popout-MI { bottom: 20px; }
244
+ .noscreen div.MIsliderVolume { bottom: 43px; }
245
+ .noscreen div.MIsliderVolume .ui-widget-header { background:transparent url('images/vol-grad60b2.png') repeat-y 0px top; }
246
+ .noscreen div.MIsliderVolume .ui-slider-handle { top:-6px; }
247
+ .noscreen h2 { margin:0 !important; padding:0 0 0px 0 !important; }
248
+ .noscreen div.posbarMI_mp3j .ui-slider-handle { top:-5px; margin-left:-7px !important; border:0; bottom:-5px; width:14px !important; z-index:100; background:none; border:none; cursor:default ; padding:0px !important; }
249
+ .noscreen div.posbarMI_mp3j .ui-slider-handle:hover { background:none; border:none; }
250
+ .noscreen .MI-image { top:15px; }
251
+
252
+ /* ===== "nolistbutton" ===== */
253
+ .nolistbutton div.playlist-toggle-MI { visibility:hidden; }
254
+
255
+ /* ===== "nopopoutbutton" ===== */
256
+ .nopopoutbutton div.mp3j-popout-MI { display:none; }
257
+
258
+ /* ===== "nopn" ===== */
259
+ .nopn div.Prev_mp3j { display:none; }
260
+ .nopn div.Next_mp3j { display:none; }
261
+
262
+ /* ===== "nostop" ===== */
263
+ .nostop div.stop_mp3j { display:none; }
264
+
265
+ /* ===== "bars100" ===== */
266
+ .bars100 div.player-track-title { left:112px; }
267
+ .bars100 div.dloadmp3-MI { left:102px; width:36%;}
268
+ .bars100 div.bars_holder { left:102px; width:auto; }
269
+ .bars100 .MI-image img { padding:1px; }
270
+ .bars100 div.player-track-title { top:20px; }
271
+
272
+ /* ===== "bars150" ===== */
273
+ .bars150 div.player-track-title { left:162px; }
274
+ .bars150 div.dloadmp3-MI { left:152px; width:33%;}
275
+ .bars150 div.bars_holder { left:152px; width:auto; }
276
+ .bars150 .MI-image img { padding:1px; }
277
+ .bars150 div.player-track-title { top:20px; }
278
+
279
+ /* ===== "bars200" ===== */
280
+ .bars200 div.player-track-title { left:212px; }
281
+ .bars200 div.dloadmp3-MI { left:202px; width:30%; }
282
+ .bars200 div.bars_holder { left:202px; width:auto; }
283
+ .bars200 .MI-image img { padding:1px; }
284
+ .bars200 div.player-track-title { top:20px; }
285
+
286
+ /* ===== "bars250" ===== */
287
+ .bars250 div.player-track-title { left:262px; }
288
+ .bars250 div.dloadmp3-MI { left:252px; width:27%;}
289
+ .bars250 div.bars_holder { left:252px; width:auto; }
290
+ .bars250 .MI-image img { padding:1px; }
291
+ .bars250 div.player-track-title { top:20px; }
292
+
293
+ /* ===== "bars300" ===== */
294
+ .bars300 div.player-track-title { left:312px; }
295
+ .bars300 div.dloadmp3-MI { left:302px; width:24%; }
296
+ .bars300 div.bars_holder { left:302px; width:auto; }
297
+ .bars300 .MI-image img { padding:1px; }
298
+ .bars300 div.player-track-title { top:20px; }
299
+
300
+ /* ===== "bars350" ===== */
301
+ .bars350 div.player-track-title { left:362px; }
302
+ .bars350 div.dloadmp3-MI { left:352px; width:21%;}
303
+ .bars350 div.bars_holder { left:352px; width:auto; }
304
+ .bars350 .MI-image img { padding:1px; }
305
+ .bars350 div.player-track-title { top:20px; }
306
+
307
+ /* ===== "bars400" ===== */
308
+ .bars400 div.player-track-title { left:412px; }
309
+ .bars400 div.dloadmp3-MI { left:402px; width:18%; }
310
+ .bars400 div.bars_holder { left:402px; width:auto; }
311
+ .bars400 .MI-image img { padding:1px; }
312
+ .bars400 div.player-track-title { top:20px; }
313
+
314
+ /* ===== bigger1 ===== */
315
+ .bigger1 { font-size:18px; line-height:26px !important; margin:0 !important; }
316
+ .bigger1 span.load_mp3j,
317
+ .bigger1 span.loadB_mp3j { top:24px; left:0px; height:2px; }
318
+ .bigger1 span.posbar_mp3j .ui-slider-handle { top: 3px; height:24px; width:6px !important; margin-left:-3px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
319
+ .bigger1 span.posbarB_mp3j .ui-slider-handle { top: 3px; margin-left:-3px !important; border:1px solid #999; height:24px; width:6px !important; z-index:500; background:url('images/mp3t-poshandle.png') repeat-y -50px 0px; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
320
+ .bigger1 span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/mp3t-poshandle.png') repeat-y 0px 0px; border-color:#aaa; }
321
+ .bigger1 span.buttons_mp3j { position:relative; margin:0px; margin-left:5px !important; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -80px 0px; }
322
+ .bigger1 span.buttons_mp3j:hover { background:transparent url('images/transport-shard-B.png') no-repeat -80px -32px; }
323
+ .bigger1 span.buttons_mp3jpause { position:relative; margin:0px; margin-left:5px !important; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -2px 0px; }
324
+ .bigger1 span.buttons_mp3jpause:hover { background:transparent url('images/transport-shard-B.png') no-repeat -2px -32px; }
325
+ .bigger1 span.vol_mp3j { position:absolute; top:-6px; right:7px; width:85%; max-width:100px; height:2px; }
326
+
327
+ .bigger1 div.player-track-title { font:normal normal 500 18px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
328
+ .bigger1 div.player-track-title span { font:normal normal 500 14px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
329
+ .bigger1 ul.UL-MI_mp3j li a, .bigger1 ul.UL-MI_mp3j li { font-size:16px !important; line-height:19px !important; }
330
+ .bigger1 .indi_mp3j { font-size: 0.6em !important; }
331
+
332
+ /* ===== "bigger2" ===== */
333
+ .bigger2 div.player-track-title { font:normal normal 500 36px/38px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
334
+ .bigger2 div.player-track-title span { font:normal normal 500 20px/22px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
335
+ .bigger2 ul.UL-MI_mp3j li a, .bigger2 ul.UL-MI_mp3j li { font-size:20px !important; line-height:24px !important; }
336
+ .bigger2 { font-size:23px; line-height:25px !important; margin:0 !important; }
337
+ .bigger2 span.load_mp3j,
338
+ .bigger2 span.loadB_mp3j { top:26px; left:0px; height:2px; }
339
+ .bigger2 span.posbar_mp3j .ui-slider-handle { top: 0px; height:28px; width:6px !important; margin-left:-3px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
340
+ .bigger2 span.posbarB_mp3j .ui-slider-handle { top: -1px; margin-left:-3px !important; border:1px solid #999; height:29px; width:8px !important; z-index:500; border-color:#aaa; background:url('images/mp3t-poshandle.png') repeat-y 0px 0px; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
341
+ .bigger2 span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/mp3t-poshandle.png') repeat-y -50px 0px; border-color:#999; }
342
+ .bigger2 span.buttons_mp3j { padding:2px 0px 4px 20px !important; background:url('images/play-dark2-b.png') no-repeat -186px center; border:0px solid #bbb; margin-left:10px; }
343
+ .bigger2 span.buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -437px center; }
344
+ .bigger2 span.buttons_mp3jpause { padding:0px 0px 2px 20px !important; background:url('images/stop-dark2-b.png') repeat-y 0px top; border:0px solid #bbb; margin-left:10px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
345
+ .bigger2 span.buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
346
+ .bigger2 span.vol_mp3j { position:absolute; top:-12px; right:4px; width:85%; max-width:100px; height:2px; }
347
+ .bigger2 span.vol_mp3t { position:absolute; top:-10px; width:85%; max-width:100px; height:2px; }
348
+ .bigger2 .Smp3-finding,
349
+ .bigger2 .mp3-tint,
350
+ .bigger2 .mp3-gtint { margin-left:8px; margin-right:6px; padding:0px 0px 0px 10px !important; font-size:12px !important; line-height:12px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
351
+ .bigger2 .mp3-gtint { margin:0 6px 0 -16px; }
352
+ .bigger2 .indi_mp3j { font-size: 0.5em !important; padding-left:0px; }
353
+
354
+ /* ===== bigger3 ===== */
355
+ .bigger3 { font-size:28px; line-height:36px !important; margin:0 !important; }
356
+ .bigger3 .load_mp3j, .bigger3 .loadB_mp3j { top:37px; left:0px; height:3px; }
357
+ .bigger3 .posbar_mp3j .ui-slider-handle, .bigger3 .posbarB_mp3j .ui-slider-handle { top: 0px; border:1px solid #bbb; height:40px; width:12px !important; margin-left:-5px !important; background:url('images/stop-dark2-b.png') repeat-y -350px top; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
358
+ .bigger3 .posbar_mp3j .ui-slider-handle:hover, .bigger3 .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2-b.png') repeat-y 0px top; border:1px solid #aaa; }
359
+ .bigger3 .indi_mp3j { font-size: 0.5em !important; }
360
+ .bigger3 span.buttons_mp3j { padding:8px 0px 12px 30px !important; background:url('images/play-dark2-b.png') no-repeat -177px center; border:0px solid #bbb; margin-left:12px; }
361
+ .bigger3 span.buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -428px center; }
362
+ .bigger3 span.buttons_mp3jpause { padding:2px 0px 6px 30px !important; background:url('images/stop-dark2-b.png') repeat-y 0px top; border:0px solid #bbb; margin-left:12px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
363
+ .bigger3 span.buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
364
+ .bigger3 .vol_mp3j { height:1px; max-width:110px; right:64px; top:-8px; }
365
+ .bigger3 .vol_mp3t { height:1px; max-width:110px; right:16px; top:-5px; }
366
+ .bigger3 .vol_mp3j .ui-slider-handle, .bigger3 .vol_mp3t .ui-slider-handle { height:14px !important; width:33px !important; margin-left:-16px; border-bottom:1px solid #ccc !important; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; top:-14px; background:url('images/volhandle-dark2-b.png') no-repeat -10px bottom; }
367
+ .bigger3 .vol_mp3j .ui-slider-handle:hover, .bigger3 .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-b.png') no-repeat -257px bottom; }
368
+ .bigger3 .Smp3-finding,
369
+ .bigger3 .mp3-tint,
370
+ .bigger3 .mp3-gtint { margin-left:8px; padding:0px 0px 0px 14px !important; font-size:18px !important; line-height:20px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
371
+ .bigger3 .mp3-gtint { margin:0 2px 0 -14px; }
372
+ .bigger3 div.player-track-title { font:normal normal 500 44px/46px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
373
+ .bigger3 div.player-track-title span { font:normal normal 500 28px/30px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
374
+ .bigger3 ul.UL-MI_mp3j li a, .bigger3 ul.UL-MI_mp3j li { font-size:28px !important; line-height:30px !important; }
375
+
376
+
377
+ /* ===== bigger4 ===== */
378
+ .bigger4 { font-size:38px; line-height:46px !important; margin:0 !important; }
379
+ .bigger4 .load_mp3j, .bigger4 .loadB_mp3j { top:46px; left:0px; height:3px; }
380
+ .bigger4 .posbar_mp3j .ui-slider-handle, .bigger4 .posbarB_mp3j .ui-slider-handle { top: -2px; border:1px solid #bbb; height:52px; width:20px !important; margin-left:-10px !important; background:url('images/stop-dark2-b.png') repeat-y -350px top; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
381
+ .bigger4 .posbar_mp3j .ui-slider-handle:hover, .bigger4 .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2-b.png') repeat-y 0px top; border:1px solid #aaa; }
382
+ .bigger4 .indi_mp3j { font-size: 0.5em !important; }
383
+ .bigger4 span.buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:8px 0px 12px 40px !important; background:url('images/play-dark2-b.png') no-repeat -167px center; border:0px solid #bbb; margin-left:15px; }
384
+ .bigger4 span.buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -418px center; }
385
+ .bigger4 span.buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:2px 0px 4px 40px !important; background:url('images/stop-dark2-b.png') repeat-y 0px top; border:0px solid #bbb; margin-left:15px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
386
+ .bigger4 span.buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
387
+ .bigger4 .vol_mp3j { height:1px; max-width:110px; right:86px; top:-8px; }
388
+ .bigger4 .vol_mp3t { height:1px; max-width:110px; right:20px; top:-5px; }
389
+ .bigger4 .vol_mp3j .ui-slider-handle, .bigger4 .vol_mp3t .ui-slider-handle { height:20px !important; width:43px !important; margin-left:-21px; border-bottom:1px solid #ccc !important; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; top:-20px; background:url('images/volhandle-dark2-b.png') no-repeat -10px bottom; }
390
+ .bigger4 .vol_mp3j .ui-slider-handle:hover, .bigger4 .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-b.png') no-repeat -257px bottom; }
391
+ .bigger4 .Smp3-finding,
392
+ .bigger4 .mp3-tint,
393
+ .bigger4 .mp3-gtint { margin-left:8px; margin-right:6px; padding:0px 0px 0px 14px !important; font-size:18px !important; line-height:20px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
394
+ .bigger4 .mp3-gtint { margin:0 6px 0 -20px; }
395
+
396
+ .bigger4 div.player-track-title { font:normal normal 500 44px/46px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
397
+ .bigger4 div.player-track-title span { font:normal normal 500 28px/30px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
398
+ .bigger4 ul.UL-MI_mp3j li a, .bigger4 ul.UL-MI_mp3j li { font-size:28px !important; line-height:30px !important; }
399
+
400
+
401
+ /* ===== bigger5 ===== */
402
+ .bigger5 { font-size:48px; line-height:60px !important; margin:0 !important; }
403
+ .bigger5 .load_mp3j, .bigger5 .loadB_mp3j { top:63px; left:0px; height:4px; }
404
+ .bigger5 .posbar_mp3j .ui-slider-handle, .bigger5 .posbarB_mp3j .ui-slider-handle { top: -1px; border:1px solid #bbb; height:69px; width:20px !important; margin-left:-10px !important; background:url('images/stop-dark2-b.png') repeat-y -350px top; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
405
+ .bigger5 .posbar_mp3j .ui-slider-handle:hover, .bigger5 .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2-b.png') repeat-y 0px top; border:1px solid #aaa; }
406
+ .bigger5 .indi_mp3j { font-size: 0.5em !important; }
407
+ .bigger5 span.buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:8px 0px 13px 52px !important; background:url('images/play-dark2-b.png') no-repeat -154px center; border:0px solid #bbb; margin-left:20px; }
408
+ .bigger5 span.buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -405px center; }
409
+ .bigger5 span.buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:3px 0px 8px 52px !important; background:url('images/stop-dark2-b.png') repeat-y 0px top; border:0px solid #bbb; margin-left:15px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
410
+ .bigger5 span.buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
411
+ .bigger5 .vol_mp3j { height:1px; max-width:170px; right:115px; top:-10px; }
412
+ .bigger5 .vol_mp3t { height:1px; max-width:170px; right:33px; top:-5px; }
413
+ .bigger5 .vol_mp3j .ui-slider-handle, .bigger5 .vol_mp3t .ui-slider-handle { height:30px !important; width:55px !important; margin-left:-21px; border-bottom:1px solid #aaa !important; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; top:-30px; background:url('images/volhandle-dark2-b.png') no-repeat -10px bottom; }
414
+ .bigger5 .vol_mp3j .ui-slider-handle:hover, .bigger5 .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-b.png') no-repeat -257px bottom; }
415
+ .bigger5 .Smp3-finding,
416
+ .bigger5 .mp3-tint,
417
+ .bigger5 .mp3-gtint { margin-left:8px; margin-right:6px; padding:0px 0px 0px 14px !important; font-size:18px !important; line-height:20px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
418
+ .bigger5 .mp3-gtint { margin:0 6px 0 -20px; }
419
+
420
+ .bigger5.wh .posbar_mp3j .ui-slider-handle, .bigger5.wh .posbarB_mp3j .ui-slider-handle { background:url('images/stop-dark2-w.png') repeat-y -350px top; border:1px solid #888; }
421
+ .bigger5.wh .posbar_mp3j .ui-slider-handle:hover, .bigger5.wh .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2-w.png') repeat-y 0px top; border:1px solid #777; }
422
+ .bigger5.wh .buttons_mp3j { background:url('images/play-dark2-w.png') no-repeat -154px center; border:0px solid #bbb; margin-left:20px; }
423
+ .bigger5.wh .buttons_mp3j:hover { background:url('images/play-dark2-w.png') no-repeat -405px center; }
424
+ .bigger5.wh .buttons_mp3jpause { background:url('images/stop-dark2-w.png') repeat-y 0px top; }
425
+ .bigger5.wh .buttons_mp3jpause:hover { background:url('images/stop-dark2-w.png') repeat-y -350px top; }
426
+ .bigger5.wh .vol_mp3j .ui-slider-handle, .bigger5.wh .vol_mp3t .ui-slider-handle { background:url('images/volhandle-dark2-bw.png') no-repeat -10px bottom; }
427
+ .bigger5.wh .vol_mp3j .ui-slider-handle:hover, .bigger5.wh .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-w.png') no-repeat -257px bottom; }
428
+
429
+
430
+ /* ===== "smaller" ===== */
431
+ .smaller div.player-track-title { font:normal normal 500 11px/13px 'verdana', 'Lucida Grande', 'arial', sans-serif !important; left:3px; right:5px; }
432
+ .smaller div.player-track-title span { font:normal normal 500 10px/10px 'verdana', 'Lucida Grande', 'arial', sans-serif !important; padding:0; }
433
+ .smaller ul.UL-MI_mp3j li a, .smaller ul.UL-MI_mp3j li { font-size:10px !important; font-family:'verdana', Helvetica, sans-serif !important; line-height:13px !important; }
434
+
435
+
436
+ /* ===== outline ==== */
437
+ span.outline { font-size:14px; line-height:22px !important; margin:0 !important; }
438
+ .outline span.vol_mp3t { position:absolute; top:-4px; right:4px; width:90%; max-width:100px; height:2px; background: transparent; }
439
+ .outline span.vol_mp3j { position:absolute; top:-9px; right:7px; width:85%; max-width:100px; height:2px; background: transparent; }
440
+ .outline span.buttons_mp3j { padding:2px 0px 3px 20px; background: transparent url('images/transport-outline.png') no-repeat -80px -2px; border:0; margin:0; }
441
+ .outline span.buttons_mp3j:hover { background:transparent url('images/transport-outline.png') no-repeat -80px -34px; }
442
+ .outline span.buttons_mp3jpause { padding:2px 0px 3px 20px; background: transparent url('images/transport-outline.png') no-repeat 1px -2px; border:0; margin:0; }
443
+ .outline span.buttons_mp3jpause:hover { background:transparent url('images/transport-outline.png') no-repeat 1px -34px; }
444
+ .outline span.posbarB_mp3j { position:absolute; width:100%; height:100%; border:0px solid #f77; }
445
+ .outline span.posbarB_mp3j .ui-widget-header { z-index:-500; }
446
+ .outline span.posbarB_mp3j .ui-slider-handle { top: 0px; margin-left:0px; border:1px solid #aaa; height:23px; width:5px !important; z-index:500; background:url('images/t10b.png') repeat; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
447
+ .outline span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/t20b.png') repeat; border-color:#777; }
448
+ .outline div.transport-MI div { background-image: url("images/transport-hardK.png"); }
449
+ .outline div.mp3j-popout-MI { background-image:url('images/buttons-popoutF.png'); }
450
+ .silver.outline div.transport-MI div { background-image: url("images/transport-hardZ.png"); }
451
+ .silver.outline div.mp3j-popout-MI { background-image:url('images/buttons-popoutF.png'); }
452
+
453
+ /* ===== wtransbars ==== */
454
+ .wtransbars div.loadMI_mp3j { background:#fff; opacity:0.1; filter:alpha(opacity=10); }
455
+ .wtransbars div.poscolMI_mp3j { background:#fff url('http://sjward.org/wp-content/plugins/mp3-jplayer/css/images/posbar-soften-tipped-2.png') repeat-y right top; opacity:0.15; filter:alpha(opacity=15); }
456
+ .wtransbars div.player-track-title { color:#fff; }
457
+
458
+ /* ===== btransbars ==== */
459
+ .btransbars div.loadMI_mp3j { background:#000; opacity:0.1; filter:alpha(opacity=10); }
460
+ .btransbars div.poscolMI_mp3j { background:#000 url('http://sjward.org/wp-content/plugins/mp3-jplayer/css/images/posbar-soften-tipped-2.png') repeat-y right top; opacity:0.15; filter:alpha(opacity=15); }
461
+ .btransbars div.player-track-title { color:#000; }
462
+
463
+
464
+
css/players-1-8-silver.css ADDED
@@ -0,0 +1,491 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ MP3-jPlayer 1.8 - Silver
3
+ www.sjward.org */
4
+
5
+ /*---------------------
6
+ [mp3-jplayer] SHORTCODE
7
+ ==================================== */
8
+
9
+ /* SKIN
10
+ --------------- */
11
+ /* MAIN WRAPPER (default class) */
12
+ div.wrap-MI { border:0; margin:0; background:none; min-width:116px; /* position||float set in-line! */ /* width set in-line! */ }
13
+
14
+ /* SUB WRAPPERS */
15
+ div.jp-innerwrap, div.jp-interface, div.listwrap_mp3j, div.playlist-wrap-MI { position:relative !important; width:100%; border:0; margin:0; padding:0; }
16
+ div.jp-innerwrap { background:none; }
17
+ div.jp-interface { background:url('images/shadow-x.png') repeat-x left bottom; height:101px/*player default height*/; min-height:67px; cursor:default; }
18
+ div.listwrap_mp3j { margin-top:0px; /* background set from admin */ }
19
+
20
+ /* BACKGROUNDS */
21
+ div.innerx, div.innerleft, div.innerright, div.innertab { position:absolute; }
22
+ div.innerx { background:url('images/case-grad-x.png') repeat-x left -45px; width:auto; height:35px; left:0px; right:0px; bottom:3px; }
23
+ div.innerleft { background:url('images/shadow-l.png') no-repeat left bottom; width:1px; height:40px; left:-1px; bottom:0px; }
24
+ div.innerright { background:url('images/shadow-r.png') no-repeat right bottom; width:2px; height:40px; right:-2px; bottom:0px; }
25
+ div.innertab { /* background and opacity set from admin */ left:0px; top:0px; width:100%; bottom:38px; }
26
+
27
+ /* PLAYLIST
28
+ ----------------- */
29
+ div.playlist-colour { position:absolute; width:100%; height:100%; left:0px; top:0px; /* background set from admin */ /* opacity set from admin */ }
30
+ div.playlist-wrap-MI ul { position:static; }
31
+ ul.UL-MI_mp3j { margin:0px !important; padding:0px 0px 0px 0px !important; list-style-type:none !important; list-style:none !important; list-style-image:none !important; font-weight: 500 !important; /* background set from admin */ }
32
+ ul.UL-MI_mp3j li { margin:0px !important; padding:0px 0px 1px 0px !important; font-weight:500 !important; line-height:15px !important; letter-spacing:0px !important; font-size:11px !important; word-spacing:0px !important; margin:0px 1px 0px 1px !important; }
33
+ ul.UL-MI_mp3j li:before { content:none !important; }
34
+ ul.UL-MI_mp3j li a { font-size:11px !important; border:0 !important; line-height:15px !important; font-weight:500 !important; text-decoration:none !important; display:block !important; width:auto !important; font-family:'verdana', 'Lucida Grande', 'arial', sans-serif !important; outline:none !important; padding:6px 0px 6px 14px !important; }
35
+
36
+ /* SCREEN
37
+ ----------------- */
38
+ div.player-track-title, div.jp-play-time, div.jp-total-time, div.statusMI { position:absolute; z-index:50; /* color set from admin */ font:normal normal 500 14px/16px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
39
+
40
+ div.player-track-title { top:7px; left:9px; width:auto; right:10px; }
41
+ div.player-track-title span { font-size:10px; line-height:12px; padding-left:10px; max-width:95%; }
42
+
43
+ div.jp-play-time, div.jp-total-time, div.statusMI { font-size:8px; line-height:10px !important; bottom:42px; text-align:left; font-family:Verdana, Arial, Helvetica, sans-serif; }
44
+ div.jp-play-time { right:84px; }
45
+ div.jp-total-time { right:6px; opacity:0.8; width:auto; }
46
+
47
+ span.mp3-finding, span.Smp3-finding, span.mp3-tint, span.mp3-gtint { padding:0px 0px 0px 6px !important; font-size:8px !important; line-height:10px !important; height:10px !important; overflow:hidden !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
48
+ span.mp3-finding, span.Smp3-finding { margin:0px 0px 0px -2px; background:url('images/finding-bar1f.gif') repeat 0px 3px; }
49
+ span.mp3-tint { margin:0px 2px 0px -6px; opacity:.5; filter:alpha(opacity=50); /* background set from admin */ }
50
+ span.mp3-gtint { margin:0px 2px 0px -6px; opacity:.5; filter:alpha(opacity=50); background:#777; }
51
+ span.Smp3-finding { margin:0px 0px 0px 3px; }
52
+ span.tintmarg { margin:0 2px 0 3px; }
53
+
54
+ div.statusMI { right:27px; width:52px !important; height:10px; }
55
+ .statusMI span.mp3-finding, .statusMI span.Smp3-finding, .statusMI span.mp3-tint, .statusMI span.mp3-gtint { padding:0px 0px 0px 6px !important; }
56
+ .statusMI span.mp3-tint, .statusMI span.mp3-gtint { margin:0px 2px 0px -6px; }
57
+
58
+ .MI-image { position:absolute; top:0; left:0; padding:0; }
59
+ .MI-image img { border:none; padding:0px; background-color:#bbb; }
60
+ .MI-image a:hover img { /* background-colour set from admin */ }
61
+
62
+ /* BUTTONS
63
+ ----------------- */
64
+ /* TRANSPORT BUTTONS */
65
+ div.transport-MI { position:absolute; width:auto; height:37px; right:2px; bottom:0px; border:0; }
66
+ div.transport-MI div { background-image: url("images/transport-hardW-shiny.png"); text-indent:-9999px !important; float:right; }
67
+ /* play */
68
+ div.buttons_mp3j { width:30px; height:32px; margin:1px 0px 0px 0px; background-position:-110px 0px; }
69
+ div.buttons_mp3j:hover { background-position:-110px -32px; }
70
+ /* pause */
71
+ div.buttons_mp3jpause { width:30px; height:32px; margin:1px 0px 0px 0px; background-position:-2px 0px; }
72
+ div.buttons_mp3jpause:hover { background-position:-2px -32px; }
73
+ /* prev n next */
74
+ div.Prev_mp3j { width:22px; height:28px; margin:1px 4px 0px 0px; background-position:-32px -1px; }
75
+ div.Prev_mp3j:hover { background-position:-32px -33px; }
76
+ div.Next_mp3j { width:19px; height:28px; margin:1px 3px 0px 0px; background-position:-57px -1px; }
77
+ div.Next_mp3j:hover { background-position:-57px -33px; }
78
+ /* stop */
79
+ div.stop_mp3j { width:26px; height:32px; margin:1px 3px 0px 0px; background-position:-81px 0px; }
80
+ div.stop_mp3j:hover { background-position:-81px -32px; }
81
+
82
+ /* PLAYLIST TOGGLE */
83
+ div.playlist-toggle-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif; bottom:4px; left:1px; color:#707070; padding:2px 6px 2px 5px; line-height:9px; min-width:24px; background:#bcbcbc; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; cursor:default; }
84
+ div.playlist-toggle-MI:hover { background:#c6c6c6; color:#777; }
85
+
86
+ /* DOWNLOAD BUTTON */
87
+ div.dloadmp3-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; bottom:39px; margin:0px !important; font-size:9px !important; text-align:center; left:0px; width:41%; min-width:75px; max-width:425px; padding:0px 0px 0px 0px !important; border:0px; background:transparent url('images/t10b.png') repeat left top !important; color:#fff; line-height:11px !important; -moz-border-radius-topright:3px; -webkit-border-top-right-radius:3px; overflow:hidden; z-index:150; cursor:default; }
88
+ div.dloadmp3-MI.whilelinks, div.dloadmp3-MI.logintext { background:transparent url('images/t50b.png') repeat left top !important; }
89
+ div.dloadmp3-MI.whilelinks:hover { background:transparent url('images/t40b.png') repeat left top !important; }
90
+ div.dloadmp3-MI a { color:#ececec; display:block; width:auto; padding:1px 5px 2px 2px !important; margin:0px !important; background:transparent; text-decoration:none !important; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; font-size:9px !important; line-height:11px !important; height:100%; border-bottom:none; visibility:hidden; }
91
+ div.dloadmp3-MI a:hover { outline: none; border-bottom: none; color: #ececec; }
92
+ div.dloadmp3-MI.whilelinks a { color: #f3f3f3; visibility: inherit; }
93
+ div.dloadmp3-MI.whilelinks a:hover { color: #fff; }
94
+ div.dloadmp3-MI p { color:#ececec; display:block; width:auto; padding:1px 5px 2px 2px !important; margin:0px !important; background:transparent; text-decoration:none !important; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; font-size:9px !important; line-height:11px !important; height:100%; border-bottom:none; visibility:visible; }
95
+
96
+ /* POPOUT BUTTON */
97
+ div.mp3j-popout-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif; bottom:17px; left:0px; height:16px; color:#6c6c6c; padding:3px 5px 0px 28px; min-width:2px; line-height:11px; border:1px solid #b2b2b2; background-color:#aaa; background-image:url('images/buttons-popoutE.png'); background-repeat:no-repeat; background-position:-8px -65px; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; cursor:default; }
98
+ div.mp3j-popout-MI:hover { color:#606060; background-position:-8px -95px; }
99
+
100
+ /* BARS
101
+ ----------------- */
102
+ .ui-state-disabled { cursor:default !important; }
103
+ .ui-slider { position:relative; text-align:left; }
104
+ .ui-slider .ui-slider-handle { position:absolute; z-index:200; cursor:default; }
105
+ .ui-slider .ui-slider-range { position:absolute; z-index:1; font-size:.7em; display:block; border:0; }
106
+ .ui-slider-horizontal .ui-slider-range { top:0; height:100%; }
107
+ .ui-slider-horizontal .ui-slider-range-min { left:0; }
108
+ .ui-slider-horizontal .ui-slider-range-max { right:0; }
109
+ .ui-state-default, .ui-widget-content .ui-state-default { outline:none; border:0px; }
110
+
111
+ /* VOLUME */
112
+ div.MIsliderVolume { position:absolute; top:0px; right:4px; width:108px; height:4px !important; background:transparent; border:0px; font-size:1px; cursor:default; z-index:150; }
113
+ div.MIsliderVolume .ui-widget-header { /* background set from admin */ }
114
+ div.MIsliderVolume .ui-slider-handle { border:0px; height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; top:-3px; border:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; background:transparent url('images/vol-handle.png') no-repeat -1px 0px; z-index:150; overflow:hidden !important; cursor:default; }
115
+ div.MIsliderVolume .ui-slider-handle:hover { background:transparent url('images/vol-handle.png') no-repeat -21px 0px; }
116
+ div.MIsliderVolume .ui-state-active, div.MIsliderVolume .ui-widget-content .ui-state-active { border:0px; background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none; }
117
+
118
+ /* LOADER AND POS SLIDER */
119
+ div.bars_holder, div.loadMI_mp3j, div.poscolMI_mp3j, div.posbarMI_mp3j { position:absolute; top:0px; left:0px; }
120
+ div.bars_holder { right:0; width:100%; bottom:38px; font-size:1px; cursor:default; background:transparent url('images/t60w.png') repeat-x left bottom;/* 1px highlight top of control bar */ }
121
+ div.loadMI_mp3j { bottom:1px; /* background set from admin */ /* opacity set from admin */ }
122
+ div.poscolMI_mp3j { bottom:1px; /* background set from admin */ /* opacity set from admin */ }
123
+ div.bars_holder .ui-widget-header, div.bars_holder .ui-widget-content { border:0px !important; background:none; }
124
+ div.bars_holder .ui-slider-horizontal { top:0px; bottom:1px; height:auto; z-index:90; }
125
+ div.posbarMI_mp3j { bottom:1px; width:100%; }
126
+ div.posbarMI_mp3j .ui-slider-handle { top:-6px; margin-left:-1px !important; border:0; bottom:-2px; width:2px !important; z-index:100; background:none; cursor:default ; padding:0px !important; }
127
+ div.posbarMI_mp3j .ui-slider-handle:hover { background:none; z-index:100; }
128
+
129
+
130
+
131
+
132
+ /*-------------------------
133
+ [mp3j] & [mp3t] SHORTCODES
134
+ ==================================== */
135
+ span.wrap_inline_mp3j { position:relative; width:auto; cursor:pointer; padding:0; white-space:nowrap; text-align:left; }
136
+ /*span.wrap_inline_mp3j:hover .buttons_mp3j { background:transparent url('images/transport-shard-B.png') no-repeat -80px -35px; }*/
137
+ span.indi_mp3j { position:relative; padding-left:2px; font-size: 0.7em !important; }
138
+
139
+ /* BARS */
140
+ span.bars_mp3j { position:absolute; width:100%; height:100%; }
141
+ span.load_mp3j, span.loadB_mp3j { position:absolute; /* background set from admin */ top:20px; left:0px; height:2px; }
142
+ /* mp3t */
143
+ span.posbar_mp3j { position:absolute; width:100%; height:100%; border:0px solid #f77; }
144
+ span.posbar_mp3j .ui-widget-header { z-index:-500; }
145
+ span.posbar_mp3j .ui-slider-handle { top: 2px; margin-left:-2px; border:1px solid #999; height:21px; width:4px; z-index:500; background:url('images/mp3t-poshandle.png') repeat-y -50px 0px; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
146
+ span.posbar_mp3j .ui-slider-handle:hover { background:url('images/mp3t-poshandle.png') repeat-y -0px 0px; border-color:#aaa; }
147
+
148
+ /* mp3j */
149
+ span.posbarB_mp3j { position:absolute; width:100%; height:100%; border:0; z-index:450; cursor:pointer; }
150
+ span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:450; height:100%; }
151
+ span.posbarB_mp3j .ui-slider-handle { top: 0px; margin-left:-6px !important; border:0px solid #888; height:23px; width:12px !important; z-index: 500; background: transparent url('images/inlineHandle2.png') no-repeat -3px -3px; cursor: default; padding:0px !important; }
152
+ span.posbarB_mp3j .ui-slider-handle:hover { background: transparent url('images/inlineHandle2.png') no-repeat -3px -33px; }
153
+
154
+ /* SPAN TRANSPORT */
155
+ span.group_wrap { position:relative; margin:0px 0px 0px 0px; width:auto; }
156
+ span.textbutton_mp3j, span.T_mp3j { position:relative; width:auto; margin:0px; padding:0px !important; }
157
+ span.buttons_mp3j { position:relative; margin:0px; padding:2px 0px 3px 20px !important; background: transparent url('images/transport-shard-B.png') no-repeat -80px -3px; }
158
+ span.buttons_mp3j:hover { background:transparent url('images/transport-shard-B.png') no-repeat -80px -35px; }
159
+ span.buttons_mp3jpause { position:relative; margin:0px; padding:2px 0px 3px 20px !important; background: transparent url('images/transport-shard-B.png') no-repeat -2px -3px; }
160
+ span.buttons_mp3jpause:hover { background:transparent url('images/transport-shard-B.png') no-repeat -2px -35px; }
161
+
162
+ /* VOLUMES */
163
+ span.vol_mp3t { position:absolute; top:-4px; right:4px; width:90%; max-width:100px; height:2px; }
164
+ span.vol_mp3j { position:absolute; top:-9px; right:6px; width:85%; max-width:100px; height:2px; }
165
+ span.vol_mp3j.flipped { right:4px; }
166
+ span.vol_mp3t .ui-widget-header, span.vol_mp3j .ui-widget-header { background: transparent url('images/vol-grad60b2.png') repeat left top; z-index:500; height:100%; }
167
+ span.vol_mp3t .ui-slider-handle, span.vol_mp3j .ui-slider-handle { height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; border:0px !important; border-radius:2px; -moz-border-radius:2px; -webkit-border-radius:2px; z-index:600; overflow:hidden !important; cursor:default; top:-6px; background: transparent url('images/vol-handle.png') no-repeat -1px 0px; }
168
+ span.vol_mp3t .ui-slider-handle:hover, span.vol_mp3j .ui-slider-handle:hover { background: transparent url('images/vol-handle.png') no-repeat -21px 0px; }
169
+ span.vol_mp3t .ui-state-active, span.vol_mp3t .ui-widget-content .ui-state-active, span.vol_mp3j .ui-state-active, span.vol_mp3j .ui-widget-content .ui-state-active { background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none; border:0px; }
170
+
171
+
172
+
173
+ /*----------------------
174
+ [mp3j-popout] SHORTCODE
175
+ ================================================= */
176
+ .mp3j-popout-link-wrap { cursor:pointer; position:relative; clear:left; }
177
+ .mp3j-popout-link { float:left; margin:0 5px 0 0; min-width:22px; min-height:18px; background:url('images/buttons-popout.png') no-repeat -10px -65px; }
178
+ .mp3j-popout-link-wrap:hover .mp3j-popout-link { background:url('images/buttons-popout.png') no-repeat -10px -95px; }
179
+
180
+
181
+
182
+ /*=================================================
183
+
184
+ MODS
185
+ (via 'style' param in shortcode)
186
+ ================================================= */
187
+
188
+ /* ===== "dark" ===== */
189
+ .dark .innerx { background-position:left -119px; }
190
+ .dark .transport-MI { height:38px; }
191
+ .dark .transport-MI div { background-image:url("images/transport-darkbg-trans2.png"); }
192
+ .dark .bars_holder { background:url('images/t40b.png') repeat-x left bottom; }
193
+ .dark .mp3j-popout-MI { color:#a2a2a2; background-position:-8px -6px; border-color:#585858; background-color:#aaa; }
194
+ .dark .mp3j-popout-MI:hover { color:#aaa; background-position:-8px -36px; }
195
+ .dark div.playlist-toggle-MI { background:#505050; color:#a2a2a2; }
196
+ .dark div.playlist-toggle-MI:hover { background:#585858; color:#aaa; }
197
+ .dark .MI-image img { background-color:#777; }
198
+
199
+ /* ===== "text" ===== */
200
+ div.wrap-MI.text { /*min-width:300px;*/ }
201
+ .text div.innerx, .text div.innerleft, .text div.innerright { position: absolute; visibility: hidden; }
202
+ .text div.innertab { bottom: 38px; }
203
+ .text div.jp-interface { background:none; }
204
+ .text div.player-track-title { font:normal normal 500 16px/18px 'trebuchet ms', Arial, sans-serif; }
205
+ .text div.player-track-title span { font:italic normal 500 12px/14px 'trebuchet ms', Arial, sans-serif; opacity:0.7; filter:alpha(opacity=70); }
206
+ .text div.jp-play-time, .text div.jp-total-time, .text div.statusMI { bottom:20px; font-size:11px; font-family: 'trebuchet ms', Arial, sans-serif; }
207
+ .text div.jp-play-time { width:37px; left:0px; opacity:0.6; filter:alpha(opacity=60); }
208
+ .text div.jp-total-time { width:37px; left:100px; display:none; }
209
+ .text div.statusMI { left:37px; width:70px !important; }
210
+ .text div.transport-MI { height:26px; right:2px; bottom:12px; }
211
+ .text div.transport-MI div { font-family: 'trebuchet ms', Arial, sans-serif; font-weight:700; overflow:hidden !important; background:none !important; white-space:nowrap !important; }
212
+ .text div.buttons_mp3j { text-indent:4px !important; width:32px; overflow:hidden !important; height: 25px; margin:0 6px 0 0px; background:none !important; line-height:25px !important; font-size:14px; }
213
+ .text div.buttons_mp3jpause { text-indent:-29px !important; width:38px; overflow:hidden !important; height: 25px; margin:0 -3px 0 3px; background:none !important; line-height:25px !important; font-size:14px; }
214
+ .text div.Prev_mp3j, .text div.Next_mp3j { text-indent:0px !important; height:23px; line-height:23px !important; font-size:12px; width:36px; margin:2px 0px 0px 0px; }
215
+ .text div.stop_mp3j { text-indent:0px !important; width:31px; height:25px; margin:0px 0px 0px 4px; line-height:25px !important; font-size:14px; }
216
+ .text div.playlist-toggle-MI { bottom: 7px; font-family:'trebuchet ms', Arial, sans-serif; background:none; padding:0; opacity:0.6; filter:alpha(opacity=60); }
217
+ .text div.playlist-toggle-MI:hover { opacity:1.0; filter:alpha(opacity=100); }
218
+ .text div.dloadmp3-MI { font-size:11px; bottom: 6px; height:auto; right:0px !important; left:auto; margin:0; font-family: 'trebuchet ms', Arial, sans-serif; text-align:right; background:none !important; }
219
+ .text div.dloadmp3-MI a { color:#888; font-size:inherit; margin:0px !important; padding: 0px !important; background:none !important; text-decoration:none; }
220
+ .text div.dloadmp3-MI a:hover { color:#555; background:none !important; }
221
+ .text div.dloadmp3-MI.betweenlinks a { display:none; background:none !important; }
222
+ .text div.dloadmp3-MI.whilelinks a { display:block; background:none !important; }
223
+ .text div.dloadmp3-MI.whilelinks a:hover { text-decoration:none; background:none !important; }
224
+ .text div.dloadmp3-MI p { font-size: inherit; margin:0px !important; padding: 0px !important; background:none !important; text-decoration:none; }
225
+ .text div.mp3j-popout-MI { color:#888; font:normal normal 500 11px 'trebuchet ms', 'arial', sans-serif; bottom:15px; right:155px; left:auto; width:auto; opacity:1; filter:alpha(opacity=100); padding:0px; line-height:12px; border:0; background:none; cursor:default; z-index:500; }
226
+ .text div.mp3j-popout-MI:hover { color:#555; opacity:1.0; filter:alpha(opacity=100); }
227
+ .text div.MIsliderVolume { position:absolute; bottom:38px; top:auto; right:4px; width:108px !important; height:1px !important; background:transparent; border:0px; font-size:1px; cursor:default; z-index:150; }
228
+ .text div.MIsliderVolume .ui-slider-handle, .text div.vol_mp3j .ui-slider-handle { height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; top:-7px; border:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; background:transparent url('images/vol-handle.png') no-repeat -41px 0px; z-index:150; overflow:hidden !important; cursor:default; }
229
+ .text div.MIsliderVolume .ui-slider-handle:hover, .text div.vol_mp3j .ui-slider-handle:hover { background:transparent url('images/vol-handle.png') no-repeat -21px 0px; }
230
+ .text div.MIsliderVolume .ui-state-active, .text div.MIsliderVolume .ui-widget-content .ui-state-active, .text div.vol_mp3j .ui-state-active, .text div.vol_mp3j .ui-widget-content .ui-state-active { border:0px; background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none; }
231
+ .text div.dloadmp3-MI.whilelinks, .text div.dloadmp3-MI.logintext { background:none !important; }
232
+
233
+
234
+ /* ===== "noscreen" ===== */
235
+ .noscreen div.jp-interface { height:44px; min-height:44px; }
236
+ .noscreen div.player-track-title { display:none; }
237
+ .noscreen div.bars_holder { top:auto; bottom:0px; height:7px; }
238
+ .noscreen div.innertab { bottom: 0px; top:0; display:none; }
239
+ .noscreen div.dloadmp3-MI { bottom: 11px; }
240
+ .noscreen div.transport-MI { bottom:17px; }
241
+ .noscreen div.jp-play-time, .noscreen div.jp-total-time, .noscreen div.statusMI { bottom:25px; }
242
+ .noscreen div.playlist-toggle-MI { bottom: 12px; }
243
+ .noscreen div.mp3j-popout-MI { bottom: 20px; }
244
+ .noscreen div.MIsliderVolume { bottom: 43px; }
245
+ .noscreen div.MIsliderVolume .ui-widget-header { background:transparent url('images/vol-grad60b2.png') repeat-y 0px top; }
246
+ .noscreen div.MIsliderVolume .ui-slider-handle { top:-6px; }
247
+ .noscreen h2 { margin:0 !important; padding:0 0 0px 0 !important; }
248
+ .noscreen div.posbarMI_mp3j .ui-slider-handle { top:-5px; margin-left:-7px !important; border:0; bottom:-5px; width:14px !important; z-index:100; background:none; border:none; cursor:default ; padding:0px !important; }
249
+ .noscreen div.posbarMI_mp3j .ui-slider-handle:hover { background:none; border:none; }
250
+ .noscreen .MI-image { top:15px; }
251
+
252
+
253
+ /* ===== "nolistbutton" ===== */
254
+ .nolistbutton div.playlist-toggle-MI { visibility:hidden; }
255
+
256
+ /* ===== "nopopoutbutton" ===== */
257
+ .nopopoutbutton div.mp3j-popout-MI { display:none; }
258
+
259
+ /* ===== "nopn" ===== */
260
+ .nopn div.Prev_mp3j { display:none; }
261
+ .nopn div.Next_mp3j { display:none; }
262
+
263
+ /* ===== "nostop" ===== */
264
+ .nostop div.stop_mp3j { display:none; }
265
+
266
+
267
+ /* ===== "bars100" ===== */
268
+ .bars100 div.player-track-title { left:112px; }
269
+ .bars100 div.dloadmp3-MI { left:102px; width:36%;}
270
+ .bars100 div.bars_holder { left:102px; width:auto; }
271
+ .bars100 .MI-image img { padding:1px; }
272
+ .bars100 div.player-track-title { top:20px; }
273
+
274
+ /* ===== "bars150" ===== */
275
+ .bars150 div.player-track-title { left:162px; }
276
+ .bars150 div.dloadmp3-MI { left:152px; width:33%;}
277
+ .bars150 div.bars_holder { left:152px; width:auto; }
278
+ .bars150 .MI-image img { padding:1px; }
279
+ .bars150 div.player-track-title { top:20px; }
280
+
281
+ /* ===== "bars200" ===== */
282
+ .bars200 div.player-track-title { left:212px; }
283
+ .bars200 div.dloadmp3-MI { left:202px; width:30%; }
284
+ .bars200 div.bars_holder { left:202px; width:auto; }
285
+ .bars200 .MI-image img { padding:1px; }
286
+ .bars200 div.player-track-title { top:20px; }
287
+
288
+ /* ===== "bars250" ===== */
289
+ .bars250 div.player-track-title { left:262px; }
290
+ .bars250 div.dloadmp3-MI { left:252px; width:27%;}
291
+ .bars250 div.bars_holder { left:252px; width:auto; }
292
+ .bars250 .MI-image img { padding:1px; }
293
+ .bars250 div.player-track-title { top:20px; }
294
+
295
+ /* ===== "bars300" ===== */
296
+ .bars300 div.player-track-title { left:312px; }
297
+ .bars300 div.dloadmp3-MI { left:302px; width:24%; }
298
+ .bars300 div.bars_holder { left:302px; width:auto; }
299
+ .bars300 .MI-image img { padding:1px; }
300
+ .bars300 div.player-track-title { top:20px; }
301
+
302
+ /* ===== "bars350" ===== */
303
+ .bars350 div.player-track-title { left:362px; }
304
+ .bars350 div.dloadmp3-MI { left:352px; width:21%;}
305
+ .bars350 div.bars_holder { left:352px; width:auto; }
306
+ .bars350 .MI-image img { padding:1px; }
307
+ .bars350 div.player-track-title { top:20px; }
308
+
309
+ /* ===== "bars400" ===== */
310
+ .bars400 div.player-track-title { left:412px; }
311
+ .bars400 div.dloadmp3-MI { left:402px; width:18%; }
312
+ .bars400 div.bars_holder { left:402px; width:auto; }
313
+ .bars400 .MI-image img { padding:1px; }
314
+ .bars400 div.player-track-title { top:20px; }
315
+
316
+ /* ===== bigger1 ===== */
317
+ .bigger1 { font-size:18px; line-height:26px !important; margin:0 !important; }
318
+ .bigger1 span.load_mp3j,
319
+ .bigger1 span.loadB_mp3j { top:24px; left:0px; height:2px; }
320
+ .bigger1 span.posbar_mp3j .ui-slider-handle { top: 3px; height:24px; width:6px !important; margin-left:-3px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
321
+ .bigger1 span.posbarB_mp3j .ui-slider-handle { top: 3px; margin-left:-3px !important; border:1px solid #999; height:24px; width:6px !important; z-index:500; background:url('images/mp3t-poshandle.png') repeat-y -50px 0px; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
322
+ .bigger1 span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/mp3t-poshandle.png') repeat-y 0px 0px; border-color:#aaa; }
323
+ .bigger1 span.buttons_mp3j { position:relative; margin:0px; margin-left:5px !important; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -80px 0px; }
324
+ .bigger1 span.buttons_mp3j:hover { background:transparent url('images/transport-shard-B.png') no-repeat -80px -32px; }
325
+ .bigger1 span.buttons_mp3jpause { position:relative; margin:0px; margin-left:5px !important; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -2px 0px; }
326
+ .bigger1 span.buttons_mp3jpause:hover { background:transparent url('images/transport-shard-B.png') no-repeat -2px -32px; }
327
+ .bigger1 span.vol_mp3j { position:absolute; top:-6px; right:7px; width:85%; max-width:100px; height:2px; }
328
+
329
+ .bigger1 div.player-track-title { font:normal normal 500 18px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
330
+ .bigger1 div.player-track-title span { font:normal normal 500 14px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
331
+ .bigger1 ul.UL-MI_mp3j li a, .bigger1 ul.UL-MI_mp3j li { font-size:16px !important; line-height:19px !important; }
332
+ .bigger1 .indi_mp3j { font-size: 0.6em !important; }
333
+
334
+ /* ===== "bigger2" ===== */
335
+ .bigger2 div.player-track-title { font:normal normal 500 36px/38px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
336
+ .bigger2 div.player-track-title span { font:normal normal 500 20px/22px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
337
+ .bigger2 ul.UL-MI_mp3j li a, .bigger2 ul.UL-MI_mp3j li { font-size:20px !important; line-height:24px !important; }
338
+ .bigger2 { font-size:23px; line-height:25px !important; margin:0 !important; }
339
+ .bigger2 span.load_mp3j,
340
+ .bigger2 span.loadB_mp3j { top:26px; left:0px; height:2px; }
341
+ .bigger2 span.posbar_mp3j .ui-slider-handle { top: 0px; height:28px; width:6px !important; margin-left:-3px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
342
+ .bigger2 span.posbarB_mp3j .ui-slider-handle { top: -1px; margin-left:-3px !important; border:1px solid #999; height:29px; width:8px !important; z-index:500; border-color:#aaa; background:url('images/mp3t-poshandle.png') repeat-y 0px 0px; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
343
+ .bigger2 span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/mp3t-poshandle.png') repeat-y -50px 0px; border-color:#999; }
344
+ .bigger2 span.buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:2px 0px 4px 20px !important; background:url('images/play-dark2-b.png') no-repeat -186px center; border:0px solid #bbb; margin-left:10px; }
345
+ .bigger2 span.buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -437px center; }
346
+ .bigger2 span.buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:0px 0px 2px 20px !important; background:url('images/stop-dark2-b.png') repeat-y 0px top; border:0px solid #bbb; margin-left:10px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
347
+ .bigger2 span.buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
348
+ .bigger2 span.vol_mp3j { position:absolute; top:-12px; right:4px; width:85%; max-width:100px; height:2px; }
349
+ .bigger2 span.vol_mp3t { position:absolute; top:-10px; width:85%; max-width:100px; height:2px; }
350
+ .bigger2 .Smp3-finding,
351
+ .bigger2 .mp3-tint,
352
+ .bigger2 .mp3-gtint { margin-left:8px; margin-right:6px; padding:0px 0px 0px 10px !important; font-size:12px !important; line-height:12px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
353
+ .bigger2 .mp3-gtint { margin:0 6px 0 -16px; }
354
+ .bigger2 .indi_mp3j { font-size: 0.5em !important; padding-left:0px; }
355
+
356
+ .bigger2.wh .buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:2px 0px 4px 20px !important; background:url('images/play-dark2-w.png') no-repeat -186px center; border:0px solid #bbb; margin-left:10px; }
357
+ .bigger2.wh .buttons_mp3j:hover { background:url('images/play-dark2-w.png') no-repeat -437px center; }
358
+ .bigger2.wh .buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:0px 0px 2px 20px !important; background:url('images/stop-dark2-w.png') repeat-y 0px top; border:0px solid #bbb; margin-left:10px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
359
+ .bigger2.wh .buttons_mp3jpause:hover { background:url('images/stop-dark2-w.png') repeat-y -350px top; }
360
+
361
+
362
+
363
+ /* ===== bigger3 ===== */
364
+ .bigger3 { font-size:28px; line-height:36px !important; margin:0 !important; }
365
+ .bigger3 .load_mp3j, .bigger3 .loadB_mp3j { top:37px; left:0px; height:3px; }
366
+ .bigger3 .posbar_mp3j .ui-slider-handle, .bigger3 .posbarB_mp3j .ui-slider-handle { top: 0px; border:1px solid #bbb; height:40px; width:12px !important; margin-left:-5px !important; background:url('images/stop-dark2.png') repeat-y -350px top; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
367
+ .bigger3 .posbar_mp3j .ui-slider-handle:hover, .bigger3 .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2.png') repeat-y 0px top; border:1px solid #aaa; }
368
+ .bigger3 .indi_mp3j { font-size: 0.5em !important; }
369
+ .bigger3 span.buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:8px 0px 12px 30px !important; background:url('images/play-dark2.png') no-repeat -177px center; border:0px solid #bbb; margin-left:12px; }
370
+ .bigger3 span.buttons_mp3j:hover { background:url('images/play-dark2.png') no-repeat -428px center; }
371
+ .bigger3 span.buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:2px 0px 6px 30px !important; background:url('images/stop-dark2.png') repeat-y 0px top; border:0px solid #bbb; margin-left:12px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
372
+ .bigger3 span.buttons_mp3jpause:hover { background:url('images/stop-dark2.png') repeat-y -350px top; }
373
+ .bigger3 .vol_mp3j { height:1px; max-width:110px; right:64px; top:-8px; }
374
+ .bigger3 .vol_mp3t { height:1px; max-width:110px; right:16px; top:-5px; }
375
+ .bigger3 .vol_mp3j .ui-slider-handle, .bigger3 .vol_mp3t .ui-slider-handle { height:14px !important; width:33px !important; margin-left:-16px; border-bottom:1px solid #ccc !important; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; top:-14px; background:url('images/volhandle-dark2.png') no-repeat -10px bottom; }
376
+ .bigger3 .vol_mp3j .ui-slider-handle:hover, .bigger3 .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2.png') no-repeat -257px bottom; }
377
+ .bigger3 .Smp3-finding,
378
+ .bigger3 .mp3-tint,
379
+ .bigger3 .mp3-gtint { margin-left:8px; padding:0px 0px 0px 14px !important; font-size:18px !important; line-height:20px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
380
+ .bigger3 .mp3-gtint { margin:0 2px 0 -14px; }
381
+ .bigger3 div.player-track-title { font:normal normal 500 44px/46px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
382
+ .bigger3 div.player-track-title span { font:normal normal 500 28px/30px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
383
+ .bigger3 ul.UL-MI_mp3j li a, .bigger3 ul.UL-MI_mp3j li { font-size:28px !important; line-height:30px !important; }
384
+
385
+ .bigger3.bl span.buttons_mp3j { background:url('images/play-dark2-b.png') no-repeat -177px center; }
386
+ .bigger3.bl span.buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -428px center; }
387
+ .bigger3.bl span.buttons_mp3jpause { background:url('images/stop-dark2-b.png') repeat-y 0px top; }
388
+ .bigger3.bl span.buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
389
+ .bigger3.bl span.vol_mp3j .ui-slider-handle, .bigger3.bl span.vol_mp3t .ui-slider-handle { background:url('images/volhandle-dark2-b.png') no-repeat -10px bottom; }
390
+ .bigger3.bl span.vol_mp3j .ui-slider-handle:hover, .bigger3.bl span.vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-b.png') no-repeat -257px bottom; }
391
+
392
+
393
+
394
+ /* ===== bigger4 ===== */
395
+ .bigger4 { font-size:38px; line-height:46px !important; margin:0 !important; }
396
+ .bigger4 .load_mp3j, .bigger4 .loadB_mp3j { top:46px; left:0px; height:3px; }
397
+ .bigger4 .posbar_mp3j .ui-slider-handle, .bigger4 .posbarB_mp3j .ui-slider-handle { top: -2px; border:1px solid #bbb; height:52px; width:16px !important; margin-left:-8px !important; background:url('images/stop-dark2.png') repeat-y -350px top; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
398
+ .bigger4 .posbar_mp3j .ui-slider-handle:hover, .bigger4 .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2.png') repeat-y 0px top; border:1px solid #aaa; }
399
+ .bigger4 .indi_mp3j { font-size: 0.5em !important; }
400
+ .bigger4 span.buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:8px 0px 12px 40px !important; background:url('images/play-dark2.png') no-repeat -167px center; border:0px solid #bbb; margin-left:15px; }
401
+ .bigger4 span.buttons_mp3j:hover { background:url('images/play-dark2.png') no-repeat -418px center; }
402
+ .bigger4 span.buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:2px 0px 4px 40px !important; background:url('images/stop-dark2.png') repeat-y 0px top; border:0px solid #bbb; margin-left:15px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
403
+ .bigger4 span.buttons_mp3jpause:hover { background:url('images/stop-dark2.png') repeat-y -350px top; }
404
+ .bigger4 .vol_mp3j { height:1px; max-width:110px; right:86px; top:-8px; }
405
+ .bigger4 .vol_mp3t { height:1px; max-width:110px; right:20px; top:-5px; }
406
+ .bigger4 .vol_mp3j .ui-slider-handle, .bigger4 .vol_mp3t .ui-slider-handle { height:20px !important; width:43px !important; margin-left:-21px; border-bottom:1px solid #ccc !important; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; top:-20px; background:url('images/volhandle-dark2.png') no-repeat -10px bottom; }
407
+ .bigger4 .vol_mp3j .ui-slider-handle:hover, .bigger4 .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2.png') no-repeat -257px bottom; }
408
+ .bigger4 .Smp3-finding,
409
+ .bigger4 .mp3-tint,
410
+ .bigger4 .mp3-gtint { margin-left:8px; margin-right:6px; padding:0px 0px 0px 14px !important; font-size:18px !important; line-height:20px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
411
+ .bigger4 .mp3-gtint { margin:0 6px 0 -20px; }
412
+
413
+ .bigger4 div.player-track-title { font:normal normal 500 44px/46px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
414
+ .bigger4 div.player-track-title span { font:normal normal 500 28px/30px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
415
+ .bigger4 ul.UL-MI_mp3j li a, .bigger4 ul.UL-MI_mp3j li { font-size:28px !important; line-height:30px !important; }
416
+
417
+ .bigger4.bl .posbar_mp3j .ui-slider-handle, .bigger4.bl .posbarB_mp3j .ui-slider-handle { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
418
+ .bigger4.bl .posbar_mp3j .ui-slider-handle:hover, .bigger4.bl .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2-b.png') repeat-y 0px top; }
419
+ .bigger4.bl .buttons_mp3j { background:url('images/play-dark2-b.png') no-repeat -167px center; }
420
+ .bigger4.bl .buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -418px center; }
421
+ .bigger4.bl .buttons_mp3jpause { background:url('images/stop-dark2-b.png') repeat-y 0px top; }
422
+ .bigger4.bl .buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
423
+ .bigger4.bl .vol_mp3j .ui-slider-handle, .bigger4.bl .vol_mp3t .ui-slider-handle { background:url('images/volhandle-dark2-b.png') no-repeat -10px bottom; }
424
+ .bigger4.bl .vol_mp3j .ui-slider-handle:hover, .bigger4.bl .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-b.png') no-repeat -257px bottom; }
425
+
426
+
427
+
428
+ /* ===== bigger5 ===== */
429
+ .bigger5 { font-size:48px; line-height:60px !important; margin:0 !important; }
430
+ .bigger5 .load_mp3j, .bigger5 .loadB_mp3j { top:63px; left:0px; height:4px; }
431
+ .bigger5 .posbar_mp3j .ui-slider-handle, .bigger5 .posbarB_mp3j .ui-slider-handle { top: -1px; border:1px solid #bbb; height:69px; width:20px !important; margin-left:-10px !important; background:url('images/stop-dark2.png') repeat-y -350px top; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
432
+ .bigger5 .posbar_mp3j .ui-slider-handle:hover, .bigger5 .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2.png') repeat-y 0px top; border:1px solid #aaa; }
433
+ .bigger5 .indi_mp3j { font-size: 0.5em !important; }
434
+ .bigger5 span.buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:8px 0px 13px 52px !important; background:url('images/play-dark2.png') no-repeat -154px center; border:0px solid #bbb; margin-left:20px; }
435
+ .bigger5 span.buttons_mp3j:hover { background:url('images/play-dark2.png') no-repeat -405px center; }
436
+ .bigger5 span.buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:3px 0px 8px 52px !important; background:url('images/stop-dark2.png') repeat-y 0px top; border:0px solid #bbb; margin-left:15px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
437
+ .bigger5 span.buttons_mp3jpause:hover { background:url('images/stop-dark2.png') repeat-y -350px top; }
438
+ .bigger5 .vol_mp3j { height:1px; max-width:170px; right:115px; top:-10px; }
439
+ .bigger5 .vol_mp3t { height:1px; max-width:170px; right:33px; top:-5px; }
440
+ .bigger5 .vol_mp3j .ui-slider-handle, .bigger5 .vol_mp3t .ui-slider-handle { height:30px !important; width:55px !important; margin-left:-21px; border-bottom:1px solid #aaa !important; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; top:-30px; background:url('images/volhandle-dark2.png') no-repeat -10px bottom; }
441
+ .bigger5 .vol_mp3j .ui-slider-handle:hover, .bigger5 .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2.png') no-repeat -257px bottom; }
442
+ .bigger5 .Smp3-finding,
443
+ .bigger5 .mp3-tint,
444
+ .bigger5 .mp3-gtint { margin-left:8px; margin-right:6px; padding:0px 0px 0px 14px !important; font-size:18px !important; line-height:20px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
445
+ .bigger5 .mp3-gtint { margin:0 6px 0 -20px; }
446
+
447
+ .bigger5.bl .posbar_mp3j .ui-slider-handle, .bigger5.bl .posbarB_mp3j .ui-slider-handle { background:url('images/stop-dark2-b.png') repeat-y -350px top; border:1px solid #888; }
448
+ .bigger5.bl .posbar_mp3j .ui-slider-handle:hover, .bigger5.bl .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2-b.png') repeat-y 0px top; border:1px solid #777; }
449
+ .bigger5.bl .buttons_mp3j { background:url('images/play-dark2-b.png') no-repeat -154px center; border:0px solid #bbb; margin-left:20px; }
450
+ .bigger5.bl .buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -405px center; }
451
+ .bigger5.bl .buttons_mp3jpause { background:url('images/stop-dark2-b.png') repeat-y 0px top; }
452
+ .bigger5.bl .buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
453
+ .bigger5.bl .vol_mp3j .ui-slider-handle, .bigger5.bl .vol_mp3t .ui-slider-handle { background:url('images/volhandle-dark2-b.png') no-repeat -10px bottom; }
454
+ .bigger5.bl .vol_mp3j .ui-slider-handle:hover, .bigger5.bl .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-b.png') no-repeat -257px bottom; }
455
+
456
+
457
+ /* ===== "smaller" ===== */
458
+ .smaller div.player-track-title { font:normal normal 500 11px/13px 'verdana', 'Lucida Grande', 'arial', sans-serif !important; left:3px; right:5px; }
459
+ .smaller div.player-track-title span { font:normal normal 500 10px/10px 'verdana', 'Lucida Grande', 'arial', sans-serif !important; padding:0; }
460
+ .smaller ul.UL-MI_mp3j li a, .smaller ul.UL-MI_mp3j li { font-size:10px !important; font-family:'verdana', Helvetica, sans-serif !important; line-height:13px !important; }
461
+
462
+
463
+ /* ===== outline ==== */
464
+ span.outline { font-size:14px; line-height:22px !important; margin:0 !important; }
465
+ .outline span.vol_mp3t { position:absolute; top:-4px; right:4px; width:90%; max-width:100px; height:2px; background: transparent; }
466
+ .outline span.vol_mp3j { position:absolute; top:-9px; right:7px; width:85%; max-width:100px; height:2px; background: transparent; }
467
+ .outline span.buttons_mp3j { padding:2px 0px 5px 20px !important; background: transparent url('images/transport-outline.png') no-repeat -80px -1px; border:0; margin:0; }
468
+ .outline span.buttons_mp3j:hover { background:transparent url('images/transport-outline.png') no-repeat -80px -33px; }
469
+ .outline span.buttons_mp3jpause { padding:2px 0px 5px 20px !important; background: transparent url('images/transport-outline.png') no-repeat 1px -1px; border:0; margin:0; }
470
+ .outline span.buttons_mp3jpause:hover { background:transparent url('images/transport-outline.png') no-repeat 1px -33px; }
471
+ .outline span.posbarB_mp3j { position:absolute; width:100%; height:100%; border:0px solid #f77; }
472
+ .outline span.posbarB_mp3j .ui-widget-header { z-index:-500; }
473
+ .outline span.posbarB_mp3j .ui-slider-handle { top: 0px; margin-left:0px; border:1px solid #aaa; height:23px; width:5px !important; z-index:500; background:url('images/t10b.png') repeat; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
474
+ .outline span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/t20b.png') repeat; border-color:#777; }
475
+ .outline div.transport-MI div { background-image: url("images/transport-hardZ.png"); }
476
+ .outline div.mp3j-popout-MI { background-image:url('images/buttons-popoutF.png'); }
477
+
478
+ .dark.outline div.transport-MI div { background-image: url("images/transport-hardK.png"); }
479
+ .dark.outline div.mp3j-popout-MI { background-image:url('images/buttons-popoutF.png'); }
480
+
481
+
482
+ /* ===== wtransbars ==== */
483
+ .wtransbars div.loadMI_mp3j { background:#fff; opacity:0.1; filter:alpha(opacity=10); }
484
+ .wtransbars div.poscolMI_mp3j { background:#fff url('http://sjward.org/wp-content/plugins/mp3-jplayer/css/images/posbar-soften-tipped-2.png') repeat-y right top; opacity:0.15; filter:alpha(opacity=15); }
485
+ .wtransbars div.player-track-title { color:#fff; }
486
+
487
+ /* ===== btransbars ==== */
488
+ .btransbars div.loadMI_mp3j { background:#000; opacity:0.1; filter:alpha(opacity=10); }
489
+ .btransbars div.poscolMI_mp3j { background:#000 url('http://sjward.org/wp-content/plugins/mp3-jplayer/css/images/posbar-soften-tipped-2.png') repeat-y right top; opacity:0.15; filter:alpha(opacity=15); }
490
+ .btransbars div.player-track-title { color:#000; }
491
+
css/players-1-8-text.css ADDED
@@ -0,0 +1,440 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ MP3-jPlayer 1.8 - Text
3
+ www.sjward.org */
4
+
5
+ /*---------------------
6
+ [mp3-jplayer] SHORTCODE
7
+ ==================================== */
8
+
9
+ /* SKIN
10
+ --------------- */
11
+ /* MAIN WRAPPER (default class) */
12
+ div.wrap-MI { border:0; margin:0; background:none; min-width:116px; /* position||float set in-line! */ /* width set in-line! */ }
13
+
14
+ /* SUB WRAPPERS */
15
+ div.jp-innerwrap, div.jp-interface, div.listwrap_mp3j, div.playlist-wrap-MI { position:relative !important; width:100%; border:0; margin:0; padding:0; }
16
+ div.jp-innerwrap { background:none; }
17
+ div.jp-interface { background:url('images/shadow-x.png') repeat-x left bottom; height:101px/*player default height*/; min-height:67px; cursor:default; }
18
+ div.listwrap_mp3j { margin-top:0px; /* background set from admin */ }
19
+
20
+ /* BACKGROUNDS */
21
+ div.innerx, div.innerleft, div.innerright, div.innertab { position:absolute; }
22
+ div.innerx { background:url('images/case-grad-x.png') repeat-x left -45px; width:auto; height:35px; left:0px; right:0px; bottom:3px; }
23
+ div.innerleft { background:url('images/shadow-l.png') no-repeat left bottom; width:1px; height:40px; left:-1px; bottom:0px; }
24
+ div.innerright { background:url('images/shadow-r.png') no-repeat right bottom; width:2px; height:40px; right:-2px; bottom:0px; }
25
+ div.innertab { /* background and opacity set from admin */ left:0px; top:0px; width:100%; bottom:38px; }
26
+
27
+ /* PLAYLIST
28
+ ----------------- */
29
+ div.playlist-colour { position:absolute; width:100%; height:100%; left:0px; top:0px; /* background set from admin */ /* opacity set from admin */ }
30
+ div.playlist-wrap-MI ul { position:static; }
31
+ ul.UL-MI_mp3j { margin:0px !important; padding:0px 0px 0px 0px !important; list-style-type:none !important; list-style:none !important; list-style-image:none !important; font-weight: 500 !important; /* background */ }
32
+ ul.UL-MI_mp3j li { margin:0px !important; padding:0px 0px 1px 0px !important; font-weight:500 !important; line-height:15px !important; letter-spacing:0px !important; font-size:11px !important; word-spacing:0px !important; margin:0px 1px 0px 1px !important; }
33
+ ul.UL-MI_mp3j li:before { content:none !important; }
34
+ ul.UL-MI_mp3j li a { font-size:11px !important; border:0 !important; line-height:15px !important; font-weight:500 !important; text-decoration:none !important; display:block !important; width:auto !important; font-family:'verdana', 'Lucida Grande', 'arial', sans-serif !important; outline:none !important; padding:6px 0px 6px 14px !important; }
35
+
36
+ /* SCREEN
37
+ ----------------- */
38
+ div.player-track-title, div.jp-play-time, div.jp-total-time, div.statusMI { position:absolute; z-index:50; /* color set from admin */ font:normal normal 500 14px/16px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
39
+
40
+ div.player-track-title { top:7px; left:9px; width:auto; right:10px; }
41
+ div.player-track-title span { font-size:10px; line-height:12px; padding-left:10px; max-width:95%; }
42
+
43
+ div.jp-play-time, div.jp-total-time, div.statusMI { font-size:8px; line-height:10px !important; bottom:42px; text-align:left; font-family:Verdana, Arial, Helvetica, sans-serif; }
44
+ div.jp-play-time { right:84px; }
45
+ div.jp-total-time { right:6px; opacity:0.8; width:auto; }
46
+
47
+ span.mp3-finding, span.Smp3-finding, span.mp3-tint, span.mp3-gtint { padding:0px 0px 0px 6px !important; font-size:8px !important; line-height:10px !important; height:10px !important; overflow:hidden !important; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; }
48
+ span.mp3-finding, span.Smp3-finding { margin:0px 0px 0px -2px; background:url('images/finding-bar1f.gif') repeat 0px 3px; }
49
+ span.mp3-tint { margin:0px 2px 0px -6px; opacity:.5; filter:alpha(opacity=50); /* background */ }
50
+ span.mp3-gtint { margin:0px 2px 0px -6px; opacity:.5; filter:alpha(opacity=50); background:#777; }
51
+ span.Smp3-finding { margin:0px 0px 0px 3px; }
52
+ span.tintmarg { margin:0 2px 0 3px; }
53
+
54
+ div.statusMI { right:27px; width:52px !important; height:10px; }
55
+ .statusMI span.mp3-finding, .statusMI span.Smp3-finding, .statusMI span.mp3-tint, .statusMI span.mp3-gtint { padding:0px 0px 0px 6px !important; }
56
+ .statusMI span.mp3-tint, .statusMI span.mp3-gtint { margin:0px 2px 0px -6px; }
57
+
58
+ .MI-image { position:absolute; top:0; left:0; padding:0; }
59
+ .MI-image a img { border:none; padding:1px; background-color:#ccc; }
60
+ .MI-image a:hover img { /* background-colour */ }
61
+
62
+ /* BUTTONS
63
+ ----------------- */
64
+ /* TRANSPORT BUTTONS */
65
+ div.transport-MI { position:absolute; width:auto; height:37px; right:2px; bottom:0px; border:0; }
66
+ div.transport-MI div { float:right; }
67
+ /* play */
68
+ div.buttons_mp3j { width:30px; height:32px; margin:1px 0px 0px 0px; background-position:-110px 0px; }
69
+ div.buttons_mp3j:hover { background-position:-110px -32px; }
70
+ /* pause */
71
+ div.buttons_mp3jpause { width:30px; height:32px; margin:1px 0px 0px 0px; background-position:-2px 0px; }
72
+ div.buttons_mp3jpause:hover { background-position:-2px -32px; }
73
+ /* prev n next */
74
+ div.Prev_mp3j { width:22px; height:28px; margin:1px 4px 0px 0px; background-position:-32px -1px; }
75
+ div.Prev_mp3j:hover { background-position:-32px -33px; }
76
+ div.Next_mp3j { width:19px; height:28px; margin:1px 3px 0px 0px; background-position:-57px -1px; }
77
+ div.Next_mp3j:hover { background-position:-57px -33px; }
78
+ /* stop */
79
+ div.stop_mp3j { width:26px; height:32px; margin:1px 3px 0px 0px; background-position:-81px 0px; }
80
+ div.stop_mp3j:hover { background-position:-81px -32px; }
81
+
82
+ /* PLAYLIST TOGGLE */
83
+ div.playlist-toggle-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif; bottom:4px; left:1px; color:#707070; padding:2px 6px 2px 5px; line-height:9px; min-width:24px; background:#bcbcbc; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; cursor:default; }
84
+ div.playlist-toggle-MI:hover { background:#c6c6c6; color:#777; }
85
+
86
+ /* DOWNLOAD BUTTON */
87
+ div.dloadmp3-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; bottom:39px; margin:0px !important; font-size:9px !important; text-align:center; left:0px; width:41%; min-width:75px; max-width:425px; padding:0px 0px 0px 0px !important; border:0px; background:transparent url('images/t10b.png') repeat left top !important; color:#fff; line-height:11px !important; -moz-border-radius-topright:3px; -webkit-border-top-right-radius:3px; overflow:hidden; z-index:150; cursor:default; }
88
+ div.dloadmp3-MI.whilelinks, div.dloadmp3-MI.logintext { }
89
+ div.dloadmp3-MI.whilelinks:hover { }
90
+ div.dloadmp3-MI a { display:block; width:auto; padding:1px 5px 2px 2px !important; margin:0px !important; background:transparent; text-decoration:none !important; height:100%; border-bottom:none; visibility:hidden; }
91
+ div.dloadmp3-MI a:hover { outline: none; border-bottom: none; color: #ececec; }
92
+ div.dloadmp3-MI.whilelinks a { visibility: inherit; }
93
+ div.dloadmp3-MI.whilelinks a:hover { }
94
+ div.dloadmp3-MI p { display:block; width:auto; padding:1px 5px 2px 2px !important; margin:0px !important; background:transparent; text-decoration:none !important; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif !important; font-size:9px !important; line-height:11px !important; /* after font declaration */ height:100%; border-bottom:none; visibility:visible; }
95
+
96
+ /* POPOUT BUTTON */
97
+ div.mp3j-popout-MI { position:absolute; font:normal normal 500 9px 'trebuchet ms', 'Lucida Grande', 'arial', sans-serif; bottom:17px; left:0px; height:16px; padding:3px 5px 0px 28px; min-width:2px; cursor:default; }
98
+ div.mp3j-popout-MI:hover { background-position:-8px -95px; }
99
+
100
+ /* BARS
101
+ ----------------- */
102
+ .ui-state-disabled { cursor:default !important; }
103
+ .ui-slider { position:relative; text-align:left; }
104
+ .ui-slider .ui-slider-handle { position:absolute; z-index:200; cursor:default; }
105
+ .ui-slider .ui-slider-range { position:absolute; z-index:1; font-size:.7em; display:block; border:0; }
106
+ .ui-slider-horizontal .ui-slider-range { top:0; height:100%; }
107
+ .ui-slider-horizontal .ui-slider-range-min { left:0; }
108
+ .ui-slider-horizontal .ui-slider-range-max { right:0; }
109
+ .ui-state-default, .ui-widget-content .ui-state-default { outline:none; border:0px; }
110
+
111
+ /* VOLUME */
112
+ div.MIsliderVolume { position:absolute; top:0px; right:4px; width:108px; height:4px !important; background:transparent; border:0px; font-size:1px; cursor:default; z-index:150; }
113
+ div.MIsliderVolume .ui-widget-header { /* background */ }
114
+ div.MIsliderVolume .ui-slider-handle { border:0px; height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; top:-3px; border:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; background:transparent url('images/vol-handle.png') no-repeat -1px 0px; z-index:150; overflow:hidden !important; cursor:default; }
115
+ div.MIsliderVolume .ui-slider-handle:hover { background:transparent url('images/vol-handle.png') no-repeat -21px 0px; }
116
+ div.MIsliderVolume .ui-state-active, div.MIsliderVolume .ui-widget-content .ui-state-active { border:0px; background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none; }
117
+
118
+ /* LOADER AND POS SLIDER */
119
+ div.bars_holder, div.loadMI_mp3j, div.poscolMI_mp3j, div.posbarMI_mp3j { position:absolute; top:0px; left:0px; }
120
+ div.bars_holder { right:0; width:100%; bottom:38px; font-size:1px; cursor:default; background:transparent url('images/t60w.png') repeat-x left bottom;/* 1px highlight top of control bar */ }
121
+ div.loadMI_mp3j { bottom:1px; /* background */ /* opacity */ }
122
+ div.poscolMI_mp3j { bottom:1px; /* background */ /* opacity */ }
123
+ div.bars_holder .ui-widget-header, div.bars_holder .ui-widget-content { border:0px !important; background:none; }
124
+ div.bars_holder .ui-slider-horizontal { top:0px; bottom:1px; height:auto; z-index:90; }
125
+ div.posbarMI_mp3j { bottom:1px; width:100%; }
126
+ div.posbarMI_mp3j .ui-slider-handle { top:-6px; margin-left:-1px !important; border:0; bottom:-2px; width:2px !important; z-index:100; background:none; cursor:default ; padding:0px !important; }
127
+ div.posbarMI_mp3j .ui-slider-handle:hover { background:none; z-index:100; }
128
+
129
+
130
+
131
+
132
+
133
+ /* text mods as default */
134
+ div.innerx, div.innerleft, div.innerright { position: absolute; visibility: hidden; }
135
+ div.innertab { bottom: 38px; }
136
+ div.jp-interface { background:none; }
137
+ div.player-track-title { font:normal normal 500 16px/18px 'trebuchet ms', Arial, sans-serif; }
138
+ div.player-track-title span { font:italic normal 500 12px/14px 'trebuchet ms', Arial, sans-serif; opacity:0.7; filter:alpha(opacity=70); }
139
+ div.jp-play-time, div.jp-total-time, div.statusMI { bottom:20px; font-size:11px; font-family: 'trebuchet ms', Arial, sans-serif; }
140
+ div.jp-play-time { width:37px; left:0px; opacity:0.6; filter:alpha(opacity=60); }
141
+ div.jp-total-time { width:37px; left:100px; display:none; }
142
+ div.statusMI { left:37px; width:70px !important; }
143
+ div.transport-MI { height:26px; right:2px; bottom:12px; }
144
+ div.transport-MI div { font-family: 'trebuchet ms', Arial, sans-serif; font-weight:700; overflow:hidden !important; background:none !important; white-space:nowrap !important; }
145
+ div.buttons_mp3j { text-indent:4px !important; width:32px; overflow:hidden !important; height: 25px; margin:0 6px 0 0px; background:none !important; line-height:25px !important; font-size:14px; }
146
+ div.buttons_mp3jpause { text-indent:-29px !important; width:38px; overflow:hidden !important; height: 25px; margin:0 -3px 0 3px; background:none !important; line-height:25px !important; font-size:14px; }
147
+ div.Prev_mp3j, div.Next_mp3j { text-indent:0px !important; height:23px; line-height:23px !important; font-size:12px; width:36px; margin:2px 0px 0px 0px; }
148
+ div.stop_mp3j { text-indent:0px !important; width:31px; height:25px; margin:0px 0px 0px 4px; line-height:25px !important; font-size:14px; }
149
+
150
+ div.playlist-toggle-MI { bottom: 7px; font-family:'trebuchet ms', Arial, sans-serif; background:none !important; padding:0; opacity:0.6; filter:alpha(opacity=60); }
151
+ div.playlist-toggle-MI:hover { opacity:1.0; filter:alpha(opacity=100); background:none !important; }
152
+ div.dloadmp3-MI { font-size:11px; bottom: 6px; height:auto; right:0px !important; left:auto; margin:0; font-family: 'trebuchet ms', Arial, sans-serif; text-align:right; background:none !important; }
153
+ div.dloadmp3-MI a { color:#888; font-size:inherit; margin:0px !important; padding: 0px !important; background:none !important; text-decoration:none; }
154
+ div.dloadmp3-MI a:hover { color:#555; background:none !important; }
155
+ div.dloadmp3-MI.betweenlinks a { display:none; background:none !important; }
156
+ div.dloadmp3-MI.whilelinks a { display:block; background:none !important; }
157
+ div.dloadmp3-MI.whilelinks a:hover { text-decoration:none; background:none !important; }
158
+ div.dloadmp3-MI p { font-size: inherit; margin:0px !important; padding: 0px !important; background:none !important; text-decoration:none; }
159
+ div.mp3j-popout-MI { color:#888; font:normal normal 500 11px 'trebuchet ms', 'arial', sans-serif; bottom:15px; right:155px; left:auto; width:auto; opacity:1; filter:alpha(opacity=100); padding:0px; line-height:12px; border:0; background:none !important; cursor:default; z-index:500; }
160
+ div.mp3j-popout-MI:hover { color:#555; opacity:1.0; filter:alpha(opacity=100); }
161
+ div.MIsliderVolume { position:absolute; bottom:38px; top:auto; right:4px; width:108px !important; height:1px !important; background:transparent; border:0px; font-size:1px; cursor:default; z-index:150; }
162
+ div.MIsliderVolume .ui-slider-handle, div.vol_mp3j .ui-slider-handle { height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; top:-7px; border:0px !important; -moz-border-radius:2px; -webkit-border-radius:2px; background:transparent url('images/vol-handle.png') no-repeat -41px 0px; z-index:150; overflow:hidden !important; cursor:default; }
163
+ div.MIsliderVolume .ui-slider-handle:hover, div.vol_mp3j .ui-slider-handle:hover { background:transparent url('images/vol-handle.png') no-repeat -21px 0px; }
164
+ div.MIsliderVolume .ui-state-active, div.MIsliderVolume .ui-widget-content .ui-state-active, div.vol_mp3j .ui-state-active, div.vol_mp3j .ui-widget-content .ui-state-active { border:0px; background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none; }
165
+
166
+ div.dloadmp3-MI.whilelinks, div.dloadmp3-MI.logintext { background:none !important; }
167
+
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+ /*-------------------------
177
+ [mp3j] & [mp3t] SHORTCODES
178
+ ==================================== */
179
+ span.wrap_inline_mp3j { position:relative; width:auto; cursor:pointer; padding:0; white-space:nowrap; text-align:left; }
180
+ /*span.wrap_inline_mp3j:hover .buttons_mp3j { background:transparent url('images/transport-shard-B.png') no-repeat -80px -35px; }*/
181
+ span.indi_mp3j { position:relative; padding-left:2px; font-size: 0.7em !important; }
182
+
183
+ /* BARS */
184
+ span.bars_mp3j { position:absolute; width:100%; height:100%; }
185
+ span.load_mp3j, span.loadB_mp3j { position:absolute; /* background */ top:20px; left:0px; height:2px; }
186
+ /* mp3t */
187
+ span.posbar_mp3j { position:absolute; width:100%; height:100%; border:0px solid #f77; }
188
+ span.posbar_mp3j .ui-widget-header { z-index:-500; }
189
+ span.posbar_mp3j .ui-slider-handle { top: 2px; margin-left:-2px; border:1px solid #999; height:21px; width:4px; z-index:500; background:url('images/t20b.png') repeat; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
190
+ span.posbar_mp3j .ui-slider-handle:hover { background:url('images/t15b.png') repeat; border-color:#aaa; }
191
+ /* mp3j */
192
+ span.posbarB_mp3j { position:absolute; width:100%; height:100%; border:0; z-index:450; cursor:pointer; }
193
+ span.posbarB_mp3j .ui-widget-header { background:transparent; z-index:450; height:100%; }
194
+ span.posbarB_mp3j .ui-slider-handle { top: 0px; margin-left:-6px !important; border:0px solid #888; height:23px; width:12px !important; z-index: 500; background: transparent url('images/inlineHandle2.png') no-repeat -3px -3px; cursor: default; padding:0px !important; }
195
+ span.posbarB_mp3j .ui-slider-handle:hover { background: transparent url('images/inlineHandle2.png') no-repeat -3px -33px; }
196
+
197
+ /* SPAN TRANSPORT */
198
+ span.group_wrap { position:relative; margin:0px 0px 0px 0px; width:auto; }
199
+ span.textbutton_mp3j, span.T_mp3j { position:relative; width:auto; margin:0px; padding:0px; }
200
+ span.buttons_mp3j { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -80px -3px; }
201
+ span.buttons_mp3j:hover { background:transparent url('images/transport-shard-B.png') no-repeat -80px -35px; }
202
+ span.buttons_mp3jpause { position:relative; margin:0px; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -2px -3px; }
203
+ span.buttons_mp3jpause:hover { background:transparent url('images/transport-shard-B.png') no-repeat -2px -35px; }
204
+
205
+ /* VOLUMES */
206
+ span.vol_mp3t { position:absolute; top:-4px; right:4px; width:90%; max-width:100px; height:2px; }
207
+ span.vol_mp3j { position:absolute; top:-9px; right:5px; width:85%; max-width:100px; height:2px; }
208
+ span.vol_mp3j.flipped { right:4px; }
209
+ span.vol_mp3t .ui-widget-header, span.vol_mp3j .ui-widget-header { background: transparent url('images/vol-grad60b2.png') repeat left top; z-index:500; height:100%; }
210
+ span.vol_mp3t .ui-slider-handle, span.vol_mp3j .ui-slider-handle { height:11px !important; width:10px !important; padding:0px !important; margin-left:-5px; border:0px !important; border-radius:2px; -moz-border-radius:2px; -webkit-border-radius:2px; z-index:600; overflow:hidden !important; cursor:default; top:-6px; background: transparent url('images/vol-handle.png') no-repeat -1px 0px; }
211
+ span.vol_mp3t .ui-slider-handle:hover, span.vol_mp3j .ui-slider-handle:hover { background: transparent url('images/vol-handle.png') no-repeat -21px 0px; }
212
+ span.vol_mp3t .ui-state-active, span.vol_mp3t .ui-widget-content .ui-state-active, span.vol_mp3j .ui-state-active, span.vol_mp3j .ui-widget-content .ui-state-active { background:transparent url('images/vol-handle.png') no-repeat -21px 0px; outline:none; border:0px; }
213
+
214
+
215
+ /*----------------------
216
+ [mp3j-popout] SHORTCODE
217
+ ================================================= */
218
+ .mp3j-popout-link-wrap { cursor:pointer; position:relative; clear:left; }
219
+ .mp3j-popout-link { float:left; margin:0 5px 0 0; min-width:22px; min-height:18px; background:url('images/buttons-popout.png') no-repeat -10px -65px; }
220
+ .mp3j-popout-link-wrap:hover .mp3j-popout-link { background:url('images/buttons-popout.png') no-repeat -10px -95px; }
221
+
222
+
223
+
224
+
225
+ /*-------------
226
+ CUSTOM CLASSES
227
+ (via 'style' param in shortcode)
228
+ ================================================= */
229
+
230
+
231
+ /* ===== "nolistbutton" ===== */
232
+ .nolistbutton div.playlist-toggle-MI { visibility:hidden; }
233
+
234
+ /* ===== "nopopoutbutton" ===== */
235
+ .nopopoutbutton div.mp3j-popout-MI { display:none; }
236
+
237
+ /* ===== "nopn" ===== */
238
+ .nopn div.Prev_mp3j { display:none; }
239
+ .nopn div.Next_mp3j { display:none; }
240
+
241
+ /* ===== "nostop" ===== */
242
+ .nostop div.stop_mp3j { display:none; }
243
+
244
+
245
+ /* ===== "bars100" ===== */
246
+ .bars100 div.player-track-title { left:112px; }
247
+ .bars100 div.dloadmp3-MI { left:102px; width:36%;}
248
+ .bars100 div.bars_holder { left:102px; width:auto; }
249
+ .bars100 .MI-image img { padding:1px; background-color:transparent; }
250
+
251
+ /* ===== "bars150" ===== */
252
+ .bars150 div.player-track-title { left:162px; }
253
+ .bars150 div.dloadmp3-MI { left:152px; width:33%;}
254
+ .bars150 div.bars_holder { left:152px; width:auto; }
255
+ .bars150 .MI-image img { padding:1px; background-color:transparent; }
256
+
257
+ /* ===== "bars200" ===== */
258
+ .bars200 div.player-track-title { left:212px; }
259
+ .bars200 div.dloadmp3-MI { left:202px; width:30%; }
260
+ .bars200 div.bars_holder { left:202px; width:auto; }
261
+ .bars200 .MI-image img { padding:1px; background-color:transparent; }
262
+
263
+ /* ===== "bars250" ===== */
264
+ .bars250 div.player-track-title { left:262px; }
265
+ .bars250 div.dloadmp3-MI { left:252px; width:27%;}
266
+ .bars250 div.bars_holder { left:252px; width:auto; }
267
+ .bars250 .MI-image img { padding:1px; background-color:transparent; }
268
+
269
+ /* ===== "bars300" ===== */
270
+ .bars300 div.player-track-title { left:312px; }
271
+ .bars300 div.dloadmp3-MI { left:302px; width:24%; }
272
+ .bars300 div.bars_holder { left:302px; width:auto; }
273
+ .bars300 .MI-image img { padding:1px; background-color:transparent; }
274
+
275
+ /* ===== "bars350" ===== */
276
+ .bars350 div.player-track-title { left:362px; }
277
+ .bars350 div.dloadmp3-MI { left:352px; width:21%;}
278
+ .bars350 div.bars_holder { left:352px; width:auto; }
279
+ .bars350 .MI-image img { padding:1px; background-color:#transparent; }
280
+
281
+ /* ===== "bars400" ===== */
282
+ .bars400 div.player-track-title { left:412px; }
283
+ .bars400 div.dloadmp3-MI { left:402px; width:18%; }
284
+ .bars400 div.bars_holder { left:402px; width:auto; }
285
+ .bars400 .MI-image img { padding:1px; background-color:transparent; }
286
+
287
+ /* ===== bigger1 ===== */
288
+ .bigger1 { font-size:18px; line-height:26px !important; margin:0 !important; }
289
+ .bigger1 span.load_mp3j,
290
+ .bigger1 span.loadB_mp3j { top:24px; left:0px; height:2px; }
291
+ .bigger1 span.posbar_mp3j .ui-slider-handle { top: 3px; height:24px; width:6px !important; margin-left:-3px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
292
+ .bigger1 span.posbarB_mp3j .ui-slider-handle { top: 3px; margin-left:-3px !important; border:1px solid #999; height:24px; width:6px !important; z-index:500; background:url('images/mp3t-poshandle.png') repeat-y -50px 0px; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
293
+ .bigger1 span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/mp3t-poshandle.png') repeat-y 0px 0px; border-color:#aaa; }
294
+ .bigger1 span.buttons_mp3j { position:relative; margin:0px; margin-left:5px !important; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -80px 0px; }
295
+ .bigger1 span.buttons_mp3j:hover { background:transparent url('images/transport-shard-B.png') no-repeat -80px -32px; }
296
+ .bigger1 span.buttons_mp3jpause { position:relative; margin:0px; margin-left:5px !important; padding:2px 0px 3px 20px; background: transparent url('images/transport-shard-B.png') no-repeat -2px 0px; }
297
+ .bigger1 span.buttons_mp3jpause:hover { background:transparent url('images/transport-shard-B.png') no-repeat -2px -32px; }
298
+ .bigger1 span.vol_mp3j { position:absolute; top:-6px; right:7px; width:85%; max-width:100px; height:2px; }
299
+
300
+ .bigger1 div.player-track-title { font:normal normal 500 18px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
301
+ .bigger1 div.player-track-title span { font:normal normal 500 14px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
302
+ .bigger1 ul.UL-MI_mp3j li a, .bigger1 ul.UL-MI_mp3j li { font-size:16px !important; line-height:19px !important; }
303
+ .bigger1 .indi_mp3j { font-size: 0.6em !important; }
304
+
305
+ /* ===== "bigger2" ===== */
306
+ .bigger2 div.player-track-title { font:normal normal 500 36px/38px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
307
+ .bigger2 div.player-track-title span { font:normal normal 500 20px/22px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
308
+ .bigger2 ul.UL-MI_mp3j li a, .bigger2 ul.UL-MI_mp3j li { font-size:20px !important; line-height:24px !important; }
309
+ .bigger2 { font-size:23px; line-height:25px !important; margin:0 !important; }
310
+ .bigger2 span.load_mp3j,
311
+ .bigger2 span.loadB_mp3j { top:26px; left:0px; height:2px; }
312
+ .bigger2 span.posbar_mp3j .ui-slider-handle { top: 0px; height:28px; width:6px !important; margin-left:-3px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
313
+ .bigger2 span.posbarB_mp3j .ui-slider-handle { top: -1px; margin-left:-3px !important; border:1px solid #999; height:29px; width:8px !important; z-index:500; border-color:#aaa; background:url('images/mp3t-poshandle.png') repeat-y 0px 0px; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
314
+ .bigger2 span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/mp3t-poshandle.png') repeat-y -50px 0px; border-color:#999; }
315
+ .bigger2 .buttons_mp3j { padding:2px 0px 4px 20px !important; background:url('images/play-dark2-b.png') no-repeat -186px center; border:0px solid #bbb; margin-left:10px; }
316
+ .bigger2 .buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -437px center; }
317
+ .bigger2 .buttons_mp3jpause { padding:0px 0px 2px 20px !important; background:url('images/stop-dark2-b.png') repeat-y 0px top; border:0px solid #bbb; margin-left:10px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
318
+ .bigger2 .buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
319
+ .bigger2 span.vol_mp3j { position:absolute; top:-12px; right:4px; width:85%; max-width:100px; height:2px; }
320
+ .bigger2 span.vol_mp3t { position:absolute; top:-10px; width:85%; max-width:100px; height:2px; }
321
+ .bigger2 .Smp3-finding,
322
+ .bigger2 .mp3-tint,
323
+ .bigger2 .mp3-gtint { margin-left:8px; margin-right:6px; padding:0px 0px 0px 10px !important; font-size:12px !important; line-height:12px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
324
+ .bigger2 .mp3-gtint { margin:0 6px 0 -16px; }
325
+ .bigger2 .indi_mp3j { font-size: 0.5em !important; padding-left:0px; }
326
+
327
+ /* ===== bigger3 ===== */
328
+ .bigger3 { font-size:28px; line-height:36px !important; margin:0 !important; }
329
+ .bigger3 .load_mp3j, .bigger3 .loadB_mp3j { top:37px; left:0px; height:3px; }
330
+ .bigger3 .posbar_mp3j .ui-slider-handle, .bigger3 .posbarB_mp3j .ui-slider-handle { top: 0px; border:1px solid #bbb; height:40px; width:12px !important; margin-left:-5px !important; background:url('images/stop-dark2-b.png') repeat-y -350px top; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
331
+ .bigger3 .posbar_mp3j .ui-slider-handle:hover, .bigger3 .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2-b.png') repeat-y 0px top; border:1px solid #aaa; }
332
+ .bigger3 .indi_mp3j { font-size: 0.5em !important; }
333
+ .bigger3 .buttons_mp3j { padding:8px 0px 12px 30px !important; background:url('images/play-dark2-b.png') no-repeat -177px center; border:0px solid #bbb; margin-left:12px; }
334
+ .bigger3 .buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -428px center; }
335
+ .bigger3 .buttons_mp3jpause { padding:2px 0px 6px 30px !important; background:url('images/stop-dark2-b.png') repeat-y 0px top; border:0px solid #bbb; margin-left:12px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
336
+ .bigger3 .buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
337
+ .bigger3 .vol_mp3j { height:1px; max-width:110px; right:64px; top:-8px; }
338
+ .bigger3 .vol_mp3t { height:1px; max-width:110px; right:16px; top:-5px; }
339
+ .bigger3 .vol_mp3j .ui-slider-handle, .bigger3 .vol_mp3t .ui-slider-handle { height:14px !important; width:33px !important; margin-left:-16px; border-bottom:1px solid #ccc !important; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; top:-14px; background:url('images/volhandle-dark2-b.png') no-repeat -10px bottom; }
340
+ .bigger3 .vol_mp3j .ui-slider-handle:hover, .bigger3 .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-b.png') no-repeat -257px bottom; }
341
+ .bigger3 .Smp3-finding,
342
+ .bigger3 .mp3-tint,
343
+ .bigger3 .mp3-gtint { margin-left:8px; padding:0px 0px 0px 14px !important; font-size:18px !important; line-height:20px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
344
+ .bigger3 .mp3-gtint { margin:0 2px 0 -14px; }
345
+ .bigger3 div.player-track-title { font:normal normal 500 44px/46px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
346
+ .bigger3 div.player-track-title span { font:normal normal 500 28px/30px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
347
+ .bigger3 ul.UL-MI_mp3j li a, .bigger3 ul.UL-MI_mp3j li { font-size:28px !important; line-height:30px !important; }
348
+
349
+
350
+ /* ===== bigger4 ===== */
351
+ .bigger4 { font-size:38px; line-height:46px !important; margin:0 !important; }
352
+ .bigger4 .load_mp3j, .bigger4 .loadB_mp3j { top:46px; left:0px; height:3px; }
353
+ .bigger4 .posbar_mp3j .ui-slider-handle, .bigger4 .posbarB_mp3j .ui-slider-handle { top: -2px; border:1px solid #bbb; height:52px; width:20px !important; margin-left:-10px !important; background:url('images/stop-dark2-b.png') repeat-y -350px top; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
354
+ .bigger4 .posbar_mp3j .ui-slider-handle:hover, .bigger4 .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2-b.png') repeat-y 0px top; border:1px solid #aaa; }
355
+ .bigger4 .indi_mp3j { font-size: 0.5em !important; }
356
+ .bigger4 .buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:8px 0px 12px 40px !important; background:url('images/play-dark2-b.png') no-repeat -167px center; border:0px solid #bbb; margin-left:15px; }
357
+ .bigger4 .buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -418px center; }
358
+ .bigger4 .buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:2px 0px 4px 40px !important; background:url('images/stop-dark2-b.png') repeat-y 0px top; border:0px solid #bbb; margin-left:15px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
359
+ .bigger4 .buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
360
+ .bigger4 .vol_mp3j { height:1px; max-width:110px; right:86px; top:-8px; }
361
+ .bigger4 .vol_mp3t { height:1px; max-width:110px; right:20px; top:-5px; }
362
+ .bigger4 .vol_mp3j .ui-slider-handle, .bigger4 .vol_mp3t .ui-slider-handle { height:20px !important; width:43px !important; margin-left:-21px; border-bottom:1px solid #ccc !important; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; top:-20px; background:url('images/volhandle-dark2-b.png') no-repeat -10px bottom; }
363
+ .bigger4 .vol_mp3j .ui-slider-handle:hover, .bigger4 .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-b.png') no-repeat -257px bottom; }
364
+ .bigger4 .Smp3-finding,
365
+ .bigger4 .mp3-tint,
366
+ .bigger4 .mp3-gtint { margin-left:8px; margin-right:6px; padding:0px 0px 0px 14px !important; font-size:18px !important; line-height:20px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
367
+ .bigger4 .mp3-gtint { margin:0 6px 0 -20px; }
368
+
369
+ .bigger4 div.player-track-title { font:normal normal 500 44px/46px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
370
+ .bigger4 div.player-track-title span { font:normal normal 500 28px/30px 'verdana', 'Lucida Grande', 'arial', sans-serif; }
371
+ .bigger4 ul.UL-MI_mp3j li a, .bigger4 ul.UL-MI_mp3j li { font-size:28px !important; line-height:30px !important; }
372
+
373
+
374
+ /* ===== bigger5 ===== */
375
+ .bigger5 { font-size:48px; line-height:60px !important; margin:0 !important; }
376
+ .bigger5 .load_mp3j, .bigger5 .loadB_mp3j { top:63px; left:0px; height:4px; }
377
+ .bigger5 .posbar_mp3j .ui-slider-handle, .bigger5 .posbarB_mp3j .ui-slider-handle { top: -1px; border:1px solid #bbb; height:69px; width:20px !important; margin-left:-10px !important; background:url('images/stop-dark2-b.png') repeat-y -350px top; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
378
+ .bigger5 .posbar_mp3j .ui-slider-handle:hover, .bigger5 .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2-b.png') repeat-y 0px top; border:1px solid #aaa; }
379
+ .bigger5 .indi_mp3j { font-size: 0.5em !important; }
380
+ .bigger5 .buttons_mp3j { font-family:Arial, Helvetica, sans-serif !important; padding:8px 0px 13px 52px !important; background:url('images/play-dark2-b.png') no-repeat -154px center; border:0px solid #bbb; margin-left:20px; }
381
+ .bigger5 .buttons_mp3j:hover { background:url('images/play-dark2-b.png') no-repeat -405px center; }
382
+ .bigger5 .buttons_mp3jpause { font-family:Arial, Helvetica, sans-serif !important; padding:3px 0px 8px 52px !important; background:url('images/stop-dark2-b.png') repeat-y 0px top; border:0px solid #bbb; margin-left:15px; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
383
+ .bigger5 .buttons_mp3jpause:hover { background:url('images/stop-dark2-b.png') repeat-y -350px top; }
384
+ .bigger5 .vol_mp3j { height:1px; max-width:170px; right:115px; top:-10px; }
385
+ .bigger5 .vol_mp3t { height:1px; max-width:170px; right:33px; top:-5px; }
386
+ .bigger5 .vol_mp3j .ui-slider-handle, .bigger5 .vol_mp3t .ui-slider-handle { height:30px !important; width:55px !important; margin-left:-21px; border-bottom:1px solid #aaa !important; border-radius:1px; -moz-border-radius:1px; -webkit-border-radius:1px; top:-30px; background:url('images/volhandle-dark2-b.png') no-repeat -10px bottom; }
387
+ .bigger5 .vol_mp3j .ui-slider-handle:hover, .bigger5 .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-b.png') no-repeat -257px bottom; }
388
+ .bigger5 .Smp3-finding,
389
+ .bigger5 .mp3-tint,
390
+ .bigger5 .mp3-gtint { margin-left:8px; margin-right:6px; padding:0px 0px 0px 14px !important; font-size:18px !important; line-height:20px !important; -moz-border-radius:3px; -webkit-border-radius:3px; border-radius:3px; }
391
+ .bigger5 .mp3-gtint { margin:0 6px 0 -20px; }
392
+
393
+ .bigger5.wh .posbar_mp3j .ui-slider-handle, .bigger5.wh .posbarB_mp3j .ui-slider-handle { background:url('images/stop-dark2-w.png') repeat-y -350px top; border:1px solid #888; }
394
+ .bigger5.wh .posbar_mp3j .ui-slider-handle:hover, .bigger5.wh .posbarB_mp3j .ui-slider-handle:hover { background:url('images/stop-dark2-w.png') repeat-y 0px top; border:1px solid #777; }
395
+ .bigger5.wh .buttons_mp3j { background:url('images/play-dark2-w.png') no-repeat -154px center; border:0px solid #bbb; margin-left:20px; }
396
+ .bigger5.wh .buttons_mp3j:hover { background:url('images/play-dark2-w.png') no-repeat -405px center; }
397
+ .bigger5.wh .buttons_mp3jpause { background:url('images/stop-dark2-w.png') repeat-y 0px top; }
398
+ .bigger5.wh .buttons_mp3jpause:hover { background:url('images/stop-dark2-w.png') repeat-y -350px top; }
399
+ .bigger5.wh .vol_mp3j .ui-slider-handle, .bigger5.wh .vol_mp3t .ui-slider-handle { background:url('images/volhandle-dark2-bw.png') no-repeat -10px bottom; }
400
+ .bigger5.wh .vol_mp3j .ui-slider-handle:hover, .bigger5.wh .vol_mp3t .ui-slider-handle:hover { background:url('images/volhandle-dark2-w.png') no-repeat -257px bottom; }
401
+
402
+
403
+ /* ===== "smaller" ===== */
404
+ .smaller div.player-track-title { font:normal normal 500 11px/13px 'verdana', 'Lucida Grande', 'arial', sans-serif !important; left:3px; right:5px; }
405
+ .smaller div.player-track-title span { font:normal normal 500 10px/10px 'verdana', 'Lucida Grande', 'arial', sans-serif !important; padding:0; }
406
+ .smaller ul.UL-MI_mp3j li a, .smaller ul.UL-MI_mp3j li { font-size:10px !important; font-family:'verdana', Helvetica, sans-serif !important; line-height:13px !important; }
407
+
408
+
409
+
410
+
411
+
412
+
413
+
414
+ /* ===== outline ==== */
415
+ span.outline { font-size:14px; line-height:22px !important; margin:0 !important; }
416
+ .outline span.vol_mp3t { position:absolute; top:-4px; right:4px; width:90%; max-width:100px; height:2px; background: transparent; }
417
+ .outline span.vol_mp3j { position:absolute; top:-9px; right:7px; width:85%; max-width:100px; height:2px; background: transparent; }
418
+ .outline span.buttons_mp3j { padding:2px 0px 3px 20px; background: transparent url('images/transport-outline.png') no-repeat -80px -2px; border:0; margin:0; }
419
+ .outline span.buttons_mp3j:hover { background:transparent url('images/transport-outline.png') no-repeat -80px -34px; }
420
+ .outline span.buttons_mp3jpause { padding:2px 0px 3px 20px; background: transparent url('images/transport-outline.png') no-repeat 1px -2px; border:0; margin:0; }
421
+ .outline span.buttons_mp3jpause:hover { background:transparent url('images/transport-outline.png') no-repeat 1px -34px; }
422
+ .outline span.posbarB_mp3j { position:absolute; width:100%; height:100%; border:0px solid #f77; }
423
+ .outline span.posbarB_mp3j .ui-widget-header { z-index:-500; }
424
+ .outline span.posbarB_mp3j .ui-slider-handle { top: 0px; margin-left:0px; border:1px solid #aaa; height:23px; width:5px !important; z-index:500; background:url('images/t10b.png') repeat; cursor:default; padding:0px !important; -moz-border-radius:1px; -webkit-border-radius:1px; border-radius:1px; }
425
+ .outline span.posbarB_mp3j .ui-slider-handle:hover { background:url('images/t20b.png') repeat; border-color:#777; }
426
+
427
+ .outline div.transport-MI div { background-image: url("images/transport-hardZ.png"); }
428
+
429
+
430
+ /* ===== wtransbars ==== */
431
+ .wtransbars div.loadMI_mp3j { background:#fff; opacity:0.1; filter:alpha(opacity=10); }
432
+ .wtransbars div.poscolMI_mp3j { background:#fff url('http://sjward.org/wp-content/plugins/mp3-jplayer/css/images/posbar-soften-tipped-2.png') repeat-y right top; opacity:0.15; filter:alpha(opacity=15); }
433
+ .wtransbars div.player-track-title { color:#fff; }
434
+
435
+ /* ===== btransbars ==== */
436
+ .btransbars div.loadMI_mp3j { background:#000; opacity:0.1; filter:alpha(opacity=10); }
437
+ .btransbars div.poscolMI_mp3j { background:#000 url('http://sjward.org/wp-content/plugins/mp3-jplayer/css/images/posbar-soften-tipped-2.png') repeat-y right top; opacity:0.15; filter:alpha(opacity=15); }
438
+ .btransbars div.player-track-title { color:#000; }
439
+
440
+
js/jquery.ui.touch-punch.min.js ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI Touch Punch 0.2.2
3
+ *
4
+ * Copyright 2011, Dave Furfero
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ *
7
+ * Depends:
8
+ * jquery.ui.widget.js
9
+ * jquery.ui.mouse.js
10
+ */
11
+ (function(b){b.support.touch="ontouchend" in document;if(!b.support.touch){return;}var c=b.ui.mouse.prototype,e=c._mouseInit,a;function d(g,h){if(g.originalEvent.touches.length>1){return;}g.preventDefault();var i=g.originalEvent.changedTouches[0],f=document.createEvent("MouseEvents");f.initMouseEvent(h,true,true,window,1,i.screenX,i.screenY,i.clientX,i.clientY,false,false,false,false,0,null);g.target.dispatchEvent(f);}c._touchStart=function(g){var f=this;if(a||!f._mouseCapture(g.originalEvent.changedTouches[0])){return;}a=true;f._touchMoved=false;d(g,"mouseover");d(g,"mousemove");d(g,"mousedown");};c._touchMove=function(f){if(!a){return;}this._touchMoved=true;d(f,"mousemove");};c._touchEnd=function(f){if(!a){return;}d(f,"mouseup");d(f,"mouseout");if(!this._touchMoved){d(f,"click");}a=false;};c._mouseInit=function(){var f=this;f.element.bind("touchstart",b.proxy(f,"_touchStart")).bind("touchmove",b.proxy(f,"_touchMove")).bind("touchend",b.proxy(f,"_touchEnd"));e.call(f);};})(jQuery);
js/mp3-jplayer-1.8.js ADDED
@@ -0,0 +1,511 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ MP3-jPlayer 1.8
3
+ www.sjward.org
4
+ */
5
+
6
+ function create_mp3_jplayer() {
7
+ var mp3j = {
8
+
9
+ tID: '', //id current
10
+ state: '', //state current
11
+ pl_info: [], //players info
12
+ load_pc: 0, //loaded percent
13
+ played_t: 0, //played time
14
+
15
+ vars: { // Setup vars
16
+ pathto_swf: '',
17
+ play_f: false,
18
+ popout_url: '',
19
+ jpID: '#jquery_jplayer',
20
+ silence: '',
21
+ stylesheet_url: '',
22
+ launched_ID: '',
23
+ dload_text: 'DOWNLOAD MP3',
24
+ pp_width: 280,
25
+ pp_maxheight: 350,
26
+ pp_bodycolour: '#fff',
27
+ pp_bodyimg: '',
28
+ pp_fixedcss: false,
29
+ pp_playerheight: 100+142,
30
+ pp_windowheight: 600
31
+ },
32
+
33
+ eID: { //html element ID bases
34
+ play: '#playpause_mp3j_',
35
+ playW: '#playpause_wrap_mp3j_',
36
+ stp: '#stop_mp3j_',
37
+ prev: '#Prev_mp3j_',
38
+ next: '#Next_mp3j_',
39
+ vol: '#vol_mp3j_',
40
+ loader: '#load_mp3j_',
41
+ pos: '#posbar_mp3j_',
42
+ poscol: '#poscol_mp3j_',
43
+ title: '#T_mp3j_',
44
+ caption: '#C_mp3j_',
45
+ pT: '#P-Time-MI_',
46
+ tT: '#T-Time-MI_',
47
+ dload: '#download_mp3j_',
48
+ plwrap: '#L_mp3j_',
49
+ ul: '#UL_mp3j_',
50
+ a: 'mp3j_A_', //No hash!
51
+ indiM: '#statusMI_',
52
+ toglist: '#playlist-toggle_',
53
+ lPP: '#lpp_mp3j_',
54
+ pplink: '#mp3j_popout_',
55
+ img: '#MI_image_'
56
+ },
57
+
58
+ init: function () {
59
+ var that = this;
60
+ this.unwrap();
61
+ jQuery(this.vars.jpID).jPlayer({
62
+ ready: function () {
63
+ that.write_controls();
64
+ that.startup();
65
+ },
66
+ volume: 100,
67
+ swfPath: that.vars.pathto_swf
68
+ })
69
+ .jPlayer("onProgressChange", function (lp, ppR, ppA, pt, tt) {
70
+ if (that.state !== '') {
71
+ that.E_progress(that.tID, lp, ppR, ppA, pt, tt);
72
+ }
73
+ })
74
+ .jPlayer("onSoundComplete", function () {
75
+ that.E_complete(that.tID);
76
+ });
77
+ },
78
+ write_controls: function () { //Sets up each player
79
+ var j;
80
+ for (j = 0; j < this.pl_info.length; j += 1) {
81
+ this.setup_a_player(j);
82
+ }
83
+ },
84
+ startup: function () { //Looks if there's something to play
85
+ var j;
86
+ for (j = 0; j < this.pl_info.length; j += 1) {
87
+ if (this.pl_info[j].autoplay) {
88
+ this.pl_info[j].autoplay = false;
89
+ this.E_change_track(j, this.pl_info[j].tr);
90
+ return;
91
+ }
92
+ }
93
+ },
94
+ setup_a_player: function (j) { //Sets up control clicks, lists, text for a player
95
+ var i, li, sel, that = this, p = this.pl_info[j];
96
+ // VOL SLIDER
97
+ jQuery(this.eID.vol + j).slider({
98
+ value : p.vol,
99
+ max: 100,
100
+ range: 'min',
101
+ animate: false,
102
+ slide: function (event, ui) {
103
+ p.vol = ui.value;
104
+ if (j === that.tID) {
105
+ jQuery(that.vars.jpID).jPlayer("volume", ui.value);
106
+ }
107
+ }
108
+ });
109
+ //PLAY-PAUSE CLICKS
110
+ sel = ('MI' === p.type) ? this.eID.play : this.eID.playW;
111
+ jQuery(sel + j).click(function () {
112
+ that.E_change_track(j, p.tr);
113
+ jQuery(this).blur();
114
+ });
115
+ jQuery(sel + j).dblclick(function () {
116
+ if (that.state !== "playing") {
117
+ that.E_change_track(j, p.tr);
118
+ }
119
+ jQuery(this).blur();
120
+ });
121
+ //TEXT
122
+ this.titles(j, p.tr);
123
+
124
+ if ('MI' === p.type) {
125
+ jQuery(this.eID.pT + j).text('00:00');
126
+ jQuery(this.eID.indiM + j).text('Ready');
127
+ //STOP CLICKS
128
+ jQuery(this.eID.stp + j).click(function () {
129
+ that.E_stop(j);
130
+ jQuery(this).blur();
131
+ });
132
+ jQuery(this.eID.stp + j).dblclick(function () {
133
+ that.E_dblstop(j);
134
+ jQuery(this).blur();
135
+ });
136
+ //PREV & NEXT CLICKS
137
+ jQuery(this.eID.plwrap + j).hide();
138
+ if (p.list.length > 1) {
139
+ jQuery(this.eID.next + j).click(function () {
140
+ that.E_change_track(j, 'next');
141
+ jQuery(this).blur();
142
+ });
143
+ jQuery(this.eID.prev + j).click(function () {
144
+ that.E_change_track(j, 'prev');
145
+ jQuery(this).blur();
146
+ });
147
+ //UL ITEMS
148
+ jQuery(this.eID.ul + j).empty();
149
+ for (i = 0; i < p.list.length; i += 1) {
150
+ li = '<li>';
151
+ li += '<a href="#" id="' + this.eID.a + j + '_' + i + '">' + p.list[i].name + '</a></li>';
152
+ jQuery(this.eID.ul + j).append(li);
153
+ //UL <a> CLICKS
154
+ this.add_ul_click(j, i);
155
+ }
156
+ jQuery('#' + this.eID.a + j + '_' + p.tr).addClass('mp3j_A_current');
157
+ //LIST TOGGLE
158
+ jQuery(this.eID.toglist + j).click(function () {
159
+ that.togglelist(j);
160
+ jQuery(this).blur();
161
+ });
162
+ if (p.lstate === true) {
163
+ jQuery(this.eID.plwrap + j).show();
164
+ }
165
+ }
166
+ //DOWNLOAD
167
+ this.writedownload(j, p.tr);
168
+ //POPOUT BUTTON
169
+ jQuery(this.eID.lPP + j).click(function () {
170
+ jQuery(this).blur();
171
+ return that.launchPP(j);
172
+ });
173
+ }
174
+
175
+ if ('popout' === p.type) {
176
+ jQuery(this.eID.pplink + j).click(function () {
177
+ jQuery(this).blur();
178
+ return that.launchPP(j);
179
+ });
180
+ }
181
+
182
+ },
183
+ add_ul_click: function (j, i) { //Creates the list item click on the <a>
184
+ var that = this;
185
+ jQuery('#' + this.eID.a + j + "_" + i).click(function () {
186
+ that.E_change_track(j, i);
187
+ jQuery(this).blur();
188
+ return false;
189
+ });
190
+ },
191
+
192
+ unwrap: function () {
193
+ var i, j, arr;
194
+ if (this.vars.play_f === true && typeof this.lists !== "undefined" && this.lists.length > 0) {
195
+ for (i = 0; i < this.lists.length; i += 1) {
196
+ arr = this.lists[i];
197
+ for (j = 0; j < arr.length; j += 1) {
198
+ arr[j].mp3 = this.f_undo.f_con(arr[j].mp3);
199
+ }
200
+ }
201
+ }
202
+ },
203
+ f_undo: {
204
+ keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
205
+ f_con : function (input) {
206
+ var output = "", i = 0, chr1, chr2, chr3, enc1, enc2, enc3, enc4;
207
+ input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
208
+ while (i < input.length) {
209
+ enc1 = this.keyStr.indexOf(input.charAt(i++)); enc2 = this.keyStr.indexOf(input.charAt(i++));
210
+ enc3 = this.keyStr.indexOf(input.charAt(i++)); enc4 = this.keyStr.indexOf(input.charAt(i++));
211
+ chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4;
212
+ output = output + String.fromCharCode(chr1);
213
+ if (enc3 !== 64) { output = output + String.fromCharCode(chr2); }
214
+ if (enc4 !== 64) { output = output + String.fromCharCode(chr3); }
215
+ }
216
+ output = this.utf8_f_con(output);
217
+ return output;
218
+ },
219
+ utf8_f_con : function (utftext) {
220
+ var string = "", i = 0, c, c1, c2, c3;
221
+ while (i < utftext.length) {
222
+ c = utftext.charCodeAt(i);
223
+ if (c < 128) {
224
+ string += String.fromCharCode(c); i++;
225
+ } else if ((c > 191) && (c < 224)) {
226
+ c2 = utftext.charCodeAt(i + 1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2;
227
+ } else {
228
+ c2 = utftext.charCodeAt(i + 1); c3 = utftext.charCodeAt(i + 2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3;
229
+ }
230
+ }
231
+ return string;
232
+ }
233
+ },
234
+
235
+ setit: function (file) {
236
+ jQuery(this.vars.jpID).jPlayer("setFile", file);
237
+ this.state = 'set';
238
+ },
239
+ playit: function () {
240
+ jQuery(this.vars.jpID).jPlayer("play");
241
+ this.state = 'playing';
242
+ },
243
+ pauseit: function () {
244
+ jQuery(this.vars.jpID).jPlayer("pause");
245
+ this.state = 'paused';
246
+ },
247
+ clearit: function () {
248
+ jQuery(this.vars.jpID).jPlayer("clearFile");
249
+ this.state = '';
250
+ },
251
+
252
+ Tformat: function (msec) {
253
+ var t = msec/1000,
254
+ s = Math.floor((t)%60),
255
+ m = Math.floor((t/60)%60),
256
+ h = Math.floor(t/3600);
257
+ return ((h > 0) ? h+':' : '') + ((m > 9) ? m : '0'+m) + ':' + ((s > 9) ? s : '0'+s);
258
+ }
259
+ }; //Close var mp3j
260
+
261
+
262
+ mp3j.E_stop = function (j) {
263
+ if (j === this.tID && j !== '') {
264
+ this.clearit();
265
+ if ( jQuery(this.eID.pos + j + ' div.ui-widget-header').length > 0 ) {
266
+ jQuery(this.eID.pos + j).slider('destroy');
267
+ }
268
+ this.button(j, 'play');
269
+ jQuery(this.eID.tT + j).empty();
270
+ if (this.pl_info[j].type === 'MI') {
271
+ jQuery(this.eID.indiM + j).text('Stopped');
272
+ } else {
273
+ jQuery(this.eID.indiM + j).empty();
274
+ }
275
+ this.load_pc = 0;
276
+ this.played_t = 0;
277
+ }
278
+ };
279
+
280
+ mp3j.E_dblstop = function (j) {
281
+ this.listclass(j, this.pl_info[j].tr, 0);
282
+ if ( this.pl_info[j].tr !== 0 ) {
283
+ this.titles(j, 0);
284
+ }
285
+ this.writedownload(j, 0);
286
+ this.E_stop(j);
287
+ jQuery(this.eID.indiM + j).text('Ready');
288
+ this.pl_info[j].tr = 0;
289
+ };
290
+
291
+ mp3j.E_change_track = function (j, change) {
292
+ var track, txt, p = this.pl_info[j];
293
+ if (j === this.tID && change === p.tr) {
294
+ if ('playing' === this.state) {
295
+ if (this.load_pc === 0) {
296
+ this.E_stop(j);
297
+ } else {
298
+ this.pauseit();
299
+ this.button(j, 'play');
300
+ if ('MI' === p.type) {
301
+ jQuery(this.eID.indiM + j).text('Paused');
302
+ }
303
+ }
304
+ return;
305
+ } else if ('paused' === this.state || 'set' === this.state) {
306
+ this.playit();
307
+ this.button(j, 'pause');
308
+ return;
309
+ }
310
+ }
311
+ this.E_stop(this.tID);
312
+
313
+ if ('prev' === change) {
314
+ track = (p.tr-1 < 0) ? p.list.length-1 : p.tr-1;
315
+ } else if ('next' === change) {
316
+ track = (p.tr+1 < p.list.length) ? p.tr+1 : 0;
317
+ } else {
318
+ track = change;
319
+ }
320
+ jQuery(this.vars.jpID).jPlayer("volume", 100 ); //Vol scaling fix
321
+ this.setit(p.list[track].mp3);
322
+ this.playit();
323
+ jQuery(this.vars.jpID).jPlayer("volume", p.vol ); //Reset to correct vol
324
+
325
+ txt = ('MI' === p.type) ? '<span class="mp3-finding"></span><span class="mp3-tint"></span>Connecting' : '<span class="Smp3-finding"></span><span class="mp3-gtint"></span>';
326
+ jQuery(this.eID.indiM + j).empty().append(txt);
327
+ this.button(j, 'pause');
328
+ this.makeslider(j);
329
+ if ('MI' === p.type) {
330
+ this.listclass(j, p.tr, track);
331
+ if ( p.tr !== track ) {
332
+ this.titles(j, track);
333
+ }
334
+ if (p.download) {
335
+ this.writedownload(j, track);
336
+ jQuery(this.eID.dload + j).hide().addClass('whilelinks').fadeIn(400);
337
+ }
338
+ }
339
+ p.tr = track;
340
+ this.tID = j;
341
+ };
342
+
343
+ mp3j.E_complete = function (j) {
344
+ var p = this.pl_info[j];
345
+ if ('MI' === p.type) {
346
+ if (p.loop || p.tr+1 < p.list.length) {
347
+ this.E_change_track(j, 'next');
348
+ } else {
349
+ this.E_dblstop(j);
350
+ this.startup();
351
+ }
352
+ }
353
+ if ('single' === p.type) {
354
+ if (p.loop) {
355
+ //this.E_change_track(j, p.tr);
356
+ this.E_change_track(j, 'next');
357
+ } else {
358
+ this.E_stop(j);
359
+ this.startup();
360
+ }
361
+ }
362
+ };
363
+
364
+ mp3j.E_progress = function (j, lp, ppR, ppA, pt, tt) {
365
+ if (j !== '') {
366
+ this.load_pc = lp;
367
+ jQuery(this.eID.loader + j).css( "width", lp + '%' );
368
+ jQuery(this.eID.poscol + j).css( "width", ppA + '%' );
369
+ if ( jQuery(this.eID.pos + j + ' div.ui-widget-header').length > 0 ) {
370
+ jQuery(this.eID.pos + j).slider('option', 'value', 10*ppA);
371
+ }
372
+ if (pt > 0) { jQuery(this.eID.pos + j).css( 'visibility', 'visible' ); }
373
+ if (this.pl_info[j].type === 'MI') {
374
+ jQuery(this.eID.pT + j).text(this.Tformat(pt));
375
+ if (tt > 0) { jQuery(this.eID.tT + j).text(this.Tformat(tt)); }
376
+ }
377
+ if ('playing' === this.state) {
378
+ if ('MI' === this.pl_info[j].type) {
379
+ if (tt > 0 && this.played_t === pt) {
380
+ jQuery(this.eID.indiM + j).empty().append('<span class="mp3-finding"></span><span class="mp3-tint"></span>Buffering');
381
+ } else if (pt > 0) {
382
+ jQuery(this.eID.indiM + j).empty().append('Playing');
383
+ }
384
+ }
385
+ if ('single' === this.pl_info[j].type){
386
+ if (pt > 0 ) {
387
+ if (this.played_t === pt) {
388
+ jQuery(this.eID.indiM + j).empty().append('<span class="Smp3-finding"></span><span class="mp3-gtint"></span> ' + this.Tformat(pt));
389
+ } else {
390
+ jQuery(this.eID.indiM + j).empty().append('<span class="mp3-tint tintmarg"></span> ' + this.Tformat(pt));
391
+ }
392
+ }
393
+ }
394
+ }
395
+ this.played_t = pt;
396
+ }
397
+ };
398
+
399
+ mp3j.launchPP = function (j) {
400
+ var li_height = 28;
401
+ if ( this.pl_info[j].height !== false ) {
402
+ this.vars.pp_playerheight = 100 + this.pl_info[j].height;
403
+ }
404
+ this.vars.pp_windowheight = ( this.pl_info[j].list.length > 1 ) ? this.vars.pp_playerheight + ( this.pl_info[j].list.length * li_height) : this.vars.pp_playerheight;
405
+ if ( this.vars.pp_windowheight > this.vars.pp_maxheight ) {
406
+ this.vars.pp_windowheight = this.vars.pp_maxheight;
407
+ }
408
+ this.vars.launched_ID = j;
409
+ if ( this.state === "playing" ) {
410
+ this.pl_info[j].autoplay = true;
411
+ }
412
+ this.E_stop(this.tID);
413
+ this.setit(this.vars.silence);
414
+ this.playit(); //Chrome let go of last track (incase it didn't finish loading)
415
+ this.clearit();
416
+
417
+ var newwindow = window.open(this.vars.popout_url, 'mp3jpopout', 'height=300, width=600, location=1, status=1, scrollbars=1, resizable=1, left=25, top=25');
418
+ if ( this.pl_info[j].lstate === true ) {
419
+ newwindow.resizeTo( this.vars.pp_width, this.vars.pp_windowheight );
420
+ } else {
421
+ newwindow.resizeTo( this.vars.pp_width, this.vars.pp_playerheight );
422
+ }
423
+ if (window.focus) {
424
+ newwindow.focus();
425
+ }
426
+ return false;
427
+ };
428
+
429
+ mp3j.button = function (j, type) {
430
+ if (j === '') { return; }
431
+ if ('pause' === type) {
432
+ if (this.pl_info[j].play_txt === '#USE_G#') {
433
+ jQuery(this.eID.play + j).removeClass('buttons_mp3j').addClass('buttons_mp3jpause');
434
+ } else {
435
+ jQuery(this.eID.play + j).text(this.pl_info[j].pause_txt);
436
+ }
437
+ }
438
+ if ('play' === type) {
439
+ if (this.pl_info[j].play_txt === '#USE_G#') {
440
+ jQuery(this.eID.play + j).removeClass('buttons_mp3jpause').addClass('buttons_mp3j');
441
+ } else {
442
+ jQuery(this.eID.play + j).text(this.pl_info[j].play_txt);
443
+ }
444
+ }
445
+ };
446
+
447
+ mp3j.listclass = function (j, rem, add) {
448
+ jQuery('#'+ this.eID.a + j +'_'+ rem).removeClass('mp3j_A_current');
449
+ jQuery('#'+ this.eID.a + j +'_'+ add).addClass('mp3j_A_current');
450
+ };
451
+
452
+ mp3j.titles = function (j, track) {
453
+ var p = this.pl_info[j], Olink = '', Clink = '';
454
+ if (p.type === "MI") {
455
+ jQuery(this.eID.title + j).empty().append(p.list[track].name).append('<br /><span>' + p.list[track].artist + '</span>');
456
+ if (p.list[track].image !== '') {
457
+ if (p.list[track].imgurl !== '') {
458
+ Olink = '<a href="' + p.list[track].imgurl + '">';
459
+ Clink = '</a>';
460
+ }
461
+ jQuery(this.eID.img + j).empty().hide().append(Olink + '<img src="' + p.list[track].image + '" />' + Clink).fadeIn(300);
462
+ }
463
+ }
464
+ };
465
+
466
+ mp3j.writedownload = function (j, track) {
467
+ var p = this.pl_info[j];
468
+ if (p.download) {
469
+ jQuery(this.eID.dload + j).empty().removeClass('whilelinks').append('<a href="' + p.list[track].mp3 + '">' + this.vars.dload_text + '</a>');
470
+ }
471
+ };
472
+
473
+ mp3j.togglelist = function (j) {
474
+ if (this.pl_info[j].lstate === true) {
475
+ jQuery(this.eID.plwrap + j).fadeOut(300);
476
+ jQuery(this.eID.toglist + j).text('SHOW');
477
+ this.pl_info[j].lstate = false;
478
+ } else if (this.pl_info[j].lstate === false) {
479
+ jQuery(this.eID.plwrap + j).fadeIn("slow");
480
+ jQuery(this.eID.toglist + j).text('HIDE');
481
+ this.pl_info[j].lstate = true;
482
+ }
483
+ };
484
+
485
+ mp3j.makeslider = function (j) {
486
+ var phmove, cssmove, that = this;
487
+ jQuery(this.eID.pos + j).css( 'visibility', 'hidden' );
488
+ jQuery(this.eID.pos + j).slider({
489
+ max: 1000,
490
+ range: 'min',
491
+ animate: false,
492
+ slide: function (event, ui) {
493
+ if (that.state === 'paused') {
494
+ that.button(j, 'pause');
495
+ }
496
+ if ((ui.value/10) <= that.load_pc) {
497
+ cssmove = ui.value/10;
498
+ phmove = ui.value*(10.0/that.load_pc);
499
+ } else {
500
+ cssmove = that.load_pc;
501
+ phmove = 100;
502
+ }
503
+ jQuery(that.eID.poscol + j).css('width', cssmove + '%');
504
+ jQuery(that.vars.jpID).jPlayer("playHead", phmove );
505
+ that.state = 'playing';
506
+ }
507
+ });
508
+ };
509
+
510
+ return mp3j;
511
+ }
js/mp3-jplayer.js DELETED
@@ -1,211 +0,0 @@
1
- /* MP3-jPlayer
2
- 1.7.3 */
3
-
4
- var $tid = "";
5
- var $state = "";
6
- var global_lp = 0;
7
- var pp_playerID;
8
- var pp_startplaying;
9
- var player_height = 100;
10
- var popout_height;
11
- var $link_playID = "";
12
-
13
- jQuery(document).ready(function(){
14
- if ( typeof mp3j_info === "undefined" ) { return; }
15
- mp3j_setup();
16
- jQuery("#jquery_jplayer").jPlayer({
17
- ready: function() {
18
- mp3j_init();
19
- },
20
- oggSupport: false,
21
- volume: 100,
22
- swfPath: foxpathtoswf
23
- })
24
- .jPlayer("onProgressChange", function(loadPercent, playedPercentRelative, playedPercentAbsolute, playedTime, totalTime) {
25
- run_progress_update( $tid, loadPercent, playedPercentRelative, playedPercentAbsolute, playedTime, totalTime );
26
- })
27
- .jPlayer("onSoundComplete", function() {
28
- run_sound_complete();
29
- });
30
- if (typeof window.mp3j_footerjs === "function") { mp3j_footerjs(); }
31
- });
32
-
33
- // Prep arrays, click functions & initial text
34
- function mp3j_setup() {
35
- I_images();
36
- I_unwrap();
37
- if ( typeof mp3j_info !== "undefined" ) { I_setup_players(); }
38
- return;
39
- }
40
-
41
- function mp3j_init() {
42
- var j;
43
- for ( j=0; j < mp3j_info.length; j++ ) {
44
- if ( mp3j_info[j].autoplay ) {
45
- mp3j_info[j].autoplay = false;
46
- E_playpause_click( j );
47
- return;
48
- }
49
- }
50
- }
51
-
52
- function make_slider( id ) {
53
- if ( mp3j_info[id].status === "basic" ) { jQuery('#posbar_mp3j_'+id).css( "visibility", "hidden" ); }
54
- jQuery('#posbar_mp3j_'+id).slider({
55
- max: 1000,
56
- range: 'min',
57
- animate: FoxAnimSlider,
58
- slide: function(event, ui) {
59
- if ( $state === "paused" ) { pause_button( id, mp3j_info[id].play_txt, mp3j_info[id].pause_txt ); }
60
- jQuery("#jquery_jplayer").jPlayer("playHead", ui.value*(10.0/global_lp) );
61
- $state = "playing";
62
- }
63
- });
64
- }
65
-
66
- function change_list_classes( id, track ) {
67
- jQuery("#mp3j_A_"+id+"_"+mp3j_info[id].tr).removeClass("mp3j_A_current").parent().removeClass("mp3j_A_current");
68
- jQuery("#mp3j_A_"+id+"_"+track).addClass("mp3j_A_current").parent().addClass("mp3j_A_current");
69
- }
70
-
71
- function run_progress_update( id, loadPercent, playedPercentRelative, playedPercentAbsolute, playedTime, totalTime ) {
72
- if ( id === "" ) { return; }
73
- //var ppaInt = parseInt(playedPercentAbsolute, 10);
74
- //var lpInt = parseInt(loadPercent, 10);
75
- global_lp = loadPercent;
76
- jQuery("#load_mp3j_"+id).css( "width", loadPercent+"%" );
77
- jQuery('#posbar_mp3j_'+id).slider('option', 'value', playedPercentAbsolute*10);
78
- var dl = mp3j_info[id].download;
79
-
80
- // BASIC Status update
81
- if ( mp3j_info[id].status === "basic" ) {
82
- jQuery("#indi_mp3j_"+id).empty();
83
- if (jQuery("#jquery_jplayer").jPlayer("getData", "diag.isPlaying")){ // "PLAYING"
84
- if (playedTime===0 && loadPercent===0){ // connecting
85
- jQuery("#indi_mp3j_"+id).append('<span style="margin-left:6px;"><span class="mp3-finding"></span><span class="mp3-tint" style="background:#999;"></span></span>');
86
- if ( dl ) { jQuery("#download_mp3j_"+id).removeClass("whilelinks"); jQuery("#download_mp3j_"+id).addClass("betweenlinks"); }
87
- }
88
- if (playedTime===0 && loadPercent>0){// buffering
89
- jQuery("#indi_mp3j_"+id).append('<span style="margin-left:6px;"><span class="mp3-finding"></span><span class="mp3-tint" style="background:#999;"></span></span>');
90
- if ( dl ) { jQuery("#download_mp3j_"+id).removeClass("betweenlinks"); jQuery("#download_mp3j_"+id).addClass("whilelinks"); }
91
- }
92
- if (playedTime>0){ // playing
93
- jQuery('#posbar_mp3j_'+id).css( "visibility", "visible" );
94
- jQuery("#indi_mp3j_"+id).append('<span style="margin-left:6px;"><span class="mp3-tint" style="opacity:.8; filter:alpha(opacity=80);"></span></span>');
95
- jQuery("#indi_mp3j_"+id).append('<span> '+jQuery.jPlayer.convertTime(playedTime)+'</span>');
96
- if ( dl ) { jQuery("#download_mp3j_"+id).removeClass("betweenlinks"); jQuery("#download_mp3j_"+id).addClass("whilelinks"); }
97
- }
98
- } else { // "STOPPED"
99
- jQuery("#indi_mp3j_"+id).empty();
100
- if (playedTime>0){ // paused
101
- jQuery("#indi_mp3j_"+id).append('<span style="margin-left:6px;"><span class="mp3-tint" style="opacity:.8; filter:alpha(opacity=80);"></span></span>');
102
- jQuery("#indi_mp3j_"+id).append('<span> '+jQuery.jPlayer.convertTime(playedTime)+'</span>');
103
- if ( dl ) { jQuery("#download_mp3j_"+id).removeClass("betweenlinks"); jQuery("#download_mp3j_"+id).addClass("whilelinks"); }
104
- }
105
- if (playedTime===0){
106
- if(loadPercent>0){ // stopped
107
- if ( dl ) { jQuery("#download_mp3j_"+id).removeClass("betweenlinks"); jQuery("#download_mp3j_"+id).addClass("whilelinks"); }
108
- }
109
- }
110
- }
111
- }
112
- //FULL Status update
113
- if ( mp3j_info[id].status === "full" ) {
114
- jQuery("#T-Time-MI_"+id).hide();
115
- jQuery("#T-Time-MI_"+id).text(jQuery.jPlayer.convertTime(totalTime));
116
- jQuery("#P-Time-MI_"+id).text(jQuery.jPlayer.convertTime(playedTime));
117
- jQuery("#statusMI_"+id).empty();
118
- if (jQuery("#jquery_jplayer").jPlayer("getData", "diag.isPlaying")){ // "PLAYING"
119
- if (playedTime===0 && loadPercent===0){ // connecting
120
- jQuery("#statusMI_"+id).append('<span class="mp3-finding"></span><span class="mp3-tint"></span>Connecting');
121
- if ( dl ) { jQuery("#download_mp3j_"+id).removeClass("whilelinks"); jQuery("#download_mp3j_"+id).addClass("betweenlinks"); }
122
- }
123
- if (playedTime===0 && loadPercent>0){// buffering
124
- jQuery("#statusMI_"+id).append('<span class="mp3-loading"></span><span class="mp3-tint"></span>Buffering');
125
- jQuery("#T-Time-MI_"+id).show();
126
- if ( dl ) { jQuery("#download_mp3j_"+id).removeClass("betweenlinks"); jQuery("#download_mp3j_"+id).addClass("whilelinks"); }
127
- }
128
- if (playedTime>0){ // playing
129
- jQuery("#statusMI_"+id).append('Playing');
130
- jQuery("#T-Time-MI_"+id).show();
131
- if ( dl ) { jQuery("#download_mp3j_"+id).removeClass("betweenlinks"); jQuery("#download_mp3j_"+id).addClass("whilelinks"); }
132
- }
133
- } else { // "STOPPED"
134
- if (playedTime>0){ // paused
135
- jQuery("#statusMI_"+id).append('Paused');
136
- jQuery("#T-Time-MI_"+id).show();
137
- if ( dl ) { jQuery("#download_mp3j_"+id).removeClass("betweenlinks"); jQuery("#download_mp3j_"+id).addClass("whilelinks"); }
138
- }
139
- if (playedTime===0){
140
- if(loadPercent>0){ // stopped
141
- jQuery("#statusMI_"+id).append('Stopped');
142
- jQuery("#T-Time-MI_"+id).show();
143
- if ( dl ) { jQuery("#download_mp3j_"+id).removeClass("betweenlinks"); jQuery("#download_mp3j_"+id).addClass("whilelinks"); }
144
- } else { // ready
145
- jQuery("#statusMI_"+id).append('Ready');
146
- }
147
- }
148
- }
149
- }
150
- }
151
-
152
- function launch_mp3j_popout( url, id ) {
153
- var li_height = 28;
154
- player_height = 100 + mp3j_info[id].height;
155
- popout_height = ( mp3j_info[id].list.length > 1 ) ? player_height + ( mp3j_info[id].list.length * li_height) : player_height;
156
- if ( popout_height > popup_maxheight ) { popout_height = popup_maxheight; }
157
- var open_at_height = ( mp3j_info[id].lstate ) ? popout_height : player_height;
158
-
159
- pp_startplaying = ( jQuery("#jquery_jplayer").jPlayer("getData", "diag.isPlaying") ) ? true : false;
160
- pp_playerID = id;
161
- play_button( $tid );
162
- clear_bars( $tid );
163
- clear_status( $tid );
164
- $tid = "";
165
- $state = "";
166
- $link_playID = "";
167
- // g chrome workaround, stops the hang
168
- jQuery("#jquery_jplayer").jPlayer("setFile", silence_mp3 );
169
- jQuery("#jquery_jplayer").jPlayer("play");
170
-
171
- jQuery("#jquery_jplayer").jPlayer("clearFile");
172
- // open popup window
173
- newwindow = window.open(url,'mp3jpopout','height=100,width=100,location=1,status=1,scrollbars=1,resizable=1,left=25,top=25');
174
- newwindow.resizeTo( popup_width, open_at_height );
175
- if (window.focus) { newwindow.focus(); }
176
- return false;
177
- }
178
-
179
- function MI_toggleplaylist(text, id){
180
- if ( mp3j_info[id].lstate ) {
181
- if ( text==="" ) { text="SHOW"; }
182
- jQuery("#L_mp3j_"+id).fadeOut(300);
183
- jQuery("#playlist-toggle_"+id).empty();
184
- jQuery("#playlist-toggle_"+id).append(text);
185
- mp3j_info[id].lstate = false;
186
- return;
187
- }
188
- if ( !mp3j_info[id].lstate ) {
189
- if ( text==="" ) { text="HIDE"; }
190
- jQuery("#L_mp3j_"+id).fadeIn("slow");
191
- jQuery("#playlist-toggle_"+id).empty();
192
- jQuery("#playlist-toggle_"+id).append(text);
193
- mp3j_info[id].lstate = true;
194
- return;
195
- }
196
- }
197
-
198
- function link_plays_track( player, track ) {
199
- if ( typeof mp3j_info === "undefined" ) { return; }
200
- player--;
201
- track--;
202
- if ( player === $link_playID && track === mp3j_info[player].tr && $state !== "" ) {
203
- return;
204
- }
205
- if ( typeof mp3j_info[player].has_ul !== "undefined" && mp3j_info[player].has_ul === 1 ) {
206
- if ( track >= 0 && track < mp3j_info[player].list.length ) {
207
- E_change_track( player, track );
208
- $link_playID = player;
209
- }
210
- }
211
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/{mp3j-admin.js → mp3j-admin-1.8.js} RENAMED
@@ -1,7 +1,43 @@
1
- <!--
2
- /* MP3-jPlayer 1.7.3
3
- admin js */
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  /* Form select event on player style dropdown */
6
  var player_select=document.getElementById("player-select");
7
  player_select.onchange=function(){
@@ -18,27 +54,8 @@ player_select.onchange=function(){
18
  $S('mp3fcss').borderColor="#dfdfdf";
19
  $S('player-csssheet').color="#444";
20
  }
21
- }
22
 
23
- /* Toggles */
24
- var fox_tog1 = false; var fox_tog2 = false; var fox_tog3 = false; var fox_tog4 = false; var fox_tog5 = false; var fox_tog6 = false; var fox_tog7 = false; var fox_tog8 = false; var fox_tog9 = false;
25
- var fox_tognewstate;
26
- function mp3jp_listtoggle( id_base, label ) {
27
- if ( id_base == 'fox_tools' ) { fox_tognewstate = fox_runtoggle( id_base, fox_tog1, label ); fox_tog1 = fox_tognewstate; }
28
- if ( id_base == 'fox_library' ) { fox_tognewstate = fox_runtoggle( id_base, fox_tog2, label ); fox_tog2 = fox_tognewstate; }
29
- if ( id_base == 'fox_folder' ) { fox_tognewstate = fox_runtoggle( id_base, fox_tog3, label ); fox_tog3 = fox_tognewstate; }
30
- if ( id_base == 'fox_help1' ) { fox_tognewstate = fox_runtoggle( id_base, fox_tog4, label ); fox_tog4 = fox_tognewstate; }
31
- if ( id_base == 'fox_help2' ) { fox_tognewstate = fox_runtoggle( id_base, fox_tog5, label ); fox_tog5 = fox_tognewstate; }
32
- if ( id_base == 'fox_help3' ) { fox_tognewstate = fox_runtoggle( id_base, fox_tog6, label ); fox_tog6 = fox_tognewstate; }
33
- if ( id_base == 'fox_help4' ) { fox_tognewstate = fox_runtoggle( id_base, fox_tog7, label ); fox_tog7 = fox_tognewstate; }
34
- if ( id_base == 'fox_help5' ) { fox_tognewstate = fox_runtoggle( id_base, fox_tog8, label ); fox_tog8 = fox_tognewstate; }
35
- if ( id_base == 'fox_styling' ) { fox_tognewstate = fox_runtoggle( id_base, fox_tog9, label ); fox_tog9 = fox_tognewstate; }
36
- return;
37
- }
38
- function fox_runtoggle( id_base, state, label ) {
39
- if (state == true) { jQuery("#"+id_base+"-list").fadeOut(300); jQuery("#"+id_base+"-toggle").empty(); jQuery("#"+id_base+"-toggle").append('Show '+label); jQuery("#"+id_base+"-toggle").blur(); return false; }
40
- if (state == false) { jQuery("#"+id_base+"-list").fadeIn(300); jQuery("#"+id_base+"-toggle").empty(); jQuery("#"+id_base+"-toggle").append('Hide '+label); jQuery("#"+id_base+"-toggle").blur(); return true; }
41
- }
42
 
43
  /* Admin/Picker interaction */
44
  var curcol="";
@@ -51,16 +68,16 @@ var saturation = 0; // between 0 and 1
51
  var value = 0;
52
 
53
  function putfcolour(fID,blID) {
54
- $(fID).value='#'+curcol;
55
  $S(blID).background='#'+curcol;
56
- };
57
  function udfcol(fID, blID) {
58
- $S(blID).background=$(fID).value;
59
- };
60
  function sendfcolour(fID) {
61
- hval=$(fID).value;
62
- initpicker(hval)
63
- };
64
  function initpicker(hval){
65
  HextoRGB(hval);
66
  RGBtoHSV();
@@ -70,9 +87,9 @@ function initpicker(hval){
70
  $S('SVslide').top = 161-Math.round((value*100*1.62)) + "px";
71
  $S('Hslide').top = 159-Math.round((165/360)*hue) + "px";
72
  $S('SV').backgroundColor='#'+color.HSV_HEX({H:hue, S:100, V:100});
73
- };
74
  function HextoRGB(hexString) {
75
- if(hexString == null || typeof(hexString) != "string") {
76
  SetRGB(0,0,0);
77
  return;
78
  }
@@ -90,18 +107,18 @@ function HextoRGB(hexString) {
90
  return;
91
  }
92
  SetRGB(r,g,b);
93
- };
94
  function SetRGB(r, g, b){
95
  red = r/255.0;
96
  green = g/255.0;
97
  blue = b/255.0;
98
- };
99
  function RGBtoHSV(){
100
  var max = Math.max(Math.max(red, green), blue);
101
  var min = Math.min(Math.min(red, green), blue);
102
  value = max;
103
  saturation = 0;
104
- if(max != 0)
105
  saturation = 1 - min/max;
106
  hue = 0;
107
  if(min == max)
@@ -117,12 +134,12 @@ function RGBtoHSV(){
117
  hue = hue * 60;
118
  if(hue < 0)
119
  hue += 360;
120
- };
121
 
122
  /* Colour picker (modified DHTML Color Square by ColorJack) */
123
- function $(v,o) { return((typeof(o)=='object'?o:document).getElementById(v)); }
124
- function $S(o) { o=$(o); if(o) return(o.style); }
125
- function abPos(o) { var o=(typeof(o)=='object'?o:$(o)), z={X:0,Y:0}; while(o!=null) { z.X+=o.offsetLeft; z.Y+=o.offsetTop; o=o.offsetParent; }; return(z); }
126
  function agent(v) { return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0)); }
127
  function toggle(v) { $S(v).display=($S(v).display=='none'?'block':'none'); }
128
  function within(v,a,z) { return((v>=a && v<=z)?true:false); }
@@ -160,7 +177,7 @@ function HSVslide(d,o,e) {
160
  if(stop) {
161
  stop='';
162
  var ds=$S(d!='drag'?d:o);
163
- var ab=abPos($(o)), tX, tY, oo=(d=='Hslide')?2:4;
164
  ab.X+=10; ab.Y+=22;
165
  if(d=='SVslide') slideHSV.H=HSV.H;
166
  document.onmousemove=drag;
@@ -171,20 +188,20 @@ function HSVslide(d,o,e) {
171
  };
172
  drag(e);
173
  }
174
- };
175
  function HSVupdate(v) {
176
  v=color.HSV_HEX(HSV=v?v:slideHSV);
177
- $('plugHEX').innerHTML='#'+v;
178
  $S('plugCUR').background='#'+v;
179
  curcol=v;
180
  return(v);
181
- };
182
  function loadSV() {
183
  var z='';
184
  for(var i=165; i>=0; i--) {
185
  z+="<div style=\"BACKGROUND: #"+color.HSV_HEX({H:Math.round((360/165)*i), S:100, V:100})+";\"><br /><\/div>";
186
  }
187
- };
188
 
189
  /* Colour library */
190
  color={};
@@ -219,10 +236,19 @@ color.HSV_RGB=function(o) {
219
  }
220
  else return({'R':(V=Math.round(V*255)), 'G':V, 'B':V, 'A':1});
221
  };
222
- color.HSV_HEX=function(o) { return(color.RGB_HEX(color.HSV_RGB(o))); }
223
 
224
  /* Startup */
 
 
 
 
 
 
 
 
 
 
225
  $S('plugin').display='block';
226
  loadSV();
227
  initpicker(initcolour);
228
- //-->
1
+ /* MP3-jPlayer 1.8 - admin js */
 
 
2
 
3
+ var MP3J_ADMIN = {
4
+ toggle_states: [
5
+ { tog_0: false },
6
+ { tog_1: false },
7
+ { fox_library: false },
8
+ { fox_folder: false },
9
+ { fox_op1: false },
10
+ { fox_op5: false },
11
+ { fox_op2: false },
12
+ { fox_op3: false },
13
+ { fox_op4: false },
14
+ { tog_9: false }
15
+ ],
16
+ toggleit: function ( id, label ) {
17
+ if (this.toggle_states[id]) {
18
+ jQuery("#" + id + "-list").fadeOut(100);
19
+ jQuery("#" + id + "-toggle").empty().append(label).blur();
20
+ this.toggle_states[id] = false;
21
+ } else {
22
+ jQuery("#" + id + "-list").fadeIn(200);
23
+ jQuery("#" + id + "-toggle").empty().append('Hide '+label).blur();
24
+ this.toggle_states[id] = true;
25
+ }
26
+ },
27
+ showhideit: function ( id, label ) {
28
+ if (this.toggle_states[id]) {
29
+ jQuery("#" + id + "-list").fadeOut(100);
30
+ jQuery("#" + id + "-toggle").empty().append('Show '+label).blur();
31
+ this.toggle_states[id] = false;
32
+ } else {
33
+ jQuery("#" + id + "-list").fadeIn(200);
34
+ jQuery("#" + id + "-toggle").empty().append('Hide '+label).blur();
35
+ this.toggle_states[id] = true;
36
+ }
37
+ }
38
+ }
39
+
40
+
41
  /* Form select event on player style dropdown */
42
  var player_select=document.getElementById("player-select");
43
  player_select.onchange=function(){
54
  $S('mp3fcss').borderColor="#dfdfdf";
55
  $S('player-csssheet').color="#444";
56
  }
57
+ };
58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
  /* Admin/Picker interaction */
61
  var curcol="";
68
  var value = 0;
69
 
70
  function putfcolour(fID,blID) {
71
+ $woof(fID).value='#'+curcol;
72
  $S(blID).background='#'+curcol;
73
+ }
74
  function udfcol(fID, blID) {
75
+ $S(blID).background=$woof(fID).value;
76
+ }
77
  function sendfcolour(fID) {
78
+ hval=$woof(fID).value;
79
+ initpicker(hval);
80
+ }
81
  function initpicker(hval){
82
  HextoRGB(hval);
83
  RGBtoHSV();
87
  $S('SVslide').top = 161-Math.round((value*100*1.62)) + "px";
88
  $S('Hslide').top = 159-Math.round((165/360)*hue) + "px";
89
  $S('SV').backgroundColor='#'+color.HSV_HEX({H:hue, S:100, V:100});
90
+ }
91
  function HextoRGB(hexString) {
92
+ if(hexString === null || typeof(hexString) != "string") {
93
  SetRGB(0,0,0);
94
  return;
95
  }
107
  return;
108
  }
109
  SetRGB(r,g,b);
110
+ }
111
  function SetRGB(r, g, b){
112
  red = r/255.0;
113
  green = g/255.0;
114
  blue = b/255.0;
115
+ }
116
  function RGBtoHSV(){
117
  var max = Math.max(Math.max(red, green), blue);
118
  var min = Math.min(Math.min(red, green), blue);
119
  value = max;
120
  saturation = 0;
121
+ if(max !== 0)
122
  saturation = 1 - min/max;
123
  hue = 0;
124
  if(min == max)
134
  hue = hue * 60;
135
  if(hue < 0)
136
  hue += 360;
137
+ }
138
 
139
  /* Colour picker (modified DHTML Color Square by ColorJack) */
140
+ function $woof(v,o) { return((typeof(o)=='object'?o:document).getElementById(v)); }
141
+ function $S(o) { o=$woof(o); if(o) return(o.style); }
142
+ function abPos(o) { var o=(typeof(o)=='object'?o:$woof(o)), z={X:0,Y:0}; while(o!==null) { z.X+=o.offsetLeft; z.Y+=o.offsetTop; o=o.offsetParent; } return(z); }
143
  function agent(v) { return(Math.max(navigator.userAgent.toLowerCase().indexOf(v),0)); }
144
  function toggle(v) { $S(v).display=($S(v).display=='none'?'block':'none'); }
145
  function within(v,a,z) { return((v>=a && v<=z)?true:false); }
177
  if(stop) {
178
  stop='';
179
  var ds=$S(d!='drag'?d:o);
180
+ var ab=abPos($woof(o)), tX, tY, oo=(d=='Hslide')?2:4;
181
  ab.X+=10; ab.Y+=22;
182
  if(d=='SVslide') slideHSV.H=HSV.H;
183
  document.onmousemove=drag;
188
  };
189
  drag(e);
190
  }
191
+ }
192
  function HSVupdate(v) {
193
  v=color.HSV_HEX(HSV=v?v:slideHSV);
194
+ $woof('plugHEX').innerHTML='#'+v;
195
  $S('plugCUR').background='#'+v;
196
  curcol=v;
197
  return(v);
198
+ }
199
  function loadSV() {
200
  var z='';
201
  for(var i=165; i>=0; i--) {
202
  z+="<div style=\"BACKGROUND: #"+color.HSV_HEX({H:Math.round((360/165)*i), S:100, V:100})+";\"><br /><\/div>";
203
  }
204
+ }
205
 
206
  /* Colour library */
207
  color={};
236
  }
237
  else return({'R':(V=Math.round(V*255)), 'G':V, 'B':V, 'A':1});
238
  };
239
+ color.HSV_HEX=function(o) { return(color.RGB_HEX(color.HSV_RGB(o))); };
240
 
241
  /* Startup */
242
+ jQuery("#tog_0-list").css( "display" , "none" );
243
+ jQuery("#tog_1-list").css( "display" , "none" );
244
+ jQuery("#fox_library-list").css( "display" , "none" );
245
+ jQuery("#fox_folder-list").css( "display" , "none" );
246
+ jQuery("#fox_op1-list").css( "display" , "none" );
247
+ jQuery("#fox_op5-list").css( "display" , "none" );
248
+ jQuery("#fox_op2-list").css( "display" , "none" );
249
+ jQuery("#fox_op3-list").css( "display" , "none" );
250
+ jQuery("#fox_op4-list").css( "display" , "none" );
251
+
252
  $S('plugin').display='block';
253
  loadSV();
254
  initpicker(initcolour);
 
js/mp3j-functions.js DELETED
@@ -1,401 +0,0 @@
1
- /* MP3-jPlayer common functions js
2
- 1.7.3 */
3
-
4
- /* Setup ======================= */
5
- function I_unwrap() {
6
- if (fox_playf === "true") {
7
- var i;
8
- var j;
9
- if ( typeof foxInline !== "undefined" ) {
10
- for (i=0; i < foxInline.length; i++) { foxInline[i].mp3 = f_arr.f_con(foxInline[i].mp3); }
11
- }
12
- if ( typeof mp3j_info !== "undefined" ) {
13
- for (i=0; i < mp3j_info.length; i++) {
14
- if ( mp3j_info[i].has_ul === 1 ) {
15
- var arr = mp3j_info[i].list;
16
- for (j=0; j < arr.length; j++) { arr[j].mp3 = f_arr.f_con(arr[j].mp3); }
17
- }
18
- }
19
- }
20
- if ( typeof mp3j_fields !== "undefined" ) {
21
- for (i=0; i < mp3j_fields.length; i++) {
22
- var arr = mp3j_fields[i].list;
23
- for (j=0; j < arr.length; j++) { arr[j].mp3 = f_arr.f_con(arr[j].mp3); }
24
- }
25
- }
26
- }
27
- }
28
-
29
- function I_setup_players() {
30
- var j;
31
- for ( j=0; j < mp3j_info.length; j++)
32
- {
33
- i_make_volume( j );
34
- i_write_download( j );
35
- i_write_stop_buttons( j );
36
-
37
- /* Single-file inlines */
38
- if ( mp3j_info[j].has_ul === 0 ) {
39
- // click PlayPause wrap
40
- jQuery("#playpause_wrap_mp3j_"+j).data( "player", { id:j } ).click( function() {
41
- E_playpause_click( jQuery(this).data("player").id );
42
- jQuery(this).blur();
43
- return false;
44
- });
45
- // doubleclick PlayPause wrap
46
- jQuery("#playpause_wrap_mp3j_"+j).data( "player", { id:j } ).dblclick( function() {
47
- if ( $state !== "playing" ) { E_playpause_click( jQuery(this).data("player").id ); }
48
- jQuery(this).blur();
49
- return false;
50
- });
51
- }
52
- /* Playlists */
53
- if ( mp3j_info[j].has_ul === 1 ) {
54
- i_write_lists_controls(j);
55
- // click PlayPause button
56
- jQuery("#playpause_mp3j_"+j).data( "player", { id:j } ).click( function() {
57
- E_playpause_click( jQuery(this).data("player").id );
58
- jQuery(this).blur();
59
- return false;
60
- });
61
- // doubleclick PlayPause button
62
- jQuery("#playpause_mp3j_"+j).data( "player", { id:j } ).dblclick( function() {
63
- if ( $state !== "playing" ) { E_playpause_click( jQuery(this).data("player").id ); }
64
- jQuery(this).blur();
65
- return false;
66
- });
67
- }
68
- /* Status displays */
69
- if ( mp3j_info[j].status === "full" ) {
70
- jQuery("#P-Time-MI_"+j).text("00:00");
71
- jQuery("#statusMI_"+j).append('Ready');
72
- }
73
- }
74
- }
75
-
76
- function I_images() {
77
- if (document.images) {
78
- pic1= new Image(4,4); pic1.src=foxpathtoimages+"t30w.png"; //default hover on playlist li
79
- }
80
- }
81
-
82
- function i_make_volume ( id ) {
83
- jQuery('#vol_mp3j_'+id).slider({
84
- value : mp3j_info[id].vol,
85
- max: 100,
86
- range: 'min',
87
- animate: FoxAnimSlider,
88
- slide: function(event, ui) {
89
- mp3j_info[id].vol = ui.value;
90
- if ( id === $tid ) { jQuery("#jquery_jplayer").jPlayer("volume", ui.value); }
91
- }
92
- });
93
- }
94
-
95
- function i_write_download(id) {
96
- if ( mp3j_info[id].download === true ) {
97
- var list = mp3j_info[id].list;
98
- var track = mp3j_info[id].tr;
99
- jQuery("#download_mp3j_"+id).empty();
100
- jQuery("#download_mp3j_"+id).append("<a href=\"" + list[track].mp3 + "\">DOWNLOAD MP3</a>");
101
- }
102
- }
103
-
104
- function i_write_stop_buttons(id) {
105
- // click Stop
106
- jQuery("#stop_mp3j_"+id).data( "player", { pid:id } ).click( function() {
107
- E_stop_click( jQuery(this).data("player").pid );
108
- jQuery(this).blur();
109
- return false;
110
- });
111
- // double click Stop
112
- jQuery("#stop_mp3j_"+id).data( "player", { pid:id } ).dblclick( function() {
113
- E_stop_doubleclick( jQuery(this).data("player").pid );
114
- jQuery(this).blur();
115
- return false;
116
- });
117
- }
118
-
119
- function i_write_lists_controls(id) {
120
- var newPlayerList = mp3j_info[id].list;
121
- var i;
122
- if ( newPlayerList.length > 1 ) // Write UL's & prev/next clicks
123
- {
124
- jQuery("#UL_mp3j_"+id).empty();
125
- for (i=0; i < newPlayerList.length; i++) { // Write playlist
126
- var listItem = (i === newPlayerList.length-1) ? "<li class='mp3j_LI_last'>" : "<li>";
127
- listItem += "<a href='#' id='mp3j_A_"+id+"_"+i+"' tabindex='1'>"+ newPlayerList[i].name +"</a></li>";
128
- jQuery("#UL_mp3j_"+id).append(listItem);
129
- if ( i === 0 ) {
130
- jQuery("#mp3j_A_"+id+"_"+i).addClass("mp3j_A_current").parent().addClass("mp3j_A_current");
131
- }
132
- // click Playlist
133
- jQuery("#mp3j_A_"+id+"_"+i).data( "player", {index:i, pid:id} ).click( function() {
134
- if ( $tid !== id || ($tid === id && jQuery(this).data("player").index !== mp3j_info[id].tr) ) {
135
- E_change_track( jQuery(this).data("player").pid, jQuery(this).data("player").index );
136
- }
137
- jQuery(this).blur();
138
- return false;
139
- });
140
- }
141
- // click Next
142
- jQuery("#Next_mp3j_"+id).data( "player", {pid:id} ).click( function() {
143
- E_change_track( jQuery(this).data("player").pid, "next" );
144
- jQuery(this).blur();
145
- return false;
146
- });
147
- // click Prev
148
- jQuery("#Prev_mp3j_"+id).data( "player", {pid:id} ).click( function() {
149
- E_change_track( jQuery(this).data("player").pid, "prev" );
150
- jQuery(this).blur();
151
- return false;
152
- });
153
-
154
- if ( !mp3j_info[id].lstate ) { // TODO swap things round
155
- mp3j_info[id].lstate = true;
156
- MI_toggleplaylist( "SHOW PLAYLIST", id );
157
- }
158
- } else { // Only 1 track, hide list and toggle
159
- jQuery("#UL_mp3j_"+id).hide();
160
- jQuery("#playlist-toggle_"+id).hide();
161
- }
162
-
163
- // Write 1st titles & captions
164
- jQuery('#T_mp3j_'+id).append(newPlayerList[mp3j_info[id].tr].name);
165
- if ( newPlayerList[mp3j_info[id].tr].artist !== "" ) {
166
- if ( mp3j_info[id].type === "MI" ) {
167
- jQuery('#C_mp3j_'+id).append(newPlayerList[mp3j_info[id].tr].artist);
168
- } else {
169
- jQuery('#T_mp3j_'+id).append(" - " + newPlayerList[mp3j_info[id].tr].artist);
170
- }
171
- }
172
- }
173
-
174
- /* Events =============================================================== */
175
- function E_playpause_click( id ) {
176
- if ( $tid === id && $state === "playing" ) {
177
- jQuery("#jquery_jplayer").jPlayer("pause");
178
- play_button( id );
179
- $state = "paused";
180
- $link_playID = "";
181
- return;
182
- }
183
- if ( $tid !== id ) {
184
- var lastid = $tid;
185
- $tid = "";
186
- var playlist = mp3j_info[id].list;
187
- var track = mp3j_info[id].tr;
188
- jQuery("#jquery_jplayer").jPlayer("volume", 100); //vol scaling workaround
189
- jQuery("#jquery_jplayer").jPlayer("setFile", playlist[track].mp3);
190
- play_button( lastid );
191
- clear_bars( lastid );
192
- clear_status( lastid );
193
- make_slider( id );
194
- }
195
- pause_button( id );
196
- jQuery("#jquery_jplayer").jPlayer("play");
197
- jQuery("#jquery_jplayer").jPlayer("volume", mp3j_info[id].vol); // reset to correct vol
198
- $state = "playing";
199
- $link_playID = "";
200
- $tid = id;
201
- }
202
-
203
- function E_stop_click( id ) {
204
- if ( $tid === id ) {
205
- play_button( id );
206
- clear_bars( id );
207
- clear_status( id );
208
- $tid = "";
209
- jQuery("#jquery_jplayer").jPlayer("clearFile");
210
- if ( mp3j_info[id].status === "full" ) { jQuery("#statusMI_" + id).text('Stopped'); }
211
- $state = "";
212
- $link_playID = "";
213
- }
214
- }
215
-
216
- function E_stop_doubleclick( id ) {
217
- change_list_classes( id, 0 );
218
- change_titles( id, 0 );
219
- change_dload_link( id, 0 );
220
- clear_status( id );
221
- mp3j_info[id].tr = 0;
222
- if ( $tid === id ) {
223
- play_button( id );
224
- clear_bars( id );
225
- $tid = "";
226
- jQuery("#jquery_jplayer").jPlayer("clearFile");
227
- $state = "";
228
- $link_playID = "";
229
- }
230
- }
231
-
232
- function E_change_track( id, change ) {
233
- var playlist = mp3j_info[id].list;
234
- var track;
235
- var lastid = $tid;
236
- if ( change === "next" ) {
237
- track = ( mp3j_info[id].tr+1 < playlist.length ) ? mp3j_info[id].tr+1 : 0;
238
- } else if ( change === "prev" ) {
239
- track = ( mp3j_info[id].tr-1 < 0 ) ? playlist.length-1 : mp3j_info[id].tr-1;
240
- } else {
241
- track = change;
242
- }
243
- change_list_classes( id, track );
244
- change_titles( id, track );
245
- change_dload_link( id, track );
246
- play_button( lastid );
247
- if ( $tid !== id ) { jQuery("#jquery_jplayer").jPlayer("volume", 100); } //vol scaling workaround
248
- $tid = id; //
249
- jQuery("#jquery_jplayer").jPlayer("setFile", playlist[track].mp3);
250
- pause_button( id );
251
- jQuery("#jquery_jplayer").jPlayer("play");
252
- jQuery("#jquery_jplayer").jPlayer("volume", mp3j_info[id].vol); //reset to correct vol
253
- mp3j_info[id].tr = track;
254
- clear_bars( lastid );
255
- clear_status( lastid );
256
- make_slider( id );
257
- $state = "playing";
258
- $link_playID = "";
259
- }
260
-
261
-
262
- function run_sound_complete() {
263
- if ( mp3j_info[$tid].has_ul === 1 ) {
264
- var playlist = mp3j_info[$tid].list;
265
- //if ( mp3j_info[$tid].loop || mp3j_info[$tid].tr+1 !== playlist.length ) {
266
- if ( (mp3j_info[$tid].loop || mp3j_info[$tid].tr+1 !== playlist.length) && $link_playID === "" ) {
267
- E_change_track( $tid, "next" );
268
- } else {
269
- change_list_classes( $tid, 0 );
270
- change_titles( $tid, 0 );
271
- change_dload_link( $tid, 0 );
272
- mp3j_info[$tid].tr = 0;
273
- play_button( $tid );
274
- clear_bars( $tid );
275
- clear_status( $tid );
276
- $tid = "";
277
- $link_playID = "";
278
- jQuery("#jquery_jplayer").jPlayer("setFile", silence_mp3 );
279
- jQuery("#jquery_jplayer").jPlayer("play");
280
- jQuery("#jquery_jplayer").jPlayer("clearFile");
281
- $state = "";
282
- mp3j_init();
283
- }
284
- } else {
285
- play_button( $tid );
286
- clear_bars( $tid );
287
- clear_status( $tid );
288
- var id = $tid;
289
- $tid = "";
290
- jQuery("#jquery_jplayer").jPlayer("setFile", silence_mp3 );
291
- jQuery("#jquery_jplayer").jPlayer("play");
292
- jQuery("#jquery_jplayer").jPlayer("clearFile");
293
- $state = "";
294
- if ( mp3j_info[id].loop ) {
295
- E_playpause_click( id );
296
- } else {
297
- mp3j_init();
298
- }
299
- }
300
- }
301
-
302
- /* Do stuff =============================================================== */
303
- function change_titles( id, track ) {
304
- var playlist = mp3j_info[id].list;
305
-
306
- //jQuery('#T_mp3j_'+id).text( playlist[track].name );
307
- jQuery('#T_mp3j_'+id).empty();
308
- jQuery('#T_mp3j_'+id).append( playlist[track].name );
309
-
310
- //if ( playlist[track].artist !== "" ) { jQuery('#C_mp3j_'+id).text( playlist[track].artist ); }
311
- //else { jQuery('#C_mp3j_'+id).empty(); }
312
- jQuery('#C_mp3j_'+id).empty();
313
- if ( playlist[track].artist !== "" ) {
314
- jQuery('#C_mp3j_'+id).append( playlist[track].artist );
315
- }
316
-
317
- }
318
-
319
- function change_dload_link( id, track ) {
320
- if ( !mp3j_info[id].download ) { return; }
321
- var playlist = mp3j_info[id].list;
322
- jQuery("#download_mp3j_"+id).empty();
323
- jQuery("#download_mp3j_"+id).removeClass("whilelinks");
324
- jQuery("#download_mp3j_"+id).append("<a href=\"" + playlist[track].mp3 + "\">DOWNLOAD MP3</a>");
325
- }
326
-
327
- function clear_bars( id ) {
328
- if ( id === "" ) { return; }
329
- jQuery("#load_mp3j_"+id).css( "width", "0" );
330
- jQuery('#posbar_mp3j_'+id).slider('destroy');
331
- }
332
-
333
- function clear_status( id ) {
334
- if ( id === "" ) { return; }
335
- if ( mp3j_info[id].status === "basic" ) { jQuery("#indi_mp3j_" + id + " span").replaceWith(""); }
336
- if ( mp3j_info[id].status === "full" ) {
337
- jQuery("#T-Time-MI_" + id).empty();
338
- jQuery("#statusMI_" + id).text('Ready');
339
- jQuery("#P-Time-MI_" + id).text("00:00");
340
- }
341
- }
342
-
343
- function pause_button( id ) {
344
- if ( mp3j_info[id].play_txt === "#USE_G#" ) {
345
- jQuery("#playpause_mp3j_"+id).removeClass("buttons_mp3j");
346
- jQuery("#playpause_mp3j_"+id).addClass("buttons_mp3jpause");
347
- } else {
348
- jQuery("#playpause_mp3j_"+id).empty();
349
- jQuery("#playpause_mp3j_"+id).append( mp3j_info[id].pause_txt );
350
- }
351
- return;
352
- }
353
-
354
- function play_button( id ) {
355
- if ( id === "" ) { return; }
356
- if ( mp3j_info[id].play_txt === "#USE_G#" ) {
357
- jQuery("#playpause_mp3j_"+id).removeClass("buttons_mp3jpause");
358
- jQuery("#playpause_mp3j_"+id).addClass("buttons_mp3j");
359
- } else {
360
- jQuery("#playpause_mp3j_"+id).empty();
361
- jQuery("#playpause_mp3j_"+id).append(mp3j_info[id].play_txt);
362
- }
363
- return;
364
- }
365
-
366
- function stop_popout() {
367
- if( typeof newwindow !== "undefined" && !newwindow.closed && newwindow.jQuery("#jquery_jplayer").jPlayer("getData", "diag.isPlaying") ){
368
- newwindow.jQuery("#jquery_jplayer").jPlayer("clearFile");
369
- }
370
- }
371
-
372
- var f_arr = {
373
- _keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
374
- f_con : function (input) {
375
- var output = ""; var chr1, chr2, chr3; var enc1, enc2, enc3, enc4; var i = 0;
376
- input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
377
- while (i < input.length) {
378
- enc1 = this._keyStr.indexOf(input.charAt(i++)); enc2 = this._keyStr.indexOf(input.charAt(i++)); enc3 = this._keyStr.indexOf(input.charAt(i++)); enc4 = this._keyStr.indexOf(input.charAt(i++));
379
- chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4;
380
- output = output + String.fromCharCode(chr1);
381
- if (enc3 !== 64) { output = output + String.fromCharCode(chr2); }
382
- if (enc4 !== 64) { output = output + String.fromCharCode(chr3); }
383
- }
384
- output = f_arr._utf8_f_con(output);
385
- return output;
386
- },
387
- _utf8_f_con : function (utftext) {
388
- var string = "";
389
- var i = 0;
390
- var c1 = 0;
391
- var c2 = 0;
392
- var c = 0;
393
- while ( i < utftext.length ) {
394
- c = utftext.charCodeAt(i);
395
- if (c < 128) { string += String.fromCharCode(c); i++; }
396
- else if((c > 191) && (c < 224)) { c2 = utftext.charCodeAt(i+1); string += String.fromCharCode(((c & 31) << 6) | (c2 & 63)); i += 2; }
397
- else { c2 = utftext.charCodeAt(i+1); c3 = utftext.charCodeAt(i+2); string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)); i += 3; }
398
- }
399
- return string;
400
- }
401
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
js/popout.js DELETED
@@ -1,148 +0,0 @@
1
- /* MP3-jPlayer popout
2
- 1.7 */
3
-
4
- var $tid = "";
5
- var $state = "";
6
- var global_lp = 0;
7
-
8
- // Prep arrays, click functions & initial text
9
- function mp3j_setup() {
10
- I_images();
11
- I_unwrap();
12
- if ( typeof mp3j_info !== "undefined" ) { I_setup_players(); }
13
-
14
- jQuery("div.MIsliderVolume .ui-widget-header").css( "background" , foxPP_volume_grad );
15
- jQuery("div.loadMI_mp3j").css({ "background" : foxPP_loader_bar_colour, opacity : foxPP_loader_bar_opac });
16
-
17
- var start_track = mp3j_info[0].tr;
18
- mp3j_info[0].tr = 0;
19
- change_list_classes( 0, start_track );
20
- mp3j_info[0].tr = start_track;
21
- return;
22
- }
23
-
24
- function mp3j_init() {
25
- var j;
26
- for ( j=0; j < mp3j_info.length; j++ ) {
27
- if ( mp3j_info[j].autoplay ) {
28
- mp3j_info[j].autoplay = false;
29
- E_playpause_click( j );
30
- return;
31
- }
32
- }
33
- }
34
-
35
- function make_slider( id ) {
36
- jQuery('#posbar_mp3j_'+id).slider({
37
- max: 1000,
38
- range: 'min',
39
- animate: FoxAnimSlider,
40
- slide: function(event, ui) {
41
- if ( $state === "paused" ) { pause_button( id, mp3j_info[id].play_txt, mp3j_info[id].pause_txt ); }
42
- jQuery("#jquery_jplayer").jPlayer("playHead", ui.value*(10.0/global_lp));
43
- $state = "playing";
44
- }
45
- });
46
- jQuery("div.bars_holder .ui-widget-header").css({ "background" : foxPP_posbar_colour, opacity : foxPP_posbar_opac });
47
- }
48
-
49
- function change_list_classes( id, track ) {
50
- jQuery("#mp3j_A_"+id+"_"+mp3j_info[id].tr).removeClass("mp3j_A_current").parent().removeClass("mp3j_A_current");
51
- jQuery("#mp3j_A_"+id+"_"+track).addClass("mp3j_A_current").parent().addClass("mp3j_A_current");
52
- if ( foxPP_fixedcss == "false" ) { // assign colours
53
- jQuery("ul.UL-MI_mp3j li").css( "background" , foxPP_playlist_divider );
54
- jQuery("ul.UL-MI_mp3j li a").css({ "color" : foxPP_playlist_text, "background" : "none" });
55
- write_list_hovers();
56
- jQuery("ul.UL-MI_mp3j li a.mp3j_A_current").css({ "color" : foxPP_playlist_current, "background" : foxPP_listBGa_current });
57
- }
58
- }
59
-
60
- function write_list_hovers() {
61
- if ( foxPP_fixedcss == "false" ) {
62
- jQuery("ul.UL-MI_mp3j li a").mouseover(function () {
63
- $(this).css( "color" , foxPP_playlist_hover );
64
- $(this).css( "background" , foxPP_listBGa_hover );
65
- });
66
- jQuery("ul.UL-MI_mp3j li a").mouseout(function () {
67
- $(this).css("color", foxPP_playlist_text );
68
- $(this).css( "background" , "none" );
69
- });
70
- jQuery("ul.UL-MI_mp3j li a.mp3j_A_current").mouseover(function () {
71
- $(this).css( "color", foxPP_playlist_current );
72
- $(this).css( "background" , foxPP_listBGa_current );
73
- });
74
- jQuery("ul.UL-MI_mp3j li a.mp3j_A_current").mouseout(function () {
75
- $(this).css( "color", foxPP_playlist_current );
76
- $(this).css( "background" , foxPP_listBGa_current );
77
- });
78
- }
79
- }
80
-
81
- function run_progress_update( loadPercent, playedPercentRelative, playedPercentAbsolute, playedTime, totalTime ) {
82
- if ( $tid === "" ) { return; }
83
- //var ppaInt = parseInt(playedPercentAbsolute, 10);
84
- //var lpInt = parseInt(loadPercent, 10);
85
- global_lp = loadPercent;
86
- jQuery("#load_mp3j_"+$tid).css( "width", loadPercent+"%" );
87
- jQuery('#posbar_mp3j_'+$tid).slider('option', 'value', playedPercentAbsolute*10);
88
- var dl = mp3j_info[$tid].download;
89
- jQuery("#T-Time-MI_"+$tid).hide();
90
- jQuery("#T-Time-MI_"+$tid).text(jQuery.jPlayer.convertTime(totalTime));
91
- jQuery("#P-Time-MI_"+$tid).text(jQuery.jPlayer.convertTime(playedTime));
92
- jQuery("#statusMI_"+$tid).empty();
93
- if (jQuery("#jquery_jplayer").jPlayer("getData", "diag.isPlaying")){ // "PLAYING"
94
- if (playedTime===0 && loadPercent===0){ // connecting
95
- jQuery("#statusMI_"+$tid).append('<span class="mp3-finding"></span><span class="mp3-tint"></span>Connecting');
96
- jQuery("span.mp3-tint").css( "background" , foxPP_indicator_tint );
97
- if ( dl ) { jQuery("#download_mp3j_"+$tid).removeClass("whilelinks"); jQuery("#download_mp3j_"+$tid).addClass("betweenlinks"); }
98
- }
99
- if (playedTime===0 && loadPercent>0){// buffering
100
- jQuery("#statusMI_"+$tid).append('<span class="mp3-loading"></span><span class="mp3-tint"></span>Buffering');
101
- jQuery("span.mp3-tint").css( "background" , foxPP_indicator_tint );
102
- jQuery("#T-Time-MI_"+$tid).show();
103
- if ( dl ) { jQuery("#download_mp3j_"+$tid).removeClass("betweenlinks"); jQuery("#download_mp3j_"+$tid).addClass("whilelinks"); }
104
- }
105
- if (playedTime>0){ // playing
106
- jQuery("#statusMI_"+$tid).append('Playing');
107
- jQuery("#T-Time-MI_"+$tid).show();
108
- if ( dl ) { jQuery("#download_mp3j_"+$tid).removeClass("betweenlinks"); jQuery("#download_mp3j_"+$tid).addClass("whilelinks"); }
109
- }
110
- } else { // "STOPPED"
111
- if (playedTime>0){ // paused
112
- jQuery("#statusMI_"+$tid).append('Paused');
113
- jQuery("#T-Time-MI_"+$tid).show();
114
- if ( dl ) { jQuery("#download_mp3j_"+$tid).removeClass("betweenlinks"); jQuery("#download_mp3j_"+$tid).addClass("whilelinks"); }
115
- }
116
- if (playedTime===0){
117
- if(loadPercent>0){ // stopped
118
- jQuery("#statusMI_"+$tid).append('Stopped');
119
- jQuery("#T-Time-MI_"+$tid).show();
120
- if ( dl ) { jQuery("#download_mp3j_"+$tid).removeClass("betweenlinks"); jQuery("#download_mp3j_"+$tid).addClass("whilelinks"); }
121
- } else { // ready
122
- jQuery("#statusMI_"+$tid).append('Ready');
123
- }
124
- }
125
- }
126
- }
127
-
128
- function MI_toggleplaylist(text, id){
129
- var PPwidth = jQuery(window).width();
130
- if ( mp3j_info[id].lstate ) {
131
- if ( text==="" ) { text="SHOW"; }
132
- jQuery("#L_mp3j_"+id).fadeOut(300);
133
- jQuery("#playlist-toggle_"+id).empty();
134
- jQuery("#playlist-toggle_"+id).append(text);
135
- window.resizeTo( PPwidth+24 , player_height );
136
- mp3j_info[id].lstate = false;
137
- return;
138
- }
139
- if ( !mp3j_info[id].lstate ) {
140
- if ( text==="" ) { text="HIDE"; }
141
- jQuery("#L_mp3j_"+id).fadeIn("slow");
142
- jQuery("#playlist-toggle_"+id).empty();
143
- jQuery("#playlist-toggle_"+id).append(text);
144
- window.resizeTo( PPwidth+24 , popout_height );
145
- mp3j_info[id].lstate = true;
146
- return;
147
- }
148
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
mp3j_admin.php ADDED
@@ -0,0 +1,665 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ function mp3j_print_admin_page() {
3
+
4
+ global $mp3_fox;
5
+ $theOptions = $mp3_fox->getAdminOptions();
6
+ $colours_array = array();
7
+
8
+ if (isset($_POST['update_mp3foxSettings']))
9
+ {
10
+ if (isset($_POST['mp3foxVol'])) {
11
+ $theOptions['initial_vol'] = preg_replace("/[^0-9]/", "", $_POST['mp3foxVol']);
12
+ if ($theOptions['initial_vol'] < 0 || $theOptions['initial_vol']=="") { $theOptions['initial_vol'] = "0"; }
13
+ if ($theOptions['initial_vol'] > 100) { $theOptions['initial_vol'] = "100"; }
14
+ }
15
+ if (isset($_POST['mp3foxPopoutMaxHeight'])) {
16
+ $theOptions['popout_max_height'] = preg_replace("/[^0-9]/", "", $_POST['mp3foxPopoutMaxHeight']);
17
+ if ( $theOptions['popout_max_height'] == "" ) { $theOptions['popout_max_height'] = "750"; }
18
+ if ( $theOptions['popout_max_height'] < 200 ) { $theOptions['popout_max_height'] = "200"; }
19
+ if ( $theOptions['popout_max_height'] > 1200 ) { $theOptions['popout_max_height'] = "1200"; }
20
+ }
21
+ if (isset($_POST['mp3foxPopoutWidth'])) {
22
+ $theOptions['popout_width'] = preg_replace("/[^0-9]/", "", $_POST['mp3foxPopoutWidth']);
23
+ if ( $theOptions['popout_width'] == "" ) { $theOptions['popout_width'] = "400"; }
24
+ if ( $theOptions['popout_width'] < 250 ) { $theOptions['popout_width'] = "250"; }
25
+ if ( $theOptions['popout_width'] > 1600 ) { $theOptions['popout_width'] = "1600"; }
26
+ }
27
+ if (isset($_POST['mp3foxMaxListHeight'])) {
28
+ $theOptions['max_list_height'] = preg_replace("/[^0-9]/", "", $_POST['mp3foxMaxListHeight']);
29
+ if ( $theOptions['max_list_height'] < 0 ) { $theOptions['max_list_height'] = ""; }
30
+ }
31
+
32
+ if (isset($_POST['mp3foxfolder'])) { $theOptions['mp3_dir'] = $mp3_fox->prep_path( $_POST['mp3foxfolder'] ); }
33
+ if (isset($_POST['mp3foxCustomStylesheet'])) { $theOptions['custom_stylesheet'] = $mp3_fox->prep_path( $_POST['mp3foxCustomStylesheet'] ); }
34
+ if (isset($_POST['mp3foxTheme'])) { $theOptions['player_theme'] = $_POST['mp3foxTheme']; }
35
+ if (isset($_POST['mp3foxFloat'])) { $theOptions['player_float'] = $_POST['mp3foxFloat']; }
36
+ if (isset($_POST['mp3foxPlayerWidth'])) { $theOptions['player_width'] = $_POST['mp3foxPlayerWidth']; }
37
+ if (isset($_POST['mp3foxPopoutBackground'])) { $theOptions['popout_background'] = $_POST['mp3foxPopoutBackground']; }
38
+ if (isset($_POST['mp3foxPopoutBGimage'])) { $theOptions['popout_background_image'] = $_POST['mp3foxPopoutBGimage']; }
39
+ if (isset($_POST['mp3foxPluginVersion'])) { $theOptions['db_plugin_version'] = $_POST['mp3foxPluginVersion']; }
40
+ if (isset($_POST['mp3foxPopoutButtonText'])) { $theOptions['popout_button_title'] = $_POST['mp3foxPopoutButtonText']; }
41
+ if (isset($_POST['librarySortcol'])) { $theOptions['library_sortcol'] = $_POST['librarySortcol']; }
42
+ if (isset($_POST['libraryDirection'])) { $theOptions['library_direction'] = $_POST['libraryDirection']; }
43
+ if (isset($_POST['disableJSlibs'])) { $theOptions['disable_jquery_libs'] = ( preg_match("/^yes$/i", $_POST['disableJSlibs']) ) ? "yes" : ""; }
44
+ if (isset($_POST['MtogBox1'])) { $theOptions['admin_toggle_1'] = $_POST['MtogBox1']; }
45
+ if (isset($_POST['file_separator'])) { $theOptions['f_separator'] = $_POST['file_separator']; }
46
+ if (isset($_POST['caption_separator'])) { $theOptions['c_separator'] = $_POST['caption_separator']; }
47
+
48
+ $theOptions['paddings_top'] = ( $_POST['mp3foxPaddings_top'] == "" ) ? "0px" : $_POST['mp3foxPaddings_top'];
49
+ $theOptions['paddings_bottom'] = ( $_POST['mp3foxPaddings_bottom'] == "" ) ? "0px" : $_POST['mp3foxPaddings_bottom'];
50
+ $theOptions['paddings_inner'] = ( $_POST['mp3foxPaddings_inner'] == "" ) ? "0px" : $_POST['mp3foxPaddings_inner'];
51
+ $theOptions['auto_play'] = (isset($_POST['mp3foxAutoplay'])) ? $_POST['mp3foxAutoplay'] : "false";
52
+ $theOptions['allow_remoteMp3'] = (isset($_POST['mp3foxAllowRemote'])) ? $_POST['mp3foxAllowRemote'] : "false";
53
+ //$theOptions['playlist_AtoZ'] = (isset($_POST['mp3foxAtoZ'])) ? $_POST['mp3foxAtoZ'] : "false";
54
+ $theOptions['player_onblog'] = (isset($_POST['mp3foxOnBlog'])) ? $_POST['mp3foxOnBlog'] : "false";
55
+ //$theOptions['playlist_UseLibrary'] = (isset($_POST['mp3foxUseLibrary'])) ? $_POST['mp3foxUseLibrary'] : "false";
56
+ $theOptions['playlist_show'] = (isset($_POST['mp3foxShowPlaylist'])) ? $_POST['mp3foxShowPlaylist'] : "false";
57
+ $theOptions['remember_settings'] = (isset($_POST['mp3foxRemember'])) ? $_POST['mp3foxRemember'] : "false";
58
+ $theOptions['hide_mp3extension'] = (isset($_POST['mp3foxHideExtension'])) ? $_POST['mp3foxHideExtension'] : "false";
59
+
60
+
61
+ //$theOptions['show_downloadmp3'] = (isset($_POST['mp3foxDownloadMp3'])) ? $_POST['mp3foxDownloadMp3'] : "false";
62
+ if (isset($_POST['mp3foxDownloadMp3'])) { $theOptions['show_downloadmp3'] = $_POST['mp3foxDownloadMp3']; }
63
+ $theOptions['dload_text'] = ( $_POST['dload_text'] == "" ) ? "DOWNLOAD MP3" : $_POST['dload_text'];
64
+
65
+ //$theOptions['loggedout_dload_text'] = ( $_POST['loggedout_dload_text'] == "" ) ? "LOG IN TO DOWNLOAD!" : $_POST['loggedout_dload_text'];
66
+ $theOptions['loggedout_dload_text'] = ( $_POST['loggedout_dload_text'] == "" ) ? "" : $_POST['loggedout_dload_text'];
67
+ $theOptions['loggedout_dload_link'] = ( $_POST['loggedout_dload_link'] == "" ) ? "" : $_POST['loggedout_dload_link']; //allow it to be empty
68
+
69
+ $theOptions['disable_template_tag'] = (isset($_POST['disableTemplateTag'])) ? $_POST['disableTemplateTag'] : "false";
70
+ $theOptions['echo_debug'] = (isset($_POST['mp3foxEchoDebug'])) ? $_POST['mp3foxEchoDebug'] : "false";
71
+ $theOptions['add_track_numbering'] = (isset($_POST['mp3foxAddTrackNumbers'])) ? $_POST['mp3foxAddTrackNumbers'] : "false";
72
+ $theOptions['enable_popout'] = (isset($_POST['mp3foxEnablePopout'])) ? $_POST['mp3foxEnablePopout'] : "false";
73
+ $theOptions['playlist_repeat'] = (isset($_POST['mp3foxPlaylistRepeat'])) ? $_POST['mp3foxPlaylistRepeat'] : "false";
74
+ $theOptions['use_fixed_css'] = (isset($_POST['mp3foxUseFixedCSS'])) ? $_POST['mp3foxUseFixedCSS'] : "false";
75
+ $theOptions['encode_files'] = (isset($_POST['mp3foxEncodeFiles'])) ? $_POST['mp3foxEncodeFiles'] : "false";
76
+ $theOptions['animate_sliders'] = (isset($_POST['mp3foxAnimSliders'])) ? $_POST['mp3foxAnimSliders'] : "false";
77
+ $theOptions['run_shcode_in_excerpt'] = (isset($_POST['runShcodeInExcerpt'])) ? $_POST['runShcodeInExcerpt'] : "false";
78
+ $theOptions['volslider_on_singles'] = (isset($_POST['volslider_onsingles'])) ? $_POST['volslider_onsingles'] : "false";
79
+ $theOptions['volslider_on_mp3j'] = (isset($_POST['volslider_onmp3j'])) ? $_POST['volslider_onmp3j'] : "false";
80
+ $theOptions['touch_punch_js'] = (isset($_POST['touch_punch_js'])) ? $_POST['touch_punch_js'] : "false";
81
+
82
+ // Colours array//
83
+ if (isset($_POST['mp3foxScreenColour'])) { $colours_array['screen_colour'] = $_POST['mp3foxScreenColour']; }
84
+ if (isset($_POST['mp3foxScreenOpac'])) { $colours_array['screen_opacity'] = $_POST['mp3foxScreenOpac']; }
85
+ if (isset($_POST['mp3foxLoadbarColour'])) { $colours_array['loadbar_colour'] = $_POST['mp3foxLoadbarColour']; }
86
+ if (isset($_POST['mp3foxLoadbarOpac'])) { $colours_array['loadbar_opacity'] = $_POST['mp3foxLoadbarOpac']; }
87
+ if (isset($_POST['mp3foxPosbarColour'])) { $colours_array['posbar_colour'] = $_POST['mp3foxPosbarColour']; }
88
+ if (isset($_POST['mp3foxPosbarTint'])) { $colours_array['posbar_tint'] = $_POST['mp3foxPosbarTint']; }
89
+ if (isset($_POST['mp3foxPosbarOpac'])) { $colours_array['posbar_opacity'] = $_POST['mp3foxPosbarOpac']; }
90
+ if (isset($_POST['mp3foxScreenTextColour'])) { $colours_array['screen_text_colour'] = $_POST['mp3foxScreenTextColour']; }
91
+ if (isset($_POST['mp3foxPlaylistColour'])) { $colours_array['playlist_colour'] = $_POST['mp3foxPlaylistColour']; }
92
+ if (isset($_POST['mp3foxPlaylistTint'])) { $colours_array['playlist_tint'] = $_POST['mp3foxPlaylistTint']; }
93
+ if (isset($_POST['mp3foxPlaylistOpac'])) { $colours_array['playlist_opacity'] = $_POST['mp3foxPlaylistOpac']; }
94
+ if (isset($_POST['mp3foxListTextColour'])) { $colours_array['list_text_colour'] = $_POST['mp3foxListTextColour']; }
95
+ if (isset($_POST['mp3foxListCurrentColour'])) { $colours_array['list_current_colour'] = $_POST['mp3foxListCurrentColour']; }
96
+ if (isset($_POST['mp3foxListHoverColour'])) { $colours_array['list_hover_colour'] = $_POST['mp3foxListHoverColour']; }
97
+ if (isset($_POST['mp3foxListBGaHover'])) { $colours_array['listBGa_hover'] = $_POST['mp3foxListBGaHover']; }
98
+ if (isset($_POST['mp3foxListBGaCurrent'])) { $colours_array['listBGa_current'] = $_POST['mp3foxListBGaCurrent']; }
99
+ if (isset($_POST['mp3foxVolGrad'])) { $colours_array['volume_grad'] = $_POST['mp3foxVolGrad']; }
100
+ if (isset($_POST['mp3foxListDivider'])) { $colours_array['list_divider'] = $_POST['mp3foxListDivider']; }
101
+ if (isset($_POST['mp3foxIndicator'])) { $colours_array['indicator'] = $_POST['mp3foxIndicator']; }
102
+ $theOptions['colour_settings'] = $colours_array;
103
+
104
+ update_option($mp3_fox->adminOptionsName, $theOptions);
105
+ $mp3_fox->theSettings = $theOptions;
106
+ ?>
107
+ <!-- Settings saved message -->
108
+ <div class="updated"><p><strong><?php _e("Settings Updated.", $mp3_fox->textdomain );?></strong></p></div>
109
+
110
+ <?php
111
+ }
112
+ // Pick up current colours
113
+ $current_colours = $theOptions['colour_settings'];
114
+ ?>
115
+
116
+ <div class="wrap">
117
+ <h2>&nbsp;</h2>
118
+ <h1>Mp3<span style="font-size:16px;"> - </span>jPlayer<span class="description" style="font-size:10px;">&nbsp; <?php echo $mp3_fox->version_of_plugin; ?></span> &nbsp;&nbsp;
119
+ <?php if ( $theOptions['disable_jquery_libs'] == "yes" ) { ?><span style="font-size: 11px; font-weight:700; color:#f66;">(jQuery and UI scripts are turned off)</span><?php } ?></h1>
120
+
121
+ <h5 style="margin: 0 0 30px 0; padding:0; font-size:10px;">
122
+ <a href="javascript:MP3J_ADMIN.toggleit('tog_0','HELP');" id="tog_0-toggle" class="fox_buttonlink">HELP</a>&nbsp;<a href="widgets.php" class="fox_buttonlink">WIDGETS</a>
123
+ </h5>
124
+
125
+ <div id="tog_0-list" style="border-bottom:1px solid #ccc; margin-bottom:25px;">
126
+
127
+ <p>Add players using <code>[mp3j]</code> <code>[mp3t]</code> <code>[mp3-jplayer]</code> <code>[mp3-popout]</code> shortcodes, and <a href="widgets.php">widgets</a>.</p>
128
+
129
+ <div class="Ahelp1">
130
+
131
+ <h4><code>[mp3-jplayer]</code> <span class="description">Playlist player</span></h4>
132
+
133
+ <h5>Parameters:</h5>
134
+ <p><code>tracks</code> <span class="description">filenames/URIs/FEEDs (<code>,</code> separated)</span><br />
135
+ <code>captions</code> <span class="description">caption text (<code>;</code> separated)</span><br />
136
+ <code>vol</code> <span class="description">0 - 100</span><br />
137
+ <code>autoplay</code> <span class="description">y/n</span><br />
138
+ <code>loop</code> <span class="description">y/n</span><br />
139
+ <code>dload</code> <span class="description">y / n / loggedin (show download link)</span><br />
140
+ <code>list</code> <span class="description">y/n (show playlist)</span><br />
141
+ <code>pick</code> <span class="description">a number (picks random selection)</span><br />
142
+ <code>shuffle</code> <span class="description">y/n (shuffle track order)</span><br />
143
+ <code>title</code> <span class="description">text above player</span><br />
144
+ <code>pos</code> <span class="description">rel-L, rel-C, rel-R, left, right</span><br />
145
+ <code>width</code> <span class="description">in px or %</span><br />
146
+ <code>height</code> <span class="description">in px (player height excluding list)</span><br />
147
+ <code>pn</code> <span class="description">y/n (show prev/next buttons)</span><br />
148
+ <code>stop</code> <span class="description">y/n (show stop button)</span><br />
149
+ <code>id</code> <span class="description">a page id (to read the custom fields from)</span><br />
150
+ <code>images</code> <span class="description">comma separated list of track image urls</span><br />
151
+ <!--<code>imglinks</code> <span class="description">comma separated list of arbitrary links</span><br />-->
152
+ <code>fsort</code> <span class="description">asc/desc (folder feed direction)</span><br />
153
+ <code>style</code> <span class="description">css class names(s) to add</span></p>
154
+
155
+ </div>
156
+
157
+ <div class="Ahelp1">
158
+ <h4><code>[mp3j]</code> &amp; <code>[mp3t]</code> <span class="description">Single-track players</span></h4>
159
+
160
+ <h5>Parameters:</h5>
161
+ <p><code>track</code> <span class="description">filename or URI</span><br />
162
+ <code>caption</code> <span class="description">caption text (right of title)</span><br />
163
+ <code>vol</code> <span class="description">0 - 100</span><br />
164
+ <code>volslider</code> <span class="description">y/n</span><br />
165
+ <code>autoplay</code> <span class="description">y/n</span><br />
166
+ <code>loop</code> <span class="description">y/n</span><br />
167
+ <code>title</code> <span class="description">text (replaces both title and caption)</span><br />
168
+ <code>bold</code> <span class="description">y/n</span><br />
169
+ <code>flip</code> <span class="description">y/n (play/pause)</span><br />
170
+ <code>ind</code> <span class="description">y/n (hide indicator and time)</span><br />
171
+ <code>flow</code> <span class="description">y/n (don't line break)</span><br />
172
+ <code>style</code> <span class="description">css class names(s) to add</span></p>
173
+
174
+ <h5>Also for <code>[mp3t]</code></h5>
175
+ <p><code>play</code> play button text<br /><code>stop</code> pause button text</p>
176
+
177
+ </div>
178
+
179
+ <div class="Ahelp1">
180
+ <h4><code>[mp3-popout]</code> <span class="description">Link to pop-out player</span></h4>
181
+
182
+ <h5>Parameters:</h5>
183
+ <p><code>tracks</code> <span class="description">files/URIs/FEEDs (<code>,</code> separated)</span><br />
184
+ <code>captions</code> <span class="description">caption text (<code>;</code> separated)</span><br />
185
+ <code>vol</code> <span class="description">0 - 100</span><br />
186
+ <code>autoplay</code> <span class="description">y / n</span><br />
187
+ <code>loop</code> <span class="description">y / n</span><br />
188
+ <code>dload</code> <span class="description">y / n / loggedin (show download link)</span><br />
189
+ <code>list</code> <span class="description">y/n (show popout playlist)</span><br />
190
+ <code>pick</code> <span class="description">number (pick random selection)</span><br />
191
+ <code>shuffle</code> <span class="description">y/n (shuffle track order)</span><br />
192
+ <code>title</code> <span class="description">title for the popout window</span><br />
193
+ <code>pos</code> <span class="description">rel-L, rel-C, rel-R, left, right (link position)</span><br />
194
+ <code>text</code> <span class="description">text for the link</span><br />
195
+ <code>height</code> <span class="description">px (popout player height excluding it's list)</span><br />
196
+ <code>id</code> <span class="description">a page id (to read the custom fields from)</span><br />
197
+ <code>tag</code> <span class="description">html tag for text (eg. <code>h2</code>, Default is <code>p</code>)</span><br />
198
+ <code>image</code> <span class="description">image for the popout link</span><br />
199
+ <code>images</code> <span class="description">comma separated list of track image urls</span><br />
200
+ <!--<code>imglinks</code> <span class="description">comma separated list of arbitrary links</span><br />-->
201
+ <code>fsort</code> <span class="description">asc/desc (folder feed direction)</span><br />
202
+ <code>style</code> <span class="description">css class names(s) to add</span></p>
203
+ </div>
204
+
205
+ <!-- Not in this release
206
+ <div class="Ahelp1">
207
+ <h5><code>[mp3-link]</code> Play from a playlist player</h5>
208
+ <p><code>player</code> number of the player to operate<br /><code>track</code> the track number<br /><code>text</code> link text, defaults to <code>Play</code><br /><code>bold</code> y/n</p>
209
+ </div>
210
+ -->
211
+
212
+ <br class="clearB" /><br />
213
+
214
+ <p><strong>Eg</strong>. <span class="description">Single file player:</span> <code>[mp3j track="myfile.mp3"]</code><br />
215
+ <strong>Eg</strong>. <span class="description">Playlist fplayer:</span> <code>[mp3-jplayer tracks="myfileA.mp3, myfileB.mp3, myfileC.mp3"]</code><br />
216
+ <strong>Eg</strong>. <span class="description">Add titles:</span> <code>[mp3-jplayer tracks="MyTitle@myfileA.mp3, MyTitle@myfileB.mp3, MyTitle@myfileC.mp3"]</code><br />
217
+ <strong>Eg</strong>. <span class="description">Add captions:</span> <code>[mp3-jplayer tracks="fileA.mp3, fileB.mp3" captions="Caption A; Caption B"]</code></p>
218
+
219
+ <br />
220
+
221
+
222
+ <p><strong>Use these commands with [mp3-jplayer] in the <code>tracks</code> parameter to playlist entire folders or the library:</strong></p>
223
+ <p><code>FEED:LIB</code> playlists all mp3s in the library.<br />
224
+ <code>FEED:DF</code> playlists your default folder.<br />
225
+ <code>FEED:/my/music</code> playlists a folder or subfolder (relative to root of domain, not the WP install)</p>
226
+ <p><strong>Eg</strong>. Play 5 random tracks from the library: <code>[mp3-jplayer tracks="FEED:LIB" pick="5"]</code><br />
227
+ <strong>Eg</strong>. Play everything in the folder called 'tunes': <code>[mp3-jplayer tracks="FEED:/tunes"]</code></p>
228
+
229
+ <p>The <code>tracks</code> parameter can contain a mix of FEEDs and filenames/urls, eg. <code>[mp3-jplayer tracks="myfileA.mp3, FEED:/tunes, Title@myfileB.mp3, FEED:DF"]</code>.
230
+ When just a filename is used the file must be in either your media library or in the default folder (set on this page). You can also specify a file in a sub
231
+ directory in the default folder eg. <code>tracks=&quot;subfolder/file.mp3&quot;</code>.</p>
232
+
233
+ <br />
234
+
235
+ <p><strong>Custom Fields</strong></p>
236
+ <p>You can write playlists into the custom fields that are on page and post edit screens (check your 'screen options' at top-right
237
+ if they're not visible). They can be picked up with any of the shortcodes (from any page/post, or with the template tag, or by the widgets). See below for how
238
+ to set them up and some example uses:</p>
239
+
240
+ <p class="description">1. Enter <code>mp3</code> into the left hand box (the 'key' box).<br />2. Write the filename, URI, or 'FEED' (see above) into the right hand box (the 'value' box) and hit 'add custom field'</p>
241
+ <p>Add each track or 'FEED' in a new field pair.</p>
242
+ <p>To add titles and captions in the custom fields use the following format:</p>
243
+ <p class="description">1. Add a dot, then the caption in the left hand box, eg: <code>mp3.My Caption</code>
244
+ <br />2. Add the title, then an '@' before the filename in the right box, eg: <code>My Title@filename</code></p>
245
+ <p>The keys (left boxes) can be numbered, eg:<code>1 mp3</code> will be first on the playlist.</p>
246
+
247
+ <p>Example - If a custom field key/value pair is set as <code>mp3</code> and <code>FEED:LIB</code>, then the library is available to any shortcodes, so:<br />
248
+
249
+ <code>[mp3j]</code> or <code>[mp3t]</code> <span class="description">plays the next track from the library in a single player</span> <br />
250
+ <code>[mp3j track="3"]</code> or <code>[mp3t track="3"]</code> <span class="description">plays track 3 from the library in a single player</span> <br />
251
+ <code>[mp3-jplayer]</code> <span class="description">playlists all the custom fields in a playlist player</span><br /></p>
252
+
253
+ <br />
254
+
255
+
256
+ <p><strong>Widgets</strong></p>
257
+ <p class="description">
258
+ MP3j-sh - <span class="description">Adds players by writing shortcodes.</span><br />
259
+ MP3j-ui - <span class="description">Adds a playlist player by using tick boxes and modes. Note that some features such as manually written captions, and additional style (css classes) cannot be set with this widget, use the mp3j-sh widget instead.</span>
260
+ </p>
261
+ <br />
262
+ <h4 class="description" style="color:#606060;">Template Tags</h4>
263
+ <p class="description">For use in theme files:</p>
264
+ <p style="line-height:22px;"><code style="font-size:13px;">mp3j_addscripts( $style )<br />mp3j_put( $shortcodes )<br />mp3j_grab_library( $format )<br/>mp3j_debug()</code></p>
265
+
266
+ <br />
267
+
268
+ <!--<p class="description">More Info: &nbsp;<a href="<?php //echo get_bloginfo('wpurl'); ?>/wp-content/plugins/mp3-jplayer/player-help.htm">Player Guide</a> | <a href="<?php //echo get_bloginfo('wpurl'); ?>/wp-content/plugins/mp3-jplayer/template-tag-help.htm">Template Tag Help</a> | <a href="http://sjward.org/jplayer-for-wordpress">Plugin Home Page</a></p>-->
269
+ <p class="description">More Info:<br /><a href="http://sjward.org/jplayer-for-wordpress">Demo page</a><br /><a href="<?php echo $mp3_fox->PluginFolder; ?>/template-tag-help.htm">Template Tag Help</a></p>
270
+
271
+
272
+
273
+
274
+
275
+
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+
285
+ </div>
286
+
287
+ <form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>">
288
+ <p class="jtext">Initial volume &nbsp; <input type="text" style="text-align:center;" size="2" name="mp3foxVol" value="<?php echo $theOptions['initial_vol']; ?>" /> &nbsp; <span class="description">(0 - 100)</span></p>
289
+ <p class="jtick"><input type="checkbox" name="mp3foxAutoplay" value="true" <?php if ($theOptions['auto_play'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Autoplay</p>
290
+ <p class="jtick"><input type="checkbox" name="mp3foxPlaylistRepeat" value="true" <?php if ($theOptions['playlist_repeat'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Loop</p>
291
+ <p class="jtick"><input type="checkbox" name="mp3foxAddTrackNumbers" value="true" <?php if ($theOptions['add_track_numbering'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Number the tracks</p>
292
+ <!--<p class="jtick"><input type="checkbox" name="mp3foxAnimSliders" value="true" <?php //if ($theOptions['animate_sliders'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Animate sliders</p>-->
293
+ <br />
294
+ <p class="jtick"><input type="checkbox" name="mp3foxOnBlog" value="true" <?php if ($theOptions['player_onblog'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Show players in posts on index, archive, and search pages &nbsp;<span class="description">(doesn't affect widgets)</span></p>
295
+ <p class="jtick"><input type="checkbox" name="runShcodeInExcerpt" value="true" <?php if ($theOptions['run_shcode_in_excerpt'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Run shortcodes in post excerpts &nbsp;<span class="description">(this works for manually written post excerpts only)</span></p>
296
+ <br />
297
+
298
+ <?php
299
+ $greyout_field = ( $theOptions['player_theme'] != "styleI" ) ? "background:#fcfcfc; color:#d6d6d6; border-color:#f0f0f0;" : "background:#fff; color:#000; border-color:#dfdfdf;";
300
+ $greyout_text = ( $theOptions['player_theme'] != "styleI" ) ? "color:#d6d6d6;" : "color:#444;";
301
+ ?>
302
+ <!-- COLOUR / STYLE -->
303
+ <div style="height:35px"><p style="width:55px; margin:0 0 0 20px; line-height:32px;">Players:</p></div>
304
+ <p style="margin:-35px 0px 0px 75px; line-height:32px;"><select name="mp3foxTheme" id="player-select" style="width:94px; font-size:11px; line-height:19px;">
305
+ <option value="styleF" <?php if ( 'styleF' == $theOptions['player_theme'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Silver</option>
306
+ <option value="styleG" <?php if ( 'styleG' == $theOptions['player_theme'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Dark</option>
307
+ <option value="styleH" <?php if ( 'styleH' == $theOptions['player_theme'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Text</option>
308
+ <option value="styleI" <?php if ( 'styleI' == $theOptions['player_theme'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Custom</option>
309
+ </select>&nbsp;
310
+ <span id="player-csssheet" style=" <?php echo $greyout_text; ?>"> &nbsp;uri:</span><input type="text" id="mp3fcss" style="width:480px; <?php echo $greyout_field; ?>" name="mp3foxCustomStylesheet" value="<?php echo $theOptions['custom_stylesheet']; ?>" /></p>
311
+
312
+ <?php
313
+ //$showbox = ( $theOptions['admin_toggle_1'] == "true" ) ? "" : " display:none;";
314
+ //$hide = ( $theOptions['admin_toggle_1'] == "true" ) ? "Hide " : "";
315
+ ?>
316
+
317
+ <p style="margin:4px 0px 15px 20px;"><a href="javascript:MP3J_ADMIN.toggleit('tog_1','Colour Settings');" id="tog_1-toggle" class="fox_buttonlink bl2">Colour Settings</a></p>
318
+
319
+ <div id="tog_1-list" style="position:relative; margin:0px 0px 15px 20px; width:579px;">
320
+
321
+ <div style="position:relative; width:579px; height:20px; padding-top:2px; border-top:1px solid #eee; border-bottom:1px solid #eee; background:#f9f9f9;">
322
+ <div style="float:left; width:90px; margin-left:9px;"><p class="description" style="margin:0px;"><strong>AREA</strong></p></div>
323
+ <div style="float:left; width:390px;"><p class="description" style="margin:0px;">&nbsp;Opacity&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;Colour</p></div>
324
+ </div>
325
+
326
+ <div style="position:relative; width:579px; padding-top:6px;">
327
+ <div style="float:left; width:90px; margin-left:9px; border:0px solid #aaa;"><p style="margin:0px;line-height:32px;">Screen:<br />Loading bar:<br />Position bar:<br />Playlist:</p></div>
328
+ <div style="float:left; width:390px; border:0px solid #aaa;">
329
+ <p style="margin:0px;line-height:32px;">
330
+ <input type="text" size="4" name="mp3foxScreenOpac" value="<?php echo $current_colours['screen_opacity']; ?>" />
331
+ &nbsp;&nbsp;<input type="text" id="opA" onkeyup="udfcol('opA','blA');" size="10" name="mp3foxScreenColour" value="<?php echo $current_colours['screen_colour']; ?>" />
332
+ <span class="addcol" onclick="putfcolour('opA','blA');">&nbsp;+&nbsp;</span>
333
+ <span class="bl" onclick="sendfcolour('opA');" id="blA" style="background:<?php echo $current_colours['screen_colour']; ?>;">&nbsp;&nbsp;</span>
334
+ <br />
335
+ <input type="text" size="4" name="mp3foxLoadbarOpac" value="<?php echo $current_colours['loadbar_opacity']; ?>" />
336
+ &nbsp;&nbsp;<input type="text" id="opB" onkeyup="udfcol('opB','blB');" size="10" name="mp3foxLoadbarColour" value="<?php echo $current_colours['loadbar_colour']; ?>" />
337
+ <span class="addcol" onclick="putfcolour('opB','blB');">&nbsp;+&nbsp;</span>
338
+ <span class="bl" onclick="sendfcolour('opB');" id="blB" style="background:<?php echo $current_colours['loadbar_colour']; ?>;">&nbsp;&nbsp;</span>
339
+ <br />
340
+ <input type="text" size="4" name="mp3foxPosbarOpac" value="<?php echo $current_colours['posbar_opacity']; ?>" />
341
+ &nbsp;&nbsp;<input type="text" id="opC" onkeyup="udfcol('opC','blC');" size="10" name="mp3foxPosbarColour" value="<?php echo $current_colours['posbar_colour']; ?>" />
342
+ <span class="addcol" onclick="putfcolour('opC','blC');">&nbsp;+&nbsp;</span>
343
+ <span class="bl" onclick="sendfcolour('opC');" id="blC" style="background:<?php echo $current_colours['posbar_colour']; ?>;">&nbsp;&nbsp;</span>
344
+ &nbsp; &nbsp;<select name="mp3foxPosbarTint" style="width:115px; font-size:11px;">
345
+ <option value="" <?php if ( '' == $current_colours['posbar_tint'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>(default)</option>
346
+ <option value="soften" <?php if ( 'soften' == $current_colours['posbar_tint'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Light grad</option>
347
+ <option value="softenT" <?php if ( 'softenT' == $current_colours['posbar_tint'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Tip</option>
348
+ <option value="darken" <?php if ( 'darken' == $current_colours['posbar_tint'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Dark grad</option>
349
+ <option value="none" <?php if ( 'none' == $current_colours['posbar_tint'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>None</option>
350
+ </select>
351
+ <br />
352
+ <input type="text" size="4" name="mp3foxPlaylistOpac" value="<?php echo $current_colours['playlist_opacity']; ?>" />
353
+ &nbsp;&nbsp;<input type="text" id="opD" onkeyup="udfcol('opD','blD');" size="10" name="mp3foxPlaylistColour" value="<?php echo $current_colours['playlist_colour']; ?>" />
354
+ <span class="addcol" onclick="putfcolour('opD','blD');">&nbsp;+&nbsp;</span>
355
+ <span class="bl" onclick="sendfcolour('opD');" id="blD" style="background:<?php echo $current_colours['playlist_colour']; ?>;">&nbsp;&nbsp;</span>
356
+ &nbsp; &nbsp;<select name="mp3foxPlaylistTint" style="width:115px; font-size:11px;">
357
+ <option value="" <?php if ( '' == $current_colours['playlist_tint'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>(default)</option>
358
+ <option value="lighten2" <?php if ( 'lighten2' == $current_colours['playlist_tint'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Light grad</option>
359
+ <option value="lighten1" <?php if ( 'lighten1' == $current_colours['playlist_tint'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Soft grad</option>
360
+ <option value="darken1" <?php if ( 'darken1' == $current_colours['playlist_tint'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Dark grad</option>
361
+ <option value="darken2" <?php if ( 'darken2' == $current_colours['playlist_tint'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Darker grad</option>
362
+ <option value="none" <?php if ( 'none' == $current_colours['playlist_tint'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>None</option>
363
+ </select>
364
+ </p>
365
+ </div>
366
+ <br clear="all" />
367
+ </div>
368
+
369
+ <div id="pickerwrap">
370
+ <div id="plugHEX"></div>
371
+ <div id="plugCUR"></div>
372
+ <div id="plugin" onmousedown="HSVslide('drag','plugin',event); return false;"><div id="SV" onmousedown="HSVslide('SVslide','plugin',event)"><div id="SVslide" style="top:-4px; left:-4px;"><br /></div></div><div id="H" onmousedown="HSVslide('Hslide','plugin',event)"><div id="Hslide" style="top:-7px; left:-8px;"><br /></div><div id="Hmodel"></div></div></div>
373
+ </div>
374
+
375
+ <div style="position:relative;width:175px; height:150px; margin:-200px 0px 28px 405px; padding:50px 0px 0px 0px; border:0px solid #666;">
376
+ <p style="margin:0px 0px 8px 0px; text-align:right;">Indicator:&nbsp;
377
+ <select name="mp3foxIndicator" style="width:80px; font-size:11px;">
378
+ <option value="" <?php if ( '' == $current_colours['indicator'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>(default)</option>
379
+ <option value="tint" <?php if ( 'tint' == $current_colours['indicator'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Greyscale</option>
380
+ <option value="colour" <?php if ( 'colour' == $current_colours['indicator'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Colour</option>
381
+ </select></p>
382
+ <p style="margin:0px 0px 8px 0px; text-align:right;">Volume bar:&nbsp;
383
+ <select name="mp3foxVolGrad" style="width:80px; font-size:11px;">
384
+ <option value="" <?php if ( '' == $current_colours['volume_grad'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>(default)</option>
385
+ <option value="light" <?php if ( 'light' == $current_colours['volume_grad'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Light</option>
386
+ <option value="dark" <?php if ( 'dark' == $current_colours['volume_grad'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Dark</option>
387
+ </select></p>
388
+ <p style="margin:0px 0px 0px 0px; text-align:right;">Dividers:&nbsp;
389
+ <select name="mp3foxListDivider" style="width:80px; font-size:11px;">
390
+ <option value="" <?php if ( '' == $current_colours['list_divider'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>(default)</option>
391
+ <option value="light" <?php if ( 'light' == $current_colours['list_divider'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Light</option>
392
+ <option value="med" <?php if ( 'med' == $current_colours['list_divider'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Medium</option>
393
+ <option value="dark" <?php if ( 'dark' == $current_colours['list_divider'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Dark</option>
394
+ <option value="none" <?php if ( 'none' == $current_colours['list_divider'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>None</option>
395
+ </select></p>
396
+ </div>
397
+
398
+ <div style="position:relative; width:579px; height:20px; padding-top:2px; border-top:1px solid #eee; border-bottom:1px solid #eee; background:#f9f9f9;">
399
+ <div style="float:left; width:90px; margin-left:9px;"><p class="description" style="margin:0px;"><strong>TEXT</strong></p></div>
400
+ <div style="float:left; width:430px;"><p class="description" style="margin:0px;">Colour</p></div>
401
+ <br clear="all" />
402
+ </div>
403
+
404
+ <div style="position:relative; width:579px; padding-top:6px;">
405
+ <div style="float:left; width:65px; margin-left:9px; border:0px solid #aaa;"><p style="margin:0px;line-height:32px;">Screen:<br />Playlist:<br />Selected:<br />Hover:</p></div>
406
+ <div style="float:left; width:460px; border:0px solid #aaa;">
407
+ <p style="margin:0px;line-height:32px;">
408
+ <input type="text" id="opE" onkeyup="udfcol('opE','blE');" size="10" name="mp3foxScreenTextColour" value="<?php echo $current_colours['screen_text_colour']; ?>" />
409
+ <span class="addcol" onclick="putfcolour('opE','blE');">&nbsp;+&nbsp;</span>
410
+ <span class="bl" onclick="sendfcolour('opE');" id="blE" style="background:<?php echo $current_colours['screen_text_colour']; ?>;">&nbsp;&nbsp;</span>
411
+ <br />
412
+ <input type="text" id="opF" onkeyup="udfcol('opF','blF');" size="10" name="mp3foxListTextColour" value="<?php echo $current_colours['list_text_colour']; ?>" />
413
+ <span class="addcol" onclick="putfcolour('opF','blF');">&nbsp;+&nbsp;</span>
414
+ <span class="bl" onclick="sendfcolour('opF');" id="blF" style="background:<?php echo $current_colours['list_text_colour']; ?>;">&nbsp;&nbsp;</span>
415
+ <br />
416
+ <input type="text" id="opG" onkeyup="udfcol('opG','blG');" size="10" name="mp3foxListCurrentColour" value="<?php echo $current_colours['list_current_colour']; ?>" />
417
+ <span class="addcol" onclick="putfcolour('opG','blG');">&nbsp;+&nbsp;</span>
418
+ <span class="bl" onclick="sendfcolour('opG');" id="blG" style="background:<?php echo $current_colours['list_current_colour']; ?>;">&nbsp;&nbsp;</span>
419
+ &nbsp; &nbsp; Background: <input type="text" id="opH" onkeyup="udfcol('opH','blH');" size="10" name="mp3foxListBGaCurrent" value="<?php echo $current_colours['listBGa_current']; ?>" />
420
+ <span class="addcol" onclick="putfcolour('opH','blH');">&nbsp;+&nbsp;</span>
421
+ <span class="bl" onclick="sendfcolour('opH');" id="blH" style="background:<?php echo $current_colours['listBGa_current']; ?>;">&nbsp;&nbsp;</span>
422
+ <br />
423
+ <input type="text" id="opI" onkeyup="udfcol('opI','blI');" size="10" name="mp3foxListHoverColour" value="<?php echo $current_colours['list_hover_colour']; ?>" />
424
+ <span class="addcol" onclick="putfcolour('opI','blI');">&nbsp;+&nbsp;</span>
425
+ <span class="bl" onclick="sendfcolour('opI');" id="blI" style="background:<?php echo $current_colours['list_hover_colour']; ?>;">&nbsp;&nbsp;</span>
426
+ &nbsp; &nbsp; Background: <input type="text" id="opJ" onkeyup="udfcol('opJ','blJ');" size="10" name="mp3foxListBGaHover" value="<?php echo $current_colours['listBGa_hover']; ?>" />
427
+ <span class="addcol" onclick="putfcolour('opJ','blJ');">&nbsp;+&nbsp;</span>
428
+ <span class="bl" onclick="sendfcolour('opJ');" id="blJ" style="background:<?php echo $current_colours['listBGa_hover']; ?>;">&nbsp;&nbsp;</span>
429
+ </p>
430
+ </div>
431
+ <br clear="all" />
432
+ </div>
433
+
434
+ <div style="position:relative; width:579px; height:20px; margin-top:30px; padding-top:2px; border-top:1px solid #eee; border-bottom:1px solid #eee; background:#f9f9f9;">
435
+ <div style="float:left; width:90px; margin-left:9px;"><p class="description" style="margin:0px;"><strong>POP-OUT</strong></p></div>
436
+ <div style="float:left; width:430px;"><p class="description" style="margin:0px;">Background</p></div>
437
+ <br clear="all" />
438
+ </div>
439
+
440
+ <div style="width:579px; padding-top:6px;">
441
+ <div style="float:left; width:65px; margin-left:9px; border:0px solid #aaa;"><p style="margin:0px;line-height:32px;">Colour:<br />Image:</p></div>
442
+ <div style="float:left; width:460px; border:0px solid #aaa;">
443
+ <p style="margin:0px;line-height:32px;">
444
+ <input type="text" id="opK" onkeyup="udfcol('opK','blK');" size="10" name="mp3foxPopoutBackground" value="<?php echo $theOptions['popout_background']; ?>" />
445
+ <span class="addcol" onclick="putfcolour('opK','blK');">&nbsp;+&nbsp;</span>
446
+ <span class="bl" onclick="sendfcolour('opK');" id="blK" style="background:<?php echo $theOptions['popout_background']; ?>;">&nbsp;&nbsp;</span></p>
447
+ <p style="margin:4px 0px 0px 0px;line-height:32px;">
448
+ <input type="text" style="width:503px;" name="mp3foxPopoutBGimage" value="<?php echo $theOptions['popout_background_image']; ?>" /></p>
449
+ </div>
450
+ <br clear="all" />
451
+ </div>
452
+ <p class="description" style="margin-top: 30px; margin-bottom: 0px;">&nbsp;&nbsp;(Opacity values from 0 to 100, leave any fields blank to use the default setting)</p>
453
+ </div><!-- close fox_styling-list -->
454
+ <br /><br />
455
+
456
+ <!-- MP3s -->
457
+ <h3>Media Library</h3>
458
+ <?php
459
+ // create library file list //
460
+ $library = $mp3_fox->grab_library_info();
461
+ $L_count = ( $library ) ? $library['count'] : "0";
462
+ echo "<p class=\"description\" style=\"margin:0 0 2px 35px;\">Library contains <strong>" . $L_count . "</strong> mp3";
463
+ if ( $library['count'] != 1 ) { echo "'s&nbsp;"; }
464
+ else { echo "&nbsp;"; }
465
+
466
+ if ( $L_count > 0 ) {
467
+ //echo "<a href=\"javascript:mp3jp_listtoggle('fox_library','files');\" id=\"fox_library-toggle\">Show files</a> | <a href=\"media-new.php\">Upload new</a>";
468
+ echo "<a href=\"javascript:MP3J_ADMIN.showhideit('fox_library','files');\" id=\"fox_library-toggle\">Show files</a> | <a href=\"media-new.php\">Upload new</a>";
469
+ echo "</p>";
470
+ //echo "<div id=\"fox_library-list\" style=\"display:none;\">\n";
471
+ echo "<div id=\"fox_library-list\">\n";
472
+ $liblist = '<p style="margin-left:0px;">';
473
+ $br = '<br />';
474
+ $tagclose = '</p>';
475
+ $n = 1;
476
+ foreach ( $library['filenames'] as $i => $file ) {
477
+ //$liblist .= "<a href=\"media.php?attachment_id=" . $library['postIDs'][$i] . "&amp;action=edit\" style=\"font-size:11px;\">[Edit]</a>&nbsp;&nbsp;<span style=\"color:#aaa;font-size:11px;\">" . $n++ . "&nbsp;</span> " . $file . "&nbsp;&nbsp;<span style=\"color:#aaa;font-size:11px;\">\"" . $library['titles'][$i] . "\"&nbsp;&nbsp;" . $library['excerpts'][$i] . "</span>" . $br;
478
+ switch( $theOptions['library_sortcol'] ) {
479
+ case "title":
480
+ $liblist .= "<a href=\"media.php?attachment_id=" . $library['postIDs'][$i] . "&amp;action=edit\" style=\"font-size:11px;\">[Edit]</a>&nbsp;&nbsp;<span style=\"color:#aaa;font-size:11px;\">" . $n++ . "&nbsp;&nbsp;\"" . $library['titles'][$i] . "\"&nbsp;&nbsp;" . $library['excerpts'][$i] . "</span>&nbsp;&nbsp;" . $file . $br;
481
+ break;
482
+ case "caption":
483
+ $liblist .= "<a href=\"media.php?attachment_id=" . $library['postIDs'][$i] . "&amp;action=edit\" style=\"font-size:11px;\">[Edit]</a>&nbsp;&nbsp;<span style=\"color:#aaa;font-size:11px;\">" . $n++ . "&nbsp;&nbsp;" . $library['excerpts'][$i] . "&nbsp;&nbsp;\"" . $library['titles'][$i] . "\"</span>&nbsp;&nbsp;" . $file . $br;
484
+ break;
485
+ default:
486
+ $liblist .= "<a href=\"media.php?attachment_id=" . $library['postIDs'][$i] . "&amp;action=edit\" style=\"font-size:11px;\">[Edit]</a>&nbsp;&nbsp;<span style=\"color:#aaa;font-size:11px;\">" . $n++ . "</span>&nbsp;&nbsp;" . $file . "&nbsp;&nbsp;<span style=\"color:#aaa;font-size:11px;\">\"" . $library['titles'][$i] . "\"&nbsp;&nbsp;" . $library['excerpts'][$i] . "</span>" . $br;
487
+ }
488
+ }
489
+ $liblist .= $tagclose;
490
+ echo $liblist;
491
+ echo '</div>';
492
+ }
493
+ else { echo "<a href=\"media-new.php\">Upload new</a></p>"; }
494
+ ?>
495
+
496
+ <p class="description" style="margin:0 0 0 33px;">You just need to write filenames in playlists to play from the library.</p>
497
+ <p style="margin:12px 0 12px 34px;">Order playlists by:&nbsp;
498
+ <select name="librarySortcol" style="width:110px; font-size:11px;">
499
+ <option value="file" <?php if ( 'file' == $theOptions['library_sortcol'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Filename</option>
500
+ <option value="date" <?php if ( 'date' == $theOptions['library_sortcol'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Date Uploaded</option>
501
+ <option value="caption" <?php if ( 'caption' == $theOptions['library_sortcol'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Caption, Title</option>
502
+ <option value="title" <?php if ( 'title' == $theOptions['library_sortcol'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Title</option>
503
+ </select>
504
+ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Direction:&nbsp;
505
+ <select name="libraryDirection" style="width:60px; font-size:11px;">
506
+ <option value="ASC" <?php if ( 'ASC' == $theOptions['library_direction'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>ASC</option>
507
+ <option value="DESC" <?php if ( 'DESC' == $theOptions['library_direction'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>DESC</option>
508
+ </select>
509
+ </p><br />
510
+
511
+ <!-- Folder -->
512
+ <h3>Folder or URI</h3>
513
+ <p class="description" style="margin:0 0 0 35px;">Set a default folder or uri for playing mp3's in the box below, eg. <code>/music</code> or <code>www.anothersite.com/music</code><br />You just need to write filenames in playlists to play from here.</p>
514
+ <p style="margin:10px 0px 5px 35px;">Default path: &nbsp; <input type="text" style="width:385px;" name="mp3foxfolder" value="<?php echo $theOptions['mp3_dir']; ?>" /></p>
515
+
516
+ <?php
517
+ // create file-list if directory is local
518
+ $n = 1;
519
+ $folderuris = $mp3_fox->grab_local_folder_mp3s( $theOptions['mp3_dir'] );
520
+ if ( is_array($folderuris) ){
521
+ foreach ( $folderuris as $i => $uri ) {
522
+ $files[$i] = strrchr( $uri, "/" );
523
+ $files[$i] = str_replace( "/", "", $files[$i] );
524
+ }
525
+ $c = count($files);
526
+ echo "<p class=\"description\" style=\"margin: 0px 0px 14px 117px;\">This folder contains <strong>" . $c . "</strong> mp3";
527
+ if ( $c != 1 ) { echo "'s&nbsp;"; }
528
+ else { echo "&nbsp;"; }
529
+ if ( $c > 0 ) {
530
+ //echo "<a href=\"javascript:mp3jp_listtoggle('fox_folder','files');\" id=\"fox_folder-toggle\">Show files</a></p>";
531
+ echo "<a href=\"javascript:MP3J_ADMIN.showhideit('fox_folder','files');\" id=\"fox_folder-toggle\">Show files</a></p>";
532
+ //echo "<div id=\"fox_folder-list\" style=\"display:none;\">\n<p style=\"margin-left:0px;\">";
533
+ echo "<div id=\"fox_folder-list\">\n<p style=\"margin-left:0px;\">";
534
+
535
+ //natcasesort($files);
536
+
537
+ foreach ( $files as $i => $val ) {
538
+ echo "<span style=\"color:#aaa;font-size:11px;\">" . $n++ . "</span>&nbsp;&nbsp;" . $val . "<br />";
539
+ }
540
+ echo "</p>\n</div>\n";
541
+ }
542
+ else { echo "</p>"; }
543
+ }
544
+ elseif ( $folderuris == true )
545
+ echo "<p class=\"description\" style=\"margin: 0px 0px 14px 117px;\">Unable to read or locate the folder <code>" . $theOptions['mp3_dir'] . "</code> check the path and folder permissions</p>";
546
+ else
547
+ echo "<p class=\"description\" style=\"margin: 0px 0px 14px 117px;\">No info is available on remote folders but you can play from here if you know the filenames</p>";
548
+ ?>
549
+
550
+
551
+ <br />
552
+ <div class="joptionswrap">
553
+
554
+ <!--<a class="fox_buttonlink bl3" href="javascript:mp3jp_listtoggle('fox_op1','Playlist Player Options');" id="fox_op1-toggle">Playlist Player Options</a>-->
555
+ <a class="fox_buttonlink bl3" href="javascript:MP3J_ADMIN.toggleit('fox_op1','Playlist Player Options');" id="fox_op1-toggle">Playlist Player Options</a>
556
+ <div id="fox_op1-list" class="jopbox">
557
+ <p>Width: &nbsp; <input type="text" style="width:75px;" name="mp3foxPlayerWidth" value="<?php echo $theOptions['player_width']; ?>" /> &nbsp; <span class="description">pixels (px) or percent (%)</span></p>
558
+ <p>Align: &nbsp;&nbsp;
559
+ <select name="mp3foxFloat" style="width:94px; font-size:11px; line-height:16px;">
560
+ <option value="none" <?php if ( 'none' == $theOptions['player_float'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Left</option>
561
+ <option value="rel-C" <?php if ( 'rel-C' == $theOptions['player_float'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Centre</option>
562
+ <option value="rel-R" <?php if ( 'rel-R' == $theOptions['player_float'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Right</option>
563
+ <option value="left" <?php if ( 'left' == $theOptions['player_float'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Float left</option>
564
+ <option value="right" <?php if ( 'right' == $theOptions['player_float'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Float right</option>
565
+ </select></p>
566
+ <br />
567
+
568
+ <!-- <p><input type="checkbox" name="mp3foxDownloadMp3" value="true" <?php //if ($theOptions['show_downloadmp3'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Display a 'Download mp3' link</p> -->
569
+ <h3 style="margin-left:0;"><strong>Downloads</strong></h3>
570
+ <p>Show download link: &nbsp;&nbsp;
571
+ <select name="mp3foxDownloadMp3" style="width:125px; font-size:11px; line-height:16px;">
572
+ <option value="true" <?php if ( 'true' == $theOptions['show_downloadmp3'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>Yes</option>
573
+ <option value="false" <?php if ( 'false' == $theOptions['show_downloadmp3'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>No</option>
574
+ <option value="loggedin" <?php if ( 'loggedin' == $theOptions['show_downloadmp3'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>To logged in users</option>
575
+ </select>
576
+ &nbsp; <span class="description">(can be set per-player via shortcodes)</span></p>
577
+ <p style="margin-bottom:10px;">Download link text: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="text" style="width:145px;" name="dload_text" value="<?php echo $theOptions['dload_text']; ?>" /></p>
578
+
579
+ <p class="description">When setting a player for logged in downloads, use the following options to add text/link for logged out visitors:</p>
580
+ <p style="margin-left:30px;">Visitor text: &nbsp; <input type="text" style="width:145px;" name="loggedout_dload_text" value="<?php echo $theOptions['loggedout_dload_text']; ?>" /> &nbsp;<span class="description">(leave blank for no text/link)</span></p>
581
+ <p style="margin-left:30px;">Visitor link: &nbsp; <input type="text" style="width:350px;" name="loggedout_dload_link" value="<?php echo $theOptions['loggedout_dload_link']; ?>" /> &nbsp;<span class="description">(optional url for visitor text)</span></p>
582
+
583
+ <br />
584
+ <h3 style="margin-left:0;"><strong>Margins</strong></h3>
585
+ <p>Above players: &nbsp; <input type="text" size="5" style="text-align:center;" name="mp3foxPaddings_top" value="<?php echo $theOptions['paddings_top']; ?>" /> <span class="description">&nbsp; pixels (px) or percent (%)</span><br />
586
+ Inner margin: (floated players) &nbsp; <input type="text" size="5" style="text-align:center;" name="mp3foxPaddings_inner" value="<?php echo $theOptions['paddings_inner']; ?>" /> <span class="description">&nbsp; pixels (px) or percent (%)</span><br />
587
+ Below players: &nbsp; <input type="text" size="5" style="text-align:center;" name="mp3foxPaddings_bottom" value="<?php echo $theOptions['paddings_bottom']; ?>" /> <span class="description">&nbsp; pixels (px) or percent (%)</span></p>
588
+ <br />
589
+ <h3 style="margin-left:0;"><strong>Playlists</strong></h3>
590
+ <p>Max playlist height: &nbsp; <input type="text" size="6" style="text-align:center;" name="mp3foxMaxListHeight" value="<?php echo $theOptions['max_list_height']; ?>" /> px &nbsp; <span class="description">(a scroll bar will show for longer playlists, leave it blank for no limit)</span></p>
591
+ <p><input type="checkbox" name="mp3foxShowPlaylist" value="true" <?php if ($theOptions['playlist_show'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Start with playlists showing</p>
592
+
593
+ <div style="margin: 10px 0px 10px 0px; padding:6px; background:#f9f9f9; border:1px solid #eee;">
594
+ <p>Playlist Separators <span class="description">- CAUTION: You'll need to manually update any existing playlists if you change the separators!</p>
595
+ <p style="margin-left:20px;">Files: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
596
+ <select name="file_separator" style="width:120px; font-size:11px; line-height:16px;">
597
+ <option value="," <?php if ( ',' == $theOptions['f_separator'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>, (comma)</option>
598
+ <option value=";" <?php if ( ';' == $theOptions['f_separator'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>; (semicolon)</option>
599
+ <option value="###" <?php if ( '###' == $theOptions['f_separator'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>### (3 hashes)</option>
600
+ </select>
601
+ &nbsp;&nbsp;<span class="description">eg.</span> <code>tracks="fileA.mp3 <?php echo $theOptions['f_separator']; ?> Title@fileB.mp3 <?php echo $theOptions['f_separator']; ?> fileC.mp3"</code></p>
602
+
603
+ <p style="margin-left:20px;">Captions: &nbsp;&nbsp;
604
+ <select name="caption_separator" style="width:120px; font-size:11px; line-height:16px;">
605
+ <option value="," <?php if ( ',' == $theOptions['c_separator'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>, (comma)</option>
606
+ <option value=";" <?php if ( ';' == $theOptions['c_separator'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>; (semicolon)</option>
607
+ <option value="###" <?php if ( '###' == $theOptions['c_separator'] ) { _e('selected="selected"', $mp3_fox->textdomain ); } ?>>### (3 hashes)</option>
608
+ </select>
609
+ &nbsp;&nbsp;<span class="description">eg.</span> <code>captions="Caption A <?php echo $theOptions['c_separator']; ?> Caption B <?php echo $theOptions['c_separator']; ?> Caption C"</code></p>
610
+ </div>
611
+
612
+ </div>
613
+
614
+ <!--<a class="fox_buttonlink bl3" href="javascript:mp3jp_listtoggle('fox_op5','Single Player Options');" id="fox_op5-toggle">Single Player Options</a>-->
615
+ <a class="fox_buttonlink bl3" href="javascript:MP3J_ADMIN.toggleit('fox_op5','Single Player Options');" id="fox_op5-toggle">Single Player Options</a>
616
+ <div id="fox_op5-list" class="jopbox">
617
+ <p><input type="checkbox" name="volslider_onsingles" value="true" <?php if ($theOptions['volslider_on_singles'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Volume sliders on [mp3<strong>t</strong>] players</p>
618
+ <p><input type="checkbox" name="volslider_onmp3j" value="true" <?php if ($theOptions['volslider_on_mp3j'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Volume sliders on [mp3<strong>j</strong>] players</p>
619
+ </div>
620
+
621
+ <!--<a class="fox_buttonlink bl3" href="javascript:mp3jp_listtoggle('fox_op2','Pop-Out Options');" id="fox_op2-toggle">Pop-Out Options</a>-->
622
+ <a class="fox_buttonlink bl3" href="javascript:MP3J_ADMIN.toggleit('fox_op2','Pop-Out Options');" id="fox_op2-toggle">Pop-Out Options</a>
623
+ <div id="fox_op2-list" class="jopbox">
624
+ <p><input type="checkbox" name="mp3foxEnablePopout" value="true" <?php if ($theOptions['enable_popout'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Enable the pop-out player</p>
625
+ <p>Window width: &nbsp; <input type="text" size="4" style="text-align:center;" name="mp3foxPopoutWidth" value="<?php echo $theOptions['popout_width']; ?>" /> px <span class="description">&nbsp; (250 - 1600)</span></p>
626
+ <p>Window max height: &nbsp; <input type="text" size="4" style="text-align:center;" name="mp3foxPopoutMaxHeight" value="<?php echo $theOptions['popout_max_height']; ?>" /> px <span class="description">&nbsp; (200 - 1200) &nbsp; a scroll bar will show for longer playlists</span></p>
627
+ <p>Launch button text: &nbsp; <input type="text" style="width:200px;" name="mp3foxPopoutButtonText" value="<?php echo $theOptions['popout_button_title']; ?>" /></p>
628
+ </div>
629
+
630
+ <!--<a class="fox_buttonlink bl3" href="javascript:mp3jp_listtoggle('fox_op3','File Options');" id="fox_op3-toggle">File Options</a>-->
631
+ <a class="fox_buttonlink bl3" href="javascript:MP3J_ADMIN.toggleit('fox_op3','File Options');" id="fox_op3-toggle">File Options</a>
632
+ <div id="fox_op3-list" class="jopbox">
633
+ <p><input type="checkbox" name="mp3foxHideExtension" value="true" <?php if ($theOptions['hide_mp3extension'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Hide '.mp3' extension if a filename is displayed<br /><span class="description" style="margin-left:28px;">(filenames are displayed when there's no available titles)</span></p>
634
+ <p><input type="checkbox" name="mp3foxEncodeFiles" value="true" <?php if ($theOptions['encode_files'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Encode URI's and filenames<br /><span class="description" style="margin-left:28px;">(provides some obfuscation of your urls in the page source)</span></p>
635
+ <p><input type="checkbox" name="mp3foxAllowRemote" value="true" <?php if ($theOptions['allow_remoteMp3'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp; Allow playing of off-site mp3's<br /><span class="description" style="margin-left:28px;">(unchecking this option doesn't affect mp3's playing from a remote default folder if one is set above)</span></p>
636
+ </div>
637
+
638
+ <!--<a class="fox_buttonlink bl3" href="javascript:mp3jp_listtoggle('fox_op4','Template Options');" id="fox_op4-toggle">Template Options</a>-->
639
+ <a class="fox_buttonlink bl3" href="javascript:MP3J_ADMIN.toggleit('fox_op4','Template Options');" id="fox_op4-toggle">Template Options</a>
640
+ <div id="fox_op4-list" class="jopbox">
641
+ <p><input type="checkbox" name="mp3foxUseFixedCSS" value="true" <?php if ($theOptions['use_fixed_css'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp;Bypass colour settings<br />&nbsp; &nbsp; &nbsp; &nbsp;<span class="description">(colours can still be set in css)</span></p>
642
+ <p><input type="checkbox" name="disableTemplateTag" value="true" <?php if ($theOptions['disable_template_tag'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp;Bypass player template-tags in theme files<br />&nbsp; &nbsp; &nbsp; &nbsp;<span class="description">(ignores mp3j_addscripts() and mp3j_put() template functions)</span></p>
643
+
644
+ <?php $greyout_text = ( $theOptions['disable_jquery_libs'] == "yes" ) ? ' style="color:#d6d6d6;"' : ''; ?>
645
+ <p<?php echo $greyout_text; ?>><input type="checkbox" name="touch_punch_js" value="true" <?php if ($theOptions['touch_punch_js'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp;Include additional js for touch screen support<br />&nbsp; &nbsp; &nbsp; &nbsp;<span class="description"<?php echo $greyout_text; ?>>(adds jquery.ui.touch-punch.js script)</span></p>
646
+ <p><input type="checkbox" name="mp3foxEchoDebug" value="true" <?php if ($theOptions['echo_debug'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /> &nbsp;Turn on debug<br />&nbsp; &nbsp; &nbsp; &nbsp;<span class="description">(info appears in the source view near the bottom)</span></p>
647
+ <?php $bgc = ( $theOptions['disable_jquery_libs'] == "yes" ) ? "#fdd" : "#f9f9f9"; ?>
648
+ <div style="margin: 10px 0px 10px 0px; padding:6px; background:<?php echo $bgc; ?>; border:1px solid #eee;">
649
+ <p style="margin:0 0 5px 18px;">Disable jQuery and jQuery-UI javascript libraries? &nbsp; <input type="text" style="width:60px;" name="disableJSlibs" value="<?php echo $theOptions['disable_jquery_libs']; ?>" /></p>
650
+ <p style="margin: 0 0 8px 18px;"><span class="description"><strong>CAUTION!!</strong> This option will bypass the request <strong>from this plugin only</strong> for both jQuery <strong>and</strong> jQuery-UI scripts,
651
+ you <strong>MUST</strong> be providing these scripts from an alternative source.
652
+ <br />Type <code>yes</code> in the box and save settings to bypass jQuery and jQuery-UI.</span></p>
653
+ </div>
654
+ </div>
655
+ </div><!-- close .joptionswrap -->
656
+
657
+ <p style="margin-top: 4px;"><input type="submit" name="update_mp3foxSettings" class="button-primary" value="<?php _e('Update Settings', $mp3_fox->textdomain ) ?>" /> &nbsp; Remember settings if plugin is deactivated &nbsp;<input type="checkbox" name="mp3foxRemember" value="true" <?php if ($theOptions['remember_settings'] == "true") { _e('checked="checked"', $mp3_fox->textdomain ); }?> /></p>
658
+ <input id="fox_styling" type="hidden" name="MtogBox1" value="<?php echo $theOptions['admin_toggle_1']; // Colour settings toggle state ?>" />
659
+ <input type="hidden" name="mp3foxPluginVersion" value="<?php echo $mp3_fox->version_of_plugin; ?>" />
660
+ </form><br />
661
+ <div style="margin: 15px 120px 25px 0px; border-top: 1px solid #999; height: 30px;"><p class="description" style="margin: 0px 120px px 0px;"><a href="http://sjward.org/jplayer-for-wordpress">Plugin home page</a></p></div>
662
+ </div>
663
+ <?php
664
+ }
665
+ ?>
mp3j_frontend.php CHANGED
@@ -1,995 +1,625 @@
1
  <?php
2
-
3
- /** Frontend functions */
4
- if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") )
5
- {
6
- class MP3j_Front extends MP3j_Main
7
- {
8
- /**
9
- * called when plugin is activated.
10
- */
11
- function initFox() {
12
- $this->getAdminOptions();
13
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
- /**
16
- * called when plugin is deactivated, keeps settings if option was ticked.
17
- */
18
- function uninitFox() {
19
- $theOptions = get_option($this->adminOptionsName);
20
- if ( $theOptions['remember_settings'] == "false" ) {
21
- delete_option($this->adminOptionsName);
 
 
 
 
 
 
 
 
22
  }
23
  }
24
-
25
- /**
26
- * Makes sure options array is up-to-date with code.
27
- */
28
- function make_compatible() {
29
- if ( $this->iscompat == true ) {
30
- return;
 
 
 
 
 
31
  }
32
- $options = get_option($this->adminOptionsName);
33
- if ( !empty($options) ) {
34
- if ( !isset($options['db_plugin_version']) || $options['db_plugin_version'] != $this->version_of_plugin ) {
35
- $options = $this->getAdminOptions(); // does the compatibiliy
 
 
 
 
 
 
 
 
 
 
 
 
36
  }
37
  }
38
- $this->theSettings = $options;
39
- $this->iscompat = true;
40
- return;
41
- }
42
 
43
- /**
44
- * Flags for scripts to be added. Called via mp3j_addscripts().
45
- */
46
- function scripts_tag_handler( $style = "" ) {
47
 
48
- // Since 1.7 - convert old style name to new settings
49
- if ( $style == "styleA" || $style == "styleE" ) { $style = "styleF"; }
50
- if ( $style == "styleB" ) { $style = "styleG"; }
51
- if ( $style == "styleC" ) { $style = "styleH"; }
52
- if ( $style == "styleD" ) { $style = "styleI"; }
53
 
54
- $this->stylesheet = ( $style == "" ) ? $this->theSettings['player_theme'] : $style;
55
- $this->scriptsflag = "true";
56
- return;
57
- }
58
 
59
- /**
60
- * Returns mp3's in library in preped arrays. Called with mp3j_grab_library().
61
- */
62
- function grablibrary_handler( $thereturn ) {
63
- if ( empty($this->mp3LibraryI) ) {
64
- $this->grab_library_info();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  }
66
- $thereturn = $this->mp3LibraryI;
67
- return $thereturn;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  }
 
 
69
 
70
- /**
71
- * Returns mp3's in library as returned from the select query. Called with mp3j_grab_library().
72
- */
73
- function grablibraryWP_handler( $thereturn ) {
74
- if ( empty($this->mp3LibraryWP) ) {
75
- $this->grab_library_info();
76
- }
77
- $thereturn = $this->mp3LibraryWP;
78
- return $thereturn;
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  }
 
 
80
 
81
- /**
82
- * ** Depreciated
83
- * Flags to ignore player addition via content/shortcode/widget. Called via mp3j_flag().
84
- */
85
- function flag_tag_handler($set = 1) {
86
- // Do nothing since 1.6
 
 
87
  return;
88
  }
89
 
90
- /**
91
- * ** Depreciated
92
- * Creates meta arrays using mp3j_set_meta() tag.
93
- */
94
- function set_meta_handler( $tracks, $captions, $startnum = "" ) {
95
- // Do nothing since 1.6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  return;
97
  }
98
 
99
- /**
100
- * * Not adding players directly via content hook anymore so not used.
101
- * Flags not to add player if it's going to be an excerpt generated from the content. Reset by content handler.
102
- */
103
- function get_excerpt_handler( $stored = "" ) {
104
- if ( $stored == "" ) { $this->excerptCalled = true; }
105
- return $stored;
106
  }
107
 
108
- /**
109
- * Checks whether js and css scripts are needed on the page, and which css sheet to use if they are.
110
- * singular pages - added if there's shortcodes, or if there's any widget to go down.
111
- * index/archive pages - added if there's a widget, or if 'show player on index' option is ticked.
112
- */
113
- function header_scripts_handler() {
114
-
115
- $this->make_compatible();
116
- $scripts = false;
117
-
118
- // Request via template function
119
- if ( $this->scriptsflag == "true" && $this->theSettings['disable_template_tag'] == "false" ) {
120
- $scripts = true;
121
- }
122
-
123
- // Check widgets
124
- $allowed_widget = $this->has_allowed_widget( "mp3-jplayer-widget" ); //echo "<br />is allowed widget: " . $allowed_widget . "<br />";
125
- $allowed_widget_B = $this->has_allowed_widget( "mp3mi-widget" ); //echo "<br />is allowed widgetB: " . $allowed_widget_B . "<br />";
126
-
127
- // On multi-post pages
128
- //if ( is_home() || is_archive() ) {
129
- if ( is_home() || is_archive() || is_search() ) {
130
- if ( $allowed_widget || $allowed_widget_B || $this->theSettings['player_onblog'] == "true" ) {
131
- $scripts = true;
132
- }
133
- }
134
- // On singulars
135
- if ( is_singular() ) {
136
- if ( $this->grab_Custom_Meta() > 0 ) { // mode 1 widget
137
- $this->PlayerPlaylist = $this->generate_playlist( $this->postMetaKeys, $this->postMetaValues, 1 );
138
- }
139
- if ( $allowed_widget || $allowed_widget_B || $this->has_shortcodes() ) {
140
- $scripts = true;
141
- }
142
- }
143
-
144
- // On search pages
145
- //if ( is_search() ) {
146
- // if ( $allowed_widget || $allowed_widget_B ) {
147
- // $scripts = true;
148
- // }
149
- //}
150
-
151
- // Add the scripts
152
- if ( $scripts ) {
153
- $style = ( $this->stylesheet == "" ) ? $this->theSettings['player_theme'] : $this->stylesheet;
154
- $this->add_Scripts( $style );
155
- }
156
  return;
157
  }
158
-
159
-
160
- /**
161
- * Checks whether to write js playlists and startup, and diagnostic.
162
- * Called by wp_footer().
163
- */
164
- function footercode_handler() {
165
-
166
- // Write the inline players playlist js
167
- if ( $this->InlinePlaylist['count'] > 0 ) {
168
- $this->write_playlist( $this->InlinePlaylist, "foxInline" );
169
- }
170
-
171
- // Write js vars needed at startup
172
- if ( $this->PlayerPlaylist['count'] > 0 || $this->InlinePlaylist['count'] > 0 || !empty($this->jsInfo) ) {
173
- $this->write_startup_vars();
174
- }
175
- // Write js to add the inline player titles
176
- if ( !empty($this->Footerjs) ) {
177
- echo "\n<!-- MP3 jPlayer -->\n<script type=\"text/javascript\"><!--\nfunction mp3j_footerjs() {\n" . $this->Footerjs . "\n}\n//--></script>";
178
- }
179
- // Write players info array js
180
- if ( !empty($this->jsInfo) ) {
181
- $c = count($this->jsInfo);
182
- echo "\n<script type=\"text/javascript\"><!--\nvar mp3j_info = [";
183
- foreach ( $this->jsInfo as $k => $v ) {
184
- echo $v;
185
- if ( $k < $c-1 ) { echo ","; }
186
- }
187
- echo "\n];\n//--></script>";
188
- }
189
- // Write fields listnames array js
190
- if ( !empty($this->jsFields) ) {
191
- $c = count($this->jsFields);
192
- echo "\n<script type=\"text/javascript\"><!--\nvar mp3j_fields = [";
193
- foreach ( $this->jsFields as $k => $v ) {
194
- echo $v;
195
- if ( $k < $c-1 ) { echo ","; }
196
- }
197
- echo "\n];\n//--></script>";
198
- }
199
- // Write debug
200
- if ( $this->theSettings['echo_debug'] == "true" ) {
201
- $this->debug_info(); }
202
- return;
203
  }
204
-
205
-
206
- /**
207
- * Writes a js playlist from the custom fields based on the currently running content id.
208
- */
209
- function content_handler( $content = '' ) {
210
-
211
- //if ( !is_singular() && !is_home() && !is_archive() ) {
212
- if ( !is_singular() && !is_home() && !is_archive() && !is_search() ) {
213
- return $content;
214
- }
215
- $this->has_fields = false;
216
- $this->single_autocount = 0;
217
- if ( $this->grab_Custom_Meta() > 0 ) {
218
- $fields_playlist = $this->generate_playlist( $this->postMetaKeys, $this->postMetaValues, 1 );
219
- if ( $fields_playlist['count'] > 0 ) {
220
- $playlist_name = "fieldsList_" . $this->FieldsList_num;
221
- $this->write_playlist( $fields_playlist, $playlist_name );
222
-
223
- $this->jsFields[] = "\n { list:" . $playlist_name . " }";
224
- $this->FieldsList_num++;
225
- $this->has_fields = $playlist_name;
226
- }
227
- }
228
- return $content;
 
 
 
 
 
 
229
  }
 
 
 
 
230
 
 
 
 
 
 
231
 
232
- /**
233
- * Handles [mp3t] shortcodes single in-line (text) players.
234
- * TODO: download
235
- */
236
- function inline_play_handler( $atts, $content = null ) {
237
-
238
- //if ( !$this->external_call && (is_home() || is_archive()) && $this->theSettings['player_onblog'] == "false" ) {
239
- if ( !$this->external_call && (is_home() || is_archive() || is_search()) && $this->theSettings['player_onblog'] == "false" ) {
240
- return;
241
- }
242
- $id = $this->Player_ID;
243
- extract(shortcode_atts(array( // Defaults
244
- 'bold' => 'y',
245
- 'play' => 'Play',
246
- 'track' => '',
247
- 'caption' => '',
248
- 'flip' => 'l',
249
- 'title' => '#USE#',
250
- 'stop' => 'Stop',
251
- 'ind' => 'y',
252
- 'autoplay' => $this->theSettings['auto_play'],
253
- 'loop' => 'false',
254
- 'vol' => $this->theSettings['initial_vol'],
255
- 'flow' => 'n'
256
- ), $atts));
257
-
258
- if ( $track == "" ) { // Auto increment
259
- if ( !$this->has_fields || $this->external_call ) { return; }
260
- $track = ++$this->single_autocount;
261
- $arb = "";
262
- }
263
- elseif ( is_numeric($track) ) { // Has a track number
264
- if ( !$this->has_fields || $this->external_call ) { return; }
265
- $arb = "";
266
  }
267
- else { // Has arbitrary file/uri
268
- if ( !$this->string_pushto_playlist( $track, $caption, "1" ) ) { return; }
269
- $track = $this->InlinePlaylist['count'];
270
- $arb = "arb";
271
- }
272
-
273
- $divO = "";
274
- $divC = "";
275
- if ( $flow == "n" || $this->external_call ) {
276
- $divO = "<div style=\"font-size:14px; line-height:22px !important; margin:0 !important;\">";
277
- $divC = "</div>";
278
- }
279
-
280
- $playername = ( $arb != "" ) ? "foxInline" : $this->has_fields;
281
-
282
- // Set font weight
283
- $b = ( $bold == "false" || $bold == "0" || $bold == "n" ) ? " style=\"font-weight:500;\"" : " style=\"font-weight:700;\"";
284
-
285
- // Set spacer between elements depending on play/stop/title
286
- if ( $play != "" && $title != "" ){
287
- $spacer = "&nbsp;";
288
  } else {
289
- $spacer = "";
290
- if ( $play == "" && $stop != "" ) { $stop = " " . $stop; }
291
- }
292
- // Prep title
293
- $customtitle = ( $title == "#USE#" ) ? "" : $title;
294
-
295
- // Make id'd span elements
296
- $openWrap = $divO . "<span id=\"playpause_wrap_mp3j_" . $id . "\" class=\"wrap_inline_mp3j\"" . $b . ">";
297
- //$pos = "<span class=\"bars_mp3j\"><span class=\"load_mp3j\" id=\"load_mp3j_" . $id . "\" style=\"background:" . $this->Colours['loadbar_colour'] . ";\"></span><span class=\"posbar_mp3j\" id=\"posbar_mp3j_" . $id. "\"></span></span>";
298
- $pos = "<span class=\"bars_mp3j\"><span class=\"load_mp3j\" id=\"load_mp3j_" . $id . "\"></span><span class=\"posbar_mp3j\" id=\"posbar_mp3j_" . $id. "\"></span></span>";
299
- //$play_h = "<span class=\"textbutton_mp3j\" id=\"playpause_mp3j_" . $id . "\" style=\"color:" . $this->Colours['list_current_colour'] . ";\">" . $play . "</span>";
300
- $play_h = "<span class=\"textbutton_mp3j\" id=\"playpause_mp3j_" . $id . "\">" . $play . "</span>";
301
- $title_h = ( $title == "#USE#" || $title != "" ) ? "<span class=\"T_mp3j\" id=\"T_mp3j_" . $id . "\">" . $customtitle . "</span>" : "";
302
- $closeWrap = ( $ind != "y" ) ? "<span style=\"display:none;\" id=\"indi_mp3j_" . $id . "\"></span></span>" . $divC : "<span class=\"indi_mp3j\" id=\"indi_mp3j_" . $id . "\"></span></span>" . $divC;
303
-
304
- // SHOULD THIS GO SOMEWHERE IN SPAN FORMAT??
305
- $vol_h = "<div class=\"vol_mp3j\" id=\"vol_mp3j_" . $id . "\"></div>";
306
-
307
- // Assemble them
308
- $html = ( $flip != "l" ) ? $openWrap . $pos . $title_h . $spacer . $play_h . $closeWrap : $openWrap . $pos . $play_h . $spacer . $title_h . $closeWrap;
309
-
310
- // Add title to js footer string if needed
311
- if ( $title_h != "" && $title == "#USE#" ) {
312
- $this->Footerjs .= "jQuery(\"#T_mp3j_" . $id . "\").append(" . $playername . "[" . ($track-1) . "].name);\n";
313
- //$this->Footerjs .= "jQuery(\"#T_mp3j_" . $id . "\").append('<span style=\"font-size:.7em;\"> - '+" . $playername . "[" . ($track-1) . "].artist+'</span>');\n";
314
- $this->Footerjs .= "if (" . $playername . "[" . ($track-1) . "].artist !==''){ jQuery(\"#T_mp3j_" . $id . "\").append('<span style=\"font-size:.75em;\"> - '+" . $playername . "[" . ($track-1) . "].artist+'</span>'); }\n";
315
- }
316
- // Add info to js info array
317
- $autoplay = ( $autoplay == "true" || $autoplay == "y" || $autoplay == "1" ) ? "true" : "false";
318
- $loop = ( $loop == "true" || $loop == "y" || $loop == "1" ) ? "true" : "false";
319
- $this->jsInfo[] = "\n { list:" . $playername . ", type:'single', tr:" . ($track-1) . ", lstate:'', loop:" . $loop . ", play_txt:'" . $play . "', pause_txt:'" . $stop . "', pp_title:'', autoplay:" . $autoplay . ", has_ul:0, transport:'playpause', status:'basic', download:false, vol:" . $vol . ", height:'' }";
320
-
321
- $this->write_jp_div();
322
- $this->Player_ID++;
323
- return $html;
324
  }
325
-
 
 
 
326
 
327
- /**
328
- * Handles [mp3j] shortcodes.
329
- * TODO: download
330
- */
331
- function inline_play_graphic( $atts, $content = null ) {
332
-
333
- //if ( !$this->external_call && (is_home() || is_archive()) && $this->theSettings['player_onblog'] == "false" ) {
334
- if ( !$this->external_call && (is_home() || is_archive() || is_search()) && $this->theSettings['player_onblog'] == "false" ) {
335
- return;
336
- }
337
- $id = $this->Player_ID;
338
- extract(shortcode_atts(array( // Defaults
339
- 'bold' => 'y',
340
- 'track' => '',
341
- 'caption' => '',
342
- 'flip' => 'r',
343
- 'title' => '#USE#',
344
- 'ind' => 'y',
345
- 'autoplay' => $this->theSettings['auto_play'],
346
- 'loop' => 'false',
347
- 'vol' => $this->theSettings['initial_vol'],
348
- 'flow' => 'n'
349
- ), $atts));
350
-
351
- if ( $track == "" ) { // Auto increment
352
- if ( !$this->has_fields || $this->external_call ) { return; }
353
- $track = ++$this->single_autocount;
354
- $arb = "";
355
- }
356
- elseif ( is_numeric($track) ) { // Has a track number
357
- if ( !$this->has_fields || $this->external_call ) { return; }
358
- $arb = "";
359
- }
360
- else { // Has arbitrary file/uri
361
- if ( !$this->string_pushto_playlist( $track, $caption, "1" ) ) { return; }
362
- $track = $this->InlinePlaylist['count'];
363
- $arb = "arb";
364
- }
365
-
366
- $divO = "";
367
- $divC = "";
368
- if ( $flow == "n" || $this->external_call ) {
369
- $divO = "<div style=\"font-size:14px; line-height:22px !important; margin:0 !important;\">";
370
- $divC = "</div>";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
371
  }
372
-
373
- $playername = ( $arb != "" ) ? "foxInline" : $this->has_fields;
374
-
375
- // Set font weight
376
- $b = ( $bold == "false" || $bold == "N" || $bold == "n" ) ? " style=\"font-weight:500;\"" : " style=\"font-weight:700;\"";
377
- // Prep title
378
- $customtitle = ( $title == "#USE#" ) ? "" : $title;
379
- // tell js it's graphics buttons
380
- $play = "#USE_G#";
381
-
382
- // Make id'd span elements
383
- $openWrap = $divO . "<span id=\"playpause_wrap_mp3j_" . $id . "\" class=\"wrap_inline_mp3j\"" . $b . ">";
384
- $pos = "<span class=\"bars_mp3j\"><span class=\"loadB_mp3j\" id=\"load_mp3j_" . $id . "\"></span><span class=\"posbarB_mp3j\" id=\"posbar_mp3j_" . $id . "\"></span></span>";
385
- $play_h = "<span class=\"buttons_mp3j\" id=\"playpause_mp3j_" . $id . "\">&nbsp;</span>";
386
- $spacer = "";
387
- $title_h = ( $title == "#USE#" || $title != "" ) ? "<span class=\"T_mp3j\" id=\"T_mp3j_" . $id . "\">" . $customtitle . "</span>" : "";
388
- $indi_h = ( $ind != "y" ) ? "<span style=\"display:none;\" id=\"indi_mp3j_" . $id . "\"></span>" : "<span class=\"indi_mp3j\" id=\"indi_mp3j_" . $id . "\"></span>";
389
-
390
- // TODO: SHOULD THIS GO SOMEWHERE IN SPAN FORMAT??
391
- $vol_h = "<div class=\"vol_mp3j\" id=\"vol_mp3j_" . $id . "\"></div>";
 
 
 
 
 
392
 
393
- // Assemble them
394
- $html = ( $flip == "r" ) ? $openWrap . "<span class=\"group_wrap\">" . $pos . $title_h . $indi_h . "</span>" . $play_h . "</span>" . $divC : $openWrap . $play_h . "&nbsp;<span class=\"group_wrap\">" . $pos . $title_h . $indi_h . "</span></span>" . $divC;
 
 
 
395
 
396
- // Add title to js footer string if needed
397
- if ( $title_h != "" && $title == "#USE#" ) {
398
- $this->Footerjs .= "jQuery(\"#T_mp3j_" . $id . "\").append(" . $playername . "[" . ($track-1) . "].name);\n";
399
- //$this->Footerjs .= "jQuery(\"#T_mp3j_" . $id . "\").append('<span style=\"font-size:.7em;\"> - '+" . $playername . "[" . ($track-1) . "].artist+'</span>');\n";
400
- $this->Footerjs .= "if (" . $playername . "[" . ($track-1) . "].artist !==''){ jQuery(\"#T_mp3j_" . $id . "\").append('<span style=\"font-size:.75em;\"> - '+" . $playername . "[" . ($track-1) . "].artist+'</span>'); }\n";
401
  }
402
- // Add info to js info array
403
- $autoplay = ( $autoplay == "true" || $autoplay == "y" || $autoplay == "1" ) ? "true" : "false";
404
- $loop = ( $loop == "true" || $loop == "y" || $loop == "1" ) ? "true" : "false";
405
- $this->jsInfo[] = "\n { list:" . $playername . ", type:'single', tr:" . ($track-1) . ", lstate:'', loop:" . $loop . ", play_txt:'" . $play . "', pause_txt:'', pp_title:'', autoplay:" . $autoplay . ", has_ul:0, transport:'playpause', status:'basic', download:false, vol:" . $vol . ", height:'' }";
406
 
407
- $this->write_jp_div();
408
- $this->Player_ID++;
409
- return $html;
410
- }
411
-
412
-
413
- /**
414
- * Handles [mp3-jplayer] shortcodes.
415
- */
416
- function primary_player ( $atts, $content = null ) {
417
-
418
- //if ( !$this->external_call && (is_home() || is_archive()) && $this->theSettings['player_onblog'] == "false" ) {
419
- if ( !$this->external_call && (is_home() || is_archive() || is_search()) && $this->theSettings['player_onblog'] == "false" ) {
420
- return;
421
- }
422
  $pID = $this->Player_ID;
423
  extract(shortcode_atts(array( // Defaults
424
  'tracks' => '',
425
  'captions' => '',
426
  'dload' => $this->theSettings['show_downloadmp3'],
427
- 'flip' => 'r',
428
  'title' => '',
429
- 'ind' => 'y',
430
  'list' => $this->theSettings['playlist_show'],
431
- 'pn' => 'y',
432
- 'width' => '',
433
  'pos' => $this->theSettings['player_float'],
434
- 'stop' => 'y',
435
  'shuffle' => false,
436
- 'slice' => '',
437
  'pick' => '',
438
- 'mods' => false,
439
  'id' => '',
440
  'loop' => $this->theSettings['playlist_repeat'],
441
  'autoplay' => $this->theSettings['auto_play'],
442
  'vol' => $this->theSettings['initial_vol'],
443
- 'height' => ''
 
 
 
 
 
 
 
444
  ), $atts));
445
 
446
- // Build 'tracks' playlist, if no tracks then try fields from 'id' or else from this id.
447
- if ( !$this->string_pushto_playlist( $tracks, $captions, "new" ) ) {
448
-
449
- //if ( $this->external_call && (is_home() || is_archive()) ) { return; }
450
- if ( (is_home() || is_archive() || is_search()) && $this->external_call && !$this->tag_call ) { return; } //allow tags but not widgets to use fields on multi-post pages
451
-
452
- if ( $this->grab_Custom_Meta($id) > 0 ) {
453
- $this->NewPlaylist = $this->generate_playlist( $this->postMetaKeys, $this->postMetaValues, 1 );
454
- if ( $this->NewPlaylist['count'] < 1 ) {
455
- return;
456
- }
457
- } else {
458
- return;
459
- }
460
- }
461
- if ( $slice != "" && $slice > 0 ) { $this->NewPlaylist = $this->take_playlist_slice( $slice, $this->NewPlaylist ); }
462
- if ( $pick != "" && $pick > 0 ) { $this->NewPlaylist = $this->take_playlist_slice( $pick, $this->NewPlaylist ); }
463
- if ( $shuffle ) { if ( $this->NewPlaylist['count'] > 1 ) { shuffle( $this->NewPlaylist['order'] ); } }
464
 
465
- // Write it
466
- $PlayerName = "mp3jNew_" . $this->NewList_num;
467
- $this->write_playlist( $this->NewPlaylist, $PlayerName );
 
 
468
 
469
- // Add info to js info array
 
 
 
 
 
470
  $pp_height = (int)$height;
471
- $pp_height = ( empty($pp_height) || $pp_height === 0 ) ? 100 : $pp_height;
472
  $play = "#USE_G#";
473
  $pp_title = ( $title == "" ) ? get_bloginfo('name') : $title;
 
 
474
  $list = ( $list == "true" || $list == "y" || $list == "1" ) ? "true" : "false";
475
  $dload_info = ( $dload == "true" || $dload == "y" || $dload == "1" ) ? "true" : "false";
476
  $autoplay = ( $autoplay == "true" || $autoplay == "y" || $autoplay == "1" ) ? "true" : "false";
477
  $loop = ( $loop == "true" || $loop == "y" || $loop == "1" ) ? "true" : "false";
478
- $this->jsInfo[] = "\n { list:" . $PlayerName . ", type:'MI', tr:0, lstate:" . $list . ", loop:" . $loop . ", play_txt:'" . $play . "', pause_txt:'', pp_title:'" . $pp_title . "', autoplay:" . $autoplay . ", has_ul:1, transport:'playpause', status:'full', download:" . $dload_info . ", vol:" . $vol . ", height:" . $pp_height . " }";
479
-
480
- // Make transport buttons
481
- $prevnext = ( $this->NewPlaylist['count'] > 1 && $pn == "y" ) ? "<div class=\"Next_mp3j\" id=\"Next_mp3j_" . $pID . "\">Next&raquo;</div><div class=\"Prev_mp3j\" id=\"Prev_mp3j_" . $pID . "\">&laquo;Prev</div>" : "";
482
- $play_h = "<div class=\"buttons_mp3j\" id=\"playpause_mp3j_" . $pID . "\">Play Pause</div>";
483
- $stop_h = ( $stop == "y" ) ? "<div class=\"stop_mp3j\" id=\"stop_mp3j_" . $pID . "\">Stop</div>" : "";
484
-
485
- // Build player html
486
- if ( $this->external_call && $width == "" ) { $width = "100%"; } //set default width when called by shortcode-widget (or tag) and it wasn't specified
487
- $player = $this->write_primary_player( $PlayerName, $pID, $pos, $width, $mods, $dload_info, $title, $play_h, $stop_h, $prevnext, $height );
488
 
489
  $this->write_jp_div();
490
- $this->NewList_num++;
 
491
  $this->Player_ID++;
492
  return $player;
493
  }
494
 
495
-
496
- /**
497
- * Handles [mp3-link] shortcodes.
498
- */
499
- function link_plays_track( $atts, $content = null ) {
500
-
501
- if ( is_home() || is_archive() || is_search() ) { // can't really use links on multi-post pages!
502
- return;
503
- }
504
- extract(shortcode_atts(array( // Defaults
505
- 'player' => '',
506
- 'track' => '',
507
- 'text' => 'Play',
508
- 'bold' => 'n'
509
- ), $atts));
510
-
511
- if ( $player == "" ) { return; }
512
- if ( $track == "" ) { $track = "0"; }
513
- if ( $bold != "n" ) {
514
- $O_tag = "<strong>";
515
- $C_tag = "</strong>";
516
- } else {
517
- $O_tag = "";
518
- $C_tag = "";
519
- }
520
- $the_link = "<span class=\"mp3j-link-play\" onclick=\"javascript:link_plays_track(" . $player .", " . $track . ");\">" . $O_tag . $text . $C_tag . "</span>";
521
- return $the_link;
522
  }
523
-
524
-
525
- /**
526
- * Called via mp3j_put() in template to run shortcodes.
527
- */
528
- function template_tag_handler( $id = "", $pos = "", $dload = "", $play = "", $list = "" ) {
529
-
530
- $this->putTag_runCount++;
531
- if ( $this->theSettings['disable_template_tag'] == "true" ) { return; }
532
-
533
- if ( !empty($id) && !is_numeric($id) ) {
534
-
535
- $this->external_call = true;
536
- $this->tag_call = true; // patch to allow tags to run 'mode 1' on index/archive/search pages
537
- $shortcodes_return = do_shortcode( $id );
538
- $this->external_call = false;
539
- $this->tag_call = false;
540
-
541
- }
542
- echo $shortcodes_return;
543
- return;
544
  }
545
-
 
 
 
 
 
 
 
 
 
 
546
 
547
- /**
548
- * Displays and updates the admin options on settings page.
549
- */
550
- function printAdminPage() {
551
-
552
- $theOptions = $this->getAdminOptions();
553
- $colours_array = array();
554
-
555
- if (isset($_POST['update_mp3foxSettings']))
556
- {
557
- if (isset($_POST['mp3foxVol'])) {
558
- $theOptions['initial_vol'] = preg_replace("/[^0-9]/","", $_POST['mp3foxVol']);
559
- if ($theOptions['initial_vol'] < 0 || $theOptions['initial_vol']=="") { $theOptions['initial_vol'] = "0"; }
560
- if ($theOptions['initial_vol'] > 100) { $theOptions['initial_vol'] = "100"; }
561
- }
562
- if (isset($_POST['mp3foxPopoutMaxHeight'])) {
563
- $theOptions['popout_max_height'] = preg_replace("/[^0-9]/","", $_POST['mp3foxPopoutMaxHeight']);
564
- if ( $theOptions['popout_max_height'] == "" ) { $theOptions['popout_max_height'] = "750"; }
565
- if ( $theOptions['popout_max_height'] < 200 ) { $theOptions['popout_max_height'] = "200"; }
566
- if ( $theOptions['popout_max_height'] > 1200 ) { $theOptions['popout_max_height'] = "1200"; }
567
- }
568
-
569
- if (isset($_POST['mp3foxPopoutWidth'])) {
570
- $theOptions['popout_width'] = preg_replace("/[^0-9]/","", $_POST['mp3foxPopoutWidth']);
571
- if ( $theOptions['popout_width'] == "" ) { $theOptions['popout_width'] = "400"; }
572
- if ( $theOptions['popout_width'] < 250 ) { $theOptions['popout_width'] = "250"; }
573
- if ( $theOptions['popout_width'] > 1600 ) { $theOptions['popout_width'] = "1600"; }
574
- }
575
-
576
- if (isset($_POST['mp3foxMaxListHeight'])) {
577
- $theOptions['max_list_height'] = preg_replace("/[^0-9]/","", $_POST['mp3foxMaxListHeight']);
578
- if ( $theOptions['max_list_height'] < 0 ) { $theOptions['max_list_height'] = ""; }
579
- }
580
- if (isset($_POST['mp3foxfolder'])) { $theOptions['mp3_dir'] = $this->prep_path( $_POST['mp3foxfolder'] ); }
581
- if (isset($_POST['mp3foxCustomStylesheet'])) { $theOptions['custom_stylesheet'] = $this->prep_path( $_POST['mp3foxCustomStylesheet'] ); }
582
- if (isset($_POST['mp3foxTheme'])) { $theOptions['player_theme'] = $_POST['mp3foxTheme']; }
583
- if (isset($_POST['mp3foxFloat'])) { $theOptions['player_float'] = $_POST['mp3foxFloat']; }
584
- if (isset($_POST['mp3foxPlayerWidth'])) { $theOptions['player_width'] = $_POST['mp3foxPlayerWidth']; }
585
- if (isset($_POST['mp3foxPopoutBackground'])) { $theOptions['popout_background'] = $_POST['mp3foxPopoutBackground']; }
586
- if (isset($_POST['mp3foxPopoutBGimage'])) { $theOptions['popout_background_image'] = $_POST['mp3foxPopoutBGimage']; }
587
- if (isset($_POST['mp3foxPluginVersion'])) { $theOptions['db_plugin_version'] = $_POST['mp3foxPluginVersion']; }
588
- if (isset($_POST['mp3foxPopoutButtonText'])) { $theOptions['popout_button_title'] = $_POST['mp3foxPopoutButtonText']; }
589
-
590
- $theOptions['paddings_top'] = ( $_POST['mp3foxPaddings_top'] == "" ) ? "0px" : $_POST['mp3foxPaddings_top'];
591
- $theOptions['paddings_bottom'] = ( $_POST['mp3foxPaddings_bottom'] == "" ) ? "0px" : $_POST['mp3foxPaddings_bottom'];
592
- $theOptions['paddings_inner'] = ( $_POST['mp3foxPaddings_inner'] == "" ) ? "0px" : $_POST['mp3foxPaddings_inner'];
593
- $theOptions['auto_play'] = (isset($_POST['mp3foxAutoplay'])) ? $_POST['mp3foxAutoplay'] : "false";
594
- $theOptions['allow_remoteMp3'] = (isset($_POST['mp3foxAllowRemote'])) ? $_POST['mp3foxAllowRemote'] : "false";
595
- $theOptions['playlist_AtoZ'] = (isset($_POST['mp3foxAtoZ'])) ? $_POST['mp3foxAtoZ'] : "false";
596
- $theOptions['player_onblog'] = (isset($_POST['mp3foxOnBlog'])) ? $_POST['mp3foxOnBlog'] : "false";
597
- $theOptions['playlist_UseLibrary'] = (isset($_POST['mp3foxUseLibrary'])) ? $_POST['mp3foxUseLibrary'] : "false";
598
- $theOptions['playlist_show'] = (isset($_POST['mp3foxShowPlaylist'])) ? $_POST['mp3foxShowPlaylist'] : "false";
599
- $theOptions['remember_settings'] = (isset($_POST['mp3foxRemember'])) ? $_POST['mp3foxRemember'] : "false";
600
- $theOptions['hide_mp3extension'] = (isset($_POST['mp3foxHideExtension'])) ? $_POST['mp3foxHideExtension'] : "false";
601
- $theOptions['show_downloadmp3'] = (isset($_POST['mp3foxDownloadMp3'])) ? $_POST['mp3foxDownloadMp3'] : "false";
602
- $theOptions['disable_template_tag'] = (isset($_POST['disableTemplateTag'])) ? $_POST['disableTemplateTag'] : "false";
603
- //$theOptions['use_small_player'] = (isset($_POST['mp3foxSmallPlayer'])) ? $_POST['mp3foxSmallPlayer'] : "false";
604
- //$theOptions['force_scripts_from_admin'] = (isset($_POST['mp3foxForceScripts'])) ? $_POST['mp3foxForceScripts'] : "false";
605
- //$theOptions['give_shortcode_priority'] = (isset($_POST['giveShortcodePriority'])) ? $_POST['giveShortcodePriority'] : "false";
606
- $theOptions['echo_debug'] = (isset($_POST['mp3foxEchoDebug'])) ? $_POST['mp3foxEchoDebug'] : "false";
607
- $theOptions['add_track_numbering'] = (isset($_POST['mp3foxAddTrackNumbers'])) ? $_POST['mp3foxAddTrackNumbers'] : "false";
608
- $theOptions['enable_popout'] = (isset($_POST['mp3foxEnablePopout'])) ? $_POST['mp3foxEnablePopout'] : "false";
609
- $theOptions['playlist_repeat'] = (isset($_POST['mp3foxPlaylistRepeat'])) ? $_POST['mp3foxPlaylistRepeat'] : "false";
610
- $theOptions['use_fixed_css'] = (isset($_POST['mp3foxUseFixedCSS'])) ? $_POST['mp3foxUseFixedCSS'] : "false";
611
- $theOptions['encode_files'] = (isset($_POST['mp3foxEncodeFiles'])) ? $_POST['mp3foxEncodeFiles'] : "false";
612
- $theOptions['animate_sliders'] = (isset($_POST['mp3foxAnimSliders'])) ? $_POST['mp3foxAnimSliders'] : "false";
613
-
614
- // Colours array//
615
- if (isset($_POST['mp3foxScreenColour'])) { $colours_array['screen_colour'] = $_POST['mp3foxScreenColour']; }
616
- if (isset($_POST['mp3foxScreenOpac'])) { $colours_array['screen_opacity'] = $_POST['mp3foxScreenOpac']; }
617
- if (isset($_POST['mp3foxLoadbarColour'])) { $colours_array['loadbar_colour'] = $_POST['mp3foxLoadbarColour']; }
618
- if (isset($_POST['mp3foxLoadbarOpac'])) { $colours_array['loadbar_opacity'] = $_POST['mp3foxLoadbarOpac']; }
619
- if (isset($_POST['mp3foxPosbarColour'])) { $colours_array['posbar_colour'] = $_POST['mp3foxPosbarColour']; }
620
- if (isset($_POST['mp3foxPosbarTint'])) { $colours_array['posbar_tint'] = $_POST['mp3foxPosbarTint']; }
621
- if (isset($_POST['mp3foxPosbarOpac'])) { $colours_array['posbar_opacity'] = $_POST['mp3foxPosbarOpac']; }
622
- if (isset($_POST['mp3foxScreenTextColour'])) { $colours_array['screen_text_colour'] = $_POST['mp3foxScreenTextColour']; }
623
- if (isset($_POST['mp3foxPlaylistColour'])) { $colours_array['playlist_colour'] = $_POST['mp3foxPlaylistColour']; }
624
- if (isset($_POST['mp3foxPlaylistTint'])) { $colours_array['playlist_tint'] = $_POST['mp3foxPlaylistTint']; }
625
- if (isset($_POST['mp3foxPlaylistOpac'])) { $colours_array['playlist_opacity'] = $_POST['mp3foxPlaylistOpac']; }
626
- if (isset($_POST['mp3foxListTextColour'])) { $colours_array['list_text_colour'] = $_POST['mp3foxListTextColour']; }
627
- if (isset($_POST['mp3foxListCurrentColour'])) { $colours_array['list_current_colour'] = $_POST['mp3foxListCurrentColour']; }
628
- if (isset($_POST['mp3foxListHoverColour'])) { $colours_array['list_hover_colour'] = $_POST['mp3foxListHoverColour']; }
629
- if (isset($_POST['mp3foxListBGaHover'])) { $colours_array['listBGa_hover'] = $_POST['mp3foxListBGaHover']; }
630
- if (isset($_POST['mp3foxListBGaCurrent'])) { $colours_array['listBGa_current'] = $_POST['mp3foxListBGaCurrent']; }
631
- if (isset($_POST['mp3foxVolGrad'])) { $colours_array['volume_grad'] = $_POST['mp3foxVolGrad']; }
632
- if (isset($_POST['mp3foxListDivider'])) { $colours_array['list_divider'] = $_POST['mp3foxListDivider']; }
633
- if (isset($_POST['mp3foxIndicator'])) { $colours_array['indicator'] = $_POST['mp3foxIndicator']; }
634
- $theOptions['colour_settings'] = $colours_array;
635
-
636
- update_option($this->adminOptionsName, $theOptions);
637
- ?>
638
- <!-- Settings saved message -->
639
- <div class="updated"><p><strong><?php _e("Settings Updated.", $this->textdomain );?></strong></p></div>
640
-
641
- <?php
642
- }
643
- // Pick up current colours
644
- $current_colours = $theOptions['colour_settings'];
645
- ?>
646
-
647
- <div class="wrap">
648
- <form method="post" action="<?php echo $_SERVER["REQUEST_URI"]; ?>">
649
- <div style="padding: 0px; margin: 0px 120px 0px 0px; border-bottom: 1px solid #ddd;"><h2 style="margin-top: 4px; margin-bottom: -6px;">Mp3<span style="font-size: 15px;"> - </span>jPlayer<span class="description" style="font-size: 10px;">&nbsp; <?php echo $this->version_of_plugin; ?></span></h2></div>
650
- <h5 style="margin: 10px 120px 20px 0px; color:#888;"><a href="javascript:mp3jp_listtoggle('fox_help1','help');" id="fox_help1-toggle">Show help</a></h5>
651
- <div id="fox_help1-list" style="display:none;margin:15px 0px 30px 0px; border-bottom:1px solid #ddd;">
652
- <h5 class="description" style="margin: 10px 120px 0px 10px;">Add players using<code>[mp3j]</code> <code>[mp3t]</code> <code>[mp3-jplayer]</code> <code>[mp3-link]</code> shortcodes and/or <a href="widgets.php">widgets</a>.</h5>
653
-
654
- <p style="margin: 10px 120px 15px 10px;"><span class="description">Eg.<br />
655
- Play a single file:</span> <code>[mp3j track="myfile.mp3"]</code><br />
656
- <span class="description">Playlist files:</span> <code>[mp3-jplayer tracks="myfileA.mp3, myfileB.mp3, myfileC.mp3"]</code> &nbsp;(use commas to separate files)<br />
657
- <span class="description">Add titles:</span> <code>[mp3-jplayer tracks="MyTitle@myfileA.mp3, MyTitle@myfileB.mp3, MyTitle@myfileC.mp3"]</code><br />
658
- <span class="description">Add captions:</span> <code>[mp3-jplayer tracks="fileA.mp3, fileB.mp3" captions="Caption A; Caption B"]</code> &nbsp;(use semicolons to separate captions)
659
- </p>
660
-
661
-
662
- <h4 class="description" style="margin:0px 0px 0px 10px; color:#606060;">Shortcode Parameters</h4>
663
- <div style="margin:0px 0px 0px 15px;">
664
- <h5 style="margin:10px 0px 5px 0px;"><code>[mp3j]</code> &amp; <code>[mp3t]</code> add a single-track player</h5>
665
- <p style="margin: 0px 120px 20px 10px;">
666
- <code>track</code> <span class="description" >filename or URI. Add title using '@' as separator eg. Mytitle@filename.mp3</span><br /><code>caption</code> <span class="description" >caption text. Appears to the right of title</span><br /><code>vol</code> <span class="description" >0 - 100</span><br /><code>autoplay</code> <span class="description" >y/n</span><br /><code>loop</code> <span class="description" >y/n, repeat play track (overides subsequent autoplay)</span><br />
667
- <code>title</code> <span class="description" >replaces both title and caption</span><br /><code>bold</code> <span class="description" >y/n, makes font bold</span><br /><code>flip</code> <span class="description" >y/n, move play/pause button to other side</span><br /><code>ind</code> <span class="description" >y/n, hide indicator and time</span><br /><code>flow</code> <span class="description" >y/n, set to 'y' to put players within paragraphs without line-breaking (works ok for line heights around 22px)</span></p>
668
- <h5 style="margin: 0px 120px 1px 10px;">Also for <code>[mp3t]</code></h5>
669
- <p style="margin: 0px 120px 1px 10px;"><code>play</code> <span class="description">play button text</span><br /><code>stop</code> <span class="description">pause button text</span></p>
670
- <h5 style="margin:15px 0px 5px 0px;"><code>[mp3-jplayer]</code> adds a playlist player</h5>
671
- <p style="margin: 0px 120px 1px 10px;">
672
- <code>tracks</code> <span class="description">Comma separated list of filenames/URI's/folders. Add titles using '@' as separator eg. Mytitle@filename.mp3</span><br /><code>captions</code> <span class="description">Semi-colon separated list eg. "caption 1; caption 2;"</span><br /><code>vol</code> <span class="description">0 - 100</span><br /><code>autoplay</code> <span class="description">y/n</span><br /><code>loop</code> <span class="description">y/n, repeat plays track(s)</span><br /><code>dload</code> <span class="description">y/n, show/hide download link</span><br /><code>list</code> <span class="description">y/n, show/hide playlist</span><br /><code>pick</code> <span class="description">number, picks random selection</span><br /><code>shuffle</code> <span class="description">y/n, shuffle track order</span><br />
673
- <code>title</code> <span class="description">appears above player</span><br /><code>pos</code> <span class="description">rel-L, rel-C, rel-R, left, right</span><br /><code>width</code> <span class="description">px or %</span><br /><code>height</code> <span class="description">px only, player height excluding list</span><br /><code>pn</code> <span class="description">y/n, hide prev/next buttons</span><br /><code>stop</code> <span class="description">y/n, hide stop button</span><br /><code>mods</code> <span class="description">y/n, add css mods (makes fonts smaller as standard)</span><br /><code>id</code> <span class="description">a page id to read the custom fields from (ignored if 'tracks' is used in same shortcode, or id has no tracks)</span></p>
674
-
675
- <h5 style="margin: 10px 120px 5px 10px;">Use these instead of a filename to playlist folders or the library:</h5>
676
- <p style="margin: 0px 120px 20px 10px;"><code>FEED:LIB</code> - <span class="description">Play entire library</span><br /><code>FEED:DF</code> - <span class="description">Play the default folder (this will only work if your default folder setting is local)</span><br /><code>FEED:/mymusic</code> - <span class="description">Play the local folder 'mymusic' (folder paths must be local and are relative to the root of your site, NOT the Wordpress install)</span></p>
677
-
678
- <h5 style="margin:15px 0px 5px 0px;"><code>[mp3-link]</code> plays a track from a playlist player on the same page.</h5>
679
- <p style="margin: 0px 120px 1px 10px;">
680
- <code>player</code> <span class="description">number of the player (including single file players in the count)</span><br /><code>track</code> <span class="description">the track number</span><br /><code>text</code> <span class="description">link text, defaults to 'Play'</span><br /><code>bold</code> <span class="description">y/n</span></p>
681
- </div>
682
-
683
- <h4 class="description" style="margin:20px 0px 2px 10px; color:#606060;">Custom Fields (optional way of setting a playlist for a page/post)</h4>
684
- <p class="description" style="margin: 0px 120px 10px 10px;">Use custom fields when you want to add tracks to a post/page that you want to be picked up by a widget or by template tags in the theme (you can think of them as attachments but they're not really attached to anything). Fields can also be useful if you want to keep the edit window free of playlist clutter, and they make it easier to manage the track ordering (especially if you're adding captions in the playlist). Just use a shortcode in the content with no tracks specified to play custom fields, eg. <code>[mp3-jplayer]</code></p>
685
- <p class="description" style="margin: 0px 120px 10px 10px;">Custom fields are available on page/post edit screens (check your 'screen options' at top-right if they're not visible) for writing playlist as follows:</p>
686
- <p class="description" style="margin: 0px 120px 6px 10px;">1. Enter <code>mp3</code> into the left hand box.<br />2. Write the filename, URI, or 'FEED' (see above) into the right hand box and hit 'add custom field'</p>
687
- <p class="description" style="margin: 0px 120px 10px 10px;">Add each track in a new field pair.</p>
688
- <h5 class="description" style="margin: 12px 120px 2px 10px;"><strong>Title and caption</strong></h5>
689
- <p class="description" style="margin: 0px 120px 5px 10px;">1. Add a dot, then the caption in the left hand box, eg: <code>mp3.Mycaption</code><br />2. Add the title, then an '@' before the filename in the right box, eg: <code>Mytitle@filename</code></p>
690
- <p class="description" style="margin: 10px 120px 20px 10px;">The keys (left boxes) can be numbered, eg:<code>1 mp3</code> will be first on the playlist.</p>
691
-
692
- <h4 class="description" style="margin:0px 0px 2px 10px; color:#606060;">Widgets</h4>
693
- <p class="description" style="margin: 0px 120px 20px 10px;">MP3j-ui - <span class="description">Adds a playlist player using tick boxes and modes (mode 1 automatically plays the custom fields).</span><br />MP3j-sh - <span class="description">Adds players by writing shortcodes.</span></p>
694
-
695
- <h4 class="description" style="margin:0px 0px 0px 10px; color:#606060;">Template Tags</h4>
696
- <p class="description" style="margin: 0px 120px 5px 10px;">For use in theme files:</p>
697
- <p style="margin: 10px 120px 20px 10px; line-height:22px;"><code style="font-size:13px;">mp3j_addscripts( $style )<br />mp3j_put( $shortcodes )<br />mp3j_grab_library( $format )<br/>mp3j_debug()</code></p>
698
- <?php
699
- echo '<p class="description" style="margin: 15px 120px 20px 10px;">See the <a href="' . get_bloginfo('wpurl') . '/wp-content/plugins/mp3-jplayer/template-tag-help.htm">Template tag help</a> for more info.</p>';
700
- ?>
701
- <h4 class="description" style="margin:55px 0px -22px 0px; color:#555;">Settings</h4>
702
- </div>
703
-
704
- <p style="margin:0 0 8px 0px;">&nbsp; Initial volume &nbsp; <input type="text" style="text-align:center;" size="2" name="mp3foxVol" value="<?php echo $theOptions['initial_vol']; ?>" /> &nbsp; <span class="description">(0 - 100)</span></p>
705
- <p style="margin:0 0 4px 0px;">&nbsp; <input type="checkbox" name="mp3foxAutoplay" value="true" <?php if ($theOptions['auto_play'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Autoplay</p>
706
- <p style="margin:0 0 4px 0px;">&nbsp; <input type="checkbox" name="mp3foxPlaylistRepeat" value="true" <?php if ($theOptions['playlist_repeat'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Repeat</p>
707
- <p style="margin:0 0 4px 0px;">&nbsp; <input type="checkbox" name="mp3foxShowPlaylist" value="true" <?php if ($theOptions['playlist_show'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Start with playlists showing</p>
708
- <p style="margin:0 0 16px 0px;">&nbsp; <input type="checkbox" name="mp3foxDownloadMp3" value="true" <?php if ($theOptions['show_downloadmp3'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Display a 'Download mp3' link</p>
709
- <div style="height:65px"><p style="width:55px; padding-left:35px; margin:0px; line-height:27px;">Width:<br />Align:</p></div>
710
- <p style="margin:-67px 0px 0px 90px;">
711
- <input type="text" style="width:75px;" name="mp3foxPlayerWidth" value="<?php echo $theOptions['player_width']; ?>" />
712
- &nbsp; <span class="description" style="line-height:32px;">pixels (px) or percent (%)</span></p>
713
- <p style="margin:0px 0px 15px 90px; line-height:32px;"><select name="mp3foxFloat" style="width:94px; font-size:11px; line-height:16px;">
714
- <option value="none" <?php if ( 'none' == $theOptions['player_float'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Left</option>
715
- <option value="rel-C" <?php if ( 'rel-C' == $theOptions['player_float'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Centre</option>
716
- <option value="rel-R" <?php if ( 'rel-R' == $theOptions['player_float'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Right</option>
717
- <option value="left" <?php if ( 'left' == $theOptions['player_float'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Float left</option>
718
- <option value="right" <?php if ( 'right' == $theOptions['player_float'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Float right</option>
719
- </select></p>
720
- <p style="margin:0 0 8px 0px;">&nbsp; <input type="checkbox" name="mp3foxOnBlog" value="true" <?php if ($theOptions['player_onblog'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Show players in posts on index, archive, and search pages
721
- <span class="description">(doesn't affect widgets)</span></p>
722
-
723
- <?php
724
- $greyout_field = ( $theOptions['player_theme'] != "styleI" ) ? "background:#fcfcfc; color:#d6d6d6; border-color:#f0f0f0;" : "background:#fff; color:#000; border-color:#dfdfdf;";
725
- $greyout_text = ( $theOptions['player_theme'] != "styleI" ) ? "color:#d6d6d6;" : "color:#444;";
726
- ?>
727
- <!-- COLOUR / STYLE -->
728
- <div style="margin: 0px 120px 20px 0px; border-bottom: 1px solid #e8e8e8; height: 10px;"></div>
729
- <div style="height:35px"><p style="width:55px; padding-left:35px; margin:0px; line-height:32px;">Players:</p></div>
730
- <p style="margin:-35px 0px 0px 90px; line-height:32px;"><select name="mp3foxTheme" id="player-select" style="width:94px; font-size:11px; line-height:19px;">
731
- <option value="styleF" <?php if ( 'styleF' == $theOptions['player_theme'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Silver</option>
732
- <option value="styleG" <?php if ( 'styleG' == $theOptions['player_theme'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Dark</option>
733
- <option value="styleH" <?php if ( 'styleH' == $theOptions['player_theme'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Text</option>
734
- <option value="styleI" <?php if ( 'styleI' == $theOptions['player_theme'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Custom</option>
735
- </select>&nbsp;
736
- <span id="player-csssheet" style=" <?php echo $greyout_text; ?>"> uri:</span><input type="text" id="mp3fcss" style="width:420px; <?php echo $greyout_field; ?>" name="mp3foxCustomStylesheet" value="<?php echo $theOptions['custom_stylesheet']; ?>" /></p>
737
-
738
- <p class="description" style="margin:1px 0px 0px 35px;"><a href="javascript:mp3jp_listtoggle('fox_styling','colour settings');" id="fox_styling-toggle">Colour settings</a></p>
739
- <div id="fox_styling-list" style="position:relative; display:none; margin: 30px 120px 15px 25px; min-width:579px;">
740
-
741
- <div style="position:relative; width:579px; height:20px; padding-top:2px; border-top:1px solid #eee; border-bottom:1px solid #eee;">
742
- <div style="float:left; width:90px; margin-left:9px;"><p class="description" style="margin:0px;"><strong>AREA</strong></p></div>
743
- <div style="float:left; width:390px;"><p class="description" style="margin:0px;">&nbsp;Opacity&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;Colour</p></div>
744
- </div>
745
-
746
- <div style="position:relative; width:579px; padding-top:6px;">
747
- <div style="float:left; width:90px; margin-left:9px; border:0px solid #aaa;"><p style="margin:0px;line-height:32px;">Screen:<br />Loading bar:<br />Position bar:<br />Playlist:</p></div>
748
- <div style="float:left; width:390px; border:0px solid #aaa;">
749
- <p style="margin:0px;line-height:32px;">
750
- <input type="text" size="4" name="mp3foxScreenOpac" value="<?php echo $current_colours['screen_opacity']; ?>" />
751
- &nbsp;&nbsp;<input type="text" id="opA" onkeyup="udfcol('opA','blA');" size="10" name="mp3foxScreenColour" value="<?php echo $current_colours['screen_colour']; ?>" />
752
- <span class="addcol" onclick="putfcolour('opA','blA');">&nbsp;+&nbsp;</span>
753
- <span class="bl" onclick="sendfcolour('opA');" id="blA" style="background:<?php echo $current_colours['screen_colour']; ?>;">&nbsp;&nbsp;</span>
754
- <br />
755
- <input type="text" size="4" name="mp3foxLoadbarOpac" value="<?php echo $current_colours['loadbar_opacity']; ?>" />
756
- &nbsp;&nbsp;<input type="text" id="opB" onkeyup="udfcol('opB','blB');" size="10" name="mp3foxLoadbarColour" value="<?php echo $current_colours['loadbar_colour']; ?>" />
757
- <span class="addcol" onclick="putfcolour('opB','blB');">&nbsp;+&nbsp;</span>
758
- <span class="bl" onclick="sendfcolour('opB');" id="blB" style="background:<?php echo $current_colours['loadbar_colour']; ?>;">&nbsp;&nbsp;</span>
759
- <br />
760
- <input type="text" size="4" name="mp3foxPosbarOpac" value="<?php echo $current_colours['posbar_opacity']; ?>" />
761
- &nbsp;&nbsp;<input type="text" id="opC" onkeyup="udfcol('opC','blC');" size="10" name="mp3foxPosbarColour" value="<?php echo $current_colours['posbar_colour']; ?>" />
762
- <span class="addcol" onclick="putfcolour('opC','blC');">&nbsp;+&nbsp;</span>
763
- <span class="bl" onclick="sendfcolour('opC');" id="blC" style="background:<?php echo $current_colours['posbar_colour']; ?>;">&nbsp;&nbsp;</span>
764
- &nbsp; &nbsp;<select name="mp3foxPosbarTint" style="width:115px; font-size:11px;">
765
- <option value="" <?php if ( '' == $current_colours['posbar_tint'] ) { _e('selected="selected"', $this->textdomain ); } ?>>(default)</option>
766
- <option value="soften" <?php if ( 'soften' == $current_colours['posbar_tint'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Light grad</option>
767
- <option value="softenT" <?php if ( 'softenT' == $current_colours['posbar_tint'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Tip</option>
768
- <option value="darken" <?php if ( 'darken' == $current_colours['posbar_tint'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Dark grad</option>
769
- <option value="none" <?php if ( 'none' == $current_colours['posbar_tint'] ) { _e('selected="selected"', $this->textdomain ); } ?>>None</option>
770
- </select>
771
- <br />
772
- <input type="text" size="4" name="mp3foxPlaylistOpac" value="<?php echo $current_colours['playlist_opacity']; ?>" />
773
- &nbsp;&nbsp;<input type="text" id="opD" onkeyup="udfcol('opD','blD');" size="10" name="mp3foxPlaylistColour" value="<?php echo $current_colours['playlist_colour']; ?>" />
774
- <span class="addcol" onclick="putfcolour('opD','blD');">&nbsp;+&nbsp;</span>
775
- <span class="bl" onclick="sendfcolour('opD');" id="blD" style="background:<?php echo $current_colours['playlist_colour']; ?>;">&nbsp;&nbsp;</span>
776
- &nbsp; &nbsp;<select name="mp3foxPlaylistTint" style="width:115px; font-size:11px;">
777
- <option value="" <?php if ( '' == $current_colours['playlist_tint'] ) { _e('selected="selected"', $this->textdomain ); } ?>>(default)</option>
778
- <option value="lighten2" <?php if ( 'lighten2' == $current_colours['playlist_tint'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Light grad</option>
779
- <option value="lighten1" <?php if ( 'lighten1' == $current_colours['playlist_tint'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Soft grad</option>
780
- <option value="darken1" <?php if ( 'darken1' == $current_colours['playlist_tint'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Dark grad</option>
781
- <option value="darken2" <?php if ( 'darken2' == $current_colours['playlist_tint'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Darker grad</option>
782
- <option value="none" <?php if ( 'none' == $current_colours['playlist_tint'] ) { _e('selected="selected"', $this->textdomain ); } ?>>None</option>
783
- </select>
784
- </p>
785
- </div>
786
- <br clear="all" />
787
- </div>
788
-
789
- <div id="pickerwrap">
790
- <div id="plugHEX"></div>
791
- <div id="plugCUR"></div>
792
- <div id="plugin" onmousedown="HSVslide('drag','plugin',event); return false;"><div id="SV" onmousedown="HSVslide('SVslide','plugin',event)"><div id="SVslide" style="top:-4px; left:-4px;"><br /></div></div><div id="H" onmousedown="HSVslide('Hslide','plugin',event)"><div id="Hslide" style="top:-7px; left:-8px;"><br /></div><div id="Hmodel"></div></div></div>
793
- </div>
794
-
795
- <div style="position:relative;width:175px; height:150px; margin:-200px 0px 28px 405px; padding:50px 0px 0px 0px; border:0px solid #666;">
796
- <p style="margin:0px 0px 8px 0px; text-align:right;">Indicator:&nbsp;
797
- <select name="mp3foxIndicator" style="width:80px; font-size:11px;">
798
- <option value="" <?php if ( '' == $current_colours['indicator'] ) { _e('selected="selected"', $this->textdomain ); } ?>>(default)</option>
799
- <option value="tint" <?php if ( 'tint' == $current_colours['indicator'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Greyscale</option>
800
- <option value="colour" <?php if ( 'colour' == $current_colours['indicator'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Colour</option>
801
- </select></p>
802
- <p style="margin:0px 0px 8px 0px; text-align:right;">Volume bar:&nbsp;
803
- <select name="mp3foxVolGrad" style="width:80px; font-size:11px;">
804
- <option value="" <?php if ( '' == $current_colours['volume_grad'] ) { _e('selected="selected"', $this->textdomain ); } ?>>(default)</option>
805
- <option value="light" <?php if ( 'light' == $current_colours['volume_grad'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Light</option>
806
- <option value="dark" <?php if ( 'dark' == $current_colours['volume_grad'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Dark</option>
807
- </select></p>
808
- <p style="margin:0px 0px 0px 0px; text-align:right;">Dividers:&nbsp;
809
- <select name="mp3foxListDivider" style="width:80px; font-size:11px;">
810
- <option value="" <?php if ( '' == $current_colours['list_divider'] ) { _e('selected="selected"', $this->textdomain ); } ?>>(default)</option>
811
- <option value="light" <?php if ( 'light' == $current_colours['list_divider'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Light</option>
812
- <option value="med" <?php if ( 'med' == $current_colours['list_divider'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Medium</option>
813
- <option value="dark" <?php if ( 'dark' == $current_colours['list_divider'] ) { _e('selected="selected"', $this->textdomain ); } ?>>Dark</option>
814
- <option value="none" <?php if ( 'none' == $current_colours['list_divider'] ) { _e('selected="selected"', $this->textdomain ); } ?>>None</option>
815
- </select></p>
816
- </div>
817
-
818
- <div style="position:relative; width:579px; height:20px; padding-top:2px; border-top:1px solid #eee; border-bottom:1px solid #eee;">
819
- <div style="float:left; width:90px; margin-left:9px;"><p class="description" style="margin:0px;"><strong>TEXT</strong></p></div>
820
- <div style="float:left; width:430px;"><p class="description" style="margin:0px;">Colour</p></div>
821
- <br clear="all" />
822
- </div>
823
-
824
- <div style="position:relative; width:579px; padding-top:6px;">
825
- <div style="float:left; width:65px; margin-left:9px; border:0px solid #aaa;"><p style="margin:0px;line-height:32px;">Screen:<br />Playlist:<br />Selected:<br />Hover:</p></div>
826
- <div style="float:left; width:460px; border:0px solid #aaa;">
827
- <p style="margin:0px;line-height:32px;">
828
- <input type="text" id="opE" onkeyup="udfcol('opE','blE');" size="10" name="mp3foxScreenTextColour" value="<?php echo $current_colours['screen_text_colour']; ?>" />
829
- <span class="addcol" onclick="putfcolour('opE','blE');">&nbsp;+&nbsp;</span>
830
- <span class="bl" onclick="sendfcolour('opE');" id="blE" style="background:<?php echo $current_colours['screen_text_colour']; ?>;">&nbsp;&nbsp;</span>
831
- <br />
832
- <input type="text" id="opF" onkeyup="udfcol('opF','blF');" size="10" name="mp3foxListTextColour" value="<?php echo $current_colours['list_text_colour']; ?>" />
833
- <span class="addcol" onclick="putfcolour('opF','blF');">&nbsp;+&nbsp;</span>
834
- <span class="bl" onclick="sendfcolour('opF');" id="blF" style="background:<?php echo $current_colours['list_text_colour']; ?>;">&nbsp;&nbsp;</span>
835
- <br />
836
- <input type="text" id="opG" onkeyup="udfcol('opG','blG');" size="10" name="mp3foxListCurrentColour" value="<?php echo $current_colours['list_current_colour']; ?>" />
837
- <span class="addcol" onclick="putfcolour('opG','blG');">&nbsp;+&nbsp;</span>
838
- <span class="bl" onclick="sendfcolour('opG');" id="blG" style="background:<?php echo $current_colours['list_current_colour']; ?>;">&nbsp;&nbsp;</span>
839
- &nbsp; &nbsp; Background: <input type="text" id="opH" onkeyup="udfcol('opH','blH');" size="10" name="mp3foxListBGaCurrent" value="<?php echo $current_colours['listBGa_current']; ?>" />
840
- <span class="addcol" onclick="putfcolour('opH','blH');">&nbsp;+&nbsp;</span>
841
- <span class="bl" onclick="sendfcolour('opH');" id="blH" style="background:<?php echo $current_colours['listBGa_current']; ?>;">&nbsp;&nbsp;</span>
842
- <br />
843
- <input type="text" id="opI" onkeyup="udfcol('opI','blI');" size="10" name="mp3foxListHoverColour" value="<?php echo $current_colours['list_hover_colour']; ?>" />
844
- <span class="addcol" onclick="putfcolour('opI','blI');">&nbsp;+&nbsp;</span>
845
- <span class="bl" onclick="sendfcolour('opI');" id="blI" style="background:<?php echo $current_colours['list_hover_colour']; ?>;">&nbsp;&nbsp;</span>
846
- &nbsp; &nbsp; Background: <input type="text" id="opJ" onkeyup="udfcol('opJ','blJ');" size="10" name="mp3foxListBGaHover" value="<?php echo $current_colours['listBGa_hover']; ?>" />
847
- <span class="addcol" onclick="putfcolour('opJ','blJ');">&nbsp;+&nbsp;</span>
848
- <span class="bl" onclick="sendfcolour('opJ');" id="blJ" style="background:<?php echo $current_colours['listBGa_hover']; ?>;">&nbsp;&nbsp;</span>
849
- </p>
850
- </div>
851
- <br clear="all" />
852
- </div>
853
-
854
- <div style="position:relative; width:579px; height:20px; margin-top:30px; padding-top:2px; border-top:1px solid #eee; border-bottom:1px solid #eee;">
855
- <div style="float:left; width:90px; margin-left:9px;"><p class="description" style="margin:0px;"><strong>POP-OUT</strong></p></div>
856
- <div style="float:left; width:430px;"><p class="description" style="margin:0px;">Background</p></div>
857
- <br clear="all" />
858
- </div>
859
-
860
- <div style="width:579px; padding-top:6px;">
861
- <div style="float:left; width:65px; margin-left:9px; border:0px solid #aaa;"><p style="margin:0px;line-height:32px;">Colour:<br />Image:</p></div>
862
- <div style="float:left; width:460px; border:0px solid #aaa;">
863
- <p style="margin:0px;line-height:32px;">
864
- <input type="text" id="opK" onkeyup="udfcol('opK','blK');" size="10" name="mp3foxPopoutBackground" value="<?php echo $theOptions['popout_background']; ?>" />
865
- <span class="addcol" onclick="putfcolour('opK','blK');">&nbsp;+&nbsp;</span>
866
- <span class="bl" onclick="sendfcolour('opK');" id="blK" style="background:<?php echo $theOptions['popout_background']; ?>;">&nbsp;&nbsp;</span></p>
867
- <p style="margin:4px 0px 0px 0px;line-height:32px;">
868
- <input type="text" style="width:503px;" name="mp3foxPopoutBGimage" value="<?php echo $theOptions['popout_background_image']; ?>" /></p>
869
- </div>
870
- <br clear="all" />
871
- </div>
872
- <p class="description" style="margin-top: 30px; margin-bottom: 0px;">&nbsp;&nbsp;(Opacity values from 0 to 100, leave any fields blank to use the default setting)</p>
873
- </div><!-- close fox_styling-list -->
874
-
875
- <!-- MP3 FILES -->
876
- <div style="margin: 10px 120px 4px 0px; border-bottom: 1px solid #e8e8e8; height: 15px;"></div>
877
- <h4 style="margin: 14px 0px 3px 35px;">Library</h4>
878
-
879
- <?php
880
- // create library file list //
881
- $library = $this->grab_library_info();
882
- echo "<p class=\"description\" style=\"margin: 0px 120px 2px 35px;\">Library contains <strong>" . $library['count'] . "</strong> mp3";
883
- if ( $library['count'] != 1 ) { echo "'s&nbsp;"; }
884
- else { echo "&nbsp;"; }
885
-
886
- if ( $library['count'] > 0 ) {
887
- echo "<a href=\"javascript:mp3jp_listtoggle('fox_library','files');\" id=\"fox_library-toggle\">Show files</a> | <a href=\"media-new.php\">Upload new</a>";
888
- echo "</p>";
889
- echo "<div id=\"fox_library-list\" style=\"display:none;\">\n";
890
- $liblist = '<p style="margin-left:35px;">';
891
- $br = '<br />';
892
- $tagclose = '</p>';
893
- $n = 1;
894
- foreach ( $library['filenames'] as $i => $file ) {
895
- $liblist .= "<a href=\"media.php?attachment_id=" . $library['postIDs'][$i] . "&amp;action=edit\" style=\"font-size:11px;\">[Edit]</a>&nbsp;&nbsp;" . $n++ . ". " . $file . $br;
896
- }
897
- $liblist .= $tagclose;
898
- echo $liblist;
899
- echo '</div>';
900
- }
901
- else { echo "<a href=\"media-new.php\">Upload new</a></p>"; }
902
-
903
- // media settings page has moved in WP 3 //
904
- if ( substr(get_bloginfo('version'), 0, 1) > 2 ) // if WP 3.x //
905
- $mediapagelink = $this->WPinstallpath . "/wp-admin/options-media.php";
906
- else
907
- $mediapagelink = $this->WPinstallpath . "/wp-admin/options-misc.php";
908
-
909
- $upload_dir = wp_upload_dir();
910
- $localurl = get_bloginfo('url');
911
- if ( ($uploadsfolder = str_replace($localurl, "", $upload_dir['baseurl'])) != "" )
912
- //echo "<p class=\"description\" style=\"margin: 0px 120px 15px 33px;\">You only need to write filenames in your playlists to play mp3's from the library.<br />The Media Library uploads folder is currently set to <code>" .$uploadsfolder. "</code> , you can always <a href=\"" . $mediapagelink . "\">change it</a> without affecting any playlists.</p>";
913
- echo "<p class=\"description\" style=\"margin: 0px 120px 15px 33px;\">You just need to write filenames in playlists to play from the library.</p>";
914
- else
915
- echo "<p class=\"description\" style=\"margin: 0px 120px 15px 33px;\">You just need to write filenames in playlists to play from the library.</p>";
916
- ?>
917
- <!-- Non-library -->
918
- <div style="margin: 0px 120px 0px 35px; border-bottom: 1px solid #eee; height: 5px;"></div>
919
- <h4 style="margin: 15px 0px 3px 35px;">Folder or URI</h4>
920
- <p class="description" style="margin: 0px 120px 0px 35px;">Set a default folder or uri for playing mp3's in the box below, eg. <code>/music</code> or <code>www.anothersite.com/music</code><br />You just need to write filenames in playlists to play from here.</p>
921
- <p style="margin:10px 0px 5px 35px;">Default path: &nbsp; <input type="text" style="width:385px;" name="mp3foxfolder" value="<?php echo $theOptions['mp3_dir']; ?>" /></p>
922
-
923
- <?php
924
- // create file-list if directory is local
925
- $n = 1;
926
- $folderuris = $this->grab_local_folder_mp3s( $theOptions['mp3_dir'] );
927
- if ( is_array($folderuris) ){
928
- foreach ( $folderuris as $i => $uri ) {
929
- $files[$i] = strrchr( $uri, "/" );
930
- $files[$i] = str_replace( "/", "", $files[$i] );
931
- }
932
- $c = count($files);
933
- echo "<p class=\"description\" style=\"margin: 0px 0px 14px 142px;\">This folder contains <strong>" . $c . "</strong> mp3";
934
- if ( $c != 1 ) { echo "'s&nbsp;"; }
935
- else { echo "&nbsp;"; }
936
- if ( $c > 0 ) {
937
- echo "<a href=\"javascript:mp3jp_listtoggle('fox_folder','files');\" id=\"fox_folder-toggle\">Show files</a></p>";
938
- echo "<div id=\"fox_folder-list\" style=\"display:none;\">\n<p style=\"margin-left:35px;\">";
939
- natcasesort($files);
940
- foreach ( $files as $i => $val ) {
941
- echo $n++ . ". " . $val . "<br />";
942
- }
943
- echo "</p>\n</div>\n";
944
  }
945
- else { echo "</p>"; }
946
  }
947
- elseif ( $folderuris == true )
948
- echo "<p class=\"description\" style=\"margin: 0px 0px 14px 142px;\">Unable to read or locate the folder <code>" . $theOptions['mp3_dir'] . "</code> check the path and folder permissions</p>";
949
- else
950
- echo "<p class=\"description\" style=\"margin: 0px 0px 14px 142px;\">No info is available on remote folders but you can play from here if you know the filenames</p>";
951
- ?>
952
- <!-- Advanced Settings -->
953
- <div style="margin: 0px 120px 4px 0px; border-bottom: 1px solid #eee; height: 15px;"></div>
954
- <h4 style="margin-top: 0px; margin-bottom: 6px; color:#555;">More options<span style="font-size:11px;">&nbsp;<a href="javascript:mp3jp_listtoggle('fox_tools','');" id="fox_tools-toggle">Show</a></span></h4>
955
- <div id="fox_tools-list" style="display:none; margin-left:30px;">
956
- <!--
957
- <p style="margin-top: 0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="giveShortcodePriority" value="true" <?php //if ($theOptions['give_shortcode_priority'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Give shortcodes priority over widget</p>
958
- <p style="margin-top: 0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="mp3foxSmallPlayer" value="true" <?php //if ($theOptions['use_small_player'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Use smaller fonts in widget</p>
959
- -->
960
- <p style="margin-top: 12px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="mp3foxAddTrackNumbers" value="true" <?php if ($theOptions['add_track_numbering'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Number the tracks</p>
961
- <p style="margin-top: 0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="mp3foxAnimSliders" value="true" <?php if ($theOptions['animate_sliders'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Animate sliders</p>
962
- <p style="margin-top: 0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="mp3foxEncodeFiles" value="true" <?php if ($theOptions['encode_files'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Encode URI's and filenames</p>
963
- <p style="margin: 0px 0px 10px 8px;">Max playlist height &nbsp; <input type="text" size="6" style="text-align:center;" name="mp3foxMaxListHeight" value="<?php echo $theOptions['max_list_height']; ?>" /> px<br /><span class="description" style="margin-left:27px;">(a scroll bar will show for longer playlists, leave it blank for no limit)</span></p>
964
- <p style="margin-top: 0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="mp3foxAtoZ" value="true" <?php if ($theOptions['playlist_AtoZ'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Playlist the tracks in alphabetical order</p>
965
- <p style="margin-top: 0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="mp3foxUseLibrary" value="true" <?php if ($theOptions['playlist_UseLibrary'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Always use Media Library titles and excerpts when they exist</p>
966
- <p style="margin-top: 0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="mp3foxAllowRemote" value="true" <?php if ($theOptions['allow_remoteMp3'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Allow mp3's from other domains on the players' playlists<br /><span class="description" style="margin-left:34px;">(unchecking this option doesn't affect mp3's playing from a remote default folder if one is set above)</span></p>
967
- <p style="margin-top: 0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="mp3foxHideExtension" value="true" <?php if ($theOptions['hide_mp3extension'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Hide '.mp3' extension if a filename is displayed<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="description">(filenames are displayed when there's no available titles)</span></p>
968
- <h4 style="margin-top: 20px; margin-bottom: 7px;">Margins</h4>
969
- <p style="margin: 0px 0px 4px 34px;">Above players &nbsp; <input type="text" size="5" style="text-align:center;" name="mp3foxPaddings_top" value="<?php echo $theOptions['paddings_top']; ?>" /> <span class="description">&nbsp; pixels (px) or percent (%)</span></p>
970
- <p style="margin: 0px 0px 4px 34px;">Inner margin (floated players) &nbsp; <input type="text" size="5" style="text-align:center;" name="mp3foxPaddings_inner" value="<?php echo $theOptions['paddings_inner']; ?>" /> <span class="description">&nbsp; pixels (px) or percent (%)</span></p>
971
- <p style="margin: 0px 0px 10px 34px;">Below players &nbsp; <input type="text" size="5" style="text-align:center;" name="mp3foxPaddings_bottom" value="<?php echo $theOptions['paddings_bottom']; ?>" /> <span class="description">&nbsp; pixels (px) or percent (%)</span></p>
972
- <h4 style="margin-top: 20px; margin-bottom: 8px;">Pop-out</h4>
973
- <p style="margin-top: 0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="mp3foxEnablePopout" value="true" <?php if ($theOptions['enable_popout'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp; Enable the pop-out player</p>
974
- <p style="margin: 10px 0px 5px 34px;">Window width &nbsp; <input type="text" size="4" style="text-align:center;" name="mp3foxPopoutWidth" value="<?php echo $theOptions['popout_width']; ?>" /> px <span class="description">&nbsp; (250 - 1600)</span></p>
975
- <p style="margin: 0px 0px 10px 34px;">Window max height &nbsp; <input type="text" size="4" style="text-align:center;" name="mp3foxPopoutMaxHeight" value="<?php echo $theOptions['popout_max_height']; ?>" /> px <span class="description">&nbsp; (200 - 1200)<br />(a scroll bar will show for longer playlists)</span></p>
976
- <p style="margin: 0px 0px 10px 34px;">Launch button text &nbsp; <input type="text" style="width:200px;" name="mp3foxPopoutButtonText" value="<?php echo $theOptions['popout_button_title']; ?>" /></p>
977
- <h4 style="margin-top: 20px; margin-bottom: 8px;">Template</h4>
978
- <p style="margin-top:0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="mp3foxUseFixedCSS" value="true" <?php if ($theOptions['use_fixed_css'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp;Bypass colour settings<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="description">(colours can still be set in css)</span></p>
979
- <p style="margin-top: 0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="disableTemplateTag" value="true" <?php if ($theOptions['disable_template_tag'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp;Bypass player template-tags in theme files<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="description">(ignores mp3j_addscripts() and mp3j_put() template functions)</span></p>
980
- <p style="margin-top: 0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="mp3foxEchoDebug" value="true" <?php if ($theOptions['echo_debug'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp;Turn on debug<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="description">(info appears in the source view near the bottom)</span></p>
981
- <!--
982
- <p style="margin-top: 0px; margin-bottom: 8px;">&nbsp; <input type="checkbox" name="mp3foxForceScripts" value="true" <?php //if ($theOptions['force_scripts_from_admin'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /> &nbsp;Enqueue player scripts on all site pages<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="description">(normally scripts are only requested when they're needed by a page or widget)</span></p>
983
- -->
984
- </div><br /><br />
985
- <p style="margin-top: 4px;"><input type="submit" name="update_mp3foxSettings" class="button-primary" value="<?php _e('Update Settings', $this->textdomain ) ?>" /> &nbsp; Remember settings if plugin is deactivated &nbsp;<input type="checkbox" name="mp3foxRemember" value="true" <?php if ($theOptions['remember_settings'] == "true") { _e('checked="checked"', $this->textdomain ); }?> /></p>
986
- <input type="hidden" name="mp3foxPluginVersion" value="<?php echo $this->version_of_plugin; ?>" />
987
- </form>
988
- <a name="howto"></a><br />
989
- <div style="margin: 15px 120px 25px 0px; border-top: 1px solid #999; height: 30px;"><p class="description" style="margin: 0px 120px px 0px;"><a href="http://sjward.org/jplayer-for-wordpress">Plugin home page</a></p></div>
990
- </div>
991
- <?php
992
  }
993
- } // end class
994
- }
 
 
995
  ?>
1
  <?php
2
+ if ( !class_exists("MP3j_Front") && class_exists("MP3j_Main") ) { class MP3j_Front extends MP3j_Main {
3
+
4
+ /* Called on deactivation,
5
+ keeps settings if option was ticked. */
6
+ function uninitFox() {
7
+
8
+ $theOptions = get_option($this->adminOptionsName);
9
+ if ( $theOptions['remember_settings'] == "false" ) {
10
+ delete_option($this->adminOptionsName);
 
 
11
  }
12
+ }
13
+
14
+ /* Flags for scripts via
15
+ template tag mp3j_addscripts(). */
16
+ function scripts_tag_handler( $style = "" ) {
17
+
18
+ // Since 1.7 - convert old option name to new
19
+ if ( $style == "styleA" || $style == "styleE" ) { $style = "styleF"; }
20
+ if ( $style == "styleB" ) { $style = "styleG"; }
21
+ if ( $style == "styleC" ) { $style = "styleH"; }
22
+ if ( $style == "styleD" ) { $style = "styleI"; }
23
+
24
+ $this->stylesheet = ( $style == "" ) ? $this->theSettings['player_theme'] : $style;
25
+ $this->scriptsflag = "true";
26
+ return;
27
+ }
28
+
29
+ /* Returns library via
30
+ template tag mp3j_grab_library(). */
31
+ function grablibrary_handler( $x ) {
32
+
33
+ return $this->grab_library_info();
34
+ }
35
 
36
+ /* Checks whether js and css scripts are needed
37
+ on the page, and which css sheet to use if they are. */
38
+ function header_scripts_handler() {
39
+
40
+ $scripts = false;
41
+ $allowed_widget = $this->has_allowed_widget( "mp3-jplayer-widget" );
42
+ $allowed_widget_B = $this->has_allowed_widget( "mp3mi-widget" );
43
+ // Flagged in template
44
+ if ( $this->scriptsflag == "true" && $this->theSettings['disable_template_tag'] == "false" ) {
45
+ $scripts = true;
46
+ }
47
+ // On page types
48
+ if ( is_home() || is_archive() || is_search() ) {
49
+ if ( $allowed_widget || $allowed_widget_B || $this->theSettings['player_onblog'] == "true" ) {
50
+ $scripts = true;
51
  }
52
  }
53
+ if ( is_singular() ) {
54
+ if ( $allowed_widget || $allowed_widget_B || $this->has_shortcodes() ) {
55
+ $scripts = true;
56
+ }
57
+ }
58
+ // Add the scripts
59
+ if ( $scripts ) {
60
+ $style = ( $this->stylesheet == "" ) ? $this->theSettings['player_theme'] : $this->stylesheet;
61
+ $this->add_Scripts( $style );
62
+ if ( $this->theSettings['run_shcode_in_excerpt'] == "true" ) {
63
+ add_filter( 'the_excerpt', 'shortcode_unautop');
64
+ add_filter( 'the_excerpt', 'do_shortcode');
65
  }
66
+ }
67
+ return;
68
+ }
69
+
70
+ /* Checks whether to write js playlists and startup,
71
+ and diagnostic info. */
72
+ function footercode_handler() {
73
+
74
+ // Write js playlists
75
+ if ( !empty($this->JS['playlists']) ) {
76
+ $c = count($this->JS['playlists']);
77
+ echo "\n<script type=\"text/javascript\">\nvar MP3J_PLAYLISTS = {";
78
+ foreach ( $this->JS['playlists'] as $i => $list ) {
79
+ echo "\n\t" . $this->JS['playlists'][$i];
80
+ if ( $i < $c-1 ) {
81
+ echo ",";
82
  }
83
  }
84
+ echo "\n};\n</script>\n";
85
+ }
 
 
86
 
87
+ // Write doc ready
88
+ if ( !empty($this->JS['players']) ) {
 
 
89
 
90
+ $pp_bodycol = ( $this->theSettings['popout_background'] == "" ) ? "#fff" : $this->theSettings['popout_background'];
91
+ echo "\n<script type=\"text/javascript\">\njQuery(document).ready(function () {";
92
+ echo "\nif (typeof create_mp3_jplayer !== 'undefined') {";
93
+ echo "
94
+ MP3_JPLAYER = create_mp3_jplayer();";
95
 
96
+ if ( !empty($this->JS['Stitle']) ) {
97
+ echo "\n\tMP3_JPLAYER.footerjs = function () {\n" . $this->JS['Stitle'] . "\t};";
98
+ }
 
99
 
100
+ echo "
101
+ MP3_JPLAYER.vars.play_f = " . $this->theSettings['encode_files'] . ";
102
+ MP3_JPLAYER.vars.pathto_swf = '" . $this->PluginFolder . "/js';";
103
+
104
+ if ( $this->theSettings['enable_popout'] == "true" ) {
105
+ echo "
106
+ MP3_JPLAYER.vars.popout_url = '" . $this->PluginFolder . "/popout.php';
107
+ MP3_JPLAYER.vars.pp_width = " . $this->theSettings['popout_width'] . ";
108
+ MP3_JPLAYER.vars.pp_maxheight = " . $this->theSettings['popout_max_height'] . ";
109
+ MP3_JPLAYER.vars.pp_bodycolour = '" . $pp_bodycol . "';
110
+ MP3_JPLAYER.vars.pp_bodyimg = '" . $this->theSettings['popout_background_image'] . "';
111
+ MP3_JPLAYER.vars.pp_fixedcss = " . $this->theSettings['use_fixed_css'] . ";";
112
+ }
113
+
114
+ echo "
115
+ MP3_JPLAYER.vars.silence = '" . $this->PluginFolder . "/mp3/silence.mp3';
116
+ MP3_JPLAYER.vars.dload_text = '" . $this->theSettings['dload_text'] . "';
117
+ MP3_JPLAYER.vars.stylesheet_url = '" . $this->PP_css_url . "';";
118
+
119
+ // Write players info array js
120
+ if ( !empty($this->JS['players']) ) {
121
+ $c = count($this->JS['players']);
122
+ echo "\n\tMP3_JPLAYER.pl_info = [";
123
+ foreach ( $this->JS['players'] as $k => $v ) {
124
+ echo "\n\t\t" . $v;
125
+ if ( $k < $c-1 ) { echo ","; }
126
+ }
127
+ echo "\n\t];";
128
  }
129
+
130
+ //write listnames
131
+ if ( !empty($this->JS['listref']) ) {
132
+ $c = count($this->JS['listref']);
133
+ echo "\n\n\tMP3_JPLAYER.lists = [";
134
+ foreach ( $this->JS['listref'] as $j => $ln ) {
135
+ echo "\n\t\tMP3J_PLAYLISTS." . $ln;
136
+ if ( $j < $c-1 ) { echo ","; }
137
+ }
138
+ echo "\n\t];\n";
139
+ }
140
+ //add popout_css property
141
+ echo $this->PP_css_settings;
142
+ //add footer titles call
143
+ echo "\n\tif (typeof MP3_JPLAYER.footerjs !== 'undefined') { MP3_JPLAYER.footerjs(); }";
144
+ //add init call
145
+ echo "\n\tMP3_JPLAYER.init();";
146
+ echo "\n}"; //close if create_mp3_jplayer exists
147
+ echo"\n});\n</script>\n";
148
+ }
149
+ // Write debug
150
+ if ( $this->theSettings['echo_debug'] == "true" ) {
151
+ $this->debug_info();
152
  }
153
+ return;
154
+ }
155
 
156
+ /* Work out playlist
157
+ for single players. */
158
+ function decide_S_playlist( $track, $caption ) {
159
+
160
+ if ( $track == "" ) { // Auto increment
161
+ if ( !$this->fieldgrab_check() || $this->Caller == "widget" || $this->F_listlength <= $this->S_autotrack ) {
162
+ return false;
163
+ }
164
+ $track = ++$this->S_autotrack;
165
+ $playername = $this->F_listname;
166
+ } elseif ( is_numeric($track) ) { // Has a track number
167
+ if ( !$this->fieldgrab_check() || $this->Caller == "widget" || $this->F_listlength < $track ) {
168
+ return false;
169
+ }
170
+ $playername = $this->F_listname;
171
+ } else { // Has arbitrary file/uri
172
+ if ( !($Npl = $this->string_to_playlist( $track, $caption )) ) {
173
+ return false;
174
+ }
175
+ $track = 1;
176
+ $playername = "inline_" . $this->S_no++;
177
+ $this->write_playlist_js( $Npl, $playername );
178
  }
179
+ return array( 'track' => $track, 'playername' => $playername );
180
+ }
181
 
182
+ /* Handles [mp3t] shortcodes
183
+ single players with text buttons. */
184
+ function inline_play_handler( $atts, $content = null ) {
185
+
186
+ $this->dbug['str'] .= "\n### Checking [mp3t]...";
187
+
188
+ if ( !$this->Caller && (is_home() || is_archive() || is_search()) && $this->theSettings['player_onblog'] == "false" ) {
189
+ $this->dbug['str'] .= "\nExiting (player_onblog is unticked)";
190
  return;
191
  }
192
 
193
+ $id = $this->Player_ID;
194
+ extract(shortcode_atts(array( // Defaults
195
+ 'bold' => 'y',
196
+ 'play' => 'Play',
197
+ 'track' => '',
198
+ 'caption' => '',
199
+ 'flip' => 'l',
200
+ 'title' => '#USE#',
201
+ 'stop' => 'Stop',
202
+ 'ind' => 'y',
203
+ 'autoplay' => $this->theSettings['auto_play'],
204
+ 'loop' => $this->theSettings['playlist_repeat'],
205
+ 'vol' => $this->theSettings['initial_vol'],
206
+ 'flow' => 'n',
207
+ 'volslider' => $this->theSettings['volslider_on_singles'],
208
+ //'cssclass' => '',
209
+ 'style' => ''
210
+ ), $atts));
211
+
212
+ $cssclass = $style;
213
+
214
+ $tn = $this->decide_S_playlist( $track, $caption );
215
+ if ( !$tn ) {
216
+ $this->dbug['str'] .= "\nExiting (no track here)";
217
  return;
218
  }
219
 
220
+ $divO = '<span class="' . $cssclass . '">';
221
+ $divC = "</span>";
222
+ $b = "";
223
+ if ( $flow == "n" || $this->Caller == "widget" ) {
224
+ $divO = ( $cssclass == "" ) ? '<div style="font-size:14px; line-height:22px !important; margin:0 !important;">' : '<div class="' . $cssclass . '">';
225
+ $divC = "</div>";
 
226
  }
227
 
228
+ // Set font weight
229
+ //if ( $cssclass == "" ) {
230
+ $b = ( $bold == "false" || $bold == "0" || $bold == "n" ) ? " style=\"font-weight:500;\"" : " style=\"font-weight:700;\"";
231
+ //}
232
+
233
+ // Set spacer between elements depending on play/stop/title
234
+ if ( $play != "" && $title != "" ){
235
+ $spacer = "&nbsp;";
236
+ } else {
237
+ $spacer = "";
238
+ if ( $play == "" && $stop != "" ) { $stop = " " . $stop; }
239
+ }
240
+ // Prep title
241
+ $customtitle = ( $title == "#USE#" ) ? "" : $title;
242
+ // Make id'd span elements
243
+ $openWrap = $divO . "<span id=\"playpause_wrap_mp3j_" . $id . "\" class=\"wrap_inline_mp3j\"" . $b . ">";
244
+ $vol_h = ( $volslider == 'true' || $volslider == 'Y' || $volslider == 'y' ) ? "<span class=\"vol_mp3t\" id=\"vol_mp3j_" . $id . "\"></span>" : "";
245
+ $pos = "<span class=\"bars_mp3j\"><span class=\"load_mp3j\" id=\"load_mp3j_" . $id . "\"></span><span class=\"posbar_mp3j\" id=\"posbar_mp3j_" . $id. "\"></span>" . $vol_h . "</span>";
246
+ $play_h = "<span class=\"textbutton_mp3j\" id=\"playpause_mp3j_" . $id . "\">" . $play . "</span>";
247
+ $title_h = ( $title == "#USE#" || $title != "" ) ? "<span class=\"T_mp3j\" id=\"T_mp3j_" . $id . "\">" . $customtitle . "</span>" : "";
248
+ $closeWrap = ( $ind != "y" ) ? "<span style=\"display:none;\" id=\"statusMI_" . $id . "\"></span></span>" . $divC : "<span class=\"indi_mp3j\" id=\"statusMI_" . $id . "\"></span></span>" . $divC;
249
+ // Assemble them
250
+ $html = ( $flip != "l" ) ? $openWrap . $pos . $title_h . $spacer . $play_h . $closeWrap : $openWrap . $pos . $play_h . $spacer . $title_h . $closeWrap;
251
+ // Add title to js footer string if needed
252
+ if ( $title_h != "" && $title == "#USE#" ) {
253
+ $this->JS['Stitle'] .= "\t\tjQuery(\"#T_mp3j_" . $id . "\").append(MP3J_PLAYLISTS." . $tn['playername'] . "[" . ($tn['track']-1) . "].name);\n";
254
+ $this->JS['Stitle'] .= "\t\tif (MP3J_PLAYLISTS." . $tn['playername'] . "[" . ($tn['track']-1) . "].artist !==''){ jQuery(\"#T_mp3j_" . $id . "\").append('<span style=\"font-size:.75em;\"> - '+MP3J_PLAYLISTS." . $tn['playername'] . "[" . ($tn['track']-1) . "].artist+'</span>'); }\n";
255
+ }
256
+ // Add info to js info array
257
+ $autoplay = ( $autoplay == "true" || $autoplay == "y" || $autoplay == "1" ) ? "true" : "false";
258
+ $loop = ( $loop == "true" || $loop == "y" || $loop == "1" ) ? "true" : "false";
259
+ $this->JS['players'][] = "{ list: MP3J_PLAYLISTS." . $tn['playername'] . ", tr: " . ($tn['track']-1) . ", type: 'single', lstate: '', loop: " . $loop . ", play_txt: '" . $play . "', pause_txt: '" . $stop . "', pp_title: '', autoplay:" . $autoplay . ", download: false, vol: " . $vol . ", height: '' }";
260
+
261
+ $this->write_jp_div();
262
+ $this->dbug['str'] .= "\nOK (id " . $this->Player_ID . ")";
263
+ $this->Player_ID++;
264
+ return $html;
265
+ }
266
+
267
+ /* Handles [mp3j] shortcodes.
268
+ single players with button graphic */
269
+ function inline_play_graphic( $atts, $content = null ) {
270
+ $this->dbug['str'] .= "\n### Checking [mp3j]...";
271
+ if ( !$this->Caller && (is_home() || is_archive() || is_search()) && $this->theSettings['player_onblog'] == "false" ) {
272
+ $this->dbug['str'] .= "\nExiting (player_onblog is unticked)";
 
 
 
273
  return;
274
  }
275
+ $id = $this->Player_ID;
276
+ extract(shortcode_atts(array( // Defaults
277
+ 'bold' => 'y',
278
+ 'track' => '',
279
+ 'caption' => '',
280
+ 'flip' => 'r',
281
+ 'title' => '#USE#',
282
+ 'ind' => 'y',
283
+ 'autoplay' => $this->theSettings['auto_play'],
284
+ 'loop' => $this->theSettings['playlist_repeat'],
285
+ 'vol' => $this->theSettings['initial_vol'],
286
+ 'flow' => 'n',
287
+ 'volslider' => $this->theSettings['volslider_on_mp3j'],
288
+ //'cssclass' => '',
289
+ 'style' => ''
290
+ ), $atts));
291
+
292
+ $cssclass = $style;
293
+
294
+ $tn = $this->decide_S_playlist( $track, $caption );
295
+ if ( !$tn ) {
296
+ $this->dbug['str'] .= "\nExiting (no track here)";
297
+ return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
298
  }
299
+
300
+ $divO = '<span class="' . $cssclass . '">';
301
+ $divC = "</span>";
302
+ $b = "";
303
+ if ( $flow == "n" || $this->Caller == "widget" ) {
304
+ $divO = ( $cssclass == "" ) ? '<div style="font-size:14px; line-height:22px !important; margin:0 !important;">' : '<div class="' . $cssclass . '">';
305
+ $divC = "</div>";
306
+ }
307
+ // Set font weight
308
+ //if ( $cssclass == "" ) {
309
+ $b = ( $bold == "false" || $bold == "N" || $bold == "n" ) ? " style=\"font-weight:500;\"" : " style=\"font-weight:700;\"";
310
+ //}
311
+ // Prep title
312
+ $customtitle = ( $title == "#USE#" ) ? "" : $title;
313
+ // tell js it's graphics buttons
314
+ $play = "#USE_G#";
315
+ // Make id'd span elements
316
+ $flippedcss = ( $flip == "r" ) ? "" : " flipped";
317
+ $openWrap = $divO . "<span id=\"playpause_wrap_mp3j_" . $id . "\" class=\"wrap_inline_mp3j\"" . $b . ">";
318
+ $vol_h = ( $volslider == 'true' || $volslider == 'y' || $volslider == 'Y' ) ? "<span class=\"vol_mp3j" . $flippedcss . "\" id=\"vol_mp3j_" . $id . "\"></span>" : "";
319
+ $pos = "<span class=\"bars_mp3j\"><span class=\"loadB_mp3j\" id=\"load_mp3j_" . $id . "\"></span><span class=\"posbarB_mp3j\" id=\"posbar_mp3j_" . $id . "\"></span></span>";
320
+ $play_h = "<span class=\"buttons_mp3j\" id=\"playpause_mp3j_" . $id . "\">&nbsp;</span>";
321
+ $spacer = "";
322
+ $title_h = ( $title == "#USE#" || $title != "" ) ? "<span class=\"T_mp3j\" id=\"T_mp3j_" . $id . "\">" . $customtitle . "</span>" : "";
323
+ $indi_h = ( $ind != "y" ) ? "<span style=\"display:none;\" id=\"statusMI_" . $id . "\"></span>" : "<span class=\"indi_mp3j\" id=\"statusMI_" . $id . "\"></span>";
324
+ // Assemble them
325
+ $html = ( $flip == "r" ) ? $openWrap . "<span class=\"group_wrap\">" . $pos . $title_h . $indi_h . "</span>" . $play_h . $vol_h . "</span>" . $divC : $openWrap . $play_h . "&nbsp;<span class=\"group_wrap\">" . $pos . $title_h . $indi_h . "</span>" . $vol_h . "</span>" . $divC;
326
+ // Add title to js footer string if needed
327
+ if ( $title_h != "" && $title == "#USE#" ) {
328
+ $this->JS['Stitle'] .= "\t\tjQuery(\"#T_mp3j_" . $id . "\").append(MP3J_PLAYLISTS." . $tn['playername'] . "[" . ($tn['track']-1) . "].name);\n";
329
+ $this->JS['Stitle'] .= "\t\tif (MP3J_PLAYLISTS." . $tn['playername'] . "[" . ($tn['track']-1) . "].artist !==''){ jQuery(\"#T_mp3j_" . $id . "\").append('<span style=\"font-size:.75em;\"> - '+MP3J_PLAYLISTS." . $tn['playername'] . "[" . ($tn['track']-1) . "].artist+'</span>'); }\n";
330
  }
331
+ // Add info to js info array
332
+ $autoplay = ( $autoplay == "true" || $autoplay == "y" || $autoplay == "1" ) ? "true" : "false";
333
+ $loop = ( $loop == "true" || $loop == "y" || $loop == "1" ) ? "true" : "false";
334
+ $this->JS['players'][] = "{ list: MP3J_PLAYLISTS." . $tn['playername'] . ", tr:" . ($tn['track']-1) . ", type:'single', lstate:'', loop:" . $loop . ", play_txt:'" . $play . "', pause_txt:'', pp_title:'', autoplay:" . $autoplay . ", download:false, vol:" . $vol . ", height:'' }";
335
 
336
+ $this->write_jp_div();
337
+ $this->dbug['str'] .= "\nOK (id " . $this->Player_ID . ")";
338
+ $this->Player_ID++;
339
+ return $html;
340
+ }
341
 
342
+ /* Work out playlist
343
+ for playlist players. */
344
+ function decide_M_playlist( $fsort, $tracks, $captions, $id, $pick, $shuffle, $images = "", $imglinks = "" ) {
345
+ $this->folder_order = $fsort;
346
+ if ( !($Npl = $this->string_to_playlist( $tracks, $captions, $images, $imglinks )) ) {
347
+ if ( $tracks != "" && $id == "" ) {
348
+ return false;
349
+ }
350
+ if ( $id == "" && (is_home() || is_archive() || is_search()) && $this->Caller == "widget" ) { //dont allow widgets to try mode 1 on index pages
351
+ return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
352
  }
353
+ if ( ($meta = $this->meta_to_KVs($id)) ) {
354
+ if ( !($Npl = $this->generate_playlist( $meta['Ks'], $meta['Vs'] )) ) {
355
+ return false;
356
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
357
  } else {
358
+ return false;
359
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
360
  }
361
+ if ( $pick != "" && $pick >= 1 ) { $Npl = $this->pick_from_playlist( $pick, $Npl ); }
362
+ if ( $shuffle ) { shuffle( $Npl['order'] ); }
363
+ return $Npl;
364
+ }
365
 
366
+ /* Handles [mp3-jplayer]
367
+ shortcodes. */
368
+ function primary_player ( $atts, $content = null ) {
369
+
370
+ $this->dbug['str'] .= "\n### Checking [mp3-jplayer]...";
371
+
372
+ if ( !$this->Caller && (is_home() || is_archive() || is_search()) && $this->theSettings['player_onblog'] == "false" ) {
373
+ $this->dbug['str'] .= "\nExiting (player_onblog is unticked)";
374
+ return;
375
+ }
376
+
377
+ $pID = $this->Player_ID;
378
+ extract(shortcode_atts(array( // Defaults
379
+ 'tracks' => '',
380
+ 'captions' => '',
381
+ 'dload' => $this->theSettings['show_downloadmp3'],
382
+ //'flip' => 'r',
383
+ 'title' => '',
384
+ //'ind' => 'y',
385
+ 'list' => $this->theSettings['playlist_show'],
386
+ 'pn' => 'y',
387
+ 'width' => '',
388
+ 'pos' => $this->theSettings['player_float'],
389
+ 'stop' => 'y',
390
+ 'shuffle' => false,
391
+ //'slice' => '',
392
+ 'pick' => '',
393
+ 'mods' => false,
394
+ 'id' => '',
395
+ 'loop' => $this->theSettings['playlist_repeat'],
396
+ 'autoplay' => $this->theSettings['auto_play'],
397
+ 'vol' => $this->theSettings['initial_vol'],
398
+ 'height' => '',
399
+ 'fsort' => 'asc',
400
+ //'cssclass' => '',
401
+ 'style' => '',
402
+ 'images' => '',
403
+ 'imglinks' => ''
404
+ ), $atts));
405
+
406
+ $cssclass = $style;
407
+ //$Npl = $this->decide_M_playlist( $fsort, $tracks, $captions, $id, $pick, $shuffle );
408
+ $Npl = $this->decide_M_playlist( $fsort, $tracks, $captions, $id, $pick, $shuffle, $images, $imglinks );
409
+ if ( !$Npl ) {
410
+ $this->dbug['str'] .= "\nExiting (no tracks here)";
411
+ return;
412
+ }
413
+ // Write it
414
+ $PlayerName = "MI_" . $this->M_no;
415
+ $this->write_playlist_js( $Npl, $PlayerName );
416
+
417
+ // Add info to js info array
418
+ $trnum = 0;
419
+ $pp_height = (int)$height;
420
+ $pp_height = ( empty($pp_height) || $pp_height === 0 ) ? 'false' : $pp_height;
421
+ $play = "#USE_G#";
422
+ $pp_title = ( $title == "" ) ? get_bloginfo('name') : $title;
423
+ $pp_title = str_replace("'", "\'", $pp_title);
424
+ $pp_title = str_replace("&#039;", "\'", $pp_title);
425
+ $list = ( $list == "true" || $list == "y" || $list == "1" ) ? "true" : "false";
426
+
427
+ //$cssclass = ( $cssclass == "" ) ? "wrap-MI" : $cssclass;
428
+ //$cssclass = ( $cssclass == "" ) ? "wrap-MI" : "wrap-MI " . $cssclass;
429
+
430
+ $addclass = ( $mods == "true" || $mods == "y" || $mods == "1" ) ? " mp3j_widgetmods" : "";
431
+
432
+ if ( $dload == "true" || $dload == "y" || $dload == "1" ) {
433
+ $dload_info = "true";
434
+ $dload_html = "<div id=\"download_mp3j_" . $pID . "\" class=\"dloadmp3-MI" . $addclass . "\"></div>";
435
+ } elseif ( $dload == "loggedin" ) {
436
+ if ( is_user_logged_in() ) {
437
+ $dload_info = "true";
438
+ $dload_html = "<div id=\"download_mp3j_" . $pID . "\" class=\"dloadmp3-MI" . $addclass . "\"></div>";
439
+ } else {
440
+ $dload_info = "false";
441
+ if ( $this->theSettings['loggedout_dload_text'] == "" ) {
442
+ $dload_html = "";
443
+ } else {
444
+ if ( $this->theSettings['loggedout_dload_link'] != "" ) {
445
+ $dload_html = "<div id=\"download_mp3j_" . $pID . "\" class=\"dloadmp3-MI whilelinks" . $addclass . "\"><a href=\"" . $this->theSettings['loggedout_dload_link'] . "\">" . $this->theSettings['loggedout_dload_text'] . "</a></div>";
446
+ } else {
447
+ $dload_html = "<div id=\"download_mp3j_" . $pID . "\" class=\"dloadmp3-MI logintext" . $addclass . "\"><p>" . $this->theSettings['loggedout_dload_text'] . "</p></div>";
448
+ }
449
+ }
450
  }
451
+ } else {
452
+ $dload_info = "false";
453
+ $dload_html = "";
454
+ }
455
+
456
+ $autoplay = ( $autoplay == "true" || $autoplay == "y" || $autoplay == "1" ) ? "true" : "false";
457
+ $loop = ( $loop == "true" || $loop == "y" || $loop == "1" ) ? "true" : "false";
458
+
459
+ $this->JS['players'][] = "{ list: MP3J_PLAYLISTS." . $PlayerName . ", tr: " . $trnum . ", type: 'MI', lstate: " . $list . ", loop: " . $loop . ", play_txt: '" . $play . "', pause_txt: '', pp_title: '" . $pp_title . "', autoplay: " . $autoplay . ", download: " . $dload_info . ", vol: " . $vol . ", height: " . $pp_height . ", cssclass: '" . $cssclass . "' }";
460
+
461
+ // Make transport buttons
462
+ $prevnext = ( $Npl['count'] > 1 && $pn == "y" ) ? "<div class=\"Next_mp3j\" id=\"Next_mp3j_" . $pID . "\">Next&raquo;</div><div class=\"Prev_mp3j\" id=\"Prev_mp3j_" . $pID . "\">&laquo;Prev</div>" : "";
463
+ $play_h = "<div class=\"buttons_mp3j\" id=\"playpause_mp3j_" . $pID . "\">Play Pause</div>";
464
+ $stop_h = ( $stop == "y" ) ? "<div class=\"stop_mp3j\" id=\"stop_mp3j_" . $pID . "\">Stop</div>" : "";
465
+ // Build player html
466
+ if ( $this->Caller && $width == "" ) { $width = "100%"; } //set a default width when called by tag/sc-widget and it wasn't specified
467
+ $player = $this->write_primary_player( $pID, $pos, $width, $addclass, $dload_html, $title, $play_h, $stop_h, $prevnext, $height, $list, $Npl['count'], $cssclass );
468
+
469
+ $this->write_jp_div();
470
+ $this->dbug['str'] .= "\nOK (id " . $this->Player_ID . ")";
471
+ $this->M_no++;
472
+ $this->Player_ID++;
473
+ return $player;
474
+ }
475
+
476
 
477
+ /* Handles [mp3-popout]
478
+ shortcodes. */
479
+ function popout_link_player ( $atts, $content = null ) {
480
+
481
+ $this->dbug['str'] .= "\n### Checking [mp3-popout]...";
482
 
483
+ if ( !$this->Caller && (is_home() || is_archive() || is_search()) && $this->theSettings['player_onblog'] == "false" ) {
484
+ $this->dbug['str'] .= "\nExiting (player_onblog is unticked)";
485
+ return;
 
 
486
  }
 
 
 
 
487
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
488
  $pID = $this->Player_ID;
489
  extract(shortcode_atts(array( // Defaults
490
  'tracks' => '',
491
  'captions' => '',
492
  'dload' => $this->theSettings['show_downloadmp3'],
493
+ //'flip' => 'r',
494
  'title' => '',
495
+ 'text' => '',
496
  'list' => $this->theSettings['playlist_show'],
 
 
497
  'pos' => $this->theSettings['player_float'],
 
498
  'shuffle' => false,
499
+ //'slice' => '',
500
  'pick' => '',
 
501
  'id' => '',
502
  'loop' => $this->theSettings['playlist_repeat'],
503
  'autoplay' => $this->theSettings['auto_play'],
504
  'vol' => $this->theSettings['initial_vol'],
505
+ 'height' => '',
506
+ 'tag' => 'p',
507
+ 'image' => '',
508
+ 'fsort' => 'asc',
509
+ //'cssclass' => '',
510
+ 'style' => '',
511
+ 'images' => '',
512
+ 'imglinks' => ''
513
  ), $atts));
514
 
515
+ $cssclass = $style;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
516
 
517
+ $Npl = $this->decide_M_playlist( $fsort, $tracks, $captions, $id, $pick, $shuffle, $images, $imglinks );
518
+ if ( !$Npl ) {
519
+ $this->dbug['str'] .= "\nExiting (no tracks here)";
520
+ return;
521
+ }
522
 
523
+ // Write it
524
+ $PlayerName = "popout_" . $this->M_no;
525
+ $this->write_playlist_js( $Npl, $PlayerName );
526
+
527
+ // Add info to js info array
528
+ $cssclass = ( $cssclass == "" ) ? "wrap-MI" : $cssclass;
529
  $pp_height = (int)$height;
530
+ $pp_height = ( empty($pp_height) || $pp_height === 0 ) ? 'false' : $pp_height;
531
  $play = "#USE_G#";
532
  $pp_title = ( $title == "" ) ? get_bloginfo('name') : $title;
533
+ $pp_title = str_replace("'", "\'", $pp_title);
534
+ $pp_title = str_replace("&#039;", "\'", $pp_title);
535
  $list = ( $list == "true" || $list == "y" || $list == "1" ) ? "true" : "false";
536
  $dload_info = ( $dload == "true" || $dload == "y" || $dload == "1" ) ? "true" : "false";
537
  $autoplay = ( $autoplay == "true" || $autoplay == "y" || $autoplay == "1" ) ? "true" : "false";
538
  $loop = ( $loop == "true" || $loop == "y" || $loop == "1" ) ? "true" : "false";
539
+ $this->JS['players'][] = "{ list: MP3J_PLAYLISTS." . $PlayerName . ", tr:0, type:'popout', lstate:" . $list . ", loop:" . $loop . ", play_txt:'" . $play . "', pause_txt:'', pp_title:'" . $pp_title . "', autoplay:false, download:" . $dload_info . ", vol:" . $vol . ", height:" . $pp_height . ", cssclass: '" . $cssclass . "' }";
540
+
541
+ //Make it
542
+ $image_h = ( $image == "" ) ? "<div class=\"mp3j-popout-link\"></div>" : "<img style=\"float:left; margin-right:10px;\" src=\"" . $image . "\" />";
543
+ $player = '<div class="mp3j-popout-link-wrap" id="mp3j_popout_' . $pID . '">' . $image_h . '<'.$tag.'>' . $text . '</'.$tag.'></div>';
 
 
 
 
 
544
 
545
  $this->write_jp_div();
546
+ $this->dbug['str'] .= "\nOK (id " . $this->Player_ID . ")";
547
+ $this->M_no++;
548
  $this->Player_ID++;
549
  return $player;
550
  }
551
 
552
+ /* Handles [mp3-link] shortcodes.
553
+ ** Not implemented in this version ** */
554
+ function link_plays_track( $atts, $content = null ) {
555
+
556
+ if ( is_home() || is_archive() || is_search() ) {
557
+ return; //can't really use these on multi-post pages!
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
558
  }
559
+ extract(shortcode_atts(array( // Defaults
560
+ 'player' => '',
561
+ 'track' => '',
562
+ 'text' => 'Play',
563
+ 'bold' => 'n'
564
+ ), $atts));
565
+
566
+ if ( $player == "" ) {
567
+ return;
 
 
 
 
 
 
 
 
 
 
 
 
568
  }
569
+ if ( $track == "" ) { $track = "0"; }
570
+ if ( $bold != "n" ) {
571
+ $O_tag = "<strong>";
572
+ $C_tag = "</strong>";
573
+ } else {
574
+ $O_tag = "";
575
+ $C_tag = "";
576
+ }
577
+ $the_link = "<span class=\"mp3j-link-play\" onclick=\"javascript:link_plays_track(" . $player .", " . $track . ");\">" . $O_tag . $text . $C_tag . "</span>";
578
+ return $the_link;
579
+ }
580
 
581
+ /* Called via mp3j_put() in
582
+ template to run shortcodes. */
583
+ function template_tag_handler( $stuff = "" ) {
584
+ if ( $this->theSettings['disable_template_tag'] == "true" ) {
585
+ return;
586
+ }
587
+ if ( !empty($stuff) ) {
588
+ $this->fieldgrab_check();
589
+ $this->Caller = "tag";
590
+ $players = do_shortcode( $stuff );
591
+ $this->Caller = false;
592
+ echo $players;
593
+ }
594
+ return;
595
+ }
596
+
597
+ /* Grabs current id's
598
+ fields if not done already. */
599
+ function fieldgrab_check() {
600
+ global $post;
601
+ if ( $post->ID != "" && $post->ID != $this->postID ) {
602
+ $this->postID = $post->ID;
603
+ $this->F_listname = false;
604
+ $this->F_listlength = false;
605
+ $this->S_autotrack = 0;
606
+ $this->dbug['str'] .= "\nLooking in custom fields on post id " . $this->postID . " - ";
607
+
608
+ if ( ($meta = $this->meta_to_KVs()) ) {
609
+ $playlist = $this->generate_playlist( $meta['Ks'], $meta['Vs'] );
610
+ if ( $playlist['count'] > 0 ) {
611
+ $name = "fields_" . $this->F_no++;
612
+ $this->write_playlist_js( $playlist, $name );
613
+ $this->F_listname = $name;
614
+ $this->F_listlength = $playlist['count'];
615
+ $this->dbug['str'] .= "\nDone, " . $this->F_listlength . " track(s) found.";
616
+ } else {
617
+ $this->dbug['str'] .= "No tracks here.";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
618
  }
 
619
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
620
  }
621
+ return $this->F_listname;
622
+ }
623
+
624
+ }} // close class, close if
625
  ?>
mp3j_main.php CHANGED
@@ -1,886 +1,486 @@
1
  <?php
2
-
3
- /** Main functions */
4
- if ( !class_exists("MP3j_Main") )
5
- {
6
- class MP3j_Main
7
- {
8
- // ------------------------- Update Me
9
- var $version_of_plugin = "1.7.3";
10
- // -----------------------------------
11
- var $WPinstallpath;
12
- var $Rooturl;
13
- var $mp3jPath;
14
- var $adminOptionsName = "mp3FoxAdminOptions";
15
- var $textdomain = "mp3-jplayer";
16
- var $newCSScustom = "/wp-content/plugins/mp3-jplayer/css/player-silverALT.css";
17
- var $theSettings = array();
18
- var $Colours = array();
19
- var $stylesheet = "";
20
- //
21
- var $iscompat = false;
22
- var $scriptsflag = "false";
23
- var $excerptCalled = false;
24
- var $JPdiv = false;
25
- var $external_call = false;
26
- var $tag_call = false;
27
- //
28
- var $postMetaKeys = array();
29
- var $postMetaValues = array();
30
- var $feedKeys = array();
31
- var $feedValues = array();
32
- var $mp3LibraryWP = array();
33
- var $mp3LibraryI = array();
34
- var $PlayerPlaylist = array( 'artists' => array(), 'titles' => array(), 'files' => array(), 'order' => array(), 'count' => 0 );
35
- var $InlinePlaylist = array( 'artists' => array(), 'titles' => array(), 'files' => array(), 'order' => array(), 'count' => 0 );
36
- var $NewPlaylist;
37
- //
38
- var $jsInfo = array();
39
- var $jsFields = array();
40
- var $Footerjs = "";
41
- //
42
- var $debugCount = "0";
43
- var $debug_string;
44
- var $Player_ID = 0;
45
- var $NewList_num = 0;
46
- var $FieldsList_num = 0;
47
- var $has_fields = false;
48
- var $putTag_runCount = 0;
49
- var $single_autocount = 0;
50
- var $activeWidgets = array();
51
- var $activeWidgetSettings;
52
-
53
- function MP3j_Main () { //constructor
54
- $this->WPinstallpath = get_bloginfo('wpurl');
55
- $this->mp3jPath = dirname(__FILE__);
56
- $this->theSettings = $this->getAdminOptions();
57
- $Srooturl = $_SERVER['HTTP_HOST'];
58
- $this->Rooturl = str_replace("www.", "", $Srooturl);
59
- }
60
-
61
 
62
- /**
63
- * Returns updated compatible options
64
- */
65
- function getAdminOptions() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
 
67
- $colour_keys = array( // init colour keys
68
- 'screen_colour' => '',
69
- 'screen_opacity' => '',
70
- 'loadbar_colour' => '',
71
- 'loadbar_opacity' => '',
72
- 'posbar_colour' => '',
73
- 'posbar_opacity' => '',
74
- 'posbar_tint' => '',
75
- 'playlist_colour' => '',
76
- 'playlist_opacity' => '',
77
- 'playlist_tint' => '',
78
- 'list_divider' => '',
79
- 'screen_text_colour' => '',
80
- 'list_text_colour' => '',
81
- 'list_current_colour' => '',
82
- 'list_hover_colour' => '',
83
- 'listBGa_current' => '',
84
- 'listBGa_hover' => '',
85
- 'indicator' => '',
86
- 'volume_grad' => '' );
87
-
88
- $theOptions = get_option($this->adminOptionsName);
89
- if ( !empty($theOptions) ) { // run backwards compatibility
90
- // styles
91
- $xfer = $this->transfer_old_colours( $theOptions['player_theme'], $colour_keys, $theOptions['custom_stylesheet'] );
92
- if ( $xfer[0] ) {
93
- $theOptions['player_theme'] = $xfer[0];
94
- $colour_keys = $xfer[1];
95
- $theOptions['custom_stylesheet'] = $xfer[2];
96
- }
97
  }
 
 
98
 
99
- $mp3FoxAdminOptions = array( // default settings
100
- 'initial_vol' => '100',
101
- 'auto_play' => 'false',
102
- 'mp3_dir' => '/',
103
- 'player_theme' => 'styleF',
104
- 'allow_remoteMp3' => 'true',
105
- 'playlist_AtoZ' => 'false',
106
- 'player_float' => 'none',
107
- 'player_onblog' => 'true',
108
- 'playlist_UseLibrary' => 'false',
109
- 'playlist_show' => 'true',
110
- 'remember_settings' => 'true',
111
- 'hide_mp3extension' => 'false',
112
- 'show_downloadmp3' => 'false',
113
- 'disable_template_tag' => 'false',
114
- 'db_plugin_version' => $this->version_of_plugin,
115
- 'custom_stylesheet' => $this->newCSScustom,
116
- 'echo_debug' => 'false',
117
- 'add_track_numbering' => 'true',
118
- 'enable_popout' => 'true',
119
- 'playlist_repeat' => 'false',
120
- 'player_width' => '40%',
121
- 'popout_background' => '',
122
- 'popout_background_image' => '',
123
- 'colour_settings' => $colour_keys,
124
- 'use_fixed_css' => 'false',
125
- 'paddings_top' => '5px',
126
- 'paddings_bottom' => '40px',
127
- 'paddings_inner' => '35px',
128
- 'popout_max_height' => '600',
129
- 'popout_width' => '400',
130
- 'popout_button_title' => '',
131
- 'max_list_height' => '',
132
- 'encode_files' => 'true',
133
- 'animate_sliders' => 'false' );
134
-
135
- // DEPRECIATED
136
- //'force_scripts_from_admin' => 'false',
137
- //'give_shortcode_priority' => 'true',
138
- //'use_small_player' => 'true',
139
-
140
-
141
- if ( !empty($theOptions) ) { // swap/add in the existing
142
- foreach ( $theOptions as $key => $option ){
143
- $mp3FoxAdminOptions[$key] = $option;
144
  }
145
- $mp3FoxAdminOptions['db_plugin_version'] = $this->version_of_plugin; // set last!
146
- }
147
- update_option($this->adminOptionsName, $mp3FoxAdminOptions);
148
- return $mp3FoxAdminOptions;
149
- }
150
-
151
-
152
- /**
153
- * translates colour style from old options
154
- * to the new format prior to saving them.
155
- */
156
- function transfer_old_colours ( $s, $keys, $path = "" ) {
157
-
158
- $csspath = "/wp-content/plugins/mp3-jplayer/css/mp3jplayer-cyanALT.css"; // the prev custom css that preserved orig ALT style
159
- $path = ( $path == $csspath || $path == "" ) ? $this->newCSScustom : $path;
160
-
161
- if ( $s == "styleA" ) { // orig 'neutral'
162
- $keys['loadbar_colour'] = "#bababa";
163
- $keys['posbar_colour'] = "#a8a8a8";
164
- $keys['list_hover_colour'] = "#888";
165
- $keys['list_current_colour'] = "b8a47e";
166
- $s = "styleF";
167
- }
168
- elseif ( $s == "styleB" ) { // orig 'green'
169
- $keys['loadbar_colour'] = "#a3baa5";
170
- $keys['posbar_colour'] = "#73ed7b";
171
- $keys['list_hover_colour'] = "#888";
172
- $keys['list_current_colour'] = "b8a47e";
173
- $s = "styleF";
174
- }
175
- elseif ( $s == "styleC" ) { // orig 'blu'
176
- $keys['screen_colour'] = "#c0c0c0";
177
- $keys['loadbar_colour'] = "#90a0b7";
178
- $keys['posbar_colour'] = "#61a5ff";
179
- $keys['list_hover_colour'] = "#888";
180
- $keys['list_current_colour'] = "b8a47e";
181
- $s = "styleF";
182
- }
183
- elseif ( $s == "styleD" ) { // orig 'cyanALT', or custom css
184
- if ( $path == $newALTpath ) {
185
- $keys['screen_colour'] = "#ededed";
186
- $keys['loadbar_colour'] = "#77ccff";
187
- $keys['posbar_colour'] = "#77ccff";
188
- $keys['screen_text_colour'] = "#4f9ad4";
189
- $keys['list_hover_colour'] = "#00c0f0";
190
- $keys['list_current_colour'] = "#77c0f0";
191
- }
192
- $s = "styleI";
193
- }
194
- elseif ( $s == "styleE" ) { // orig 'text'
195
- $keys['loadbar_colour'] = "";
196
- $keys['posbar_colour'] = "";
197
- $keys['list_hover_colour'] = "";
198
- $s = "styleH";
199
- }
200
- else {
201
- $s = false;
202
  }
203
- return array( $s, $keys, $path );
204
  }
 
 
205
 
206
-
207
- /**
208
- * Returns library mp3 filenames, titles, excerpts, content, uri's, id's
209
- * in indexed arrays.
210
- */
211
- function grab_library_info() {
212
-
213
- global $wpdb;
214
- $audioInLibrary = $wpdb->get_results("SELECT DISTINCT guid, post_title, post_excerpt, post_content, ID FROM $wpdb->posts WHERE post_mime_type = 'audio/mpeg'");
215
- //$Lcount = count($audioInLibrary);
216
- $this->mp3LibraryWP = $audioInLibrary;
217
-
218
- $j=0;
219
- foreach ( $audioInLibrary as $obj ) {
220
-
221
- if ( preg_match("!\.mp3$!i", $obj->guid) ) { // audio/mpeg has multiple file associations so grab just mp3's
222
- $Titles[$j] = $obj->post_title;
223
- $Excerpts[$j] = $obj->post_excerpt;
224
- $Descriptions[$j] = $obj->post_content;
225
- $PostIDs[$j] = $obj->ID;
226
- $URLs[$j] = $obj->guid;
227
- $Filenames[$j] = strrchr( $URLs[$j], "/");
228
- $Filenames[$j] = str_replace( "/", "", $Filenames[$j]);
229
- $j++;
230
- }
231
-
232
- }
233
- if ( $Filenames ) {
234
- natcasesort($Filenames);
235
  }
236
- $Lcount = count($Filenames);
237
- $theLibrary = array( 'filenames' => $Filenames,
238
- 'titles' => $Titles,
239
- 'urls' => $URLs,
240
- 'excerpts' => $Excerpts,
241
- 'descriptions' => $Descriptions,
242
- 'postIDs' => $PostIDs,
243
- 'count' => $Lcount );
244
- $this->mp3LibraryI = $theLibrary;
245
- return $theLibrary;
246
- }
247
-
248
-
249
- /**
250
- * Reads mp3's from a local directory.
251
- * Returns array of their uri's.
252
- */
253
- function grab_local_folder_mp3s( $folder ) {
254
- $Srooturl = $_SERVER['HTTP_HOST'];
255
- $rooturl = str_replace("www.", "", $Srooturl);
256
- $items = array();
257
- if ( ($lp = strpos($folder, $rooturl)) || preg_match("!^/!", $folder) ) {
258
- if ( $lp !== false ) {
259
- $folderpath = str_replace($rooturl, "", $folder);
260
- $folderpath = str_replace("www.", "", $folderpath);
261
- $folderpath = str_replace("http://", "", $folderpath);
262
- }
263
- else {
264
- $folderpath = $folder;
265
  }
266
- $path = $_SERVER['DOCUMENT_ROOT'] . $folderpath;
267
- if ($handle = @opendir($path)) {
268
- $j=0;
269
- while (false !== ($file = readdir($handle))) {
270
- if ( $file != '.' && $file != '..' && filetype($path.'/'.$file) == 'file' && preg_match("!\.mp3$!i", $file) ) {
271
- $items[$j++] = $file;
272
- }
273
  }
274
- closedir($handle);
275
- if ( ($c = count($items)) > 0 ) {
276
- natcasesort($items);
277
- $folderpath = preg_replace( "!/+$!", "", $folderpath );
278
- foreach ( $items as $i => $mp3 ) {
279
- $items[$i] = "http://" . $Srooturl . $folderpath . "/" . $mp3;
280
- }
281
  }
282
- $this->debug_string .= "\nRead folder: Done\nmp3's in folder: " . $c . "\nhttp://" . $Srooturl . $folderpath;
283
- return $items;
284
- }
285
- else {
286
- $this->debug_string .= "\nRead folder: Failed to open local folder, check path and permissions.\nhttp://" . $Srooturl . $folderpath;
287
- return true;
288
  }
 
 
 
 
 
289
  }
290
- else {
291
- $this->debug_string .= "\nRead folder: Folder path is either remote or unreadable, didn't attempt to read it.\n" . $folderpath;
292
- return false;
293
- }
294
  }
 
295
 
296
-
297
- /**
298
- * Gets custom field keys and values from a post or page.
299
- * Checks for any 'FEED:' values and adds the contents of them to the end of the meta arrays.
300
- * Returns number of tracks.
301
- */
302
- function grab_Custom_Meta( $id = "" ) {
303
-
304
- $this->postMetaKeys = array();
305
- $this->postMetaValues = array();
306
- global $wpdb;
307
  global $post;
308
-
309
- if ( $id == "" ) { $id = $post->ID; }
310
- $pagesmeta = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE post_id =" .$id. " AND meta_value!='' ORDER BY meta_key ASC");
311
-
312
- $i = 0;
313
- $metacount = 0;
314
- foreach ( $pagesmeta as $obj ) {
315
- $flag = 0;
316
- foreach ( $obj as $k => $value ) {
317
- if ( $k == "meta_key" ){
318
- if ( preg_match('/^([0-9]+(\s)?)?mp3(\..*)?$/', $value) == 1 ) { // Grab keys from meta
319
- $this->postMetaKeys[$i] = $value;
320
- $metacount++;
321
- $flag = 1;
322
- }
323
- }
324
- if ( $k == "meta_value" ){
325
- if ( $flag == 1 ) { // Grab values
326
- $this->postMetaValues[$i++] = $value;
327
- }
328
- }
329
  }
330
  }
331
-
332
- foreach ( $this->postMetaValues as $i => $val ) { // Store any 'FEED' values/keys and delete them
333
- if ( preg_match( "!^FEED:(DF|ID|LIB|/.*)$!i", $val ) == 1 ) {
334
- $sources[$i] = strstr( $val, ":" );
335
- $sources[$i] = str_replace( ":", "", $sources[$i] );
336
- $sourcekeys[$i] = $this->postMetaKeys[$i];
337
- unset( $this->postMetaValues[$i], $this->postMetaKeys[$i] );
338
- $metacount--;
339
- }
340
- }
341
- if ( !empty($sources) ) { // Add feeds to postMeta arrays
342
- $this->extend_metakeys( $sources, $sourcekeys );
343
- $metacount = count($this->postMetaKeys);
344
  }
345
- $this->postMetaValues = array_values( $this->postMetaValues );
346
- $this->postMetaKeys = array_values( $this->postMetaKeys );
347
- return $metacount;
 
 
 
 
 
 
 
 
 
 
 
 
348
  }
349
-
350
-
351
- /**
352
- * Stores any 'FEED' values/keys and deletes them
353
- */
354
- function collect_delete_jobs( $values, $keys ){
355
-
356
- $sources = array();
357
- $sourcekeys = array();
358
- foreach ( $values as $i => $val ) {
359
- if ( preg_match( "!^FEED:(DF|ID|LIB|/.*)$!i", $val ) == 1 ) { // ID Depreciated, keep in for backwards compat
360
- $sources[$i] = strstr( $val, ":" );
361
- $sources[$i] = str_replace( ":", "", $sources[$i] );
362
- $sourcekeys[$i] = ( !empty($keys[$i]) ) ? $keys[$i] : "";
363
- unset( $values[$i], $keys[$i] );
364
- }
365
- }
366
- return array( $values, $keys, $sources, $sourcekeys );
367
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
368
 
369
-
370
- /**
371
- * Pushes new tracks onto postmeta arrays according
372
- * to FEED:LIB or FEED:/folder entries made by user
373
- */
374
- function extend_metakeys( $feeds, $keys ) {
375
- if ( empty($feeds) ) { return; }
376
- foreach ( $feeds as $i => $val )
377
- {
378
- if ( $val == "ID" ) { // Depreciated
379
- //do nothing since 1.5
380
- }
381
- elseif ( $val == "LIB" ) {
382
- $library = ( empty($this->mp3LibraryI) ) ? $this->grab_library_info() : $this->mp3LibraryI;
383
- if ( $library['count'] >= 1 ) {
384
- $counter = count($this->postMetaValues);
385
- foreach ( $library['filenames'] as $k => $fn ) {
386
- $captions[$k] = $library['excerpts'][$k];
387
- }
388
- $this->new_feed_keys( $library['filenames'], $captions, ++$counter );
389
- foreach ( $this->feedKeys as $j => $x ) {
390
- array_push( $this->postMetaValues, $this->feedValues[$j] );
391
- array_push( $this->postMetaKeys, $x );
392
- }
393
- }
394
- }
395
- else { // a folder
396
- if ( $val == "DF" ) {
397
- $val = $this->theSettings['mp3_dir'];
398
- }
399
- $tracks = $this->grab_local_folder_mp3s( $val );
400
- if ( $tracks !== true && $tracks !== false && count($tracks) > 0 ) {
401
- foreach ( $tracks as $k => $fn ) {
402
- $captions[$k] = $keys[$i];
403
- }
404
- $counter = count($this->postMetaValues);
405
- $this->new_feed_keys( $tracks, $captions, ++$counter );
406
- foreach ( $this->feedKeys as $j => $x ) {
407
- array_push( $this->postMetaValues, $this->feedValues[$j] );
408
- array_push( $this->postMetaKeys, $x );
409
- }
410
- }
411
  }
412
- }
413
- return;
 
 
414
  }
 
 
 
 
 
415
 
416
-
417
- /**
418
- * Creates new meta arrays.
419
- * $startnum is the track number offset to use when numbering the metakeys
420
- */
421
- function new_feed_keys( $tracks, $captions = "", $startnum = 1 ) {
422
- $this->feedKeys = array();
423
- $this->feedValues = array();
424
- if ( empty($tracks) || !is_array($tracks) ) {
425
- return;
426
- }
427
- $j = 1;
428
- if ( empty($captions) ) {
429
- foreach ( $tracks as $i => $file ) {
430
- $this->feedKeys[$i] = $startnum++ . " mp3";
431
- $this->feedValues[$i] = $file;
432
  }
433
  }
434
- else {
435
- foreach ( $tracks as $i => $file ) {
436
- if ( !empty($captions[$i]) ) {
437
- if ( preg_match('/^([0-9]+(\s)?)?mp3(\..*)?$/', $captions[$i]) == 1 ) {
438
- $this->feedKeys[$i] = $captions[$i];
439
- }
440
- else { $this->feedKeys[$i] = $startnum++ . " mp3." . $captions[$i]; }
441
- }
442
- else {
443
- $this->feedKeys[$i] = $startnum++ . " mp3";
444
- }
445
- $this->feedValues[$i] = $file;
446
- }
447
  }
448
- return;
449
- }
450
-
451
-
452
- /**
453
- * Adds/makes playlist from comma separated lists of tracks/captions.
454
- */
455
- function string_pushto_playlist( $tracks, $captions = "", $plist = "" ) {
456
-
457
- $separator = ";"; // captions separator
458
- $caps = array();
459
- if ( $tracks == "" ) { return false; }
460
-
461
- $tracks = str_replace( array("</p>", "<p>", "<br />", "<br>"), "", $tracks );
462
- //$tracks = str_replace( array("</p>", "<p>"), "", $tracks );
463
-
464
- $shortlist = trim( $tracks );
465
- $shortlist = trim( $shortlist, "," );
466
- if ( !empty($shortlist) )
467
- {
468
- $names = explode( ",", $shortlist );
469
- foreach ( $names as $i => $file ) {
470
- $names[$i] = trim($file);
471
- }
472
- if ( $captions != "" ) {
473
- $captions = str_replace( array("</p>", "<p>", "<br />"), "", $captions );
474
- $shortcaps = trim( $captions );
475
- //$shortcaps = trim( $shortcaps, "," );
476
- $shortcaps = trim( $shortcaps, $separator );
477
- if ( !empty($shortcaps) ) {
478
- //$caps = explode( ",", $shortcaps );
479
- $caps = explode( $separator, $shortcaps );
480
- foreach ( $caps as $i => $file ) { $caps[$i] = trim($file); }
481
- }
482
- }
483
- $woof = $this->collect_delete_jobs( $names, $caps );
484
- if ( !empty($this->postMetaValues) ) {
485
- $this->postMetaKeys = array();
486
- $this->postMetaValues = array();
487
- }
488
- $this->extend_metakeys( $woof[2], $woof[3] );
489
- $this->new_feed_keys( $woof[0], $woof[1] );
490
- foreach ( $this->feedKeys as $j => $x ) {
491
- array_push( $this->postMetaValues, $this->feedValues[$j] );
492
- array_push( $this->postMetaKeys, $x );
493
- }
494
- $this->postMetaValues = array_values($this->postMetaValues);
495
- $this->postMetaKeys = array_values($this->postMetaKeys);
496
-
497
- $theShortlist = $this->generate_playlist( $this->postMetaKeys, $this->postMetaValues, 1 );
498
- if ( $theShortlist['count'] > 0 ) { // add tracks to either playlist
499
- if ( $plist == "" ) {
500
- foreach ( $theShortlist['order'] as $i => $val ) {
501
- array_push( $this->PlayerPlaylist['order'], $i + $this->PlayerPlaylist['count'] );
502
- array_push( $this->PlayerPlaylist['artists'], $theShortlist['artists'][$i] );
503
- array_push( $this->PlayerPlaylist['titles'], $theShortlist['titles'][$i] );
504
- array_push( $this->PlayerPlaylist['files'], $theShortlist['files'][$i] );
505
- }
506
- $this->PlayerPlaylist['count'] += $theShortlist['count'];
507
- }
508
- elseif ( $plist == "1" ) {
509
- foreach ( $theShortlist['order'] as $i => $val ) {
510
- array_push( $this->InlinePlaylist['order'], $i + $this->InlinePlaylist['count'] );
511
- array_push( $this->InlinePlaylist['artists'], $theShortlist['artists'][$i] );
512
- array_push( $this->InlinePlaylist['titles'], $theShortlist['titles'][$i] );
513
- array_push( $this->InlinePlaylist['files'], $theShortlist['files'][$i] );
514
- }
515
- $this->InlinePlaylist['count'] += $theShortlist['count'];
516
- }
517
- else {
518
- $this->NewPlaylist = $theShortlist;
519
- }
520
  }
521
- else { return false; }
522
- }
523
- return true;
524
- }
525
-
526
-
527
- /* Not used since 1.6
528
- * Pushes playlist from another page's fields onto current.
529
- */
530
- function id_pushto_playlist( $id ) {
531
-
532
- if ( $id == "" ) { return false; }
533
- $id = trim($id);
534
- if ( $this->grab_Custom_Meta($id) > 0 ) {
535
- $thePlayList = $this->generate_playlist( $this->postMetaKeys, $this->postMetaValues, 1 );
536
- if ( $thePlayList['count'] > 0 ) { // add tracks to current playlist
537
- foreach ( $thePlayList['order'] as $i => $val ) {
538
- array_push( $this->PlayerPlaylist['order'], $i + $this->PlayerPlaylist['count'] );
539
- array_push( $this->PlayerPlaylist['artists'], $thePlayList['artists'][$i] );
540
- array_push( $this->PlayerPlaylist['titles'], $thePlayList['titles'][$i] );
541
- array_push( $this->PlayerPlaylist['files'], $thePlayList['files'][$i] );
542
- }
543
- $this->PlayerPlaylist['count'] += $thePlayList['count'];
544
- }
545
  }
546
- return true;
547
  }
548
-
549
-
550
- /**
551
- * Puts playlist data through sorting/filtering routine
552
- * and returns a playlist ready to be written as js.
553
- */
554
 
555
- function generate_playlist( $customkeys, $customvalues, $method = 1 ) {
556
-
557
- if ( count($customkeys) == 0 ) { return; }
558
-
559
- $theSplitMeta = $this->splitup_meta( $customkeys, $customvalues );
560
- $theAssembledMeta = $this->compare_swap( $theSplitMeta, $customkeys, $customvalues );
561
- $theTrackLists = $this->sort_tracks( $theAssembledMeta, $customkeys );
562
- $thePlayList = $this->remove_mp3remote( $theTrackLists );
563
- return $thePlayList;
 
564
  }
 
 
565
 
566
- /**
567
- * Splits up the custom keys/values into artists, titles, files arrays. if there's
568
- * no title then uses the filename.
569
- */
570
- function splitup_meta($customkeys, $customvalues) {
571
-
572
- // Captions
573
- foreach ( $customkeys as $i => $ckvalue ) {
574
- $splitkey = explode('.', $ckvalue, 2);
575
- $customArtists[$i] = ( empty($splitkey[1]) ) ? "" : $splitkey[1];
576
- }
577
- // Titles & Filenames
578
- foreach ( $customvalues as $i => $cvvalue ) {
579
- $checkfortitle = strpos($cvvalue, '@');
580
- if ( $checkfortitle === false ) {
581
- $customTitles[$i] = preg_replace( '/\.mp3$/i', "", $cvvalue );
582
- $customFilenames[$i] = $cvvalue;
583
- if ( $this->theSettings['hide_mp3extension'] == "false" ) {
584
- $customTitles[$i] .= ".mp3";
585
- }
586
- }
587
- else {
588
- $reversevalue = strrev($cvvalue);
589
- $splitvalue = explode('@', $reversevalue, 2);
590
- $customTitles[$i] = strrev($splitvalue[1]);
591
- $customFilenames[$i] = strrev($splitvalue[0]);
592
- }
593
-
594
- if ( preg_match('/^www\./i', $customFilenames[$i]) ) {
595
- $customFilenames[$i] = str_replace("www.", "", $customFilenames[$i]);
596
- if ( strpos($customFilenames[$i], "http://") === false ) {
597
- $customFilenames[$i] = "http://" .$customFilenames[$i];
598
- }
599
- }
600
  }
601
- $theSplitMeta = array( 'artists' => $customArtists,
602
- 'titles' => $customTitles,
603
- 'files' => $customFilenames );
604
- return $theSplitMeta;
605
  }
 
 
606
 
607
-
608
- /**
609
- * Returns prepared arrays ready for playlist. Looks for $customFilenames that exist in the library and grabs their full uri's,
610
- * otherwise adds default path or makes sure has an http when remote. Cleans up titles that are uri's, swaps titles and/or artists
611
- * for the library ones when required.
612
- */
613
- function compare_swap($theSplitMeta, $customkeys, $customvalues) {
614
-
615
- $library = ( empty($this->mp3LibraryI) ) ? $this->grab_library_info() : $this->mp3LibraryI;
616
- foreach ( $theSplitMeta['files'] as $i => $cfvalue )
617
- {
618
- $inLibraryID = ( $library['count'] == 0 ) ? false : array_search( $cfvalue, $library['filenames'] );
619
- $mp3haswww = strpos($cfvalue, 'http://');
620
 
621
- if ( $mp3haswww === false && $inLibraryID === false ) { // File is presumed default folder
622
- $theSplitMeta['files'][$i] = ( $this->theSettings['mp3_dir'] == "/" ) ? $this->theSettings['mp3_dir'] . $theSplitMeta['files'][$i] : $this->theSettings['mp3_dir'] . "/" . $theSplitMeta['files'][$i];
623
- }
624
- if ( $inLibraryID !== false ) { // File is in library
625
- $theSplitMeta['files'][$i] = $library['urls'][$inLibraryID];
626
- if ( $this->theSettings['playlist_UseLibrary'] == "true" ) { // Always use titles and captions
627
- $theSplitMeta['titles'][$i] = $library['titles'][$inLibraryID];
628
- $theSplitMeta['artists'][$i] = $library['excerpts'][$inLibraryID];
629
- }
630
- else { // prioritise meta titles and captions
631
- if ( preg_match('/^([0-9]+(\s)?)?mp3$/', $customkeys[$i]) == 1 ) {
632
- $theSplitMeta['artists'][$i] = $library['excerpts'][$inLibraryID];
633
- }
634
- if ( preg_match('/^([0-9]+(\s)?)?mp3\.$/', $customkeys[$i]) == 1 ) {
635
- $theSplitMeta['artists'][$i] = "";
636
  }
637
- if ( strpos($customvalues[$i], '@') === false ) {
638
- $theSplitMeta['titles'][$i] = $library['titles'][$inLibraryID];
639
- }
640
- }
641
- }
642
- if ( $mp3haswww !== false && $inLibraryID === false ) { // File is remote or user is over-riding default path
643
- if ( strpos($theSplitMeta['titles'][$i], 'http://') !== false || strpos($theSplitMeta['titles'][$i], 'www.') !== false ) {
644
- $theSplitMeta['titles'][$i] = strrchr($theSplitMeta['titles'][$i], "/");
645
- $theSplitMeta['titles'][$i] = str_replace( "/", "", $theSplitMeta['titles'][$i]);
646
  }
647
  }
 
648
  }
649
-
650
- $theAssembledMeta = array( 'artists' => $theSplitMeta['artists'],
651
- 'titles' => $theSplitMeta['titles'],
652
- 'files' => $theSplitMeta['files'] );
653
- return $theAssembledMeta;
654
  }
655
-
656
-
657
- /**
658
- * Sorts tracks by either the titles (if a-z ticked) or by the keys (only if there's
659
- * any numbering in them) and adds an ordering array
660
- */
661
- function sort_tracks($theAssembledMeta, $customkeys) {
662
 
663
- $x = 0;
664
- if ( $this->theSettings['playlist_AtoZ'] == "true" ) {
665
- natcasesort($theAssembledMeta['titles']);
666
- foreach ($theAssembledMeta['titles'] as $kt => $vt) {
667
- $indexorder[$x++] = $kt;
668
- }
669
- }
670
- else {
671
- $numberingexists = 0;
672
- foreach ( $customkeys as $ki => $val ) {
673
- if ( preg_match('/^[0-9]/', $val) ) {
674
- $numberingexists++;
675
- break;
676
- }
677
  }
678
- if ( $numberingexists > 0 ) {
679
- natcasesort($customkeys);
680
- foreach ( $customkeys as $kf => $vf ) {
681
- $indexorder[$x++] = $kf;
682
- }
683
- }
684
- else {
685
- foreach ( $theAssembledMeta['titles'] as $kt => $vt ) {
686
- $indexorder[$x++] = $kt;
687
- }
688
- }
689
  }
690
-
691
- $theTrackLists = array( 'artists' => $theAssembledMeta['artists'],
692
- 'titles' => $theAssembledMeta['titles'],
693
- 'files' => $theAssembledMeta['files'],
694
- 'order' => $indexorder );
695
- return $theTrackLists;
 
 
 
 
 
696
  }
697
-
698
-
699
- /**
700
- * Removes remote tracks from the playlist arrays if 'allow remote' is unticked.
701
- */
702
- function remove_mp3remote( $theTrackLists ) {
703
-
704
- if ( $this->theSettings['allow_remoteMp3'] == "false" ) {
705
-
706
- foreach ( $theTrackLists['order'] as $ik => $i ) {
707
- if ( strpos($theTrackLists['files'][$i], $this->Rooturl) !== false || strpos($theTrackLists['files'][$i], "http://") === false || (strpos($this->theSettings['mp3_dir'], "http://") !== false && strpos($theTrackLists['files'][$i], $this->theSettings['mp3_dir']) !== false) ) {
708
- $playlistFilenames[$i] = $theTrackLists['files'][$i];
709
- $playlistTitles[$i] = $theTrackLists['titles'][$i];
710
- $playlistArtists[$i] = $theTrackLists['artists'][$i];
711
- $indexorderAllowed[$x++] = $i;
712
- }
713
- }
714
- }
715
- else {
716
- $playlistFilenames = $theTrackLists['files'];
717
- $playlistTitles = $theTrackLists['titles'];
718
- $playlistArtists = $theTrackLists['artists'];
719
- $indexorderAllowed = $theTrackLists['order'];
720
- }
721
- $playlistTitles = str_replace('"', '\"', $playlistTitles); // Escapes quotes for the js array
722
- $nAllowed = count($playlistFilenames);
723
-
724
- $thePlayList = array( 'artists' => $playlistArtists,
725
- 'titles' => $playlistTitles,
726
- 'files' => $playlistFilenames,
727
- 'order' => $indexorderAllowed,
728
- 'count' => $nAllowed );
729
- return $thePlayList;
730
- }
731
-
732
-
733
- /**
734
- * Picks a random selection of x tracks from the playlist
735
- * while preserving track running order
736
- */
737
- function take_playlist_slice( $slicesize, $plist ) {
738
 
739
- if ( ($n = $plist['count']) < 1 ) { return; }
740
- $slicesize = trim($slicesize);
741
- if ( !empty($slicesize) && $slicesize >= 1 ) {
742
- if ( $n > 1 ) {
743
- if ( $slicesize > $n ) { $slicesize = $n; }
744
- $picklist = array();
745
- for ( $i = 0; $i < $n; $i++ ) { // make a numbers array
746
- $picklist[$i] = $i;
747
- }
748
- shuffle( $picklist );
749
- $picklist = array_slice( $picklist, 0, $slicesize ); // take a shuffled slice
750
- natsort( $picklist ); // reorder it
751
- $j=0;
752
- foreach ( $picklist as $i => $num ) { // use it to pick the random tracks
753
- $Ptitles[$j] = $plist['titles'][$num];
754
- $Partists[$j] = $plist['artists'][$num];
755
- $Pfiles[$j] = $plist['files'][$num];
756
- $Porder[$j] = $j;
757
- $j++;
758
- }
759
- $thePlayList = array( 'artists' => $Partists,
760
- 'titles' => $Ptitles,
761
- 'files' => $Pfiles,
762
- 'order' => $Porder,
763
- 'count' => $j );
764
- return $thePlayList;
765
- }
766
- }
767
  }
768
-
769
-
770
- /**
771
- * Looks for any active widget that isn't ruled out by the page filter.
772
- * Returns true if finds a widget that will be building.
773
- */
774
- function has_allowed_widget( $widgetname ) {
775
-
776
- $activeplayerwidgets = array();
777
- $needScripts = false;
778
- $name = "sidebars_widgets";
779
- $sidebarsettings = get_option($name);
780
- $n = 0;
781
 
782
- if ( empty($sidebarsettings) || is_null($sidebarsettings) ) {
783
- return false;
784
- }
785
- foreach ( $sidebarsettings as $key => $arr ) {
786
  if ( is_array($arr) && $key != "wp_inactive_widgets" ) {
787
  foreach ( $arr as $i => $widget ) {
788
- if ( strchr($widget, $widgetname) ) {
789
- $activeplayerwidgets[$n++] = $widget;
790
  }
791
  }
792
  }
793
  }
794
- $this->activeWidgets[] = $activeplayerwidgets; // Debug
795
-
796
- if ( !empty($activeplayerwidgets) ) {
797
- $name = "widget_". $widgetname;
798
- $widgetoptions = get_option($name);
799
- foreach ( $activeplayerwidgets as $i => $playerwidget ) {
800
- $widgetID = strrchr( $playerwidget, "-" );
801
- $widgetID = str_replace( "-", "", $widgetID );
802
- foreach ( $widgetoptions as $j => $arr ) {
803
- if ( $j == $widgetID ) { //echo "\n<!-- checking: mode ". $arr['widget_mode'] ."-->\n";
804
  if ( !$this->page_filter($arr['restrict_list'], $arr['restrict_mode']) ) {
805
- $needScripts = true;
806
  break 2;
807
  }
808
  }
809
  }
810
  }
811
  }
812
- return $needScripts;
813
  }
814
 
815
-
816
- /**
817
- * Builds mode-3 widget playlist
818
- */
819
  function make_widget_playlist( $instance ) {
820
-
821
- if ( $instance['widget_mode'] == "3" ) { // Play ID/Library/Folder slice
822
-
823
- // Grab meta from ID
824
- $customvalues = array();
825
- $customkeys = array();
826
- if ( !empty($instance['id_to_play']) && $instance['play_page'] == "true" ) {
827
- $id = trim($instance['id_to_play']);
828
- if ( $this->grab_Custom_Meta($id) > 0 ) {
829
- $customvalues = $this->postMetaValues;
830
- $customkeys = $this->postMetaKeys;
831
- }
832
  }
833
- // Add library
834
- $customvaluesB = array();
835
- $customkeysB = array();
836
- if ( $instance['play_library'] == "true" ) {
837
- $library = ( empty($this->mp3LibraryI) ) ? $this->grab_library_info() : $this->mp3LibraryI;
838
- if ( $library['count'] >= 1 ) {
839
- $counter = count($customvalues);
840
- $this->new_feed_keys( $library['filenames'], $library['excerpts'], ++$counter );
841
- $customvaluesB = $this->feedValues;
842
- $customkeysB = $this->feedKeys;
843
  }
844
  }
845
- foreach ( $customkeysB as $i => $v ) {
846
- array_push( $customvalues, $customvaluesB[$i] );
847
- array_push( $customkeys, $v );
848
- }
849
- // Add a local folder
850
- $customvaluesC = array();
851
- $customkeysC = array();
852
- if ( $instance['play_folder'] == "true" ) {
853
- $folder = ( $instance['folder_to_play'] == "" ) ? $this->theSettings['mp3_dir'] : $instance['folder_to_play'];
854
- $tracks = $this->grab_local_folder_mp3s( $folder );
855
- if ( $tracks !== true && $tracks !== false && count($tracks) > 0 ) {
856
- $counter = count($customvalues);
857
- $this->new_feed_keys( $tracks, '', ++$counter );
858
- $customvaluesC = $this->feedValues;
859
- $customkeysC = $this->feedKeys;
860
- foreach ( $customkeysC as $i => $v ) {
861
- array_push( $customvalues, $customvaluesC[$i] );
862
- array_push( $customkeys, $v );
863
- }
864
  }
865
  }
866
- if ( count($customvalues) < 1 ) { return false; }
867
- }
868
-
869
- // Make the playlist
870
- $thePlayList = $this->generate_playlist( $customkeys, $customvalues, 1 );
871
- if ( $thePlayList['count'] < 1 ) {
872
- return false;
873
  }
 
 
 
 
874
  return $thePlayList;
875
  }
876
 
877
-
878
- /**
879
- * Checks current page against widget page-filter settings.
880
- * returns true if widget should be filtered out.
881
- */
882
  function page_filter( $list, $mode ) {
883
-
884
  $f = false;
885
  if ( !empty($list) ) {
886
  $pagelist = explode( ",", $list );
@@ -889,7 +489,7 @@ if ( !class_exists("MP3j_Main") )
889
  $pagelist[$i] = str_replace( " ", "", $id );
890
  }
891
  }
892
- if ( !is_singular() ) { // Look for 'index' or 'archive' or 'search'
893
  if ( $mode == "include" ) {
894
  if ( is_home() ) {
895
  if ( strpos($list, "index") === false ) { $f = true; }
@@ -912,7 +512,7 @@ if ( !class_exists("MP3j_Main") )
912
  if ( strpos($list, "search") !== false ) { $f = true; }
913
  }
914
  }
915
- } else { // Check the id's against current page
916
  global $post;
917
  $thisID = $post->ID;
918
  if ( $mode == "include" ) {
@@ -920,93 +520,100 @@ if ( !class_exists("MP3j_Main") )
920
  foreach ( $pagelist as $i => $id ) {
921
  if ( $id == $thisID ) { $f = false; }
922
  }
 
 
 
 
 
 
923
  }
924
  if ( $mode == "exclude" ) {
925
  foreach ( $pagelist as $i => $id ) {
926
  if ( $id == $thisID ) { $f = true; }
927
  }
 
 
 
 
 
 
928
  }
929
  }
930
  }
931
  return $f;
932
  }
933
-
934
-
935
- /**
936
- * Checks whether current post ID content contains a shortcode.
937
- */
938
  function has_shortcodes ( $shtype = "" ) {
939
-
940
  global $wpdb;
941
  global $post;
942
- if ( empty($post->ID) ) { return false; }
943
-
 
944
  $content = $wpdb->get_results("SELECT post_content FROM $wpdb->posts WHERE ID=" . $post->ID );
945
  $con = $content[0]->post_content;
946
- if ( $shtype != "" ) { // check for it
947
- if ( strpos($con, $shtype) !== false ) { return true; }
 
 
948
  }
949
- else { // check for all
950
- if ( strpos($con, "[mp3-jplayer") !== false || strpos($con, "[mp3j") !== false || strpos($con, "[mp3t") !== false || strpos($con, "[mp3-album") !== false ) {
951
  return true;
952
  }
953
  }
954
  return false;
955
  }
956
 
957
-
958
- /**
959
- * Enqueues js and css.
960
- */
961
  function add_Scripts( $theme ) {
962
-
963
  $version = substr( get_bloginfo('version'), 0, 3);
964
-
965
- // jQuery and jQueryUI
966
- if ( $version >= 3.1 ) {
967
- wp_enqueue_script( 'jquery-ui-slider', '/wp-content/plugins/mp3-jplayer/js/ui.slider.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-mouse' ), '1.8.10' );
968
- }
969
- else { // pre WP 3.1
970
- wp_enqueue_script( 'jquery-ui-widget', '/wp-content/plugins/mp3-jplayer/js/ui.widget.js', array( 'jquery', 'jquery-ui-core' ), '1.8.10' );
971
- wp_enqueue_script( 'jquery-ui-mouse', '/wp-content/plugins/mp3-jplayer/js/ui.mouse.js', false, '1.8.10' );
972
- wp_enqueue_script( 'jquery-ui-slider', '/wp-content/plugins/mp3-jplayer/js/ui.slider.js', false, '1.8.10' );
 
 
 
 
 
 
973
  }
974
-
975
- // jPlayer and Plugin js
976
- wp_enqueue_script( 'jquery.jplayer.min', '/wp-content/plugins/mp3-jplayer/js/jquery.jplayer.min.js', false, '1.2.0' );
977
- wp_enqueue_script( 'mp3j-functions', '/wp-content/plugins/mp3-jplayer/js/mp3j-functions.js', false, '1.7.3' );
978
- wp_enqueue_script( 'mp3-jplayer', '/wp-content/plugins/mp3-jplayer/js/mp3-jplayer.js', false, '1.7.3' );
979
-
980
- // css
981
- if ( $theme == "styleF" ) { $themepath = "/wp-content/plugins/mp3-jplayer/css/player-silver.css"; }
982
- elseif ( $theme == "styleG" ) { $themepath = "/wp-content/plugins/mp3-jplayer/css/player-darkgrey.css"; }
983
- elseif ( $theme == "styleH" ) { $themepath = "/wp-content/plugins/mp3-jplayer/css/player-text.css"; }
984
  elseif ( $theme == "styleI" ) { $themepath = ( $this->theSettings['custom_stylesheet'] == "/" ) ? $this->newCSScustom : $this->theSettings['custom_stylesheet']; }
985
  else { $themepath = $theme; }
986
-
987
  $name = strrchr( $themepath, "/");
988
  $name = str_replace( "/", "", $name);
989
  $name = str_replace( ".css", "", $name);
990
  wp_enqueue_style( $name, $themepath );
991
 
992
- // Write popout css and js vars to header
993
- $PPcsslink = ( strpos($themepath, "http://") === false ) ? $this->WPinstallpath . $themepath : $themepath;
994
- $this->write_user_style( $PPcsslink, $theme );
 
995
  return;
996
  }
997
 
998
-
999
- /**
1000
- * Writes user colour settings
1001
- */
1002
- function write_user_style( $PPcsslink, $theme ) {
1003
-
1004
  $settings = $this->theSettings;
1005
- if ( $settings['use_fixed_css'] == "false" )
1006
- {
1007
- $pluginpath = $this->WPinstallpath . "/wp-content/plugins/mp3-jplayer/";
1008
- //$colours = $this->set_colours( $settings['colour_settings'], $settings['player_theme'], $pluginpath );
1009
- //$colours = $this->set_colours( $settings['colour_settings'], $this->stylesheet, $pluginpath );
1010
  $colours = $this->set_colours( $settings['colour_settings'], $theme, $pluginpath );
1011
 
1012
  $screen_opac = "; opacity:" . $colours['screen_opacity']*0.01 . "; filter:alpha(opacity=" . $colours['screen_opacity'] . ")";
@@ -1041,69 +648,91 @@ if ( !class_exists("MP3j_Main") )
1041
  $gif_opac = "opacity:" . $opac*0.01 . "; filter:alpha(opacity=" . $opac . ")";
1042
 
1043
  echo "\n\n<style type=\"text/css\">
1044
- div.player-track-title, div.player-artist, div.jp-play-time, div.jp-total-time, div.statusMI { color:" . $colours['screen_text_colour'] . "; } div.loadMI_mp3j, span.loadB_mp3j, span.load_mp3j { background:" . $colours['loadbar_colour'] . $loaderbar_opac . "; } div.bars_holder .ui-widget-header { background:" . $colours['posbar_colour'] . $posbar_tint . $posbar_opac ."; } div.MIsliderVolume .ui-widget-header, div.vol_mp3j .ui-widget-header { background:" . $vol_grad . "; } div.innertab { background:" . $colours['screen_colour'] . $screen_opac . "; } div.playlist-colour { background:" . $colours['playlist_colour'] . $playlist_opac . "; }
1045
- span.mp3-tint { background:" . $indicator . "; } span.mp3-finding, span.mp3-loading { " . $gif_opac . "; } ul.UL-MI_mp3j { background:" . $playlist_img . " !important; } ul.UL-MI_mp3j li { background:" . $playlist_divider . " !important; } ul.UL_mp3j li a, ul.UL-MI_mp3j li a { background-image:none !important; color:" . $colours['list_text_colour'] . " !important; } ul.UL-MI_mp3j li a:hover { background-image:none !important; color:" . $colours['list_hover_colour'] . " !important; background:" . $colours['listBGa_hover'] . " !important; } ul.UL-MI_mp3j li a.mp3j_A_current { background-image:none !important; color:" . $colours['list_current_colour'] . " !important; background:" . $colours['listBGa_current'] . " !important; } ul.UL_mp3j li a.mp3j_A_current { color:" . $colours['list_current_colour'] . " !important; }
1046
- div.img_mp3j a:hover img { border-color:" . $colours['list_current_colour'] . "; } span.mp3j-link-play, span.textbutton_mp3j:hover, div.transport-MI div { color:" . $colours['list_hover_colour'] . "; } span.mp3j-link-play:hover, span.textbutton_mp3j, div.transport-MI div:hover { color:" . $colours['list_current_colour'] . "; }
 
 
 
 
 
 
 
 
 
 
 
 
 
1047
  </style>";
1048
-
1049
  if ( $settings['enable_popout'] == "true" ) {
1050
- echo "\n<script type=\"text/javascript\">\n<!--
1051
- var foxPP_indicator_tint = \"" . $indicator . "\"; var foxPP_screentext = \"" . $colours['screen_text_colour'] . "\"; var foxPP_playlist_img = \"" . $playlist_img . "\"; var foxPP_playlist_colour = \"" . $colours['playlist_colour'] . "\"; var foxPP_playlist_opac = \"" . $colours['playlist_opacity']*0.01 . "\"; var foxPP_playlist_text = \"" . $colours['list_text_colour'] . "\"; var foxPP_playlist_current = \"" . $colours['list_current_colour'] . "\"; var foxPP_playlist_hover = \"" . $colours['list_hover_colour'] . "\"; var foxPP_playlist_divider = \"" . $playlist_divider . "\";
1052
- var foxPP_volume_grad = \"" . $vol_grad . "\"; var foxPP_screen_background = \"" . $colours['screen_colour'] . "\"; var foxPP_screen_opac = \"" . $colours['screen_opacity']*0.01 . "\"; var foxPP_loader_bar_colour = \"" . $colours['loadbar_colour'] . "\"; var foxPP_loader_bar_opac = \"" . $colours['loadbar_opacity']*0.01 . "\"; var foxPP_posbar_colour = \"" . $colours['posbar_colour'] . $posbar_tint . "\"; var foxPP_posbar_opac = \"" . $colours['posbar_opacity']*0.01 . "\"; var foxPP_listBGa_hover = \"" . $colours['listBGa_hover'] . "\"; var foxPP_listBGa_current = \"" . $colours['listBGa_current'] . "\";
1053
- //-->\n</script>";
1054
- }
1055
- }// End if not fixed_css
1056
-
1057
- if ( $settings['enable_popout'] == "true" ) {
1058
- $popout_bg = ( $settings['popout_background'] == "" ) ? "#fff" : $settings['popout_background'];
1059
- echo "\n<script type=\"text/javascript\">\n<!--
1060
- var popup_width = " . $settings['popout_width'] . "; var silence_mp3 = \"" . $pluginpath . "mp3/silence.mp3\"; var foxPP_bodycolour = \"" . $popout_bg . "\"; var foxPP_bodyimg = \"" . $settings['popout_background_image'] . "\"; var foxPP_stylesheet = \"" . $PPcsslink . "\"; var foxPP_fixedcss = \"" . $settings['use_fixed_css'] . "\"; var popup_maxheight = \"" . $settings['popout_max_height'] . "\";
1061
- //-->\n</script>\n\n";
1062
- }
1063
-
 
 
 
 
 
 
 
 
 
 
 
 
 
1064
  return;
1065
  }
1066
 
1067
-
1068
- /**
1069
- * Sets up the colours array prior to writing
1070
- * according to style / user colours / defaults.
1071
- */
1072
  function set_colours( $current, $style, $pluginpath ) {
1073
-
1074
  $silver = array( // defaults
1075
- 'screen_colour' => '#a7a7a7', 'screen_opacity' => '35',
1076
- 'loadbar_colour' => '#34A2D9', 'loadbar_opacity' => '70',
1077
- 'posbar_colour' => '#5CC9FF', 'posbar_opacity' => '80', 'posbar_tint' => 'softenT',
1078
- 'playlist_colour' => '#f1f1f1', 'playlist_opacity' => '100', 'playlist_tint' => 'darken1', 'list_divider' => 'med',
1079
- 'screen_text_colour' => '#525252',
1080
- 'list_text_colour' => '#525252', 'list_current_colour' => '#47ACDE', 'list_hover_colour' => '#768D99',
1081
- 'listBGa_current' => '#f4f4f4', 'listBGa_hover' => '#f7f7f7',
1082
- 'indicator' => 'colour',
1083
- 'volume_grad' => 'light' );
1084
-
1085
  $darkgrey = array( // defaults
1086
- 'screen_colour' => '#333', 'screen_opacity' => '15',
1087
- 'loadbar_colour' => '#34A2D9', 'loadbar_opacity' => '70',
1088
- 'posbar_colour' => '#5CC9FF', 'posbar_opacity' => '100', 'posbar_tint' => 'darken',
1089
- 'playlist_colour' => '#fafafa', 'playlist_opacity' => '100', 'playlist_tint' => 'darken2', 'list_divider' => 'none',
1090
- 'screen_text_colour' => '#525252',
1091
- 'list_text_colour' => '#525252', 'list_current_colour' => '#34A2D9', 'list_hover_colour' => '#768D99',
1092
- 'listBGa_current' => "transparent url('" . $pluginpath . "css/images/t40w.png') repeat", 'listBGa_hover' => "transparent url('" . $pluginpath . "css/images/t30w.png') repeat",
1093
- 'indicator' => 'colour',
1094
- 'volume_grad' => 'dark' );
1095
-
1096
  $text = array( // defaults
1097
- 'screen_colour' => 'transparent', 'screen_opacity' => '100',
1098
- 'loadbar_colour' => '#aaa', 'loadbar_opacity' => '20',
1099
- 'posbar_colour' => '#fff', 'posbar_opacity' => '58', 'posbar_tint' => 'none',
1100
- 'playlist_colour' => '#f6f6f6', 'playlist_opacity' => '100', 'playlist_tint' => 'lighten2', 'list_divider' => 'none',
1101
- 'screen_text_colour' => '#869399',
1102
- 'list_text_colour' => '#777', 'list_current_colour' => '#47ACDE', 'list_hover_colour' => '#829FAD',
1103
- 'listBGa_current' => 'transparent', 'listBGa_hover' => 'transparent',
1104
- 'indicator' => 'tint',
1105
- 'volume_grad' => 'dark' );
1106
-
1107
  switch( $style ) {
1108
  case "styleG": $colours = $darkgrey; break;
1109
  case "styleH": $colours = $text; break;
@@ -1116,194 +745,288 @@ if ( !class_exists("MP3j_Main") )
1116
  }
1117
  }
1118
  }
1119
- $this->Colours = $colours;
1120
  return $colours;
1121
  }
1122
-
1123
-
1124
- /**
1125
- * Writes player start-up js
1126
- */
1127
- function write_startup_vars() {
1128
-
1129
- echo "\n<script type=\"text/javascript\"><!--
1130
- var foxpathtoswf = \"" . $this->WPinstallpath . "/wp-content/plugins/mp3-jplayer/js\";
1131
- var foxpathtoimages = \"" . $this->WPinstallpath . "/wp-content/plugins/mp3-jplayer/css/images/\";
1132
- var FoxAnimSlider = " . $this->theSettings['animate_sliders'] . ";
1133
- var fox_playf = \"" . $this->theSettings['encode_files'] . "\";\n";
1134
- echo "//--></script>\n";
1135
- return;
1136
  }
1137
-
1138
-
1139
- /**
1140
- * Writes js playlist array.
1141
- */
1142
- function write_playlist( $thePlayList, $name = "noname" ) {
1143
-
1144
- if ( $thePlayList['count'] < 1 ) { return; }
1145
-
1146
- if ( $this->theSettings['encode_files'] == "true" ) {
1147
- foreach ( $thePlayList['files'] as $k => $file ) { $thePlayList['files'][$k] = base64_encode($file); }
1148
  }
1149
- $tracknumber = 1;
1150
- $addNo = $this->theSettings['add_track_numbering'];
1151
 
1152
- echo "\n<script type=\"text/javascript\"><!--\n var " . $name . " = [\n";
1153
- foreach ( $thePlayList['order'] as $ik => $i ) {
1154
- echo "{name: \"";
1155
- if ( $addNo == "true" ) { echo $tracknumber . ". "; }
1156
- echo $thePlayList['titles'][$i]. "\", mp3: \"" .$thePlayList['files'][$i]. "\", artist: \"" .$thePlayList['artists'][$i]. "\"}";
1157
- if ( $tracknumber != $thePlayList['count'] ) { echo ","; }
1158
- echo "\n";
1159
- $tracknumber++;
1160
  }
1161
- echo "];\n//--></script>\n\n";
1162
- return;
1163
  }
1164
-
1165
-
1166
- /**
1167
- * Writes [mp3-jplayer] player html
1168
- */
1169
- function write_primary_player( $PlayerName, $pID, $pos, $width, $mods = false, $dload, $title = "", $play_h, $stop_h, $prevnext, $height = "" ) {
1170
-
1171
- // Set position, width
1172
- $pad_t = $this->theSettings['paddings_top'];
1173
- $pad_b = $this->theSettings['paddings_bottom'];
1174
- $pad_i = $this->theSettings['paddings_inner'];
1175
- if ( $pos == "left" ) { $floater = "float:left; padding:" . $pad_t . " " . $pad_i . " " . $pad_b . " 0px;"; }
1176
- else if ( $pos == "right" ) { $floater = "float:right; padding:" . $pad_t . " 0px " . $pad_b . " " . $pad_i . ";"; }
1177
- else if ( $pos == "absolute" ) { $floater = "position:absolute;"; }
1178
- else if ( $pos == "rel-C" ) { $floater = "position:relative; padding:" . $pad_t . " 0px " . $pad_b . " 0px; margin:0px auto 0px auto;"; }
1179
- else if ( $pos == "rel-R" ) { $floater = "position:relative; padding:" . $pad_t . " 0px " . $pad_b . " 0px; margin:0px 0px 0px auto;"; }
1180
- else { $floater = "position: relative; padding:" . $pad_t . " 0px " . $pad_b . " 0px; margin:0px;"; }
1181
- $width = ( $width == "" ) ? " width:" . $this->theSettings['player_width'] . ";" : " width:" . $width . ";";
1182
-
1183
- // Prep other bits
1184
- $height = ( !empty($height) && $height != "" ) ? " style=\"height:" . $height . ";\"" : ""; //will just use css sheet setting if empty
1185
- $title = ( $title == "" ) ? "" : "<h2>" . $title . "</h2>";
1186
- $Tpad = ( $this->theSettings['add_track_numbering'] == "false" ) ? " style=\"left:16px;\"" : "";
1187
- $addclass = ( $mods ) ? " mp3j_widgetmods" : "";
1188
- $showpopoutbutton = ( $this->theSettings['enable_popout'] == "true" ) ? "visibility: visible;" : "visibility: hidden;";
1189
- $popouttext = ( $this->theSettings['player_theme'] == "styleH" && $this->theSettings['popout_button_title'] == "") ? "POP-OUT PLAYER" : $this->theSettings['popout_button_title'];
1190
- $PLscroll = ( $this->theSettings['max_list_height'] != "" ) ? " style=\"overflow:auto; max-height:" . $this->theSettings['max_list_height'] . "px;\"" : "";
1191
- $showMp3Link = ( $dload == "true" ) ? "visibility: visible;" : "visibility: hidden;";
1192
-
1193
- // Make playlist
1194
- $nooplaylist = "
1195
- <div class=\"listwrap_mp3j\" id=\"L_mp3j_" . $pID . "\"" . $PLscroll . ">
1196
- <div class=\"playlist-wrap-MI\">
1197
- <div class=\"playlist-colour\"></div>
1198
- <div class=\"playlist-wrap-MI\">
1199
- <ul class=\"UL-MI_mp3j" . $addclass . "\" id=\"UL_mp3j_" . $pID . "\"><li></li></ul>
1200
- </div>
1201
- </div>
1202
- </div>";
1203
-
1204
- // Assemble player
1205
- $player = "\n
1206
- <div class=\"wrap-MI\" style=\"" . $floater . $width . "\">" . $title . "
1207
- <div class=\"jp-innerwrap\">
1208
- <div class=\"innerx\"></div>
1209
- <div class=\"innerleft\"></div>
1210
- <div class=\"innerright\"></div>
1211
- <div class=\"innertab\"></div>\n
1212
- <div class=\"jp-interface\"" . $height . ">
1213
- <div id=\"T_mp3j_" . $pID . "\" class=\"player-track-title" . $addclass . "\"" . $Tpad . "></div>
1214
- <div id=\"C_mp3j_" . $pID . "\" class=\"player-artist" . $addclass . "\"></div>
1215
-
1216
- <div class=\"MIsliderVolume\" id=\"vol_mp3j_" . $pID . "\"></div>
1217
- <div class=\"bars_holder\">
1218
- <div class=\"loadMI_mp3j\" id=\"load_mp3j_" . $pID . "\"></div>
1219
- <div class=\"posbarMI_mp3j\" id=\"posbar_mp3j_" . $pID . "\"></div>
1220
- </div>
1221
- <div class=\"transport-MI\">" . $play_h . $stop_h . $prevnext . "</div>
1222
- <div id=\"P-Time-MI_" . $pID . "\" class=\"jp-play-time\"></div>
1223
- <div id=\"T-Time-MI_" . $pID . "\" class=\"jp-total-time\"></div>
1224
- <div id=\"statusMI_" . $pID . "\" class=\"statusMI" . $addclass . "\"></div>
1225
- <div id=\"download_mp3j_" . $pID . "\" class=\"dloadmp3-MI" . $addclass . "\" style=\"" . $showMp3Link . "\"></div>
1226
- <div class=\"playlist-toggle-MI" . $addclass . "\" id=\"playlist-toggle_" . $pID. "\" onclick=\"javascript:MI_toggleplaylist('', " . $pID . ");\">HIDE PLAYLIST</div>
1227
- <div class=\"mp3j-popout-MI" . $addclass . "\" style=\"" .$showpopoutbutton. "\" onclick=\"return launch_mp3j_popout('" . $this->WPinstallpath . "/wp-content/plugins/mp3-jplayer/popout-mp3j.php', " . $pID . ");\">" . $popouttext . "</div>
1228
- </div>
1229
- </div>
1230
- " . $nooplaylist . "
1231
- </div>\n";
1232
-
1233
- return $player;
1234
  }
 
 
 
 
 
 
 
 
 
 
 
 
1235
 
1236
 
1237
- /**
1238
- * Writes jPlayer div if needed
1239
- */
1240
- function write_jp_div() {
 
 
 
 
 
1241
 
1242
- if ( !$this->JPdiv ) {
1243
- echo "\n<div style=\"position:relative;\"><div id=\"jquery_jplayer\"></div></div>\n";
1244
- $this->JPdiv = true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1245
  }
1246
- }
1247
-
1248
- /**
1249
- * ADMIN - Adds css to settings page.
1250
- */
1251
- function mp3j_admin_header() {
1252
- $pluginpath = $this->WPinstallpath . "/wp-content/plugins/mp3-jplayer/";
1253
- echo "\n<link rel=\"stylesheet\" href=\"" . $pluginpath . "css/mp3j-admin.css\" type=\"text/css\" media=\"screen\" />\n";
1254
  }
 
 
 
 
1255
 
1256
- /**
1257
- * ADMIN - Adds js to settings page.
1258
- */
1259
- function mp3j_admin_footer() {
1260
- $pluginpath = $this->WPinstallpath . "/wp-content/plugins/mp3-jplayer/";
1261
- echo "\n<script type=\"text/javascript\" src=\"" . $pluginpath . "js/mp3j-admin.js\"></script>";
 
 
 
 
 
 
 
 
 
 
 
1262
  }
 
 
1263
 
1264
- /**
1265
- * ADMIN - preps path/uri before saving.
1266
- */
1267
- function prep_path ( $field ) {
1268
- $option = preg_replace( "!^.*www*\.!", "http://www.", $field );
1269
- if (strpos($option, "http://") === false) {
1270
- if (preg_match("!^/!", $option) == 0) {
1271
- $option = "/" . $option;
1272
- }
1273
- else { $option = preg_replace("!^/+!", "/", $option); }
1274
- }
1275
- if (preg_match("!.+/+$!", $option) == 1)
1276
- $option = preg_replace("!/+$!", "", $option);
1277
- if ($option == "")
1278
- $option = "/";
1279
- return $option;
 
 
 
 
 
 
1280
  }
 
 
 
 
 
1281
 
1282
- /**
1283
- * Debug output, prints vars/arrays to browser source view.
1284
- * Called via mp3j_debug() or admin settings.
1285
- */
1286
- function debug_info( $display = "" ) {
1287
-
1288
- echo "\n\n<!-- *** MP3-jPlayer ** " . "version " . $this->version_of_plugin;
1289
- if ( is_singular() ) { echo "\nTemplate: Singular "; }
1290
- if ( is_single() ) { echo "Post"; }
1291
- if ( is_page() ) { echo "Page"; }
1292
- if ( is_search() ) { echo "\nTemplate: Search"; }
1293
- if ( is_home() ) { echo "\nTemplate: Posts index"; }
1294
- if ( is_front_page() ) { echo " (Home page)"; }
1295
- if ( is_archive() ) { echo "\nTemplate: Archive"; }
1296
- echo "\nUse tags: ";
1297
- if ( $this->theSettings['disable_template_tag'] == "false" ) { echo "Yes"; }
1298
- else { echo "No"; }
1299
- echo "\nPlayer count: " . $this->Player_ID;
1300
- echo "\n\nAll active widgets:\n"; print_r( $this->activeWidgets );
1301
- if ( empty($this->mp3LibraryI) ) { $this->grab_library_info(); }
1302
- echo "\n\nMP3's in Media Library: " . $this->mp3LibraryI['count'];
1303
- echo "\n\nAdmin Settings:\n"; print_r($this->theSettings);
1304
- echo "\n\n" . $this->debug_string . "\n-->\n\n";
1305
- return;
1306
- }
1307
- } //end class
1308
- }
 
 
 
 
 
 
1309
  ?>
1
  <?php
2
+ if ( !class_exists("MP3j_Main") ) { class MP3j_Main {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
+ // ---------------------- Update Me
5
+ var $version_of_plugin = "1.8";
6
+ var $M_no = 0;
7
+ var $F_no = 0;
8
+ var $S_no = 0;
9
+ var $Caller = false;
10
+ var $S_autotrack = 0;
11
+ var $Player_ID = 0;
12
+ var $scriptsflag = "false";
13
+ var $JPdiv = false;
14
+ var $postID = false;
15
+ var $F_listname = false;
16
+ var $F_listlength = false;
17
+ var $LibraryI = false;
18
+ var $JS = array();
19
+ var $dbug = array();
20
+ var $adminOptionsName = "mp3FoxAdminOptions";
21
+ var $theSettings = array();
22
+ var $Rooturl;
23
+ var $WPinstallpath;
24
+ var $textdomain = "mp3-jplayer";
25
+ var $newCSScustom;
26
+ var $stylesheet = "";
27
+ var $folder_order = "asc";
28
+ var $PP_css_url = "";
29
+ var $PP_css_settings = "";
30
+ var $PluginFolder = "";
31
 
32
+ /* Set some vars and make compatible */
33
+ function MP3j_Main () {
34
+ $this->WPinstallpath = get_bloginfo('wpurl');
35
+ //$this->theSettings = $this->getAdminOptions();
36
+ $this->Rooturl = preg_replace("/^www\./i", "", $_SERVER['HTTP_HOST']);
37
+ $this->PluginFolder = plugins_url('', __FILE__);
38
+ $this->newCSScustom = $this->PluginFolder . "/css/player-silverALT.css";
39
+ $this->theSettings = $this->getAdminOptions();
40
+ }
41
+
42
+ /* Returns library mp3 filenames, titles,
43
+ excerpts, content, uri's, id's in indexed arrays. */
44
+ function grab_library_info() {
45
+ if ( !$this->LibraryI ) {
46
+ $direction = $this->theSettings['library_direction'];
47
+ switch( $this->theSettings['library_sortcol'] ) {
48
+ case "date":
49
+ $order = " ORDER BY post_date " . $direction;
50
+ break;
51
+ case "title":
52
+ $order = " ORDER BY post_title " . $direction;
53
+ break;
54
+ case "caption":
55
+ $order = " ORDER BY post_excerpt " . $direction . ", post_title " . $direction;
56
+ break;
57
+ default:
58
+ $order = "";
 
 
 
59
  }
60
+ global $wpdb;
61
+ $audio = $wpdb->get_results("SELECT DISTINCT guid, post_title, post_excerpt, post_content, ID FROM $wpdb->posts WHERE post_mime_type = 'audio/mpeg'" . $order);
62
 
63
+ if ( !empty($audio) ) {
64
+ foreach ( $audio as $obj ) {
65
+ if ( preg_match("!\.mp3$!i", $obj->guid) ) { //audio/mpeg has multiple file types so grab just mp3's
66
+ $Titles[] = $obj->post_title;
67
+ $Excerpts[] = $obj->post_excerpt;
68
+ $Descriptions[] = $obj->post_content;
69
+ $PostIDs[] = $obj->ID;
70
+ $URLs[] = $obj->guid;
71
+ $File = strrchr( $obj->guid, "/");
72
+ $Filenames[] = str_replace( "/", "", $File);
73
+ }
74
+ }
75
+ if ( !empty($Filenames) ) {
76
+ if ( $this->theSettings['library_sortcol'] == "file" ) {
77
+ natcasesort($Filenames);
78
+ if ( $direction == "DESC" ) {
79
+ $Filenames = array_reverse($Filenames, true);
80
+ }
81
+ }
82
+ $c = count($Filenames);
83
+ $this->LibraryI = array(
84
+ 'filenames' => $Filenames,
85
+ 'titles' => $Titles,
86
+ 'urls' => $URLs,
87
+ 'excerpts' => $Excerpts,
88
+ 'descriptions' => $Descriptions,
89
+ 'postIDs' => $PostIDs,
90
+ 'count' => $c
91
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
93
  }
94
+ //$this->dbug['arr']['Library'] = $this->LibraryI;
95
  }
96
+ return $this->LibraryI;
97
+ }
98
 
99
+ /* Reads mp3's from a local
100
+ directory, returns array of uri's */
101
+ function grab_local_folder_mp3s( $folder ) {
102
+ $items = array();
103
+ if ( ($lp = strpos($folder, $this->Rooturl)) || preg_match("!^/!", $folder) ) {
104
+ if ( $lp !== false ) {
105
+ $fp = str_replace($this->Rooturl, "", $folder);
106
+ $fp = str_replace("www.", "", $fp);
107
+ $fp = str_replace("http://", "", $fp);
108
+ $fp = str_replace("https://", "", $fp);
109
+ } else {
110
+ $fp = $folder;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  }
112
+ $path = $_SERVER['DOCUMENT_ROOT'] . $fp;
113
+ if ($handle = @opendir($path)) {
114
+ $j=0;
115
+ while (false !== ($file = readdir($handle))) {
116
+ if ( $file != '.' && $file != '..' && filetype($path.'/'.$file) == 'file' && preg_match("!\.mp3$!i", $file) ) {
117
+ $items[$j++] = $file;
118
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
119
  }
120
+ closedir($handle);
121
+ if ( ($c = count($items)) > 0 ) {
122
+ natcasesort($items);
123
+ if ( $this->folder_order != "asc" ) {
124
+ $items = array_reverse($items, true);
 
 
125
  }
126
+ $fp = preg_replace( "!/+$!", "", $fp );
127
+ foreach ( $items as $i => $mp3 ) {
128
+ $items[$i] = "http://" . $_SERVER['HTTP_HOST'] . $fp . "/" . $mp3;
 
 
 
 
129
  }
 
 
 
 
 
 
130
  }
131
+ $this->dbug['str'] .= "\nRead folder - Done, " . $c . "mp3(s) in folder http://" . $_SERVER['HTTP_HOST'] . $fp;
132
+ return $items; //the tracks array
133
+ } else {
134
+ $this->dbug['str'] .= "\nRead folder - Couldn't open local folder, check path/permissions to http://" . $_SERVER['HTTP_HOST'] . $fp;
135
+ return true;
136
  }
137
+ } else {
138
+ $this->dbug['str'] .= "\nRead folder - Path was remote or unreadable." . $fp;
139
+ return false;
 
140
  }
141
+ }
142
 
143
+ /* Makes keys/values from a post's meta,
144
+ returns K's (captions) and V's (title@file). */
145
+ function meta_to_KVs( $id = "" ) {
146
+ if ( $id == "" ) {
 
 
 
 
 
 
 
147
  global $post;
148
+ if ( $post->ID == "" ) { return false; }
149
+ $id = $post->ID;
150
+ }
151
+ global $wpdb;
152
+ $postmeta = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE post_id =" .$id. " AND meta_value!='' ORDER BY meta_key ASC");
153
+
154
+ if ( !empty($postmeta) ) {
155
+ $Ks = array();
156
+ $Vs = array();
157
+ foreach ( $postmeta as $obj ) {
158
+ if ( preg_match('/^([0-9]+(\s)?)?mp3(\..*)?$/', $obj->meta_key) == 1 ) {
159
+ $Ks[] = $obj->meta_key;
160
+ $Vs[] = $obj->meta_value;
 
 
 
 
 
 
 
 
161
  }
162
  }
163
+ if ( !empty($Ks) ) { //sort by keys (user numbering), clean up captions, get feeds
164
+ natcasesort($Ks);
165
+ foreach ($Ks as $i => $k ) {
166
+ $splitkey = explode('.', $k, 2);
167
+ $ks[] = ( empty($splitkey[1]) ) ? "" : $splitkey[1];
168
+ $vs[] = $Vs[$i];
169
+ }
170
+ $meta = $this->collect_delete_feeds( $vs, $ks ); //adds the feeds
171
+ return array(
172
+ 'Ks' => $meta['Ks'],
173
+ 'Vs' => $meta['Vs']
174
+ );
 
175
  }
176
+ }
177
+ return false;
178
+ }
179
+
180
+ /* Adds/makes playlist from comma separated
181
+ lists of tracks/captions. Returns a playlist. */
182
+ function string_to_playlist( $Vstring, $Kstring = "", $images = "", $imglinks = "" ) {
183
+ $V_sep = $this->theSettings['f_separator']; // tracks separator
184
+ $K_sep = $this->theSettings['c_separator']; // captions separator
185
+ //clean strings
186
+ $Vstring = str_replace( array("</p>", "<p>", "<br />", "<br>", "<br/>", chr(10), chr(13)), "", $Vstring );
187
+ $Vstring = trim( $Vstring );
188
+ $Vstring = trim( $Vstring, $V_sep );
189
+ if ( empty($Vstring) ) {
190
+ return false;
191
  }
192
+ $Kstring = str_replace( array("</p>", "<p>", "<br />", "<br>", "<br/>", chr(10), chr(13)), "", $Kstring );
193
+ $Kstring = trim( $Kstring );
194
+ $Kstring = trim( $Kstring, $K_sep );
195
+ //make V's
196
+ $Vs = explode( $V_sep, $Vstring );
197
+ foreach ( $Vs as $i => $file ) {
198
+ $Vs[$i] = trim($file);
 
 
 
 
 
 
 
 
 
 
 
199
  }
200
+ //make K's
201
+ $ks = array();
202
+ if ( !empty($Kstring) ) {
203
+ $ks = explode( $K_sep, $Kstring );
204
+ }
205
+ foreach ( $Vs as $i => $v ) {
206
+ $Ks[$i] = (empty($ks[$i])) ? "" : trim($ks[$i]);
207
+ }
208
+ //make images array
209
+ $imgs = array();
210
+ if ( !empty($images) ) {
211
+ $images = trim( $images, ',' );
212
+ $imgs = explode( ',', $images );
213
+ }
214
+ foreach ( $Vs as $i => $v ) {
215
+ $IMGs[$i] = (empty($imgs[$i])) ? "" : trim($imgs[$i]);
216
+ }
217
+ //make image urls array
218
+ $iurls = array();
219
+ if ( !empty($imglinks) ) {
220
+ $imglinks = trim( $imglinks, ',' );
221
+ $iurls = explode( ',', $imglinks );
222
+ }
223
+ foreach ( $Vs as $i => $v ) {
224
+ $IURLs[$i] = (empty($iurls[$i])) ? "" : trim($iurls[$i]);
225
+ }
226
+ //add any feeds
227
+ $meta = $this->collect_delete_feeds( $Vs, $Ks );
228
+ //make playlist
229
+ $pl = $this->generate_playlist( $meta['Ks'], $meta['Vs'], $IMGs, $IURLs );
230
+ if ( $pl['count'] < 1 ) {
231
+ return false;
232
+ }
233
+ return $pl;
234
+ }
235
 
236
+ /* Adds any FEEDs into K's/V's */
237
+ function collect_delete_feeds( $values, $keys ){
238
+ foreach ( $values as $i => $val ) {
239
+ if ( preg_match( "!^FEED:(DF|ID|LIB|/.*)$!i", $val ) == 1 ) { // keep ID for backwards compat
240
+ $feedV = stristr( $val, ":" );
241
+ $feedV = str_replace( ":", "", $feedV );
242
+ $feedK = ( !empty($keys[$i]) ) ? $keys[$i] : "";
243
+ $fed = $this->get_feed( $feedK, $feedV ); // gets the FEED tracks
244
+ foreach ( $fed['Vs'] as $j => $v ) {
245
+ $Vs[] = $v;
246
+ $Ks[] = $fed['Ks'][$j];
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
  }
248
+ } else {
249
+ $Vs[] = $val;
250
+ $Ks[] = $keys[$i];
251
+ }
252
  }
253
+ return array(
254
+ 'Vs' => $Vs,
255
+ 'Ks' => $Ks
256
+ );
257
+ }
258
 
259
+ /* Takes a FEED key/value and makes
260
+ tracks/captions arrays accordingly */
261
+ function get_feed( $feedK, $feedV ) {
262
+
263
+ $Vs = array();
264
+ $Ks = array();
265
+
266
+ if ( $feedV == "ID" ) {
267
+ // do nothing
268
+ // since 1.5
269
+ } elseif ( $feedV == "LIB" ) {
270
+ $lib = $this->grab_library_info();
271
+ if ( $lib ) {
272
+ foreach ( $lib['filenames'] as $j => $x ) {
273
+ $Vs[] = $x;
274
+ $Ks[] = ( empty($feedK) ) ? $lib['excerpts'][$j] : $feedK;
275
  }
276
  }
277
+ } else { //assume folder
278
+ if ( $feedV == "DF" ) {
279
+ $feedV = $this->theSettings['mp3_dir'];
 
 
 
 
 
 
 
 
 
 
280
  }
281
+ $tracks = $this->grab_local_folder_mp3s( $feedV );
282
+ if ( $tracks !== true && $tracks !== false && count($tracks) > 0 ) {
283
+ foreach ( $tracks as $j => $x ) {
284
+ $Vs[] = $x;
285
+ $Ks[] = $feedK;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
286
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
  }
 
288
  }
289
+ return array(
290
+ 'Vs' => $Vs,
291
+ 'Ks' => $Ks
292
+ );
293
+ }
 
294
 
295
+ /* Makes a playlist
296
+ from K's and V's */
297
+ function generate_playlist( $ks, $vs, $IMGs = array(), $IURLs = array() ) {
298
+ if ( count($vs) == 0 ) {
299
+ return false;
300
+ }
301
+ $Ts = $this->splitout_KVs( $ks, $vs );
302
+ $playlist = $this->compare_swap( $Ts, $vs, $IMGs, $IURLs );
303
+ if ( $this->theSettings['allow_remoteMp3'] == "false" ) {
304
+ $playlist = $this->remove_mp3remote( $playlist );
305
  }
306
+ return ( empty($playlist) ) ? false : $playlist;
307
+ }
308
 
309
+ /* Splits out V's
310
+ into file and title arrays */
311
+ function splitout_KVs( $ks, $vs ) {
312
+ $vs = str_replace( array(chr(10), chr(13)), "", $vs ); //remove \n and \r characters
313
+ foreach ( $vs as $i => $v ) {
314
+ $v_rev = strrev($v);
315
+ $v_split = explode('@', $v_rev, 2);
316
+ //filenames
317
+ $Filenames[$i] = strrev($v_split[0]);
318
+ if ( preg_match('/^www\./i', $Filenames[$i]) && $Filenames[$i] != "www.mp3" ) {
319
+ $Filenames[$i] = "http://" . $Filenames[$i];
320
+ }
321
+ //titles
322
+ if ( empty($v_split[1]) ) {
323
+ $Titles[$i] = ( $this->theSettings['hide_mp3extension'] == "true" ) ? preg_replace( '/(\.mp3|\.m4a)$/i', "", $Filenames[$i] ) : $Filenames[$i];
324
+ } else {
325
+ $Titles[$i] = strrev($v_split[1]);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
326
  }
 
 
 
 
327
  }
328
+ return array( 'artists' => $ks, 'titles' => $Titles, 'files' => $Filenames );
329
+ }
330
 
331
+ /* Does caption, title, path
332
+ swapping and cleaning */
333
+ function compare_swap( $Ts, $vs, $IMGs, $IURLs ) {
334
+ $lib = $this->grab_library_info();
335
+ foreach ( $Ts['files'] as $i => $file ) {
336
+ $lib_ID = ( $lib === false ) ? false : array_search( $file, $lib['filenames'] );
337
+ $http = ( strpos($file, 'http://') === false && strpos($file, 'https://') === false ) ? false : true;
 
 
 
 
 
 
338
 
339
+ if ( $lib_ID !== false ) { //in library
340
+ $Ts['files'][$i] = $lib['urls'][$lib_ID];
341
+ $Ts['titles'][$i] = ( strpos($vs[$i], '@') === false ) ? $lib['titles'][$lib_ID] : $Ts['titles'][$i];
342
+ $Ts['artists'][$i] = ( $Ts['artists'][$i] == "" ) ? $lib['excerpts'][$lib_ID] : $Ts['artists'][$i];
343
+ } else {
344
+ if ( $http ) { //uri
345
+ if ( strpos($Ts['titles'][$i], 'http://') !== false || strpos($Ts['titles'][$i], 'https://') !== false ) {
346
+ $Ts['titles'][$i] = strrchr($Ts['titles'][$i], "/");
347
+ $Ts['titles'][$i] = str_replace( "/", "", $Ts['titles'][$i]);
 
 
 
 
 
 
348
  }
349
+ } else { //default path
350
+ $Ts['files'][$i] = ( $this->theSettings['mp3_dir'] == "/" ) ? $this->theSettings['mp3_dir'] . $Ts['files'][$i] : $this->theSettings['mp3_dir'] . "/" . $Ts['files'][$i];
 
 
 
 
 
 
 
351
  }
352
  }
353
+ $Order[] = $i;
354
  }
355
+ $Ts['titles'] = str_replace('"', '\"', $Ts['titles']); //escape quotes for js
356
+ $n = count($Ts['files']);
357
+ return array( 'artists' => $Ts['artists'], 'titles' => $Ts['titles'], 'files' => $Ts['files'], 'order' => $Order, 'count' => $n, 'images' => $IMGs, 'imgurls' => $IURLs );
 
 
358
  }
 
 
 
 
 
 
 
359
 
360
+ /* Removes remote uri's.
361
+ if the admin option is not ticked */
362
+ function remove_mp3remote( $Ts ) {
363
+ foreach ( $Ts['order'] as $ik => $i ) {
364
+ if ( strpos($Ts['files'][$i], $this->Rooturl) !== false
365
+ || (strpos($Ts['files'][$i], "http://") === false && strpos($Ts['files'][$i], "https://") === false)
366
+ || (strpos($this->theSettings['mp3_dir'], "http://") !== false && strpos($Ts['files'][$i], $this->theSettings['mp3_dir']) !== false) ) {
367
+ $Files[$i] = $Ts['files'][$i];
368
+ $Titles[$i] = $Ts['titles'][$i];
369
+ $Captions[$i] = $Ts['artists'][$i];
370
+ $IMGs[$i] = $Ts['images'][$i];
371
+ $IURLs[$i] = $Ts['imgurls'][$i];
372
+ $Order[] = $i;
 
373
  }
 
 
 
 
 
 
 
 
 
 
 
374
  }
375
+ $n = count($Files);
376
+ return array( 'artists' => $Captions, 'titles' => $Titles, 'files' => $Files, 'order' => $Order, 'count' => $n, 'images' => $IMGs, 'imgurls' => $IURLs );
377
+ }
378
+
379
+ /* Writes jPlayer
380
+ div if needed */
381
+ function write_jp_div() {
382
+ if ( !$this->JPdiv ) {
383
+ echo "\n<div style=\"position:relative;overflow:hidden;\"><div id=\"jquery_jplayer\" style=\"left:-999em;\"></div></div>\n";
384
+ $this->JPdiv = true;
385
+ $this->dbug['str'] .= "\n(Added jp div)";
386
  }
387
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
388
 
389
+ /* Picks a random selection of n tracks from
390
+ the playlist while preserving track running order. */
391
+ function pick_from_playlist( $slicesize, $plist ) {
392
+ $no = trim($slicesize);
393
+ if ( $no > $plist['count'] ) { $no = $plist['count']; }
394
+ $order = $plist['order'];
395
+ shuffle($order);
396
+ $order = array_slice($order, 0, $no);
397
+ natsort($order);
398
+ $plist['order'] = array_values($order);
399
+ $plist['count'] = count($plist['order']);
400
+ return $plist;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
401
  }
402
+
403
+ /* Looks for any active widget that isn't ruled out by
404
+ the page filter. Returns true if finds a widget that will be building. */
405
+ function has_allowed_widget( $type ) {
406
+ $SBsettings = get_option('sidebars_widgets');
407
+ if ( empty($SBsettings) || is_null($SBsettings) ) { return false; }
 
 
 
 
 
 
 
408
 
409
+ $active = array();
410
+ $scripts = false;
411
+ foreach ( $SBsettings as $key => $arr ) {
 
412
  if ( is_array($arr) && $key != "wp_inactive_widgets" ) {
413
  foreach ( $arr as $i => $widget ) {
414
+ if ( strchr($widget, $type) ) {
415
+ $active[] = $widget;
416
  }
417
  }
418
  }
419
  }
420
+ $this->dbug['arr'][] = $active;
421
+ if ( !empty($active) ) {
422
+ $name = "widget_". $type;
423
+ $ops = get_option($name);
424
+ foreach ( $active as $i => $widget ) {
425
+ $wID = strrchr( $widget, "-" );
426
+ $wID = str_replace( "-", "", $wID );
427
+ foreach ( $ops as $j => $arr ) {
428
+ if ( $j == $wID ) {
 
429
  if ( !$this->page_filter($arr['restrict_list'], $arr['restrict_mode']) ) {
430
+ $scripts = true;
431
  break 2;
432
  }
433
  }
434
  }
435
  }
436
  }
437
+ return $scripts;
438
  }
439
 
440
+ /* Builds mode-3 widget
441
+ playlist. */
 
 
442
  function make_widget_playlist( $instance ) {
443
+ $Vs = array();
444
+ $Ks = array();
445
+ // Grab meta from ID
446
+ if ( !empty($instance['id_to_play']) && $instance['play_page'] == "true" ) {
447
+ $id = trim($instance['id_to_play']);
448
+ if ( ($meta = $this->meta_to_KVs($id)) ) {
449
+ $Vs = $meta['Vs'];
450
+ $Ks = $meta['Ks'];
 
 
 
 
451
  }
452
+ }
453
+ // Add library
454
+ if ( $instance['play_library'] == "true" ) {
455
+ $library = $this->grab_library_info();
456
+ if ( $library['count'] >= 1 ) {
457
+ foreach ( $library['filenames'] as $i => $v ) {
458
+ $Vs[] = $v;
459
+ $Ks[] = $library['excerpts'][$i];
 
 
460
  }
461
  }
462
+ }
463
+ // Add a local folder
464
+ if ( $instance['play_folder'] == "true" ) {
465
+ $folder = ( $instance['folder_to_play'] == "" ) ? $this->theSettings['mp3_dir'] : $instance['folder_to_play'];
466
+ $tracks = $this->grab_local_folder_mp3s( $folder );
467
+ if ( $tracks !== true && $tracks !== false && count($tracks) > 0 ) {
468
+ foreach ( $tracks as $i => $v ) {
469
+ $Vs[] = $v;
470
+ $Ks[] = "";
 
 
 
 
 
 
 
 
 
 
471
  }
472
  }
 
 
 
 
 
 
 
473
  }
474
+ if ( count($Vs) < 1 ) { return false; }
475
+ // Make the playlist
476
+ $thePlayList = $this->generate_playlist( $Ks, $Vs );
477
+ if ( $thePlayList['count'] < 1 ) { return false; }
478
  return $thePlayList;
479
  }
480
 
481
+ /* Checks current page against widget page-filter settings.
482
+ returns true if widget should be filtered out. */
 
 
 
483
  function page_filter( $list, $mode ) {
 
484
  $f = false;
485
  if ( !empty($list) ) {
486
  $pagelist = explode( ",", $list );
489
  $pagelist[$i] = str_replace( " ", "", $id );
490
  }
491
  }
492
+ if ( !is_singular() ) { //look for 'index' or 'archive' or 'search'
493
  if ( $mode == "include" ) {
494
  if ( is_home() ) {
495
  if ( strpos($list, "index") === false ) { $f = true; }
512
  if ( strpos($list, "search") !== false ) { $f = true; }
513
  }
514
  }
515
+ } else { //check the id's against current page
516
  global $post;
517
  $thisID = $post->ID;
518
  if ( $mode == "include" ) {
520
  foreach ( $pagelist as $i => $id ) {
521
  if ( $id == $thisID ) { $f = false; }
522
  }
523
+
524
+ if ( is_single() ) {
525
+ if ( strpos($list, "post") !== false ) {
526
+ $f = false;
527
+ }
528
+ }
529
  }
530
  if ( $mode == "exclude" ) {
531
  foreach ( $pagelist as $i => $id ) {
532
  if ( $id == $thisID ) { $f = true; }
533
  }
534
+
535
+ if ( is_single() ) {
536
+ if ( strpos($list, "post") !== false ) {
537
+ $f = true;
538
+ }
539
+ }
540
  }
541
  }
542
  }
543
  return $f;
544
  }
545
+
546
+ /* Checks whether current post ID
547
+ content contains a shortcode. */
 
 
548
  function has_shortcodes ( $shtype = "" ) {
 
549
  global $wpdb;
550
  global $post;
551
+ if ( empty($post->ID) ) {
552
+ return false;
553
+ }
554
  $content = $wpdb->get_results("SELECT post_content FROM $wpdb->posts WHERE ID=" . $post->ID );
555
  $con = $content[0]->post_content;
556
+ if ( $shtype != "" ) { //check for it
557
+ if ( strpos($con, $shtype) !== false ) {
558
+ return true;
559
+ }
560
  }
561
+ else { //check for all player making shortcodes
562
+ if ( strpos($con, "[mp3-jplayer") !== false || strpos($con, "[mp3j") !== false || strpos($con, "[mp3t") !== false || strpos($con, "[mp3-popout") !== false ) {
563
  return true;
564
  }
565
  }
566
  return false;
567
  }
568
 
569
+ /* Enqueues js
570
+ and css scripts. */
 
 
571
  function add_Scripts( $theme ) {
 
572
  $version = substr( get_bloginfo('version'), 0, 3);
573
+ //jquery and jquery-ui
574
+ if ( $this->theSettings['disable_jquery_libs'] != "yes" ) {
575
+ if ( $version >= 3.1 ) {
576
+ wp_enqueue_script( 'jquery-ui-slider', $this->PluginFolder . '/js/ui.slider.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-mouse' ), '1.8.10' );
577
+ } else { //pre WP 3.1
578
+ wp_enqueue_script( 'jquery-ui-widget', $this->PluginFolder . '/js/ui.widget.js', array( 'jquery', 'jquery-ui-core' ), '1.8.10' );
579
+ wp_enqueue_script( 'jquery-ui-mouse', $this->PluginFolder . '/js/ui.mouse.js', false, '1.8.10' );
580
+ wp_enqueue_script( 'jquery-ui-slider', $this->PluginFolder . '/js/ui.slider.js', false, '1.8.10' );
581
+ }
582
+ if ( $this->theSettings['touch_punch_js'] == "true" ) { // add ui patch for touch screens
583
+ wp_enqueue_script( 'jquery-touch-punch', $this->PluginFolder . '/js/jquery.ui.touch-punch.min.js', false, '0.2.2' );
584
+ }
585
+ $this->dbug['str'] .= "\nScript request added (jQuery & UI)";
586
+ } else {
587
+ $this->dbug['str'] .= "\nScripts are OFF (jQuery & UI)";
588
  }
589
+ //jplayer and plugin js
590
+ wp_enqueue_script( 'jquery.jplayer.min', $this->PluginFolder . '/js/jquery.jplayer.min.js', false, '1.2.0' );
591
+ wp_enqueue_script( 'mp3-jplayer-176', $this->PluginFolder . '/js/mp3-jplayer-1.8.js', false, '1.8' );
592
+ //css
593
+ if ( $theme == "styleF" ) { $themepath = $this->PluginFolder . "/css/players-1-8-silver.css"; }
594
+ elseif ( $theme == "styleG" ) { $themepath = $this->PluginFolder . "/css/players-1-8-dark.css"; }
595
+ elseif ( $theme == "styleH" ) { $themepath = $this->PluginFolder . "/css/players-1-8-text.css"; }
 
 
 
596
  elseif ( $theme == "styleI" ) { $themepath = ( $this->theSettings['custom_stylesheet'] == "/" ) ? $this->newCSScustom : $this->theSettings['custom_stylesheet']; }
597
  else { $themepath = $theme; }
 
598
  $name = strrchr( $themepath, "/");
599
  $name = str_replace( "/", "", $name);
600
  $name = str_replace( ".css", "", $name);
601
  wp_enqueue_style( $name, $themepath );
602
 
603
+ $this->dbug['str'] .= "\nScript request added (MP3-jPlayer and css)\n";
604
+
605
+ $this->write_user_style( $theme );
606
+ $this->PP_css_url = ( strpos($themepath, "http://") === false ) ? $this->WPinstallpath . $themepath : $themepath;
607
  return;
608
  }
609
 
610
+ /* Writes user colour settings, and
611
+ creates js property of popout css. */
612
+ function write_user_style( $theme ) {
 
 
 
613
  $settings = $this->theSettings;
614
+ if ( $settings['use_fixed_css'] == "false" ) {
615
+ //$pluginpath = $this->WPinstallpath . "/wp-content/plugins/mp3-jplayer/";
616
+ $pluginpath = $this->PluginFolder . "/";
 
 
617
  $colours = $this->set_colours( $settings['colour_settings'], $theme, $pluginpath );
618
 
619
  $screen_opac = "; opacity:" . $colours['screen_opacity']*0.01 . "; filter:alpha(opacity=" . $colours['screen_opacity'] . ")";
648
  $gif_opac = "opacity:" . $opac*0.01 . "; filter:alpha(opacity=" . $opac . ")";
649
 
650
  echo "\n\n<style type=\"text/css\">
651
+ div.jp-interface { color:" . $colours['screen_text_colour'] . "; }
652
+ div.innertab { background:" . $colours['screen_colour'] . $screen_opac . "; }
653
+ span.mp3-tint { background:" . $indicator . "; }
654
+ div.playlist-colour { background:" . $colours['playlist_colour'] . $playlist_opac . "; }
655
+ div.loadMI_mp3j, span.loadB_mp3j, span.load_mp3j { background:" . $colours['loadbar_colour'] . $loaderbar_opac . "; }
656
+ div.poscolMI_mp3j { background:" . $colours['posbar_colour'] . $posbar_tint . $posbar_opac ."; }
657
+ div.MIsliderVolume .ui-widget-header { background:" . $vol_grad . "; }
658
+ ul.UL-MI_mp3j { background:" . $playlist_img . " !important; }
659
+ ul.UL-MI_mp3j li { background:" . $playlist_divider . " !important; }
660
+ ul.UL-MI_mp3j li a { background-image:none !important; color:" . $colours['list_text_colour'] . " !important; }
661
+ ul.UL-MI_mp3j li a:hover { background-image:none !important; color:" . $colours['list_hover_colour'] . " !important; background:" . $colours['listBGa_hover'] . " !important; }
662
+ ul.UL-MI_mp3j li a.mp3j_A_current { background-image:none !important; color:" . $colours['list_current_colour'] . " !important; background:" . $colours['listBGa_current'] . " !important; }
663
+ span.mp3j-link-play, span.textbutton_mp3j:hover, div.transport-MI div { color:" . $colours['list_hover_colour'] . "; }
664
+ span.mp3j-link-play:hover, span.textbutton_mp3j, div.transport-MI div:hover { color:" . $colours['list_current_colour'] . "; }
665
+ div.transport-MI div, div.mp3j-popout-MI:hover { background-color:" . $colours['list_current_colour'] . "; }
666
+ .MI-image a:hover img { background:" . $colours['list_current_colour'] . ";}
667
  </style>";
668
+
669
  if ( $settings['enable_popout'] == "true" ) {
670
+ $popout_bg = ( $settings['popout_background'] == "" ) ? "#fff" : $settings['popout_background'];
671
+ $this->PP_css_settings = "
672
+ MP3_JPLAYER.popout_css = {
673
+ body_col: \"" . $popout_bg . "\",
674
+ body_img: \"" . $settings['popout_background_image'] . "\",
675
+ screen_bg: \"" . $colours['screen_colour'] . "\",
676
+ screen_opac: \"" . $colours['screen_opacity']*0.01 . "\",
677
+ screen_text: \"" . $colours['screen_text_colour'] . "\",
678
+ indi_tint: \"" . $indicator . "\",
679
+ loader_col: \"" . $colours['loadbar_colour'] . "\",
680
+ loader_opac: \"" . $colours['loadbar_opacity']*0.01 . "\",
681
+ posbar_col: \"" . $colours['posbar_colour'] . $posbar_tint . "\",
682
+ posbar_opac: \"" . $colours['posbar_opacity']*0.01 . "\",
683
+ vol_slider_bg: \"" . $vol_grad . "\",
684
+ list_col: \"" . $colours['playlist_colour'] . "\",
685
+ list_img: \"" . $playlist_img . "\",
686
+ list_opac: \"" . $colours['playlist_opacity']*0.01 . "\",
687
+ list_divider: \"" . $playlist_divider . "\",
688
+ list_text: \"" . $colours['list_text_colour'] . "\",
689
+ list_current_text: \"" . $colours['list_current_colour'] . "\",
690
+ list_hover_text: \"" . $colours['list_hover_colour'] . "\",
691
+ list_current_bg: \"" . $colours['listBGa_current'] . "\",
692
+ list_hover_bg: \"" . $colours['listBGa_hover'] . "\"
693
+ };";
694
+
695
+ }// end if enable popout
696
+ }// end if not fixed_css
697
  return;
698
  }
699
 
700
+ /* Sets up the colours array prior to writing
701
+ according to style / user colours / defaults. */
 
 
 
702
  function set_colours( $current, $style, $pluginpath ) {
 
703
  $silver = array( // defaults
704
+ 'screen_colour' => '#a7a7a7', 'screen_opacity' => '35',
705
+ 'loadbar_colour' => '#34A2D9', 'loadbar_opacity' => '70',
706
+ 'posbar_colour' => '#5CC9FF', 'posbar_opacity' => '80', 'posbar_tint' => 'softenT',
707
+ 'playlist_colour' => '#f1f1f1', 'playlist_opacity' => '100', 'playlist_tint' => 'darken1', 'list_divider' => 'med',
708
+ 'screen_text_colour' => '#525252',
709
+ 'list_text_colour' => '#525252', 'list_current_colour' => '#47ACDE', 'list_hover_colour' => '#768D99',
710
+ 'listBGa_current' => '#f4f4f4', 'listBGa_hover' => '#f7f7f7',
711
+ 'indicator' => 'colour',
712
+ 'volume_grad' => 'light'
713
+ );
714
  $darkgrey = array( // defaults
715
+ 'screen_colour' => '#333', 'screen_opacity' => '15',
716
+ 'loadbar_colour' => '#34A2D9', 'loadbar_opacity' => '70',
717
+ 'posbar_colour' => '#5CC9FF', 'posbar_opacity' => '100', 'posbar_tint' => 'darken',
718
+ 'playlist_colour' => '#fafafa', 'playlist_opacity' => '100', 'playlist_tint' => 'darken2', 'list_divider' => 'none',
719
+ 'screen_text_colour' => '#525252',
720
+ 'list_text_colour' => '#525252', 'list_current_colour' => '#34A2D9', 'list_hover_colour' => '#768D99',
721
+ 'listBGa_current' => "transparent url('" . $pluginpath . "css/images/t40w.png') repeat", 'listBGa_hover' => "transparent url('" . $pluginpath . "css/images/t30w.png') repeat",
722
+ 'indicator' => 'colour',
723
+ 'volume_grad' => 'dark'
724
+ );
725
  $text = array( // defaults
726
+ 'screen_colour' => 'transparent', 'screen_opacity' => '100',
727
+ 'loadbar_colour' => '#aaa', 'loadbar_opacity' => '20',
728
+ 'posbar_colour' => '#fff', 'posbar_opacity' => '58', 'posbar_tint' => 'none',
729
+ 'playlist_colour' => '#f6f6f6', 'playlist_opacity' => '100', 'playlist_tint' => 'lighten2', 'list_divider' => 'none',
730
+ 'screen_text_colour' => '#869399',
731
+ 'list_text_colour' => '#777', 'list_current_colour' => '#47ACDE', 'list_hover_colour' => '#829FAD',
732
+ 'listBGa_current' => 'transparent', 'listBGa_hover' => 'transparent',
733
+ 'indicator' => 'tint',
734
+ 'volume_grad' => 'dark'
735
+ );
736
  switch( $style ) {
737
  case "styleG": $colours = $darkgrey; break;
738
  case "styleH": $colours = $text; break;
745
  }
746
  }
747
  }
 
748
  return $colours;
749
  }
750
+
751
+ /* Makes js playlist array and stores it for echoing out in footer,
752
+ adds list name to js listref array */
753
+ function write_playlist_js( $list, $name = "noname" ) {
754
+ if ( $list['count'] < 1 ) { return; }
755
+ if ( $this->theSettings['encode_files'] == "true" ) {
756
+ foreach ( $list['files'] as $k => $file ) {
757
+ $list['files'][$k] = base64_encode($file);
758
+ }
 
 
 
 
 
759
  }
760
+ $no = 1;
761
+ $js = $name . ": [";
762
+ foreach ( $list['order'] as $ik => $i ) {
763
+ $js .= "\n\t\t{ name: \"";
764
+ if ( $this->theSettings['add_track_numbering'] == "true" ) {
765
+ $js .= $no . ". ";
 
 
 
 
 
766
  }
767
+ //$js .= $list['titles'][$i]. "\", mp3: \"" .$list['files'][$i]. "\", artist: \"" .$list['artists'][$i]. "\" }";
768
+ $js .= $list['titles'][$i]. "\", mp3: \"" .$list['files'][$i]. "\", artist: \"" .$list['artists'][$i]. "\", image: \"" .$list['images'][$i]. "\", imgurl: \"" .$list['imgurls'][$i]. "\" }";
769
 
770
+ if ( $no != $list['count'] ) {
771
+ $js .= ",";
 
 
 
 
 
 
772
  }
773
+ $no++;
 
774
  }
775
+ $js .= "\n\t]";
776
+ $this->JS['playlists'][] = $js;
777
+ $this->JS['listref'][] = $name;
778
+ $c = count($this->JS['playlists']);
779
+ //return $c-1;
780
+ return;
781
+ }
782
+
783
+ /* Writes [mp3-jplayer]
784
+ player html */
785
+ function write_primary_player( $pID, $pos, $width, $addclass, $dload_html, $title = "", $play_h, $stop_h, $prevnext, $height = "", $list, $npl_count, $cssclass = "" ) {
786
+ $pad_t = $this->theSettings['paddings_top'];
787
+ $pad_b = $this->theSettings['paddings_bottom'];
788
+ $pad_i = $this->theSettings['paddings_inner'];
789
+ if ( $pos == "left" ) {
790
+ $floater = "float:left; padding:" . $pad_t . " " . $pad_i . " " . $pad_b . " 0px;";
791
+ } else if ( $pos == "right" ) {
792
+ $floater = "float:right; padding:" . $pad_t . " 0px " . $pad_b . " " . $pad_i . ";";
793
+ } else if ( $pos == "absolute" ) {
794
+ $floater = "position:absolute;";
795
+ } else if ( $pos == "rel-C" ) {
796
+ $floater = "position:relative; padding:" . $pad_t . " 0px " . $pad_b . " 0px; margin:0px auto 0px auto;";
797
+ } else if ( $pos == "rel-R" ) {
798
+ $floater = "position:relative; padding:" . $pad_t . " 0px " . $pad_b . " 0px; margin:0px 0px 0px auto;";
799
+ } else {
800
+ $floater = "position: relative; padding:" . $pad_t . " 0px " . $pad_b . " 0px; margin:0px;";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
801
  }
802
+ $width = ( $width == "" ) ? " width:" . $this->theSettings['player_width'] . ";" : " width:" . $width . ";";
803
+ $height = ( !empty($height) && $height != "" ) ? " style=\"height:" . $height . ";\"" : ""; //will just use css sheet setting if empty
804
+ $title = ( $title == "" ) ? "" : "<h2>" . $title . "</h2>";
805
+ $Tpad = ( $this->theSettings['add_track_numbering'] == "false" ) ? " style=\"padding-left:6px;\"" : "";
806
+ $showpopoutbutton = ( $this->theSettings['enable_popout'] == "true" ) ? "visibility: visible;" : "visibility: hidden;";
807
+ $popouttext = ( $this->theSettings['player_theme'] == "styleH" && $this->theSettings['popout_button_title'] == "") ? "Pop-Out" : $this->theSettings['popout_button_title'];
808
+ $PLscroll = ( $this->theSettings['max_list_height'] != "" ) ? " style=\"overflow:auto; max-height:" . $this->theSettings['max_list_height'] . "px;\"" : "";
809
+ $list = ( $list == "true" ) ? "HIDE": "SHOW";
810
+ $listtog_html = ( $npl_count > 1 ) ? "<div class=\"playlist-toggle-MI" . $addclass . "\" id=\"playlist-toggle_" . $pID. "\">" . $list . " PLAYLIST</div>" : "";
811
+
812
+
813
+ $img_html = '<div class="MI-image" id="MI_image_' . $pID . '"></div>';
814
 
815
 
816
+ $list_html = "
817
+ <div class=\"listwrap_mp3j\" id=\"L_mp3j_" . $pID . "\"" . $PLscroll . ">
818
+ <div class=\"playlist-wrap-MI\">
819
+ <div class=\"playlist-colour\"></div>
820
+ <div class=\"playlist-wrap-MI\">
821
+ <ul class=\"UL-MI_mp3j" . $addclass . "\" id=\"UL_mp3j_" . $pID . "\"><li></li></ul>
822
+ </div>
823
+ </div>
824
+ </div>";
825
 
826
+ $player = "\n
827
+ <div class=\"wrap-MI " . $cssclass . "\" style=\"" . $floater . $width . "\">" . $title . "
828
+ <div class=\"jp-innerwrap\">
829
+ <div class=\"innerx\"></div>
830
+ <div class=\"innerleft\"></div>
831
+ <div class=\"innerright\"></div>
832
+ <div class=\"innertab\"></div>\n
833
+ <div class=\"jp-interface\"" . $height . ">
834
+ " . $img_html . "
835
+ <div id=\"T_mp3j_" . $pID . "\" class=\"player-track-title" . $addclass . "\"" . $Tpad . "></div>
836
+ <div class=\"MIsliderVolume\" id=\"vol_mp3j_" . $pID . "\"></div>
837
+ <div class=\"bars_holder\">
838
+ <div class=\"loadMI_mp3j\" id=\"load_mp3j_" . $pID . "\"></div>
839
+ <div class=\"poscolMI_mp3j\" id=\"poscol_mp3j_" . $pID . "\"></div>
840
+ <div class=\"posbarMI_mp3j\" id=\"posbar_mp3j_" . $pID . "\"></div>
841
+ </div>
842
+ <div id=\"P-Time-MI_" . $pID . "\" class=\"jp-play-time\"></div>
843
+ <div id=\"T-Time-MI_" . $pID . "\" class=\"jp-total-time\"></div>
844
+ <div id=\"statusMI_" . $pID . "\" class=\"statusMI" . $addclass . "\"></div>
845
+ <div class=\"transport-MI\">" . $play_h . $stop_h . $prevnext . "</div>
846
+ " . $dload_html . "
847
+ " . $listtog_html . "
848
+ <div class=\"mp3j-popout-MI" . $addclass . "\" id=\"lpp_mp3j_" . $pID. "\" style=\"" .$showpopoutbutton. "\">" . $popouttext . "</div>
849
+ </div>
850
+ </div>
851
+ " . $list_html . "
852
+ </div>\n";
853
+
854
+ return $player;
855
+ }
856
+
857
+ /* Stores and returns
858
+ updated compatible options. */
859
+ function getAdminOptions() {
860
+ $colour_keys = array(
861
+ 'screen_colour' => '',
862
+ 'screen_opacity' => '',
863
+ 'loadbar_colour' => '',
864
+ 'loadbar_opacity' => '',
865
+ 'posbar_colour' => '',
866
+ 'posbar_opacity' => '',
867
+ 'posbar_tint' => '',
868
+ 'playlist_colour' => '',
869
+ 'playlist_opacity' => '',
870
+ 'playlist_tint' => '',
871
+ 'list_divider' => '',
872
+ 'screen_text_colour' => '',
873
+ 'list_text_colour' => '',
874
+ 'list_current_colour' => '',
875
+ 'list_hover_colour' => '',
876
+ 'listBGa_current' => '',
877
+ 'listBGa_hover' => '',
878
+ 'indicator' => '',
879
+ 'volume_grad' => ''
880
+ );
881
+ $mp3FoxAdminOptions = array( // defaults
882
+ 'initial_vol' => '100',
883
+ 'auto_play' => 'false',
884
+ 'mp3_dir' => '/',
885
+ 'player_theme' => 'styleF',
886
+ 'allow_remoteMp3' => 'true',
887
+ 'player_float' => 'none',
888
+ 'player_onblog' => 'true',
889
+ 'playlist_show' => 'true',
890
+ 'remember_settings' => 'true',
891
+ 'hide_mp3extension' => 'false',
892
+ 'show_downloadmp3' => 'false',
893
+ 'disable_template_tag' => 'false',
894
+ 'db_plugin_version' => $this->version_of_plugin,
895
+ 'custom_stylesheet' => $this->newCSScustom,
896
+ 'echo_debug' => 'false',
897
+ 'add_track_numbering' => 'false',
898
+ 'enable_popout' => 'true',
899
+ 'playlist_repeat' => 'false',
900
+ 'player_width' => '40%',
901
+ 'popout_background' => '',
902
+ 'popout_background_image' => '',
903
+ 'colour_settings' => $colour_keys,
904
+ 'use_fixed_css' => 'false',
905
+ 'paddings_top' => '5px',
906
+ 'paddings_bottom' => '40px',
907
+ 'paddings_inner' => '35px',
908
+ 'popout_max_height' => '600',
909
+ 'popout_width' => '400',
910
+ 'popout_button_title' => '',
911
+ 'max_list_height' => '450',
912
+ 'encode_files' => 'true',
913
+ 'animate_sliders' => 'false',
914
+ 'library_sortcol' => 'filename',
915
+ 'library_direction' => 'ASC',
916
+ 'disable_jquery_libs' => '',
917
+ 'run_shcode_in_excerpt' => 'false',
918
+ 'admin_toggle_1' => 'false',
919
+ 'f_separator' => ',',
920
+ 'c_separator' => ';',
921
+ 'volslider_on_singles' => 'false',
922
+ 'volslider_on_mp3j' => 'false',
923
+ 'dload_text' => 'DOWNLOAD MP3',
924
+ 'loggedout_dload_text' => 'LOG IN TO DOWNLOAD',
925
+ 'loggedout_dload_link' => $this->WPinstallpath . '/wp-login.php',
926
+ 'touch_punch_js' => 'true'
927
+ );
928
+ $theOptions = get_option($this->adminOptionsName);
929
+ if ( !empty($theOptions) ) {
930
+ //backwards compat with v1.4 style
931
+ $xfer = $this->transfer_old_colours( $theOptions['player_theme'], $colour_keys, $theOptions['custom_stylesheet'] );
932
+ if ( $xfer[0] ) {
933
+ $theOptions['player_theme'] = $xfer[0];
934
+ $theOptions['custom_stylesheet'] = $xfer[2];
935
+ }
936
+ //ditch un-needed stored settings
937
+ foreach ( $theOptions as $key => $option ){
938
+ if ( array_key_exists( $key, $mp3FoxAdminOptions) ) {
939
+ $mp3FoxAdminOptions[$key] = $option;
940
+ }
941
  }
942
+ $mp3FoxAdminOptions['db_plugin_version'] = $this->version_of_plugin; //set last!
 
 
 
 
 
 
 
943
  }
944
+ update_option($this->adminOptionsName, $mp3FoxAdminOptions);
945
+ return $mp3FoxAdminOptions;
946
+ }
947
+
948
 
949
+ /* translates colour style from old options
950
+ to the 1.7 format prior to saving them. */
951
+ function transfer_old_colours ( $s, $keys, $path = "" ) {
952
+ $csspath = $this->PluginFolder . "/css/mp3jplayer-cyanALT.css"; //orig alternative stylesheet name in v1.4.x
953
+ $path = ( $path == $csspath || $path == "" ) ? $this->newCSScustom : $path;
954
+ if ( $s == "styleA" ) { //orig 'neutral'
955
+ $s = "styleF";
956
+ } elseif ( $s == "styleB" ) { //orig 'green'
957
+ $s = "styleF";
958
+ } elseif ( $s == "styleC" ) { //orig 'blu'
959
+ $s = "styleF";
960
+ } elseif ( $s == "styleD" ) { //orig 'cyanALT', or custom css
961
+ $s = "styleI";
962
+ } elseif ( $s == "styleE" ) { //orig 'text'
963
+ $s = "styleH";
964
+ } else {
965
+ $s = false;
966
  }
967
+ return array( $s, $keys, $path );
968
+ }
969
 
970
+ /* Adds css to settings page. */
971
+ function mp3j_admin_header() {
972
+ echo "\n<link rel=\"stylesheet\" href=\"" . $this->PluginFolder . "/css/mp3j-admin-1.8.css\" type=\"text/css\" media=\"screen\" />\n";
973
+ }
974
+
975
+ /* Adds js to settings page. */
976
+ function mp3j_admin_footer() {
977
+ echo "\n<script type=\"text/javascript\" src=\"" . $this->PluginFolder . "/js/mp3j-admin-1.8.js\"></script>";
978
+ }
979
+
980
+ /* Preps path/uri option on settings page prior to saving. */
981
+ function prep_path ( $field ) {
982
+ $option = preg_replace( "!^www*\.!", "http://www.", $field );
983
+ if ( strpos($option, "http://") === false && strpos($option, "https://") === false) {
984
+ if (preg_match("!^/!", $option) == 0) {
985
+ $option = "/" . $option;
986
+ } else {
987
+ $option = preg_replace("!^/+!", "/", $option);
988
+ }
989
+ }
990
+ if (preg_match("!.+/+$!", $option) == 1) {
991
+ $option = preg_replace("!/+$!", "", $option);
992
  }
993
+ if ($option == "") {
994
+ $option = "/";
995
+ }
996
+ return $option;
997
+ }
998
 
999
+ /* Debug output via mp3j_debug() or admin settings. */
1000
+ function debug_info( $display = "" ) {
1001
+ echo "\n\n<!-- *** MP3-jPlayer - " . "version " . $this->version_of_plugin . " ***\n";
1002
+ if ( is_singular() ) { echo "\nTemplate: Singular "; }
1003
+ if ( is_single() ) { echo "Post"; }
1004
+ if ( is_page() ) { echo "Page"; }
1005
+ if ( is_search() ) { echo "\nTemplate: Search"; }
1006
+ if ( is_home() ) { echo "\nTemplate: Posts index"; }
1007
+ if ( is_front_page() ) { echo " (Home page)"; }
1008
+ if ( is_archive() ) { echo "\nTemplate: Archive"; }
1009
+ echo "\nUse tags: ";
1010
+ if ( $this->theSettings['disable_template_tag'] == "false" ) {
1011
+ echo "Yes";
1012
+ } else {
1013
+ echo "No";
1014
+ }
1015
+ echo "\n" . $this->dbug['str'] . "\n";
1016
+ echo "\nPlayer count: " . $this->Player_ID;
1017
+ echo "\n\nAdmin Settings:\n";
1018
+ print_r($this->theSettings);
1019
+ $this->grab_library_info();
1020
+ echo "\nMP3's in Media Library: " . $this->LibraryI['count'];
1021
+ echo "\n\nOther arrays:\n";
1022
+ foreach ( $this->dbug['arr'] as $i => $a ) {
1023
+ if ( is_array($a) ) {
1024
+ echo "\n" . $i . "\n";
1025
+ print_r($a);
1026
+ }
1027
+ }
1028
+ echo "\n-->\n\n";
1029
+ return;
1030
+ }
1031
+ }} // close class, close if.
1032
  ?>
mp3j_sc-widget.php ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * SHORTCODES WIDGET
4
+ * add players via shortcodes.
5
+ */
6
+ if ( class_exists("WP_Widget") ) {
7
+ if ( !class_exists("MP3j_single") ) {
8
+
9
+ class MP3j_single extends WP_Widget {
10
+
11
+ /* Constructor (required by api) */
12
+ function MP3j_single() {
13
+ $widget_ops = array(
14
+ 'classname' => 'mp3jplayerwidget2',
15
+ 'description' => __('Add mp3 players by writing shortcodes.',
16
+ 'mp3jplayerwidget2')
17
+ );
18
+ $control_ops = array(
19
+ 'id_base' => 'mp3mi-widget',
20
+ 'width' => 800
21
+ );
22
+ $this->WP_Widget( 'mp3mi-widget', __('MP3j-sh', 'mp3jplayerwidget2'), $widget_ops, $control_ops );
23
+ }
24
+
25
+ /* Runs the shortcodes and writes the players (required by api) */
26
+ function widget( $args, $instance ) {
27
+ if ( !is_home() && !is_archive() && !is_singular() && !is_search() ) { return; }
28
+ global $mp3_fox;
29
+ if ( $mp3_fox->page_filter( $instance['restrict_list'], $instance['restrict_mode'] ) ) { return; }
30
+
31
+ $mp3_fox->Caller = "widget";
32
+ $shortcodes_return = do_shortcode( $instance['arb_text'] );
33
+ $mp3_fox->Caller = false;
34
+
35
+ extract( $args ); // supplied WP theme vars
36
+ echo $before_widget;
37
+ if ( $instance['title'] ) { echo $before_title . $instance['title'] . $after_title; }
38
+ echo $shortcodes_return;
39
+ echo $after_widget;
40
+ return;
41
+ }
42
+
43
+ /* Updates the widget settings (required by api) */
44
+ function update( $new_instance, $old_instance ) {
45
+ $instance = $old_instance;
46
+ $instance['title'] = $new_instance['title'];
47
+ $instance['restrict_list'] = $new_instance['restrict_list'];
48
+ $instance['restrict_mode'] = $new_instance['restrict_mode'];
49
+ $instance['arb_text'] = $new_instance['arb_text'];
50
+ return $instance;
51
+ }
52
+
53
+ /* Creates defaults and writes widget panel (required by api) */
54
+ function form( $instance ) {
55
+ $defaultvalues = array(
56
+ 'title' => '',
57
+ 'restrict_list' => '',
58
+ 'restrict_mode' => 'exclude',
59
+ 'arb_text' => ''
60
+ );
61
+ $instance = wp_parse_args( (array) $instance, $defaultvalues );
62
+ ?>
63
+ <p style="text-align:right; font-size: 11px; margin-bottom:0px;"><a href="options-general.php?page=mp3jplayer.php">Plugin options</a> | <a href="options-general.php?page=mp3jplayer.php#howto">Help</a></p>
64
+ <p style="margin-top:-15px; margin-bottom:4px;">Shortcodes:</p>
65
+ <!-- Arbitrary text/shortcodes -->
66
+ <p style="margin:8px 0 10px 0; font-size: 11px;"><textarea class="widefat" style="font-size:11px;" rows="8" cols="85" id="<?php echo $this->get_field_id( 'arb_text' ); ?>" name="<?php echo $this->get_field_name( 'arb_text' ); ?>"><?php echo $instance['arb_text']; ?></textarea></p>
67
+ <!-- Page Filter -->
68
+ <p style="font-size: 11px; margin:10px 0px 4px 0px;">
69
+ Include <input type="radio" id="<?php echo $this->get_field_id( 'restrict_mode' ); ?>" name="<?php echo $this->get_field_name( 'restrict_mode' ); ?>" value="include" <?php if ($instance['restrict_mode'] == "include") { _e('checked="checked"', "mp3jplayerwidget2"); }?> />
70
+ or <input type="radio" id="<?php echo $this->get_field_id( 'restrict_mode' ); ?>" name="<?php echo $this->get_field_name( 'restrict_mode' ); ?>" value="exclude" <?php if ($instance['restrict_mode'] == "exclude") { _e('checked="checked"', "mp3jplayerwidget2"); }?> />
71
+ Exclude pages &nbsp;<input class="widefat" style="font-size:11px; width:200px;" type="text" id="<?php echo $this->get_field_id( 'restrict_list' ); ?>" name="<?php echo $this->get_field_name( 'restrict_list' ); ?>" value="<?php echo $instance['restrict_list']; ?>" /></p>
72
+ <p class="description" style="font-size:11px; color:#999999; margin-top:4px; margin-bottom:1px;">A comma separated list, can use post ID's, <code>index</code>, <code>archive</code>, <code>post</code>, and <code>search</code>.</p>
73
+ <!-- Widget Heading -->
74
+ <p style="margin: -43px 0px 35px 420px; font-size:11px;">Widget Heading: <input style="width:260px;"class="widefat" type="text" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" /></p>
75
+
76
+ <?php
77
+ }
78
+ } //close class
79
+ }
80
+ }
81
+ ?>
mp3j_widget.php CHANGED
@@ -1,19 +1,13 @@
1
  <?php
 
 
2
 
3
- /* Widget classes */
4
- if ( class_exists("WP_Widget") )
5
- {
6
- /**
7
- * UI Widget
8
- * adds one playlist player at a time via mode/tickbock ui
9
- * ------------------------------------------------------- */
10
- if ( !class_exists("MP3_jPlayer") )
11
- {
12
- class MP3_jPlayer extends WP_Widget
13
- {
14
- /**
15
- * Constructor (required)
16
- */
17
  function MP3_jPlayer() {
18
 
19
  $widget_ops = array(
@@ -28,45 +22,54 @@ if ( class_exists("WP_Widget") )
28
  $this->WP_Widget( 'mp3-jplayer-widget', __('MP3j-ui', 'mp3jplayerwidget'), $widget_ops, $control_ops );
29
  }
30
 
31
- /**
32
- * Sets up widget playlist and writes player.
33
- * (required)
34
- */
35
  function widget( $args, $instance ) {
36
-
 
37
  if ( !is_home() && !is_archive() && !is_singular() && !is_search() ) { return; }
38
 
39
- global $mp3_fox;
40
- // Return if widget not for this page
41
- if ( $mp3_fox->page_filter( $instance['restrict_list'], $instance['restrict_mode'] ) ) { return; }
 
42
 
43
- // Do playlist building
44
  if ( $instance['widget_mode'] == "1" ) { // Must be singular and have fields playlist
45
  if ( is_singular() ) {
46
- if ( $mp3_fox->PlayerPlaylist['count'] < 1 ) { return; }
47
- }
48
- else { return; }
49
- $mp3_fox->NewPlaylist = $mp3_fox->PlayerPlaylist;
 
 
 
 
 
 
50
  }
51
  if ( $instance['widget_mode'] == "2" ) {
52
  $captions = ""; // TODO: widget needs captions input
53
- if ( !$mp3_fox->string_pushto_playlist( $instance['arb_playlist'], $captions, "new" ) ) {
54
  return;
55
  }
 
56
  }
57
  if ( $instance['widget_mode'] == "3" ) {
58
- $mp3_fox->NewPlaylist = $mp3_fox->make_widget_playlist( $instance );
 
 
 
59
  }
60
- if ( $instance['slice_size'] != "" && $instance['slice_size'] > 0 ) { $mp3_fox->NewPlaylist = $mp3_fox->take_playlist_slice( $instance['slice_size'], $mp3_fox->NewPlaylist ); }
61
- if ( $instance['shuffle'] == "true" ) { if ( $mp3_fox->NewPlaylist['count'] > 1 ) { shuffle( $mp3_fox->NewPlaylist['order'] ); } }
62
 
63
- // Write it
64
- $PlayerName = "mp3jNew_" . $mp3_fox->NewList_num;
65
- $mp3_fox->write_playlist( $mp3_fox->NewPlaylist, $PlayerName );
 
 
 
66
 
67
- // Set up bits
68
  $width = ( $instance['player_width'] == "" ) ? $mp3_fox->theSettings['player_width'] : $instance['player_width'];
69
- $dload = $instance['download_link'];
70
  $popout_title = strip_tags($instance['title']);
71
  $popout_title = trim($popout_title);
72
  $popout_title = ( !empty($popout_title) ) ? $popout_title . " | " . get_bloginfo('name') : get_bloginfo('name') . " | " . get_bloginfo('description');
@@ -74,28 +77,55 @@ if ( class_exists("WP_Widget") )
74
  $autoplay = ( $instance['autoplay'] == "true" ) ? "true" : "false";
75
  $loop = ( $instance['loop'] == "true" ) ? "true" : "false";
76
  $vol = $instance['volume'];
77
- $mods = ( $instance['mods'] == "true" ) ? true : false;
78
  $pos = $instance['position'];
79
  $pn = $instance['pn_buttons'];
80
  $stop = $instance['stop_button'];
81
-
82
- // Add info to js info array
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  $pp_height = (int)$instance['player_height'];
84
  $pp_height = ( empty($pp_height) || $pp_height === 0 ) ? 96 : $pp_height;
85
- $play = "#USE_G#";
86
- $pp_title = $popout_title;
87
- $dload_info = ( $dload == "true" ) ? "true" : "false";
88
- //$autoplay = ( $autoplay != "false" ) ? "true" : "false";
89
- $mp3_fox->jsInfo[] = "\n { list:" . $PlayerName . ", type:'MI', tr:0, lstate:" . $list . ", loop:" . $loop . ", play_txt:'" . $play . "', pause_txt:'', pp_title:'" . $pp_title . "', autoplay:" . $autoplay . ", has_ul:1, transport:'playpause', status:'full', download:" . $dload_info . ", vol:" . $vol . ", height:" . $pp_height . " }";
90
 
91
- // Make transport buttons
92
- $pID = $mp3_fox->Player_ID;
93
- $prevnext = ( $mp3_fox->NewPlaylist['count'] > 1 && $pn == "true" ) ? "<div class=\"Next_mp3j\" id=\"Next_mp3j_" . $pID . "\">Next&raquo;</div><div class=\"Prev_mp3j\" id=\"Prev_mp3j_" . $pID . "\">&laquo;Prev</div>" : "";
 
94
  $play_h = "<div class=\"buttons_mp3j\" id=\"playpause_mp3j_" . $pID . "\">Play Pause</div>";
95
  $stop_h = ( $stop == "true" ) ? "<div class=\"stop_mp3j\" id=\"stop_mp3j_" . $pID . "\">Stop</div>" : "";
96
 
97
- // Build player html
98
- $theplayer = $mp3_fox->write_primary_player( $PlayerName, $pID, $pos, $width, $mods, $dload, '', $play_h, $stop_h, $prevnext, $instance['player_height'] );
 
 
99
 
100
  extract( $args ); // supplied WP theme vars
101
  echo $before_widget;
@@ -104,15 +134,13 @@ if ( class_exists("WP_Widget") )
104
  echo $after_widget;
105
 
106
  $mp3_fox->write_jp_div();
107
- $mp3_fox->NewList_num++;
 
108
  $mp3_fox->Player_ID++;
109
  return;
110
  }
111
 
112
- /**
113
- * Updates widget instance settings.
114
- * (required)
115
- */
116
  function update( $new_instance, $old_instance ) {
117
 
118
  $instance = $old_instance;
@@ -149,50 +177,49 @@ if ( class_exists("WP_Widget") )
149
  }
150
  }
151
 
152
- $instance['volume'] = preg_replace("/[^0-9]/","", $new_instance['volume']);
153
  if ($instance['volume'] < 0 || $instance['volume']=="") { $instance['volume'] = "0"; }
154
  if ($instance['volume'] > 100) { $instance['volume'] = "100"; }
155
 
156
  return $instance;
157
  }
158
 
159
- /**
160
- * Creates defaults and writes widget panel.
161
- * (required)
162
- */
163
  function form( $instance ) {
164
 
165
  global $mp3_fox;
166
  $mp3_fox->theSettings = get_option('mp3FoxAdminOptions');
167
 
168
  $defaultvalues = array(
169
- 'title' => '',
170
- 'id_to_play' => '',
171
- 'widget_mode' => '1',
172
- 'shuffle' => 'false',
173
- 'restrict_list' => '',
174
- 'restrict_mode' => 'exclude',
175
- 'play_library' => 'false',
176
- 'arb_playlist' => '',
177
- 'play_page' => 'false',
178
- 'slice_size' => '',
179
- 'play_folder' => 'false',
180
- 'folder_to_play' => '',
181
- 'download_link' => 'false',
182
- 'playlist_mode' => 'true',
183
- 'player_width' => '100%',
184
- 'autoplay' => 'false',
185
- 'loop' => $mp3_fox->theSettings['playlist_repeat'],
186
- 'volume' => $mp3_fox->theSettings['initial_vol'],
187
- 'mods' => 'false',
188
- 'position' => 'rel-L',
189
- 'pn_buttons' => 'true',
190
- 'stop_button' => 'true',
191
- 'player_height' => '' );
 
192
 
193
  $instance = wp_parse_args( (array) $instance, $defaultvalues );
194
  $helptext_col = "color:#a0a0a0;";
195
- ?>
 
196
  <p style="text-align:right; font-size: 11px; margin-bottom:0px;"><a href="options-general.php?page=mp3jplayer.php">Plugin options</a> | <a href="options-general.php?page=mp3jplayer.php#howto">Help</a></p>
197
  <p style="margin-top:-10px; margin-bottom:10px;">Play Mode:</p>
198
  <p style="margin-bottom: 10px;"><input type="radio" id="<?php echo $this->get_field_id( 'widget_mode' ); ?>" name="<?php echo $this->get_field_name( 'widget_mode' ); ?>" value="1" <?php if ($instance['widget_mode'] == "1") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
@@ -201,7 +228,7 @@ if ( class_exists("WP_Widget") )
201
  <div style="margin:0px 0px 0px 25px; border-top: 1px solid #eee; height: 10px;"></div>
202
  <p style="margin-top:0px; margin-bottom:6px;"><input type="radio" id="<?php echo $this->get_field_id( 'widget_mode' ); ?>" name="<?php echo $this->get_field_name( 'widget_mode' ); ?>" value="2" <?php if ($instance['widget_mode'] == "2") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
203
  &nbsp;&nbsp;Mode 2 &nbsp;<span class="description" style="margin-left: 0px;">Fixed playlist</span>
204
- <span class="description" style="margin: 0px 0px 10px 10px; font-size: 11px; <?php echo $helptext_col; ?>">A comma separated list of filenames or full URI's.</span></p>
205
  <p style="margin-left:25px; margin-bottom:15px; font-size: 11px;"><textarea class="widefat" style="font-size:11px;" rows="4" cols="80" id="<?php echo $this->get_field_id( 'arb_playlist' ); ?>" name="<?php echo $this->get_field_name( 'arb_playlist' ); ?>"><?php echo $instance['arb_playlist']; ?></textarea></p>
206
  <div style="margin: 0px 0px 0px 25px; border-top: 1px solid #eee; height: 5px;"></div>
207
  <p style="margin-top: 0px;margin-bottom: 10px;"><input type="radio" id="<?php echo $this->get_field_id( 'widget_mode' ); ?>" name="<?php echo $this->get_field_name( 'widget_mode' ); ?>" value="3" <?php if ($instance['widget_mode'] == "3") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
@@ -212,11 +239,10 @@ if ( class_exists("WP_Widget") )
212
  <p style="margin:0px 0px 1px 25px; font-size:11px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'play_library' ); ?>" name="<?php echo $this->get_field_name( 'play_library' ); ?>" value="true" <?php if ($instance['play_library'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
213
  &nbsp;My library</p>
214
 
215
- <?php
216
  if ( $instance['folder_to_play'] == "" ) {
217
  $folder = $mp3_fox->theSettings['mp3_dir'];
218
- }
219
- else {
220
  $folder = $instance['folder_to_play'];
221
  }
222
  $foldertracks = $mp3_fox->grab_local_folder_mp3s( $folder );
@@ -226,29 +252,25 @@ if ( class_exists("WP_Widget") )
226
  $txt = $c . "&nbsp;mp3";
227
  if ( $c != 1 ) { $txt .= "'s"; }
228
  $txt .= "&nbsp;in this folder";
229
- }
230
- else {
231
  $style = "color:#aaa;";
232
  $txt = "There are no mp3's here";
233
  }
234
- }
235
- elseif ( $foldertracks === true ) {
236
  $txt = "Folder not found, check path<br />and permissions";
237
  $style = "color:#dfad00;";
238
- }
239
- else {
240
  $txt = "x Remote or inaccessible folder";
241
  $style = "color:#f56b0f;";
242
  }
243
- ?>
 
244
  <p style="margin:0px 0px 0px 25px; font-size: 11px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'play_folder' ); ?>" name="<?php echo $this->get_field_name( 'play_folder' ); ?>" value="true" <?php if ($instance['play_folder'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
245
  &nbsp;A folder: &nbsp;<input class="widefat" type="text" style="width:300px; margin-right:0px; font-size:11px;" id="<?php echo $this->get_field_id( 'folder_to_play' ); ?>" name="<?php echo $this->get_field_name( 'folder_to_play' ); ?>" value="<?php echo $instance['folder_to_play']; ?>" /></p>
246
  <p class="description" style="text-align:right; margin:0px 200px 4px 0px; font-size:10px; <?php echo $style; ?>"><?php echo $txt; ?></p>
247
  </div>
248
  <div style="margin: 10px 0px 8px 0px; border-top: 1px solid #eee; border-bottom: 1px solid #eee;">
249
- <p style="font-size: 11px; margin: 10px 0px 8px 0px;">
250
- Initial volume &nbsp;<input class="widefat" style="width:40px; text-align:right;" type="text" id="<?php echo $this->get_field_id( 'volume' ); ?>" name="<?php echo $this->get_field_name( 'volume' ); ?>" value="<?php echo $instance['volume']; ?>" /> &nbsp;<span class="description" style="font-size:11px; color:#999999;">(0 - 100)</span></p>
251
-
252
  <div style="margin:-30px 0 0 225px;">
253
  <p style="font-size: 11px;margin: 0px 0px 2px 0px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'autoplay' ); ?>" name="<?php echo $this->get_field_name( 'autoplay' ); ?>" value="true" <?php if ($instance['autoplay'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
254
  &nbsp;Autoplay</p>
@@ -256,24 +278,27 @@ if ( class_exists("WP_Widget") )
256
  &nbsp;Repeat</p>
257
  </div>
258
  <div style="margin:-39px 0 0 336px;">
259
- <p style="font-size: 11px;margin: 0px 0px 2px 0px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'download_link' ); ?>" name="<?php echo $this->get_field_name( 'download_link' ); ?>" value="true" <?php if ($instance['download_link'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
260
- &nbsp;Download link</p>
 
 
 
 
261
  <p style="font-size: 11px;margin: 0px 0px 2px 0px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'playlist_mode' ); ?>" name="<?php echo $this->get_field_name( 'playlist_mode' ); ?>" value="true" <?php if ($instance['playlist_mode'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
262
  &nbsp;Show playlist</p>
263
  </div>
264
- <div style="margin:-39px 0 0px 470px;">
265
- <p style="font-size: 11px;margin: 0px 0px 4px 0px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'pn_buttons' ); ?>" name="<?php echo $this->get_field_name( 'pn_buttons' ); ?>" value="true" <?php if ($instance['pn_buttons'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
266
  &nbsp;Prev/next buttons</p>
267
- <p style="font-size: 11px;margin: 0px 0px 4px 0px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'stop_button' ); ?>" name="<?php echo $this->get_field_name( 'stop_button' ); ?>" value="true" <?php if ($instance['stop_button'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
268
  &nbsp;Stop button</p>
269
  </div>
270
- <div style="margin:-43px 0 10px 630px;">
271
  <p style="font-size:11px;margin: 0px 0px 2px 0px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'shuffle' ); ?>" name="<?php echo $this->get_field_name( 'shuffle' ); ?>" value="true" <?php if ($instance['shuffle'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
272
  &nbsp;Shuffle</p>
273
  <p style="margin:0px 0px 10px 0px; font-size:11px;">
274
  Pick &nbsp;<input class="widefat" style="width:35px; text-align:right;" type="text" id="<?php echo $this->get_field_id( 'slice_size' ); ?>" name="<?php echo $this->get_field_name( 'slice_size' ); ?>" value="<?php echo $instance['slice_size']; ?>" />&nbsp; track(s)</p>
275
  </div>
276
-
277
  <p style="margin:0px 0px 8px 225px; font-size:11px; ">Width:
278
  <input class="widefat" style="font-size:11px; width:60px;" type="text" id="<?php echo $this->get_field_id( 'player_width' ); ?>" name="<?php echo $this->get_field_name( 'player_width' ); ?>" value="<?php echo $instance['player_width']; ?>" />
279
  &nbsp;&nbsp;Height: <input class="widefat" style="font-size:11px; width:60px;" type="text" id="<?php echo $this->get_field_id( 'player_height' ); ?>" name="<?php echo $this->get_field_name( 'player_height' ); ?>" value="<?php echo $instance['player_height']; ?>" />
@@ -286,113 +311,16 @@ if ( class_exists("WP_Widget") )
286
  <option value="right" <?php if ( 'right' == $instance['position'] ) { echo 'selected="selected"'; } ?>>Float right</option>
287
  </select>
288
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" id="<?php echo $this->get_field_id( 'mods' ); ?>" name="<?php echo $this->get_field_name( 'mods' ); ?>" value="true" <?php if ($instance['mods'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
289
- Mods
290
- </p>
291
  </div>
292
  <p style="font-size: 11px; margin:10px 0px 4px 0px;">
293
  Include <input type="radio" id="<?php echo $this->get_field_id( 'restrict_mode' ); ?>" name="<?php echo $this->get_field_name( 'restrict_mode' ); ?>" value="include" <?php if ($instance['restrict_mode'] == "include") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
294
  or <input type="radio" id="<?php echo $this->get_field_id( 'restrict_mode' ); ?>" name="<?php echo $this->get_field_name( 'restrict_mode' ); ?>" value="exclude" <?php if ($instance['restrict_mode'] == "exclude") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
295
  Exclude pages &nbsp;<input class="widefat" style="font-size:11px; width:200px;" type="text" id="<?php echo $this->get_field_id( 'restrict_list' ); ?>" name="<?php echo $this->get_field_name( 'restrict_list' ); ?>" value="<?php echo $instance['restrict_list']; ?>" /></p>
296
- <p class="description" style="font-size:11px; margin-top:4px; margin-bottom:1px; <?php echo $helptext_col; ?>">A comma separated list, can use post ID's, <code>index</code>, <code>archive</code>, and <code>search</code>.</p>
297
  <p style="margin: -43px 0px 25px 420px; font-size: 11px;">Widget Heading: <input class="widefat" style="width:260px;" type="text" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" /></p>
298
- <?php
299
- }
300
- } //end class
301
- }
302
-
303
-
304
- /**
305
- * Shortcodes Widget
306
- * add players via a text box for shortcodes/html
307
- * -------------------------------------------------------
308
- */
309
- if ( !class_exists("MP3j_single") )
310
- {
311
- class MP3j_single extends WP_Widget
312
- {
313
- /**
314
- * Constructor (required)
315
- */
316
- function MP3j_single() {
317
-
318
- $widget_ops = array(
319
- 'classname' => 'mp3jplayerwidget2',
320
- 'description' => __('Add mp3 players by writing shortcodes.',
321
- 'mp3jplayerwidget2')
322
- );
323
- $control_ops = array(
324
- 'id_base' => 'mp3mi-widget',
325
- 'width' => 800
326
- );
327
- $this->WP_Widget( 'mp3mi-widget', __('MP3j-sh', 'mp3jplayerwidget2'), $widget_ops, $control_ops );
328
- }
329
-
330
- /**
331
- * Runs the shortcodes and writes the widget (required)
332
- */
333
- function widget( $args, $instance ) {
334
-
335
- if ( !is_home() && !is_archive() && !is_singular() && !is_search() ) { return; }
336
-
337
- global $mp3_fox;
338
- if ( $mp3_fox->page_filter( $instance['restrict_list'], $instance['restrict_mode'] ) ) { return; }
339
-
340
- $mp3_fox->external_call = true;
341
- $shortcodes_return = do_shortcode( $instance['arb_text'] );
342
- $mp3_fox->external_call = false;
343
-
344
- extract( $args ); // supplied WP theme vars
345
- echo $before_widget;
346
- if ( $instance['title'] ) { echo $before_title . $instance['title'] . $after_title; }
347
-
348
- // Echo players
349
- //echo "<div style=\"font-size:14px; line-height:22px !important; margin:0 !important;\">" . $shortcodes_return . "</div>";
350
- echo $shortcodes_return;
351
-
352
- echo $after_widget;
353
- return;
354
- }
355
-
356
- /**
357
- * Updates widget instance settings (required)
358
- */
359
- function update( $new_instance, $old_instance ) {
360
-
361
- $instance = $old_instance;
362
- $instance['title'] = $new_instance['title'];
363
- $instance['restrict_list'] = $new_instance['restrict_list'];
364
- $instance['restrict_mode'] = $new_instance['restrict_mode'];
365
- $instance['arb_text'] = $new_instance['arb_text'];
366
- return $instance;
367
- }
368
-
369
- /**
370
- * Creates defaults and writes widget panel (required)
371
- */
372
- function form( $instance ) {
373
-
374
- $defaultvalues = array(
375
- 'title' => '',
376
- 'restrict_list' => '',
377
- 'restrict_mode' => 'exclude',
378
- 'arb_text' => '' );
379
-
380
- $instance = wp_parse_args( (array) $instance, $defaultvalues );
381
- ?>
382
- <p style="text-align:right; font-size: 11px; margin-bottom:0px;"><a href="options-general.php?page=mp3jplayer.php">Plugin options</a> | <a href="options-general.php?page=mp3jplayer.php#howto">Help</a></p>
383
- <p style="margin-top:-15px; margin-bottom:4px;">Shortcodes:</p>
384
- <!-- Arbitrary text/shortcodes -->
385
- <p style="margin:8px 0 10px 0; font-size: 11px;"><textarea class="widefat" style="font-size:11px;" rows="8" cols="85" id="<?php echo $this->get_field_id( 'arb_text' ); ?>" name="<?php echo $this->get_field_name( 'arb_text' ); ?>"><?php echo $instance['arb_text']; ?></textarea></p>
386
- <!-- Page Filter -->
387
- <p style="font-size: 11px; margin:10px 0px 4px 0px;">
388
- Include <input type="radio" id="<?php echo $this->get_field_id( 'restrict_mode' ); ?>" name="<?php echo $this->get_field_name( 'restrict_mode' ); ?>" value="include" <?php if ($instance['restrict_mode'] == "include") { _e('checked="checked"', "mp3jplayerwidget2"); }?> />
389
- or <input type="radio" id="<?php echo $this->get_field_id( 'restrict_mode' ); ?>" name="<?php echo $this->get_field_name( 'restrict_mode' ); ?>" value="exclude" <?php if ($instance['restrict_mode'] == "exclude") { _e('checked="checked"', "mp3jplayerwidget2"); }?> />
390
- Exclude pages &nbsp;<input class="widefat" style="font-size:11px; width:200px;" type="text" id="<?php echo $this->get_field_id( 'restrict_list' ); ?>" name="<?php echo $this->get_field_name( 'restrict_list' ); ?>" value="<?php echo $instance['restrict_list']; ?>" /></p>
391
- <p class="description" style="font-size:11px; color:#999999; margin-top:4px; margin-bottom:1px;">A comma separated list, can use post ID's, <code>index</code>, <code>archive</code>, and <code>search</code>.</p>
392
- <!-- Widget Heading -->
393
- <p style="margin: -43px 0px 35px 420px; font-size:11px;">Widget Heading: <input style="width:260px;"class="widefat" type="text" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" /></p>
394
 
395
- <?php
396
  }
397
  } //end class
398
  }
1
  <?php
2
+ /* UI WIDGET
3
+ adds one playlist player at a time via mode/tickbock ui */
4
 
5
+ if ( class_exists("WP_Widget") ) {
6
+ if ( !class_exists("MP3_jPlayer") ) {
7
+
8
+ class MP3_jPlayer extends WP_Widget {
9
+
10
+ /* Constructor (required by api) */
 
 
 
 
 
 
 
 
11
  function MP3_jPlayer() {
12
 
13
  $widget_ops = array(
22
  $this->WP_Widget( 'mp3-jplayer-widget', __('MP3j-ui', 'mp3jplayerwidget'), $widget_ops, $control_ops );
23
  }
24
 
25
+ /* Sets up widget playlist and writes player (required by api) */
 
 
 
26
  function widget( $args, $instance ) {
27
+ global $mp3_fox;
28
+ $mp3_fox->dbug['str'] .= "\n### Checking UI widget...";
29
  if ( !is_home() && !is_archive() && !is_singular() && !is_search() ) { return; }
30
 
31
+ if ( $mp3_fox->page_filter( $instance['restrict_list'], $instance['restrict_mode'] ) ) {
32
+ $mp3_fox->dbug['str'] .= "\nExiting (page filter says no)";
33
+ return;
34
+ }
35
 
36
+ //playlist building
37
  if ( $instance['widget_mode'] == "1" ) { // Must be singular and have fields playlist
38
  if ( is_singular() ) {
39
+ if ( ($meta = $mp3_fox->meta_to_KVs()) ) {
40
+ $templist = $mp3_fox->generate_playlist( $meta['Ks'], $meta['Vs'] );
41
+ }
42
+ if ( $templist['count'] < 1 ) {
43
+ return;
44
+ }
45
+ } else {
46
+ return;
47
+ }
48
+ $Wplist = $templist;
49
  }
50
  if ( $instance['widget_mode'] == "2" ) {
51
  $captions = ""; // TODO: widget needs captions input
52
+ if ( !($Npl = $mp3_fox->string_to_playlist( $instance['arb_playlist'], $captions )) ) {
53
  return;
54
  }
55
+ $Wplist = $Npl;
56
  }
57
  if ( $instance['widget_mode'] == "3" ) {
58
+ if ( !($newl = $mp3_fox->make_widget_playlist( $instance )) ) {
59
+ return;
60
+ }
61
+ $Wplist = $newl;
62
  }
 
 
63
 
64
+ if ( $instance['slice_size'] != "" && $instance['slice_size'] >= 1 ) { $Wplist = $mp3_fox->pick_from_playlist( $instance['slice_size'], $Wplist ); }
65
+ if ( $instance['shuffle'] == "true" ) { if ( $Wplist['count'] > 1 ) { shuffle( $Wplist['order'] ); } }
66
+
67
+ // Write it
68
+ $PlayerName = "MI_" . $mp3_fox->M_no;
69
+ $mp3_fox->write_playlist_js( $Wplist, $PlayerName );
70
 
71
+ // Set up bits
72
  $width = ( $instance['player_width'] == "" ) ? $mp3_fox->theSettings['player_width'] : $instance['player_width'];
 
73
  $popout_title = strip_tags($instance['title']);
74
  $popout_title = trim($popout_title);
75
  $popout_title = ( !empty($popout_title) ) ? $popout_title . " | " . get_bloginfo('name') : get_bloginfo('name') . " | " . get_bloginfo('description');
77
  $autoplay = ( $instance['autoplay'] == "true" ) ? "true" : "false";
78
  $loop = ( $instance['loop'] == "true" ) ? "true" : "false";
79
  $vol = $instance['volume'];
 
80
  $pos = $instance['position'];
81
  $pn = $instance['pn_buttons'];
82
  $stop = $instance['stop_button'];
83
+ $dload = $instance['download_link'];
84
+ $pID = $mp3_fox->Player_ID;
85
+
86
+ $addclass = ( $instance['mods'] == "true" ) ? " mp3j_widgetmods" : "";
87
+ if ( $dload == "true" || $dload == "y" || $dload == "1" ) {
88
+ $dload_info = "true";
89
+ $dload_html = "<div id=\"download_mp3j_" . $pID . "\" class=\"dloadmp3-MI" . $addclass . "\"></div>";
90
+ } elseif ( $dload == "loggedin" ) {
91
+ if ( is_user_logged_in() ) {
92
+ $dload_info = "true";
93
+ $dload_html = "<div id=\"download_mp3j_" . $pID . "\" class=\"dloadmp3-MI" . $addclass . "\"></div>";
94
+ } else {
95
+ $dload_info = "false";
96
+ if ( $mp3_fox->theSettings['loggedout_dload_text'] == "" ) {
97
+ $dload_html = "";
98
+ } else {
99
+ if ( $mp3_fox->theSettings['loggedout_dload_link'] != "" ) {
100
+ $dload_html = "<div id=\"download_mp3j_" . $pID . "\" class=\"dloadmp3-MI whilelinks" . $addclass . "\"><a href=\"" . $mp3_fox->theSettings['loggedout_dload_link'] . "\">" . $mp3_fox->theSettings['loggedout_dload_text'] . "</a></div>";
101
+ } else {
102
+ $dload_html = "<div id=\"download_mp3j_" . $pID . "\" class=\"dloadmp3-MI logintext" . $addclass . "\"><p>" . $mp3_fox->theSettings['loggedout_dload_text'] . "</p></div>";
103
+ }
104
+ }
105
+ }
106
+ } else {
107
+ $dload_info = "false";
108
+ $dload_html = "";
109
+ }
110
+
111
+ // Add info to js info array
112
+ $play = "#USE_G#";
113
  $pp_height = (int)$instance['player_height'];
114
  $pp_height = ( empty($pp_height) || $pp_height === 0 ) ? 96 : $pp_height;
115
+ $pp_title = str_replace("'", "\'", $popout_title);
116
+ $pp_title = str_replace("&#039;", "\'", $pp_title);
 
 
 
117
 
118
+ $mp3_fox->JS['players'][] = "{ list: MP3J_PLAYLISTS." . $PlayerName . ", tr: 0, type: 'MI', lstate: " . $list . ", loop: " . $loop . ", play_txt: '" . $play . "', pause_txt: '', pp_title: '" . $pp_title . "', autoplay: " . $autoplay . ", download: " . $dload_info . ", vol: " . $vol . ", height: " . $pp_height . " }";
119
+
120
+ // Make transport buttons
121
+ $prevnext = ( $Wplist['count'] > 1 && $pn == "true" ) ? "<div class=\"Next_mp3j\" id=\"Next_mp3j_" . $pID . "\">Next&raquo;</div><div class=\"Prev_mp3j\" id=\"Prev_mp3j_" . $pID . "\">&laquo;Prev</div>" : "";
122
  $play_h = "<div class=\"buttons_mp3j\" id=\"playpause_mp3j_" . $pID . "\">Play Pause</div>";
123
  $stop_h = ( $stop == "true" ) ? "<div class=\"stop_mp3j\" id=\"stop_mp3j_" . $pID . "\">Stop</div>" : "";
124
 
125
+ // Build player html
126
+ //$theplayer = $mp3_fox->write_primary_player( $PlayerName, $pID, $pos, $width, $mods, $dload, '', $play_h, $stop_h, $prevnext, $instance['player_height'], $list );
127
+ //$theplayer = $mp3_fox->write_primary_player( $pID, $pos, $width, $mods, $dload, '', $play_h, $stop_h, $prevnext, $instance['player_height'], $list );
128
+ $theplayer = $mp3_fox->write_primary_player( $pID, $pos, $width, $addclass, $dload_html, '', $play_h, $stop_h, $prevnext, $instance['player_height'], $list, $Wplist['count'] );
129
 
130
  extract( $args ); // supplied WP theme vars
131
  echo $before_widget;
134
  echo $after_widget;
135
 
136
  $mp3_fox->write_jp_div();
137
+ $mp3_fox->dbug['str'] .= "\nOK (id " . $mp3_fox->Player_ID . ")";
138
+ $mp3_fox->M_no++;
139
  $mp3_fox->Player_ID++;
140
  return;
141
  }
142
 
143
+ /* Updates the widget settings (required by api) */
 
 
 
144
  function update( $new_instance, $old_instance ) {
145
 
146
  $instance = $old_instance;
177
  }
178
  }
179
 
180
+ $instance['volume'] = preg_replace("/[^0-9]/", "", $new_instance['volume']);
181
  if ($instance['volume'] < 0 || $instance['volume']=="") { $instance['volume'] = "0"; }
182
  if ($instance['volume'] > 100) { $instance['volume'] = "100"; }
183
 
184
  return $instance;
185
  }
186
 
187
+ /* Creates defaults and writes widget panel (required by api) */
 
 
 
188
  function form( $instance ) {
189
 
190
  global $mp3_fox;
191
  $mp3_fox->theSettings = get_option('mp3FoxAdminOptions');
192
 
193
  $defaultvalues = array(
194
+ 'title' => '',
195
+ 'id_to_play' => '',
196
+ 'widget_mode' => '1',
197
+ 'shuffle' => 'false',
198
+ 'restrict_list' => '',
199
+ 'restrict_mode' => 'exclude',
200
+ 'play_library' => 'false',
201
+ 'arb_playlist' => '',
202
+ 'play_page' => 'false',
203
+ 'slice_size' => '',
204
+ 'play_folder' => 'false',
205
+ 'folder_to_play' => '',
206
+ 'download_link' => $mp3_fox->theSettings['show_downloadmp3'],
207
+ 'playlist_mode' => $mp3_fox->theSettings['playlist_show'],
208
+ 'player_width' => '100%',
209
+ 'autoplay' => $mp3_fox->theSettings['auto_play'],
210
+ 'loop' => $mp3_fox->theSettings['playlist_repeat'],
211
+ 'volume' => $mp3_fox->theSettings['initial_vol'],
212
+ 'mods' => 'false',
213
+ 'position' => 'rel-L',
214
+ 'pn_buttons' => 'true',
215
+ 'stop_button' => 'true',
216
+ 'player_height' => ''
217
+ );
218
 
219
  $instance = wp_parse_args( (array) $instance, $defaultvalues );
220
  $helptext_col = "color:#a0a0a0;";
221
+ ?>
222
+
223
  <p style="text-align:right; font-size: 11px; margin-bottom:0px;"><a href="options-general.php?page=mp3jplayer.php">Plugin options</a> | <a href="options-general.php?page=mp3jplayer.php#howto">Help</a></p>
224
  <p style="margin-top:-10px; margin-bottom:10px;">Play Mode:</p>
225
  <p style="margin-bottom: 10px;"><input type="radio" id="<?php echo $this->get_field_id( 'widget_mode' ); ?>" name="<?php echo $this->get_field_name( 'widget_mode' ); ?>" value="1" <?php if ($instance['widget_mode'] == "1") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
228
  <div style="margin:0px 0px 0px 25px; border-top: 1px solid #eee; height: 10px;"></div>
229
  <p style="margin-top:0px; margin-bottom:6px;"><input type="radio" id="<?php echo $this->get_field_id( 'widget_mode' ); ?>" name="<?php echo $this->get_field_name( 'widget_mode' ); ?>" value="2" <?php if ($instance['widget_mode'] == "2") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
230
  &nbsp;&nbsp;Mode 2 &nbsp;<span class="description" style="margin-left: 0px;">Fixed playlist</span>
231
+ <span class="description" style="margin: 0px 0px 10px 10px; font-size: 11px; <?php echo $helptext_col; ?>">A <code><?php echo $mp3_fox->theSettings['f_separator']; ?></code> separated list of filenames or full URI's.</span></p>
232
  <p style="margin-left:25px; margin-bottom:15px; font-size: 11px;"><textarea class="widefat" style="font-size:11px;" rows="4" cols="80" id="<?php echo $this->get_field_id( 'arb_playlist' ); ?>" name="<?php echo $this->get_field_name( 'arb_playlist' ); ?>"><?php echo $instance['arb_playlist']; ?></textarea></p>
233
  <div style="margin: 0px 0px 0px 25px; border-top: 1px solid #eee; height: 5px;"></div>
234
  <p style="margin-top: 0px;margin-bottom: 10px;"><input type="radio" id="<?php echo $this->get_field_id( 'widget_mode' ); ?>" name="<?php echo $this->get_field_name( 'widget_mode' ); ?>" value="3" <?php if ($instance['widget_mode'] == "3") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
239
  <p style="margin:0px 0px 1px 25px; font-size:11px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'play_library' ); ?>" name="<?php echo $this->get_field_name( 'play_library' ); ?>" value="true" <?php if ($instance['play_library'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
240
  &nbsp;My library</p>
241
 
242
+ <?php
243
  if ( $instance['folder_to_play'] == "" ) {
244
  $folder = $mp3_fox->theSettings['mp3_dir'];
245
+ } else {
 
246
  $folder = $instance['folder_to_play'];
247
  }
248
  $foldertracks = $mp3_fox->grab_local_folder_mp3s( $folder );
252
  $txt = $c . "&nbsp;mp3";
253
  if ( $c != 1 ) { $txt .= "'s"; }
254
  $txt .= "&nbsp;in this folder";
255
+ } else {
 
256
  $style = "color:#aaa;";
257
  $txt = "There are no mp3's here";
258
  }
259
+ } elseif ( $foldertracks === true ) {
 
260
  $txt = "Folder not found, check path<br />and permissions";
261
  $style = "color:#dfad00;";
262
+ } else {
 
263
  $txt = "x Remote or inaccessible folder";
264
  $style = "color:#f56b0f;";
265
  }
266
+ ?>
267
+
268
  <p style="margin:0px 0px 0px 25px; font-size: 11px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'play_folder' ); ?>" name="<?php echo $this->get_field_name( 'play_folder' ); ?>" value="true" <?php if ($instance['play_folder'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
269
  &nbsp;A folder: &nbsp;<input class="widefat" type="text" style="width:300px; margin-right:0px; font-size:11px;" id="<?php echo $this->get_field_id( 'folder_to_play' ); ?>" name="<?php echo $this->get_field_name( 'folder_to_play' ); ?>" value="<?php echo $instance['folder_to_play']; ?>" /></p>
270
  <p class="description" style="text-align:right; margin:0px 200px 4px 0px; font-size:10px; <?php echo $style; ?>"><?php echo $txt; ?></p>
271
  </div>
272
  <div style="margin: 10px 0px 8px 0px; border-top: 1px solid #eee; border-bottom: 1px solid #eee;">
273
+ <p style="font-size: 11px; margin: 10px 0px 8px 0px;">Initial volume &nbsp;<input class="widefat" style="width:40px; text-align:right;" type="text" id="<?php echo $this->get_field_id( 'volume' ); ?>" name="<?php echo $this->get_field_name( 'volume' ); ?>" value="<?php echo $instance['volume']; ?>" /> &nbsp;<span class="description" style="font-size:11px; color:#999999;">(0 - 100)</span></p>
 
 
274
  <div style="margin:-30px 0 0 225px;">
275
  <p style="font-size: 11px;margin: 0px 0px 2px 0px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'autoplay' ); ?>" name="<?php echo $this->get_field_name( 'autoplay' ); ?>" value="true" <?php if ($instance['autoplay'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
276
  &nbsp;Autoplay</p>
278
  &nbsp;Repeat</p>
279
  </div>
280
  <div style="margin:-39px 0 0 336px;">
281
+ <p style="font-size: 11px;margin: 0px 0px 2px 0px;">Download
282
+ <select id="<?php echo $this->get_field_id( 'download_link' ); ?>" name="<?php echo $this->get_field_name( 'download_link' ); ?>" style="width:65px; font-size:11px;">
283
+ <option value="true" <?php if ( 'true' == $instance['download_link'] ) { echo 'selected="selected"'; } ?>>Yes</option>
284
+ <option value="false" <?php if ( 'false' == $instance['download_link'] ) { echo 'selected="selected"'; } ?>>No</option>
285
+ <option value="loggedin" <?php if ( 'loggedin' == $instance['download_link'] ) { echo 'selected="selected"'; } ?>>Logged in</option>
286
+ </select></p>
287
  <p style="font-size: 11px;margin: 0px 0px 2px 0px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'playlist_mode' ); ?>" name="<?php echo $this->get_field_name( 'playlist_mode' ); ?>" value="true" <?php if ($instance['playlist_mode'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
288
  &nbsp;Show playlist</p>
289
  </div>
290
+ <div style="margin:-42px 0 0px 470px;">
291
+ <p style="font-size: 11px;margin: 0px 0px 2px 0px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'pn_buttons' ); ?>" name="<?php echo $this->get_field_name( 'pn_buttons' ); ?>" value="true" <?php if ($instance['pn_buttons'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
292
  &nbsp;Prev/next buttons</p>
293
+ <p style="font-size: 11px;margin: 0px 0px 2px 0px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'stop_button' ); ?>" name="<?php echo $this->get_field_name( 'stop_button' ); ?>" value="true" <?php if ($instance['stop_button'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
294
  &nbsp;Stop button</p>
295
  </div>
296
+ <div style="margin:-37px 0 10px 630px;">
297
  <p style="font-size:11px;margin: 0px 0px 2px 0px;"><input type="checkbox" id="<?php echo $this->get_field_id( 'shuffle' ); ?>" name="<?php echo $this->get_field_name( 'shuffle' ); ?>" value="true" <?php if ($instance['shuffle'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
298
  &nbsp;Shuffle</p>
299
  <p style="margin:0px 0px 10px 0px; font-size:11px;">
300
  Pick &nbsp;<input class="widefat" style="width:35px; text-align:right;" type="text" id="<?php echo $this->get_field_id( 'slice_size' ); ?>" name="<?php echo $this->get_field_name( 'slice_size' ); ?>" value="<?php echo $instance['slice_size']; ?>" />&nbsp; track(s)</p>
301
  </div>
 
302
  <p style="margin:0px 0px 8px 225px; font-size:11px; ">Width:
303
  <input class="widefat" style="font-size:11px; width:60px;" type="text" id="<?php echo $this->get_field_id( 'player_width' ); ?>" name="<?php echo $this->get_field_name( 'player_width' ); ?>" value="<?php echo $instance['player_width']; ?>" />
304
  &nbsp;&nbsp;Height: <input class="widefat" style="font-size:11px; width:60px;" type="text" id="<?php echo $this->get_field_id( 'player_height' ); ?>" name="<?php echo $this->get_field_name( 'player_height' ); ?>" value="<?php echo $instance['player_height']; ?>" />
311
  <option value="right" <?php if ( 'right' == $instance['position'] ) { echo 'selected="selected"'; } ?>>Float right</option>
312
  </select>
313
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" id="<?php echo $this->get_field_id( 'mods' ); ?>" name="<?php echo $this->get_field_name( 'mods' ); ?>" value="true" <?php if ($instance['mods'] == "true") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
314
+ Mods</p>
 
315
  </div>
316
  <p style="font-size: 11px; margin:10px 0px 4px 0px;">
317
  Include <input type="radio" id="<?php echo $this->get_field_id( 'restrict_mode' ); ?>" name="<?php echo $this->get_field_name( 'restrict_mode' ); ?>" value="include" <?php if ($instance['restrict_mode'] == "include") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
318
  or <input type="radio" id="<?php echo $this->get_field_id( 'restrict_mode' ); ?>" name="<?php echo $this->get_field_name( 'restrict_mode' ); ?>" value="exclude" <?php if ($instance['restrict_mode'] == "exclude") { _e('checked="checked"', "mp3jplayerwidget"); }?> />
319
  Exclude pages &nbsp;<input class="widefat" style="font-size:11px; width:200px;" type="text" id="<?php echo $this->get_field_id( 'restrict_list' ); ?>" name="<?php echo $this->get_field_name( 'restrict_list' ); ?>" value="<?php echo $instance['restrict_list']; ?>" /></p>
320
+ <p class="description" style="font-size:11px; margin-top:4px; margin-bottom:1px; <?php echo $helptext_col; ?>">A comma separated list, can use post ID's, <code>index</code>, <code>archive</code>, <code>post</code>, and <code>search</code>.</p>
321
  <p style="margin: -43px 0px 25px 420px; font-size: 11px;">Widget Heading: <input class="widefat" style="width:260px;" type="text" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo $instance['title']; ?>" /></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
322
 
323
+ <?php
324
  }
325
  } //end class
326
  }
mp3jplayer.php CHANGED
@@ -2,13 +2,13 @@
2
  /*
3
  Plugin Name: MP3-jPlayer
4
  Plugin URI: http://sjward.org/jplayer-for-wordpress
5
- Description: Add mp3 players to posts, pages, and sidebars. HTML5 / Flash. Shortcodes, widgets, and template tags. See the help on the settings page for a full list of options.
6
- Version: 1.7.3
7
  Author: Simon Ward
8
  Author URI: http://www.sjward.org
9
  License: GPL2
10
 
11
- Copyright 2011 Simon Ward (email: sinomward@yahoo.co.uk)
12
 
13
  This program is free software; you can redistribute it and/or modify
14
  it under the terms of the GNU General Public License, version 2, as
@@ -23,127 +23,95 @@ License: GPL2
23
  along with this program; if not, write to the Free Software
24
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
  */
26
-
27
-
28
- /* grab class definitions */
29
- $mp3jpath = dirname(__FILE__);
30
- include_once( $mp3jpath . '/mp3j_main.php');
31
- include_once( $mp3jpath . '/mp3j_frontend.php'); // extends main
32
- include_once( $mp3jpath . '/mp3j_widget.php'); // extends WP's widget class
33
 
34
- /* Create instance of front */
 
 
 
35
  if ( class_exists("MP3j_Front") ) {
36
  $mp3_fox = new MP3j_Front();
37
  }
38
 
39
- /* Register and init with WP */
40
- if ( isset($mp3_fox) )
41
- {
42
- if ( !function_exists("mp3Fox_ap") ) {
43
- function mp3Fox_ap() {
 
 
 
44
  global $mp3_fox;
45
- if ( !isset($mp3_fox) ) {
46
- return;
47
- }
48
  if ( function_exists('add_options_page') ) {
49
- // settings menu page
50
- //$pluginpage = add_options_page('MP3 jPlayer', 'MP3 jPlayer', 9, basename(__FILE__), array(&$mp3_fox, 'printAdminPage'));
51
- $pluginpage = add_options_page('MP3 jPlayer', 'MP3 jPlayer', 'manage_options', basename(__FILE__), array(&$mp3_fox, 'printAdminPage'));
52
  add_action( 'admin_head-'. $pluginpage, array(&$mp3_fox, 'mp3j_admin_header') );
53
  add_action( 'admin_footer-'. $pluginpage, array(&$mp3_fox, 'mp3j_admin_footer') );
 
54
  }
55
  }
 
 
 
 
 
 
 
 
 
 
 
56
  }
57
 
58
- // add scripts
59
  function mp3j_addscripts( $style = "" ) {
60
  do_action('mp3j_addscripts', $style);
61
  }
62
-
63
- // Depreciated since 1.6
64
- function mp3j_flag( $set = 1 ) {
65
- do_action('mp3j_flag', $set);
66
  }
67
 
68
- // write player
69
- function mp3j_put( $id = "", $pos = "", $dload = "", $play = "", $list = "" ) {
70
- do_action( 'mp3j_put', $id, $pos, $dload, $play, $list );
71
  }
72
-
73
- // write plugin info
74
  function mp3j_debug( $display = "" ) {
75
  do_action('mp3j_debug', $display);
76
  }
77
 
78
- // retrieve library
79
- function mp3j_grab_library( $format = 1 ) {
80
-
81
- $thereturn = array();
82
- if ( $format == 1 ) {
83
- $library = apply_filters('mp3j_grab_library', $thereturn );
84
- return $library;
85
- }
86
- if ( $format == 0 ) {
87
- $library = apply_filters('mp3j_grab_library_wp', $thereturn );
88
- return $library;
89
- }
90
- else {
91
- return;
92
- }
93
- }
94
-
95
- // Depreciated since 1.7
96
- function mp3j_set_meta( $tracks, $captions = "", $startnum = 1 ) {
97
- if ( empty($tracks) || !is_array($tracks) ) {
98
- return;
99
- }
100
- do_action('mp3j_set_meta', $tracks, $captions, $startnum);
101
  }
102
 
103
- // register widgets
104
  function mp3jplayer_widget_init() {
105
  register_widget( 'MP3_jPlayer' );
106
  }
107
- if ( class_exists('MP3_jPlayer') ) {
108
- add_action( 'widgets_init', 'mp3jplayer_widget_init' );
109
- }
110
 
111
- function mp3jsingle_widget_init() {
112
- register_widget( 'MP3j_single' );
113
- }
114
- if ( class_exists('MP3j_single') ) {
115
- add_action( 'widgets_init', 'mp3jsingle_widget_init' );
116
  }
 
117
 
118
- // register shortcodes
119
  add_shortcode('mp3t', array(&$mp3_fox, 'inline_play_handler'));
120
  add_shortcode('mp3j', array(&$mp3_fox, 'inline_play_graphic'));
121
  add_shortcode('mp3-jplayer', array(&$mp3_fox, 'primary_player'));
122
- add_shortcode('mp3-link', array(&$mp3_fox, 'link_plays_track'));
123
- //add_shortcode('mp3-album', array(&$mp3_fox, 'album_player'));
124
-
125
- // admin hooks
126
- add_action('activate_mp3-jplayer/mp3jplayer.php', array(&$mp3_fox, 'initFox'));
127
- add_action('deactivate_mp3-jplayer/mp3jplayer.php', array(&$mp3_fox, 'uninitFox'));
128
- add_action('admin_menu', 'mp3Fox_ap');
129
 
130
- // template hooks
131
  add_action('wp_head', array(&$mp3_fox, 'header_scripts_handler'), 2);
132
- //add_action('wp_enqueue_scripts', array(&$mp3_fox, 'header_scripts_handler'));
133
-
134
-
135
- add_filter('the_content', array(&$mp3_fox, 'content_handler'));
136
-
137
- //add_filter('get_the_excerpt', array(&$mp3_fox, 'get_excerpt_handler'), 1);
138
  add_action('wp_footer', array(&$mp3_fox, 'footercode_handler'));
139
- add_action('mp3j_put', array(&$mp3_fox, 'template_tag_handler'), 10, 5 );
140
  add_action('mp3j_addscripts', array(&$mp3_fox, 'scripts_tag_handler'), 1, 1 );
141
  add_filter('mp3j_grab_library', array(&$mp3_fox, 'grablibrary_handler'), 10, 1 );
142
- add_filter('mp3j_grab_library_wp', array(&$mp3_fox, 'grablibraryWP_handler'), 10, 1 );
143
  add_action('mp3j_debug', array(&$mp3_fox, 'debug_info'), 10, 1 );
 
144
 
145
- //not used anymore
146
- add_action('mp3j_set_meta', array(&$mp3_fox, 'set_meta_handler'), 10, 3 );
147
- add_action('mp3j_flag', array(&$mp3_fox, 'flag_tag_handler'), 10, 1 );
148
  }
149
  ?>
2
  /*
3
  Plugin Name: MP3-jPlayer
4
  Plugin URI: http://sjward.org/jplayer-for-wordpress
5
+ Description: Add mp3 players to posts, pages, and sidebars. HTML5 with Flash fall back. Shortcodes, widgets, and template tags. See the help on the Settings Page for a full list of options.
6
+ Version: 1.8
7
  Author: Simon Ward
8
  Author URI: http://www.sjward.org
9
  License: GPL2
10
 
11
+ Copyright 2012 Simon Ward
12
 
13
  This program is free software; you can redistribute it and/or modify
14
  it under the terms of the GNU General Public License, version 2, as
23
  along with this program; if not, write to the Free Software
24
  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
25
  */
 
 
 
 
 
 
 
26
 
27
+ $mp3j_path = dirname(__FILE__);
28
+ include_once( $mp3j_path . '/mp3j_main.php');
29
+ include_once( $mp3j_path . '/mp3j_frontend.php'); // extends main
30
+
31
  if ( class_exists("MP3j_Front") ) {
32
  $mp3_fox = new MP3j_Front();
33
  }
34
 
35
+ if ( isset($mp3_fox) ) {
36
+ include_once( $mp3j_path . '/mp3j_widget.php'); // ui widget
37
+ include_once( $mp3j_path . '/mp3j_sc-widget.php'); // sh Widget
38
+
39
+ if ( is_admin() ) {
40
+ include_once( $mp3j_path . '/mp3j_admin.php'); //settings page
41
+
42
+ function mp3j_adminpage() { // add a settings menu page
43
  global $mp3_fox;
 
 
 
44
  if ( function_exists('add_options_page') ) {
45
+ $pluginpage = add_options_page('MP3 jPlayer', 'MP3 jPlayer', 'manage_options', basename(__FILE__), 'mp3j_print_admin_page');
 
 
46
  add_action( 'admin_head-'. $pluginpage, array(&$mp3_fox, 'mp3j_admin_header') );
47
  add_action( 'admin_footer-'. $pluginpage, array(&$mp3_fox, 'mp3j_admin_footer') );
48
+ add_filter( 'plugin_action_links', 'mp3j_plugin_links', 10, 2 );
49
  }
50
  }
51
+
52
+ function mp3j_plugin_links( $links, $file ) { // add a settings link on plugins page
53
+ if( $file == 'mp3-jplayer/mp3jplayer.php' ) {
54
+ $settings_link = '<a href="options-general.php?page=mp3jplayer.php">'.__('Settings').'</a>';
55
+ array_unshift( $links, $settings_link );
56
+ }
57
+ return $links;
58
+ }
59
+
60
+ add_action('deactivate_mp3-jplayer/mp3jplayer.php', array(&$mp3_fox, 'uninitFox'));
61
+ add_action('admin_menu', 'mp3j_adminpage');
62
  }
63
 
64
+ // template tags
65
  function mp3j_addscripts( $style = "" ) {
66
  do_action('mp3j_addscripts', $style);
67
  }
68
+
69
+ function mp3j_div() {
70
+ do_action('mp3j_div');
 
71
  }
72
 
73
+ function mp3j_put( $shortcodes = "" ) {
74
+ do_action( 'mp3j_put', $shortcodes );
 
75
  }
76
+
 
77
  function mp3j_debug( $display = "" ) {
78
  do_action('mp3j_debug', $display);
79
  }
80
 
81
+ function mp3j_grab_library( $format = "" ) {
82
+ $lib = apply_filters('mp3j_grab_library', '' );
83
+ return $lib;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  }
85
 
86
+ // widgets
87
  function mp3jplayer_widget_init() {
88
  register_widget( 'MP3_jPlayer' );
89
  }
90
+ add_action( 'widgets_init', 'mp3jplayer_widget_init' );
 
 
91
 
92
+ function mp3jshortcodes_widget_init() {
93
+ register_widget( 'MP3j_single' ); //silly name but can't change it!
 
 
 
94
  }
95
+ add_action( 'widgets_init', 'mp3jshortcodes_widget_init' );
96
 
97
+ // shortcodes
98
  add_shortcode('mp3t', array(&$mp3_fox, 'inline_play_handler'));
99
  add_shortcode('mp3j', array(&$mp3_fox, 'inline_play_graphic'));
100
  add_shortcode('mp3-jplayer', array(&$mp3_fox, 'primary_player'));
101
+ //add_shortcode('mp3-link', array(&$mp3_fox, 'link_plays_track')); //not in current version
102
+ add_shortcode('mp3-popout', array(&$mp3_fox, 'popout_link_player'));
 
 
 
 
 
103
 
104
+ // template hooks
105
  add_action('wp_head', array(&$mp3_fox, 'header_scripts_handler'), 2);
 
 
 
 
 
 
106
  add_action('wp_footer', array(&$mp3_fox, 'footercode_handler'));
107
+ add_action('mp3j_put', array(&$mp3_fox, 'template_tag_handler'), 10, 1 );
108
  add_action('mp3j_addscripts', array(&$mp3_fox, 'scripts_tag_handler'), 1, 1 );
109
  add_filter('mp3j_grab_library', array(&$mp3_fox, 'grablibrary_handler'), 10, 1 );
 
110
  add_action('mp3j_debug', array(&$mp3_fox, 'debug_info'), 10, 1 );
111
+ add_action('mp3j_div', array(&$mp3_fox, 'write_jp_div'));
112
 
113
+ // retired
114
+ function mp3j_set_meta( $tracks, $captions = "", $startnum = 1 ) { } //since 1.7
115
+ function mp3j_flag( $set = 1 ) { } //since 1.6
116
  }
117
  ?>
popout-mp3j.php DELETED
@@ -1,183 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
- <html>
3
- <head>
4
- <title></title>
5
- <!-- MP3-jPlayer 1.7.2 Pop-out player -->
6
- <script type="text/javascript">
7
- <!--
8
- function loadjscss(filename, filetype) {
9
- if (filetype=="js"){
10
- var fileref=document.createElement('script');
11
- fileref.setAttribute("type","text/javascript");
12
- fileref.setAttribute("src", filename);
13
- }
14
- else if (filetype=="css"){
15
- var fileref=document.createElement("link");
16
- fileref.setAttribute("rel", "stylesheet");
17
- fileref.setAttribute("type", "text/css");
18
- fileref.setAttribute("href", filename);
19
- }
20
- if (typeof fileref!="undefined") {
21
- document.getElementsByTagName("head")[0].appendChild(fileref);
22
- }
23
- }
24
-
25
- if(window.opener && !window.opener.closed) {
26
- var foxpathtoswf = window.opener.foxpathtoswf;
27
- var foxpathtoimages = window.opener.foxpathtoimages;
28
- var FoxAnimSlider = window.opener.FoxAnimSlider;
29
- var fox_playf = "false";
30
- var foxPP_fixedcss = window.opener.foxPP_fixedcss;
31
- var info_array = window.opener.mp3j_info;
32
- var launched_id = window.opener.pp_playerID;
33
- var mp3j_info = [{
34
- list:info_array[launched_id].list,
35
- type:'MI',
36
- tr:info_array[launched_id].tr,
37
- lstate:info_array[launched_id].lstate,
38
- loop:info_array[launched_id].loop,
39
- play_txt:info_array[launched_id].play_txt,
40
- pause_txt:info_array[launched_id].pause_txt,
41
- pp_title:info_array[launched_id].pp_title,
42
- autoplay:window.opener.pp_startplaying,
43
- has_ul:1,
44
- transport:'playpause',
45
- status:'full',
46
- download:info_array[launched_id].download,
47
- vol:info_array[launched_id].vol,
48
- height:info_array[launched_id].height
49
- }];
50
- var popout_height = window.opener.popout_height;
51
- var player_height = window.opener.player_height;
52
-
53
- //css
54
- var foxPP_playlist_divider = window.opener.foxPP_playlist_divider;
55
- var foxPP_playlist_text = window.opener.foxPP_playlist_text;
56
- var foxPP_playlist_current = window.opener.foxPP_playlist_current;
57
- var foxPP_playlist_hover = window.opener.foxPP_playlist_hover;
58
- var foxPP_indicator_tint = window.opener.foxPP_indicator_tint;
59
- var foxPP_volume_grad = window.opener.foxPP_volume_grad;
60
- var foxPP_loader_bar_colour = window.opener.foxPP_loader_bar_colour;
61
- var foxPP_loader_bar_opac = window.opener.foxPP_loader_bar_opac;
62
- var foxPP_posbar_colour = window.opener.foxPP_posbar_colour;
63
- var foxPP_posbar_opac = window.opener.foxPP_posbar_opac;
64
- var foxPP_listBGa_hover = window.opener.foxPP_listBGa_hover;
65
- var foxPP_listBGa_current = window.opener.foxPP_listBGa_current;
66
- loadjscss( window.opener.foxPP_stylesheet, "css" );
67
- }
68
- //-->
69
- </script>
70
-
71
- <style type="text/css">
72
- span.mp3-finding, span.mp3-loading { opacity:.60; filter:alpha(opacity=60); }
73
- div.wrap-MI { min-width:190px; }
74
- </style>
75
-
76
- <script type="text/javascript" src="js/jquery.js"></script>
77
- <script type="text/javascript" src="js/ui.core.js"></script>
78
- <script type="text/javascript" src="js/ui.widget.js"></script>
79
- <script type="text/javascript" src="js/ui.mouse.js"></script>
80
- <script type="text/javascript" src="js/ui.slider.js"></script>
81
- <script type="text/javascript" src="js/jquery.jplayer.min.js"></script>
82
- <script type="text/javascript" src="js/mp3j-functions.js"></script>
83
- <script type="text/javascript" src="js/popout.js"></script>
84
-
85
- <script type="text/javascript">
86
- <!--
87
- jQuery(document).ready(function(){
88
- if ( typeof mp3j_info === "undefined" ) {
89
- jQuery("body").empty();
90
- jQuery("body").css("background", '#333333');
91
- jQuery("*").css("color", '#cccccc');
92
- jQuery("body").append("<h4 style='margin-left:10px;'>Please launch a playlist from the site to use me,<br />I've been refreshed and can't find my parent window.</h4>");
93
- return;
94
- }
95
-
96
- mp3j_setup();
97
- jQuery("#jquery_jplayer").jPlayer({
98
- ready: function() {
99
- mp3j_init();
100
- },
101
- oggSupport: false,
102
- volume: 100,
103
- swfPath: foxpathtoswf
104
- })
105
- .jPlayer("onProgressChange", function(loadPercent, playedPercentRelative, playedPercentAbsolute, playedTime, totalTime) {
106
- run_progress_update( loadPercent, playedPercentRelative, playedPercentAbsolute, playedTime, totalTime );
107
- })
108
- .jPlayer("onSoundComplete", function() {
109
- run_sound_complete();
110
- });
111
- });
112
- //-->
113
- </script>
114
-
115
- </head>
116
- <body style="padding:5px 4px 0px 4px; margin:0px;">
117
-
118
- <div style="position:relative;"><div id="jquery_jplayer"></div></div>
119
-
120
- <div class="wrap-MI" style="position:relative; padding:0; margin:0px auto 0px auto; width:100%;">
121
- <div class="jp-innerwrap">
122
-
123
- <div class="innerx"></div>
124
- <div class="innerleft"></div>
125
- <div class="innerright"></div>
126
- <div class="innertab"></div>
127
-
128
- <div class="jp-interface">
129
- <div id="T_mp3j_0" class="player-track-title" style="left:16px;"></div>
130
- <div id="C_mp3j_0" class="player-artist"></div>
131
- <div class="MIsliderVolume" id="vol_mp3j_0"></div>
132
- <div class="bars_holder">
133
- <div class="loadMI_mp3j" id="load_mp3j_0"></div>
134
- <div class="posbarMI_mp3j" id="posbar_mp3j_0"></div>
135
- </div>
136
- <div class="transport-MI"><div class="buttons_mp3j" id="playpause_mp3j_0">Play Pause</div><div class="stop_mp3j" id="stop_mp3j_0">Stop</div><div class="Next_mp3j" id="Next_mp3j_0">Next&raquo;</div><div class="Prev_mp3j" id="Prev_mp3j_0">&laquo;Prev</div></div>
137
- <div id="P-Time-MI_0" class="jp-play-time"></div>
138
- <div id="T-Time-MI_0" class="jp-total-time"></div>
139
- <div id="statusMI_0" class="statusMI"></div>
140
- <div id="download_mp3j_0" class="dloadmp3-MI" style="visibility: visible;"></div>
141
- <div class="playlist-toggle-MI" id="playlist-toggle_0" onclick="javascript:MI_toggleplaylist('', 0);">HIDE PLAYLIST</div>
142
- </div>
143
-
144
- </div>
145
- <div class="listwrap_mp3j" id="L_mp3j_0">
146
-
147
- <div class="playlist-colour"></div>
148
- <div class="playlist-wrap-MI"><ul class="UL-MI_mp3j" id="UL_mp3j_0"><li></li></ul></div>
149
-
150
- </div>
151
- </div>
152
-
153
- <script type="text/javascript">
154
- <!--
155
- if(window.opener && !window.opener.closed) {
156
- $("div.jp-interface").css( "height", mp3j_info[0].height+"px" );
157
- if ( !mp3j_info[0].download ) {
158
- $("div.dloadmp3-MI").hide();
159
- }
160
- if ( mp3j_info[0].list.length < 2 ) {
161
- $("#Prev_mp3j_0").hide();
162
- $("#Next_mp3j_0").hide();
163
- }
164
- if ( foxPP_fixedcss == "false" ) {
165
- $("body").css( "background" , window.opener.foxPP_bodycolour + " url('" + window.opener.foxPP_bodyimg + "')");
166
- $("div.player-track-title, div.player-artist, div.jp-play-time, div.jp-total-time, div.statusMI").css( "color" , window.opener.foxPP_screentext );
167
- $("ul.UL-MI_mp3j").css( "background" , window.opener.foxPP_playlist_img );
168
- $("div.playlist-colour").css({ "background" : window.opener.foxPP_playlist_colour, opacity : window.opener.foxPP_playlist_opac });
169
- $("div.innertab").css({ "background" : window.opener.foxPP_screen_background, opacity : window.opener.foxPP_screen_opac });
170
- $("div.transport-MI div").css("color", foxPP_playlist_hover );
171
- $("div.transport-MI div").mouseover(function () {
172
- $(this).css( "color" , foxPP_playlist_current );
173
- });
174
- $("div.transport-MI div").mouseout(function () {
175
- $(this).css("color", foxPP_playlist_hover );
176
- });
177
- }
178
- $("title").text(mp3j_info[0].pp_title);
179
- }
180
- //-->
181
- </script>
182
- </body>
183
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
popout.php ADDED
@@ -0,0 +1,181 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title></title>
5
+
6
+ <script type='text/javascript' src='js/jquery.js'></script>
7
+ <script type='text/javascript' src='js/ui.core.js'></script>
8
+ <script type='text/javascript' src='js/ui.widget.js'></script>
9
+ <script type='text/javascript' src='js/ui.mouse.js'></script>
10
+ <script type='text/javascript' src='js/ui.slider.js'></script>
11
+ <script type='text/javascript' src='js/jquery.jplayer.min.js'></script>
12
+
13
+ <script type='text/javascript' src='js/mp3-jplayer-1.8.js'></script>
14
+
15
+ <script type='text/javascript'>
16
+
17
+ var MP3J;
18
+
19
+ function loadcss(filename) {
20
+ var fileref = document.createElement("link");
21
+ fileref.setAttribute("rel", "stylesheet");
22
+ fileref.setAttribute("type", "text/css");
23
+ fileref.setAttribute("href", filename);
24
+ if (typeof fileref !== "undefined") {
25
+ document.getElementsByTagName("head")[0].appendChild(fileref);
26
+ }
27
+ }
28
+
29
+ if(window.opener && !window.opener.closed) {
30
+ loadcss(window.opener.MP3_JPLAYER.vars.stylesheet_url);
31
+ MP3J = create_mp3_jplayer();
32
+ MP3J.vars.play_f = false; // always set false!
33
+ MP3J.vars.pathto_swf = window.opener.MP3_JPLAYER.vars.pathto_swf;
34
+ MP3J.vars.silence = window.opener.MP3_JPLAYER.vars.silence;
35
+ MP3J.vars.launched_ID = window.opener.MP3_JPLAYER.vars.launched_ID;
36
+ MP3J.vars.dload_text = window.opener.MP3_JPLAYER.vars.dload_text;
37
+
38
+ var pl_info_wo = window.opener.MP3_JPLAYER.pl_info;
39
+ MP3J.pl_info = [{
40
+ list:pl_info_wo[MP3J.vars.launched_ID].list,
41
+ tr:pl_info_wo[MP3J.vars.launched_ID].tr,
42
+ type:'MI',
43
+ lstate:pl_info_wo[MP3J.vars.launched_ID].lstate,
44
+ loop:pl_info_wo[MP3J.vars.launched_ID].loop,
45
+ play_txt:pl_info_wo[MP3J.vars.launched_ID].play_txt,
46
+ pause_txt:pl_info_wo[MP3J.vars.launched_ID].pause_txt,
47
+ pp_title:pl_info_wo[MP3J.vars.launched_ID].pp_title,
48
+ autoplay:pl_info_wo[MP3J.vars.launched_ID].autoplay,
49
+ download:pl_info_wo[MP3J.vars.launched_ID].download,
50
+ vol:pl_info_wo[MP3J.vars.launched_ID].vol,
51
+ height:pl_info_wo[MP3J.vars.launched_ID].height,
52
+ cssclass:pl_info_wo[MP3J.vars.launched_ID].cssclass
53
+ }];
54
+
55
+ MP3J.vars.pp_playerheight = window.opener.MP3_JPLAYER.vars.pp_playerheight;
56
+ MP3J.vars.pp_windowheight = window.opener.MP3_JPLAYER.vars.pp_windowheight;
57
+ MP3J.vars.pp_maxheight = window.opener.MP3_JPLAYER.vars.pp_windowheight;
58
+ //MP3J.vars.pp_fixedcss = window.opener.MP3_JPLAYER.vars.pp_fixedcss;
59
+
60
+ MP3J.togglelist = function (j) {
61
+ var winwidth = jQuery(window).width();
62
+ if (this.pl_info[j].lstate === true) {
63
+ jQuery(this.eID.plwrap + j).fadeOut(300);
64
+ jQuery(this.eID.toglist + j).text('SHOW');
65
+ window.resizeTo( winwidth+24 , this.vars.pp_playerheight );
66
+ this.pl_info[j].lstate = false;
67
+ } else if (this.pl_info[j].lstate === false) {
68
+ jQuery(this.eID.plwrap + j).fadeIn("slow");
69
+ jQuery(this.eID.toglist + j).text('HIDE');
70
+ window.resizeTo( winwidth+24 , this.vars.pp_windowheight );
71
+ this.pl_info[j].lstate = true;
72
+ }
73
+ };
74
+
75
+ }
76
+
77
+ jQuery(document).ready(function () {
78
+ if ( typeof MP3J === "undefined" ) {
79
+ jQuery("body").empty();
80
+ jQuery("body").css("background", '#333333');
81
+ jQuery("*").css("color", '#cccccc');
82
+ jQuery("body").append("<h4 style='margin-left:10px;'>Please launch a playlist from the site to use me,<br />I've been refreshed and can't find my parent window.</h4>");
83
+ return;
84
+ } else {
85
+ MP3J.init();
86
+ }
87
+ });
88
+
89
+ </script>
90
+
91
+ <style type="text/css"> div.wrap-MI { min-width:350px; } </style>
92
+
93
+ </head>
94
+ <body style="padding:5px 4px 0px 4px; margin:0px;">
95
+ <div style="position:relative;overflow:hidden;"><div id="jquery_jplayer" style="left:-999em;"></div></div>
96
+ <div class="wrap-MI" style="position:relative; padding:0; margin:0px auto 0px auto; width:100%;">
97
+ <div class="jp-innerwrap">
98
+ <div class="innerx"></div>
99
+ <div class="innerleft"></div>
100
+ <div class="innerright"></div>
101
+ <div class="innertab"></div>
102
+ <div class="jp-interface">
103
+ <div class="MI-image" id="MI_image_0"></div>
104
+ <div id="T_mp3j_0" class="player-track-title" style="padding-left:16px;"></div>
105
+ <div class="MIsliderVolume" id="vol_mp3j_0"></div>
106
+ <div class="bars_holder">
107
+ <div class="loadMI_mp3j" id="load_mp3j_0"></div>
108
+ <div class="poscolMI_mp3j" id="poscol_mp3j_0"></div>
109
+ <div class="posbarMI_mp3j" id="posbar_mp3j_0"></div>
110
+ </div>
111
+ <div id="P-Time-MI_0" class="jp-play-time"></div>
112
+ <div id="T-Time-MI_0" class="jp-total-time"></div>
113
+ <div id="statusMI_0" class="statusMI"></div>
114
+ <div class="transport-MI"><div class="buttons_mp3j" id="playpause_mp3j_0">Play Pause</div><div class="stop_mp3j" id="stop_mp3j_0">Stop</div><div class="Next_mp3j" id="Next_mp3j_0">Next&raquo;</div><div class="Prev_mp3j" id="Prev_mp3j_0">&laquo;Prev</div></div>
115
+ <div id="download_mp3j_0" class="dloadmp3-MI" style="visibility: visible;"></div>
116
+ <div class="playlist-toggle-MI" id="playlist-toggle_0"></div>
117
+ </div>
118
+ </div>
119
+ <div class="listwrap_mp3j" id="L_mp3j_0">
120
+ <div class="playlist-colour"></div>
121
+ <div class="playlist-wrap-MI"><ul class="UL-MI_mp3j" id="UL_mp3j_0"><li></li></ul></div>
122
+ </div>
123
+ </div>
124
+
125
+ <script type="text/javascript">
126
+
127
+ if(window.opener && !window.opener.closed) {
128
+ if ( MP3J.pl_info[0].height !== false ) {
129
+ jQuery("div.jp-interface").css( "height", MP3J.pl_info[0].height+"px" );
130
+ }
131
+
132
+ if ( !MP3J.pl_info[0].download ) {
133
+ jQuery("div.dloadmp3-MI").hide();
134
+ }
135
+ if ( MP3J.pl_info[0].list.length < 2 ) {
136
+ jQuery("#Prev_mp3j_0").hide();
137
+ jQuery("#Next_mp3j_0").hide();
138
+ jQuery("#playlist-toggle_0").hide();
139
+ }
140
+ if ( MP3J.pl_info[0].lstate ) {
141
+ jQuery("#playlist-toggle_0").append("HIDE PLAYLIST");
142
+ } else {
143
+ jQuery("#playlist-toggle_0").append("SHOW PLAYLIST");
144
+ }
145
+
146
+ jQuery("div.wrap-MI").addClass(MP3J.pl_info[0].cssclass);
147
+
148
+ if ( window.opener.MP3_JPLAYER.popout_css !== "undefined" ) {
149
+ MP3J.popout_css = window.opener.MP3_JPLAYER.popout_css;
150
+ jQuery("body").css( "background" , MP3J.popout_css.body_col + " url('" + MP3J.popout_css.body_img + "')");
151
+ jQuery("div.player-track-title, div.player-artist, div.jp-play-time, div.jp-total-time, div.statusMI").css( "color" , MP3J.popout_css.screen_text );
152
+ jQuery("ul.UL-MI_mp3j").css( "background" , MP3J.popout_css.list_img );
153
+ jQuery("div.playlist-colour").css({ "background" : MP3J.popout_css.list_col, opacity : MP3J.popout_css.list_opac });
154
+ jQuery("div.innertab").css({ "background" : MP3J.popout_css.screen_bg, opacity : MP3J.popout_css.screen_opac });
155
+ jQuery("div.loadMI_mp3j").css({ "background" : MP3J.popout_css.loader_col, opacity : MP3J.popout_css.loader_opac });
156
+ jQuery("div.poscolMI_mp3j").css({ "background" : MP3J.popout_css.posbar_col, opacity : MP3J.popout_css.posbar_opac });
157
+
158
+ jQuery('<style type="text/css"> .MI-image a:hover img { background:' + MP3J.popout_css.list_current_text + '; } </style>').appendTo('head');
159
+ jQuery('<style type="text/css"> span.mp3-tint { background:' + MP3J.popout_css.indi_tint + '; } </style>').appendTo('head');
160
+ jQuery('<style type="text/css"> ul.UL-MI_mp3j li { background:' + MP3J.popout_css.list_divider + '; } </style>').appendTo('head');
161
+ jQuery('<style type="text/css"> ul.UL-MI_mp3j li a { color:' + MP3J.popout_css.list_text + '; } </style>').appendTo('head');
162
+ jQuery('<style type="text/css"> ul.UL-MI_mp3j li a:hover { color:' + MP3J.popout_css.list_hover_text + '; background:' + MP3J.popout_css.list_hover_bg + '; } </style>').appendTo('head');
163
+ jQuery('<style type="text/css"> ul.UL-MI_mp3j li a.mp3j_A_current { color:' + MP3J.popout_css.list_current_text + '; background:' + MP3J.popout_css.list_current_bg + '; } </style>').appendTo('head');
164
+ jQuery('<style type="text/css"> div.MIsliderVolume .ui-widget-header { background:' + MP3J.popout_css.vol_slider_bg + '; } </style>').appendTo('head');
165
+ jQuery('<style type="text/css"> div.transport-MI div:hover { background-color:' + MP3J.popout_css.list_current_text + '; } </style>').appendTo('head');
166
+
167
+ jQuery("div.transport-MI div").css("color", MP3J.popout_css.list_hover_text );
168
+ jQuery("div.transport-MI div").mouseover(function () {
169
+ jQuery(this).css( "color" , MP3J.popout_css.list_current_text );
170
+ });
171
+ jQuery("div.transport-MI div").mouseout(function () {
172
+ jQuery(this).css("color", MP3J.popout_css.list_hover_text );
173
+ });
174
+ }
175
+ jQuery("title").text(MP3J.pl_info[0].pp_title);
176
+ }
177
+
178
+ </script>
179
+
180
+ </body>
181
+ </html>
readme.txt CHANGED
@@ -2,10 +2,12 @@
2
  Author URI: http://www.sjward.org
3
  Plugin URI: http://www.sjward.org/jplayer-for-wordpress
4
  Contributors: simon.ward
5
- Tags: mp3, audio, mp3 player, music player, audio player, jplayer, playlist, jquery, shortcode, widget, css, posts, page, sidebar
 
6
  Requires at least: 2.8
7
- Tested up to: 3.2.1
8
- Stable tag: 1.7.3
 
9
 
10
  Add mp3 audio players to posts, pages, and sidebars. HTML5 / Flash. Uses jPlayer.
11
 
@@ -34,7 +36,7 @@ As only the one instance of jPlayer is created there's no loss of performance or
34
 
35
  <br />
36
  <br />
37
- **Shortcodes**
38
 
39
  [mp3j] and [mp3t] add single-track players
40
 
@@ -111,11 +113,14 @@ Mp3's should be constant bit-rate (CBR) encoded at sample rates 44.1kHz, 22.05 k
111
  = Player says connecting but never plays? =
112
  Check the filename spelling and the path/uri are correct. Remove any accented letters from mp3 filenames (and re-upload if they're from the library). Check the mp3 encoding (see above).
113
 
 
 
 
114
  = Header and footer players? =
115
  Use widget areas (if available), or use the mp3j_addscripts() and mp3j_put() functions in template files. See help in the plugin for an example.
116
 
117
  = Player appears but something is broken? =
118
- Any number of reasons but the most commonly seen problem is poor use of a CDN or jQuery in theme files, check the page source for repeated scripts (including jquery-ui).
119
 
120
  = Report bugs/issues? =
121
  Either on the forum at Wordpress, or [here](http://sjward.org/contact).
@@ -123,18 +128,41 @@ Either on the forum at Wordpress, or [here](http://sjward.org/contact).
123
 
124
  == Screenshots ==
125
 
126
- 1. Players example 1
127
- 2. Players example 2
128
- 3. Popout player example
129
- 4. Players example 3
130
- 5. Players example 4
131
- 6. Admin settings page
132
- 7. Colour settings
133
- 8. Other options
134
 
135
 
136
  == Changelog ==
137
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
138
  = 1.7.3 =
139
  * Stopped files of audio/mpeg MIME type other than mp3 from showing on the player's library file list on the settings page. They won't appear in playlists when using 'FEED:LIB' now.
140
  * Corrected graphics error introduced last update on the popout button, thanks to Peter for reporting.
2
  Author URI: http://www.sjward.org
3
  Plugin URI: http://www.sjward.org/jplayer-for-wordpress
4
  Contributors: simon.ward
5
+ Donate link: http://www.sjward.org/jplayer-for-wordpress
6
+ Tags: mp3, mp3 player, music player, audio, audio player, jplayer, playlist, jquery, shortcode, widget, css, post, page, sidebar, html5
7
  Requires at least: 2.8
8
+ Tested up to: 3.5.1
9
+ Stable tag: 1.8
10
+
11
 
12
  Add mp3 audio players to posts, pages, and sidebars. HTML5 / Flash. Uses jPlayer.
13
 
36
 
37
  <br />
38
  <br />
39
+ **Shortcodes - Basic usage**
40
 
41
  [mp3j] and [mp3t] add single-track players
42
 
113
  = Player says connecting but never plays? =
114
  Check the filename spelling and the path/uri are correct. Remove any accented letters from mp3 filenames (and re-upload if they're from the library). Check the mp3 encoding (see above).
115
 
116
+ = Player just doesn't show up? =
117
+ This will happen if the playlist you've asked for doesn't result in anything to play, for example if you're using 'FEED' and the folder path is remote, or if you're playing remote files and the option 'allow mp3s from other domains' is unticked.
118
+
119
  = Header and footer players? =
120
  Use widget areas (if available), or use the mp3j_addscripts() and mp3j_put() functions in template files. See help in the plugin for an example.
121
 
122
  = Player appears but something is broken? =
123
+ Probably a javascript conflict, often a hard-coded script in a theme. check your page source from the browser (CTRL+U) for repeated inclusions of both jQuery and jQuery-UI.
124
 
125
  = Report bugs/issues? =
126
  Either on the forum at Wordpress, or [here](http://sjward.org/contact).
128
 
129
  == Screenshots ==
130
 
131
+ 1. Playlist player examples
132
+ 2. A popout player example
133
+ 3. Single players and playlist player examples
134
+ 4. The admin settings page
135
+ 5. Colour picker opened on the settings page.
136
+
 
 
137
 
138
 
139
  == Changelog ==
140
 
141
+ = 1.8 =
142
+ * Fixed bug in javascript that caused problems in WordPress 3.5 (players broke after a couple of clicks).
143
+ * Fixed bug when single quotes ended up in a popout title (it broke players).
144
+ * Fixed bug in widget when it was set with a non-existent page id (it broke players).
145
+ * Fixed bug with mp3j_put function (it could pick up the adjacent post's tracks in some scenarios).
146
+ * Fixed bug with https urls.
147
+ * Fixed bug in pick parameter.
148
+ * Fixed bug with 'Allow mp3s from other domains' option (it affected single players when it was unticked).
149
+ * Fixed display of hours on long mp3s (player will display the hours only when needed).
150
+ * Fixed css that was hiding playlists in Opera browser.
151
+ * Fixed titles running into captions.
152
+ * Fixed titles obscuring slider motion (not IE proof).
153
+ * Added 'images' parameter on [mp3-jplayer], they can be set per track and are carried to the popout.
154
+ * Added easier styling option via a 'style' parameter that can be used in shortcodes (takes class names separated by spaces). Some classes are included as follows: bigger1 bigger2 bigger3 bigger4 bigger5 smaller outline dark text bars100 bars150 bars200 bars250 nolistbutton nopopoutbutton nostop nopn wtransbars btransbars. See examples on the demo page.
155
+ * Added new download option 'loggedin' which shows alternative text/link if visitor is not logged in.
156
+ * Added shortcode [mp3-popout] which creates a link to a popout player.
157
+ * Added volume slider option and shortcode parameter for [mp3t] and [mp3j] players.
158
+ * Added order control of library mp3s (when using 'FEED:LIB'), options are (asc/desc) by upload date, title, filename, or caption/filename, this is a global setting (not per player).
159
+ * Added new shortcode parameter (fsort="desc") for reversing folder playlist order.
160
+ * Added option to run player shortcodes in manually written excerpts.
161
+ * Added template tag - mp3j_div() for use in theme files when using players in hidden/collapsable tabs, lightboxes etc (allows players to function ok in hidden elements if flash gets used).
162
+ * Added option to bypass jQuery / jQueryUI script requests.
163
+ * Added choice of separators to use when writing playlists in shortcodes/widgets.
164
+ * Many more improvements and minor fixes.
165
+
166
  = 1.7.3 =
167
  * Stopped files of audio/mpeg MIME type other than mp3 from showing on the player's library file list on the settings page. They won't appear in playlists when using 'FEED:LIB' now.
168
  * Corrected graphics error introduced last update on the popout button, thanks to Peter for reporting.
screenshot-1.png CHANGED
Binary file
screenshot-2.png CHANGED
Binary file
screenshot-3.png CHANGED
Binary file
screenshot-4.png CHANGED
Binary file
screenshot-5.png CHANGED
Binary file
screenshot-6.png DELETED
Binary file
screenshot-7.png DELETED
Binary file
screenshot-8.png DELETED
Binary file
template-tag-help.htm CHANGED
@@ -1,5 +1,4 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
  <html>
4
  <head>
5
  <title>Template Tag Help</title>
@@ -10,12 +9,13 @@
10
  code, pre { font-size: 15px; background:#f0f0f0; padding:4px; line-height:23px; }
11
  -->
12
  </style>
13
- <body>
14
  </head>
 
 
15
  <div style="width:700px; margin:50px auto 50px auto;">
16
 
17
  <h3><strong>Template Tags</strong></h3>
18
- <p>Tags have become easier since version 1.7, you can now send in shortcodes. Note: there's an admin option to ignore the tags which needs to remain unticked when you want to use them.</p>
19
  <p>Instructions: Place tag (1) in the header, place tag (2) where you want the players to be.
20
  <br /><br />
21
 
@@ -27,7 +27,7 @@
27
  <br />
28
 
29
  <p>(2). <strong><code>mp3j_put( $shortcodes )</code></strong></p>
30
- <p>Adds player(s) where the tag is placed in the theme. Can use multiple times.</p>
31
  <ul>
32
  <li><p>$shortcodes is a string containing any player shortcodes and html</p></li>
33
  </ul>
@@ -56,26 +56,19 @@
56
 
57
  <h4>The following tags are not necessary but can be used:</h4>
58
 
59
- <p><strong><code>mp3j_grab_library( $format )</code></strong></p>
60
 
61
  <p>Returns an array of all the mp3's in the library with their 'filenames', 'urls', 'titles', 'excerpts',
62
  'descriptions', and original ID (not attachment). Can be used anywhere.</p>
63
- <ul>
64
- <li><p>$format can be either 1 (gives back the above fields in indexed arrays) or 0 (gives back the
65
- arrays as returned from the select query), defaults to 1.</p></li>
66
- </ul>
67
  <br />
68
 
69
- <p><strong><code>mp3j_debug( $info )</code></strong></p>
70
  <p>Prints some info from the plugin to the browser's source view (CTRL+U or Page-&gt;view source) about
71
  the page that just ran. Can be useful for debugging when customising templates.</p>
72
- <ul>
73
- <li><p>$info is depreciated and ignored.</p></li>
74
- </ul>
75
  <br /><br />
76
 
77
 
78
- <h4>Depreciated tags</h4>
79
  <p>These tags have no use anymore, setting them has no effect.</p>
80
  <p><strong><code>mp3j_flag( $set )</code></strong></p>
81
 
1
+ <!DOCTYPE html>
 
2
  <html>
3
  <head>
4
  <title>Template Tag Help</title>
9
  code, pre { font-size: 15px; background:#f0f0f0; padding:4px; line-height:23px; }
10
  -->
11
  </style>
 
12
  </head>
13
+ <body>
14
+
15
  <div style="width:700px; margin:50px auto 50px auto;">
16
 
17
  <h3><strong>Template Tags</strong></h3>
18
+ <p>Note: there's an admin option to ignore the tags which needs to remain unticked when you want to use them.</p>
19
  <p>Instructions: Place tag (1) in the header, place tag (2) where you want the players to be.
20
  <br /><br />
21
 
27
  <br />
28
 
29
  <p>(2). <strong><code>mp3j_put( $shortcodes )</code></strong></p>
30
+ <p>Adds player(s) where the tag is placed in the theme. Can be used multiple times.</p>
31
  <ul>
32
  <li><p>$shortcodes is a string containing any player shortcodes and html</p></li>
33
  </ul>
56
 
57
  <h4>The following tags are not necessary but can be used:</h4>
58
 
59
+ <p><strong><code>mp3j_grab_library()</code></strong></p>
60
 
61
  <p>Returns an array of all the mp3's in the library with their 'filenames', 'urls', 'titles', 'excerpts',
62
  'descriptions', and original ID (not attachment). Can be used anywhere.</p>
 
 
 
 
63
  <br />
64
 
65
+ <p><strong><code>mp3j_debug()</code></strong></p>
66
  <p>Prints some info from the plugin to the browser's source view (CTRL+U or Page-&gt;view source) about
67
  the page that just ran. Can be useful for debugging when customising templates.</p>
 
 
 
68
  <br /><br />
69
 
70
 
71
+ <h4>Retired tags</h4>
72
  <p>These tags have no use anymore, setting them has no effect.</p>
73
  <p><strong><code>mp3j_flag( $set )</code></strong></p>
74