Index: players/xspf_jukebox/dynamic/skin.xml
===================================================================
--- players/xspf_jukebox/dynamic/skin.xml	(Revision 0)
+++ players/xspf_jukebox/dynamic/skin.xml	(Revision 0)
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<skin version="0" xmlns="http://xsml.org/ns/0/">
+	<width>170</width>
+	<height>210</height>
+	<name>SlimOriginal</name>
+	<author>Lacy Morrow</author>
+	<email>gojukebox@gmail.com</email>
+	<website>http://www.lacymorrow.com</website>
+	<comment>DYNAMIC SlimOriginal Skin for XSPF Jukebox (This is a derivate of the SlimOriginal skin.) - THIS FILE WILL BE OVERWRITTEN BY THE PODPRESS XSPF WIDGET! You can prevent this by defining the constant PODPRESS_XSPF_PLAYER_USE_CUSTOM_SKINFILE in the podpress.php file.</comment>
+	<objects>
+		<background color="CCCCCC" />
+		<playlist x="3" y="21" width="154" height="173" size="10" font="Arial" color="333333" selectedColor="aa3333" />
+		<shape shape="rectangle" x="0" y="0" width="170" height="18" color="EAEAEA" />
+		<shape shape="rectangle" x="160" y="18" width="10" height="173" color="EAEAEA" />
+		<shape shape="rectangle" x="0" y="191" width="170" height="19" color="EAEAEA" />
+		<text x="137" y="191" size="10" text="About" font="Arial" bold="0" color="333333" hoverMessage="About XSPF Jukebox player" url="http://blog.lacymorrow.com" />
+		<object label="prevButton" x="2" y="3" width="11" height="10" color="999999" />
+		<object label="playButton" x="19" y="3" width="10" height="10" color="999999" />
+		<object label="stopButton" x="32" y="3" width="9" height="10" color="999999" />
+		<object label="fwdButton" x="46" y="3" width="11" height="10" color="999999" />
+		<object label="trackDisplay" x="59" y="0" width="67" size="10" font="Arial" color="000000" align="left" />
+		<object label="timeBar" x="59" y="1" width="93" height="13" alpha="60" color="cc9999" />
+		<object label="loadBar" x="59" y="14" width="93" height="3" alpha="60" color="BBdddd" />
+		<object label="timeDisplay" x="127" y="0" width="26" size="10" font="Arial" color="000000" />
+		<object label="volumeDisplay" x="154" y="3" width="14" height="10" color="444444" />
+		<object label="scrollupButton" x="161" y="20" width="6" height="6" color="999999" />
+		<object label="scrolldownButton" x="161" y="31" width="6" height="6" color="999999" />
+		<object label="scrollButton" x="161" y="43" width="6" height="148" color="999999" bgAlpha="0" />
+		<object label="shuffleButton" x="4" y="194" width="20.7" height="11.7" color="333333" hoverMessage="Shuffle" />
+		<object label="repeatButton" x="27" y="194" width="15.7" height="11.7" color="333333" hoverMessage="Repeat" />
+	</objects>
+</skin>
Index: players/xspf_jukebox/dynamic/skin_slim.xml
===================================================================
--- players/xspf_jukebox/dynamic/skin_slim.xml	(Revision 0)
+++ players/xspf_jukebox/dynamic/skin_slim.xml	(Revision 0)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<skin version="0" xmlns="http://xsml.org/ns/0/">
+	<width>170</width>
+	<height>30</height>
+	<name>SlimOriginal</name>
+	<author>Lacy Morrow</author>
+	<email>gojukebox@gmail.com</email>
+	<website>http://www.lacymorrow.com</website>
+	<comment>DYNAMIC SlimOriginal Skin for XSPF Jukebox (This is a derivate of the SlimOriginal skin for the slim player.) - THIS FILE WILL BE OVERWRITTEN BY THE PODPRESS XSPF WIDGET! You can prevent this by defining the constant PODPRESS_XSPF_PLAYER_USE_CUSTOM_SKINFILE in the podpress.php file.</comment>
+	<objects>
+		<background color="CCCCCC" />
+		<shape shape="rectangle" x="0" y="0" width="170" height="18" color="EAEAEA" />
+		<shape shape="rectangle" x="0" y="18" width="170" height="12" color="EAEAEA" />
+		<text x="137" y="15" size="10" text="About" font="Arial" bold="0" color="333333" hoverMessage="About XSPF Jukebox player" url="http://blog.lacymorrow.com" />
+		<object label="prevButton" x="2" y="3" width="11" height="10" color="999999" />
+		<object label="playButton" x="19" y="3" width="10" height="10" color="999999" />
+		<object label="stopButton" x="32" y="3" width="9" height="10" color="999999" />
+		<object label="fwdButton" x="46" y="3" width="11" height="10" color="999999" />
+		<object label="trackDisplay" x="59" y="0" width="67" size="10" font="Arial" color="000000" align="left" />
+		<object label="timeBar" x="59" y="1" width="93" height="13" alpha="60" color="cc9999" />
+		<object label="loadBar" x="59" y="14" width="93" height="3" alpha="60" color="BBdddd" />
+		<object label="timeDisplay" x="127" y="0" width="26" size="10" font="Arial" color="000000" />
+		<object label="volumeDisplay" x="154" y="3" width="14" height="10" color="444444" />
+		<object label="shuffleButton" x="4" y="18" width="17.1" height="10" color="333333" hoverMessage="Shuffle" />
+		<object label="repeatButton" x="27" y="18" width="12.1" height="10" color="333333" hoverMessage="Repeat" />
+	</objects>
+</skin>
Index: players/xspf_jukebox/license.txt
===================================================================
--- players/xspf_jukebox/license.txt	(Revision 0)
+++ players/xspf_jukebox/license.txt	(Revision 0)
@@ -0,0 +1,10 @@
+XSPF JUKEBOX
+Copyright (c) 2009, Lacy Morrow
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+Neither the name of the owner nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
Index: podpress.php
===================================================================
--- podpress.php	(Revision 209741)
+++ podpress.php	(Arbeitskopie)
@@ -1,11 +1,11 @@
 <?php
 define('PODPRESS_VERSION', '8.8');
-define('PODPRESS_MAINTENANCE_VERSION', '8.8.5 beta 2');
+define('PODPRESS_MAINTENANCE_VERSION', '8.8.5 beta 3');
 /*
  Info for WordPress:
  ==============================================================================
  Plugin Name: podPress
- Version: 8.8.5-beta_2
+ Version: 8.8.5-beta_3
  Plugin URI: http://www.mightyseek.com/podpress/
  Description: The podPress pluggin gives you everything you need in one easy plugin to use WordPress for Podcasting. Set it up in <a href="admin.php?page=podpress/podpress_feed.php">'podPress'->Feed/iTunes Settings</a>. If you this plugin works for you, send us a comment.
  Author: Dan Kuykendall (Seek3r)
@@ -37,12 +37,12 @@
 
  Contributors:
  ==============================================================================
- Developer              Dan Kuykendall      http://www.mightyseek.com/
- Developer              David Maciejewski   http://www.macx.de/
- Forum Support/BugBoy   Jeff Norris         http://www.iscifi.tv/
+ Developer			Dan Kuykendall	http://www.mightyseek.com/
+ Developer			David Maciejewski	http://www.macx.de/
+ Forum Support/BugBoy	Jeff Norris		http://www.iscifi.tv/
 
- Audio player           Martin Laine        http://www.1pixelout.net
- WP-iPodCatter          Garrick Van Buren   http://garrickvanburen.com/
+ Audio player			Martin Laine		http://www.1pixelout.net
+ WP-iPodCatter		Garrick Van Buren	http://garrickvanburen.com/
 
  Thanks to all contributors and bug reporters! :)
 
@@ -91,6 +91,19 @@
 if (!defined('PLUGINDIR')) { define('PLUGINDIR', 'wp-content/plugins'); }
 if (!defined('PODPRESSPLUGINDIR')) { define('PODPRESSPLUGINDIR', ABSPATH.PLUGINDIR); }
 
+// Begin - XSPF Jukebox player configuration:
+// If you want to use a custom skin file for the XSPF player then uncomment this line and replace or edit the skin files into the folder /podpress/players/xspf_jukebox/dynamic/
+// if ( ! defined('PODPRESS_XSPF_PLAYER_USE_CUSTOM_SKINFILE') ) { define('PODPRESS_XSPF_PLAYER_USE_CUSTOM_SKINFILE', TRUE); }
+
+// podPress uses a derivate of the SlimOriginal skin. If you want to use a different skin with different heights then uncomment these lines and change the height values appropriately.
+// if ( ! defined( 'PODPRESS_XSPF_PLAYER_HEIGHT' ) ) { define( 'PODPRESS_XSPF_PLAYER_HEIGHT', 210 ); }
+// if ( ! defined( 'PODPRESS_XSPF_SLIM_PLAYER_HEIGHT' ) ) { define( 'PODPRESS_XSPF_SLIM_PLAYER_HEIGHT', 30 ); }
+
+// If you want to let the player show the episode preview images then uncomment the following line (is only necessary if you are using the default player skin of podPress):
+// if ( ! defined('PODPRESS_XSPF_SHOW_PREVIEW_IMAGE') ) { define('PODPRESS_XSPF_SHOW_PREVIEW_IMAGE', TRUE); }
+// End - XSPF Jukebox player configuration
+
+
 if(!function_exists('memory_get_usage')) {
 	unset($_GET['podpress_showmem']);
 	function memory_get_usage() { return 0;	}
@@ -154,7 +167,7 @@
 	podPress_checkmem('podPress base class included');
 	require_once(ABSPATH.PLUGINDIR.'/podpress/podpress_functions.php');
 	podPress_checkmem('podPress functions loaded');
-
+	
 	if($podPress_x = @parse_url($_SERVER['REQUEST_URI'])) {
 		$podPress_x = $podPress_x['path'];
 		if (strpos($podPress_x, 'crossdomain.xml')) {
@@ -781,3 +794,4 @@
 	$podPress->post_form_wp25plus('page');
 	echo "\n<!-- podPress dbx for modern WP versions - page -->\n";
 }
+?>
Index: podpress_functions.php
===================================================================
--- podpress_functions.php	(Revision 209741)
+++ podpress_functions.php	(Arbeitskopie)
@@ -82,11 +82,12 @@
 			}
 			return PODPRESSURL;
 		} else {
-			$result = get_settings('siteurl');
-			if(substr($result, -1, 1) != '/') {
-				$result .= '/';
-			}
-			return $result.'wp-content/plugins/podpress/';
+			//~ $result = get_settings('siteurl');
+			//~ if(substr($result, -1, 1) != '/') {
+				//~ $result .= '/';
+			//~ }
+			//~ return $result.'wp-content/plugins/podpress/';
+			return PODPRESS_URL.'/';
 		}
 	}
 
@@ -296,16 +297,42 @@
 	/* Functions for supporting the widgets */
 	/**************************************************************/
 	function podPress_loadWidgets () {
+		global $wp_version;
+		
 		if ( !function_exists('register_sidebar_widget') || !function_exists('register_widget_control') ) {
 			return;
 		}
-		// Tell Dynamic Sidebar about our new widget and its control
-		register_sidebar_widget(array('Feed Buttons', 'widgets'), 'podPress_feedButtons');
-		register_widget_control(array('Feed Buttons', 'widgets'), 'podPress_feedButtons_control', 300, 200);
+		
+		if (TRUE == version_compare($wp_version, '2.2', '>=')) {
+			// Feed Buttons widget
+			$widget_ops = array(
+				'classname' => 'podpress_feedbuttons', 
+				'description' => __('Shows buttons for the podcast feeds in the sidebar', 'podpress')
+			);
+			$control_ops = array('width' => 300, 'height' => 300,	'id_base' => 'podpressfeedbuttons');
+			$id = $control_ops['id_base'];
+			wp_register_sidebar_widget($id, __('podPress - Feed Buttons','podpress'), 'podPress_feedButtons', $widget_ops);
+			wp_register_widget_control($id, __('podPress - Feed Buttons','podpress'), 'podPress_feedButtons_control', $control_ops);
+			
+			// XSPF Player widget
+			$widget_ops = array(
+				'classname' => 'podpress_xspfplayer', 
+				'description' => __('Shows a flash player in the sidebar which uses the XSPF playlist of your podcast episodes', 'podpress')
+			);
+			$control_ops = array('width' => 300, 'height' => 300,	'id_base' => 'podpressxspfPlayer');
+			$id = $control_ops['id_base'];
+			wp_register_sidebar_widget($id, __('podPress - XSPF Player','podpress'), 'podPress_xspfPlayer', $widget_ops);
+			wp_register_widget_control($id, __('podPress - XSPF Player','podpress'), 'podPress_xspfPlayer_control', $control_ops);
+		} else {
+			// Feed Buttons widget
+			register_sidebar_widget(array('podPress - Feed Buttons', 'widgets'), 'podPress_feedButtons', $widget_ops);
+			register_widget_control(array('podPress - Feed Buttons', 'widgets'), 'podPress_feedButtons_control', 300, 200);
+			
+			// XSPF Player widget
+			register_sidebar_widget(array('podPress - XSPF Player', 'widgets'), 'podPress_xspfPlayer');
+			register_widget_control(array('podPress - XSPF Player', 'widgets'), 'podPress_xspfPlayer_control', 300, 200);
+		}
 
-		// Tell Dynamic Sidebar about our new widget and its control
-		register_sidebar_widget(array('XSPF Player', 'widgets'), 'podPress_xspfPlayer');
-		register_widget_control(array('XSPF Player', 'widgets'), 'podPress_xspfPlayer_control', 300, 200);
 	}
 
 	function podPress_feedButtons_control() {
@@ -347,19 +374,18 @@
 		}
 		$title = htmlspecialchars($options['title'], ENT_QUOTES);
 		?>
-		<p style="text-align: right;"><b><?php _e('A podPress Widget', 'podpress'); ?></b></p>
-		<p><label for="podPressFeedButtons-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="podPressFeedButtons-title" name="podPressFeedButtons-title" type="text" value="<?php echo $title; ?>" /></label></p>
+		<p style="text-align: right; font-weight:bold;"><?php _e('A podPress Widget', 'podpress'); ?></p>
+		<p><label for="podPressFeedButtons-title"><?php _e('Title:'); ?></label> <input style="width: 250px;" id="podPressFeedButtons-title" name="podPressFeedButtons-title" type="text" value="<?php echo $title; ?>" /></p>
 		<?php
-		if($podPress->settings['podcastFeedURL'] != get_settings('rss2_url')) {
-		?>
-			<p style="text-align:right;margin-right:40px;"><label for="podPressFeedButtons-blog"><?php _e('Site Blog Feed', 'podpress'); ?> <input class="checkbox" type="checkbox" <?php echo $blog; ?> id="podPressFeedButtons-blog" name="podPressFeedButtons-blog" /></label></p>
-		<?php
+		if ($podPress->settings['podcastFeedURL'] != get_settings('rss2_url')) {
+			?>
+			<p style="text-align:right;margin-right:40px;"><label for="podPressFeedButtons-blog"><?php _e('Site Blog Feed', 'podpress'); ?></label> <input class="checkbox" type="checkbox" <?php echo $blog; ?> id="podPressFeedButtons-blog" name="podPressFeedButtons-blog" /></p>
+			<?php
 		}
 		?>
-		<p style="text-align:right;margin-right:40px;"><label for="podPressFeedButtons-podcast"><?php _e('Show Podcast Feed', 'podpress'); ?> <input class="checkbox" type="checkbox" <?php echo $podcast; ?> id="podPressFeedButtons-podcast" name="podPressFeedButtons-podcast" /></label></p>
-		
-		<p style="text-align:right;margin-right:40px;"><label for="podPressFeedButtons-itunes"><?php _e('Show iTunes Music Store', 'podpress'); ?> <input class="checkbox" type="checkbox" <?php echo $itunes; ?> id="podPressFeedButtons-itunes" name="podPressFeedButtons-itunes" /></label></p>
-		<p style="text-align:right;margin-right:40px;"><label for="podPressFeedButtons-iprot"><?php _e('Use Itunes protcol for URL', 'podpress'); ?> <input class="checkbox" type="checkbox" <?php echo $iprot; ?> id="podPressItunesProtocol-iprot" name="podPressItunesProtocol-iprot" /></label></p>
+		<p style="text-align:right;margin-right:40px;"><label for="podPressFeedButtons-podcast"><?php _e('Show Podcast Feed', 'podpress'); ?></label> <input class="checkbox" type="checkbox" <?php echo $podcast; ?> id="podPressFeedButtons-podcast" name="podPressFeedButtons-podcast" /></p>
+		<p style="text-align:right;margin-right:40px;"><label for="podPressFeedButtons-itunes"><?php _e('Show iTunes Music Store', 'podpress'); ?></label> <input class="checkbox" type="checkbox" <?php echo $itunes; ?> id="podPressFeedButtons-itunes" name="podPressFeedButtons-itunes" /></p>
+		<p style="text-align:right;margin-right:40px;"><label for="podPressFeedButtons-iprot"><?php _e('Use Itunes protcol for URL', 'podpress'); ?></label> <input class="checkbox" type="checkbox" <?php echo $iprot; ?> id="podPressItunesProtocol-iprot" name="podPressItunesProtocol-iprot" /></p>
 		<input type="hidden" id="podPressFeedButtons-submit" name="podPressFeedButtons-submit" value="1" />
 		<?php
 	}
@@ -408,14 +434,33 @@
 	}
 
 	function podPress_xspfPlayer_control() {
-		$options = $newoptions = get_option('widget_podPressXspfPlayer');
-		if ( $_POST["podPressXspfPlayer-submit"] ) {
-			$newoptions['useSlimPlayer'] = isset($_POST['podPressXspfPlayer-useSlimPlayer']);
-			$newoptions['title'] = strip_tags(stripslashes($_POST["podPressXspfPlayer-title"]));
-		}
-		if ( $options != $newoptions ) {
-			$options = $newoptions;
+		static $updated = false; // Whether or not we have already updated the data after a POST submit
+		$options = get_option('widget_podPressXspfPlayer');
+		
+		// We need to update the data
+		if ( !$updated && !empty($_POST['podPressXspfPlayer-submit']) ) {
+			$options['title'] = strip_tags(stripslashes($_POST['podPressXspfPlayer-title']));
+			$options['useSlimPlayer'] = isset($_POST['podPressXspfPlayer-useSlimPlayer']);
+			$options['PlayerWidth'] = intval(preg_replace('/[^0-9]/', '',$_POST['podPressXspfPlayer-width'])); // only numeric values are allowed
+			// the player width should not be bigger than 600px and not be smaller than 170px
+			if (600 < $options['PlayerWidth']) {
+				$options['PlayerWidth'] = 600;
+			} elseif (170 > $options['PlayerWidth']) {
+				$options['PlayerWidth'] = 170;
+			}
+			if ( ! defined( 'PODPRESS_XSPF_PLAYER_HEIGHT' ) ) { define( 'PODPRESS_XSPF_PLAYER_HEIGHT', 210 ); }
+			if ( ! defined( 'PODPRESS_XSPF_SLIM_PLAYER_HEIGHT' ) ) { define( 'PODPRESS_XSPF_SLIM_PLAYER_HEIGHT', 30 ); }
+			if ( FALSE === defined( 'PODPRESS_XSPF_PLAYER_USE_CUSTOM_SKINFILE' ) OR FALSE === PODPRESS_XSPF_PLAYER_USE_CUSTOM_SKINFILE ) { 
+				if (TRUE === $options['useSlimPlayer']) {
+					$options['PlayerHeight'] = PODPRESS_XSPF_SLIM_PLAYER_HEIGHT;
+					podpress_xspf_jukebox_slim_skin_xml($options['PlayerWidth'], $options['PlayerHeight']);
+				} else {
+					$options['PlayerHeight'] = PODPRESS_XSPF_PLAYER_HEIGHT;
+					podpress_xspf_jukebox_skin_xml($options['PlayerWidth'], $options['PlayerHeight']);
+				}
+			}
 			update_option('widget_podPressXspfPlayer', $options);
+			$updated = true; // So that we don't go through this more than once
 		}
 		$useSlimPlayer = $options['useSlimPlayer'] ? 'checked="checked"' : '';
 		if(!isset($options['title'])) {
@@ -423,9 +468,10 @@
 		}
 		$title = htmlspecialchars($options['title'], ENT_QUOTES);
 		?>
-		<p style="text-align: right;"><b><?php _e('A podPress Widget', 'podpress'); ?></b></p>
-		<p><label for="podPressXspfPlayer-title"><?php _e('Title:'); ?> <input style="width: 250px;" id="podPressXspfPlayer-title" name="podPressXspfPlayer-title" type="text" value="<?php echo $title; ?>" /></label></p>
-		<p style="text-align:right;margin-right:40px;"><label for="podPressXspfPlayer-useSlimPlayer"><?php _e('Use Slim Player', 'podpress'); ?> <input class="checkbox" type="checkbox" <?php echo $useSlimPlayer; ?> id="podPressXspfPlayer-useSlimPlayer" name="podPressXspfPlayer-useSlimPlayer" /></label></p>
+		<p style="text-align: right; font-weight:bold;"><?php _e('A podPress Widget', 'podpress'); ?></p>
+		<p><label for="podPressXspfPlayer-title"><?php _e('Title:'); ?></label> <input type="text" id="podPressXspfPlayer-title" name="podPressXspfPlayer-title" value="<?php echo $title; ?>" style="width: 250px;" /></p>
+		<p><label for="podPressXspfPlayer-useSlimPlayer"><?php _e('Use Slim Player', 'podpress'); ?></label> <input type="checkbox" class="checkbox" <?php echo $useSlimPlayer; ?> id="podPressXspfPlayer-useSlimPlayer" name="podPressXspfPlayer-useSlimPlayer" /></p>
+		<p><label for="podPressXspfPlayer-width"><?php _e('player width:', 'podpress'); ?></label> <input type="text" id="podPressXspfPlayer-width" name="podPressXspfPlayer-width" maxlength="3" value="<?php echo $options['PlayerWidth']; ?>" style="width:3em;" /> <?php _e('px', 'podpress'); ?></p>
 		<input type="hidden" id="podPressXspfPlayer-submit" name="podPressXspfPlayer-submit" value="1" />
 		<?php
 	}
@@ -433,6 +479,7 @@
 	function podPress_xspfPlayer ($args = '##NOTSET##') {
 		GLOBAL $podPress;
 		extract($args);
+		if ( ! defined( 'PODPRESS_XSPF_SLIM_PLAYER_HEIGHT' ) ) { define( 'PODPRESS_XSPF_SLIM_PLAYER_HEIGHT', 30 ); }
 		$options = get_option('widget_podPressXspfPlayer');
 		if(!isset($options['title'])) {
 			$options['title'] = __('Podcast Player');
@@ -444,25 +491,221 @@
 			
 		echo $before_widget;
 		echo $before_title . $options['title'] . $after_title;
-
-		if($options['useSlimPlayer']) {
-			echo '<object type="application/x-shockwave-flash" width="150" height="170" ';
-			//echo 'data="'.podPress_url().'players/xspf_player_slim.swf?playlist_url='.get_settings('siteurl').'/playlist.xspf">'."\n";
-			echo 'data="'.podPress_url().'players/xspf_player_slim.swf?playlist_url='.get_feed_link('playlist.xspf').'">'."\n";
-			//echo '	<param name="movie" value="'.podPress_url().'players/xspf_player_slim.swf?playlist_url='.get_settings('siteurl').'/playlist.xspf" />'."\n";
-			echo '	<param name="movie" value="'.podPress_url().'players/xspf_player_slim.swf?playlist_url='.get_feed_link('playlist.xspf').'" />'."\n";
+		if ($options['useSlimPlayer']) {
+			$data_string = PODPRESS_URL.'/players/xspf_jukebox/xspf_jukebox.swf?playlist_url='.get_feed_link('playlist.xspf').'&skin_url='.PODPRESS_URL.'/players/xspf_jukebox/dynamic/skin_slim.xml&autoload=true&autoplay=false&loaded=true';
+			echo '<object type="application/x-shockwave-flash" width="'.$options['PlayerWidth'].'" height="'.$options['PlayerHeight'].'" id="podpress_xspf_player_slim" data="'.$data_string.'">'."\n";
+			echo '	<param name="movie" value="'.$data_string.'" />'."\n";
+			echo '	<param name="bgcolor" value="#ffddee" />'."\n";
 			echo '</object>'."\n";
 		} else {
-			echo '<object type="application/x-shockwave-flash" width="150" height="170" ';
-			//echo 'data="'.podPress_url().'players/xspf_player.swf?playlist_url='.get_settings('siteurl').'/playlist.xspf">'."\n";
-			echo 'data="'.podPress_url().'players/xspf_player.swf?playlist_url='.get_feed_link('playlist.xspf').'">'."\n";
-			//echo '	<param name="movie" value="'.podPress_url().'players/xspf_player.swf?playlist_url='.get_settings('siteurl').'/playlist.xspf" />'."\n";
-			echo '	<param name="movie" value="'.podPress_url().'players/xspf_player.swf?playlist_url='.get_feed_link('playlist.xspf').'" />'."\n";
+			$data_string = PODPRESS_URL.'/players/xspf_jukebox/xspf_jukebox.swf?playlist_url='.get_feed_link('playlist.xspf').'&skin_url='.PODPRESS_URL.'/players/xspf_jukebox/dynamic/skin.xml&autoload=true&autoplay=false&loaded=true';
+			echo '<object type="application/x-shockwave-flash" width="'.$options['PlayerWidth'].'" height="'.$options['PlayerHeight'].'" id="podpress_xspf_player" data="'.$data_string.'">'."\n";
+			echo '	<param name="movie" value="'.$data_string.'" />'."\n";
+			echo '	<param name="bgcolor" value="#ffddee" />'."\n";
 			echo '</object>'."\n";
 		}
 		echo $after_widget;
 	}
 
+	//~ add_action('init', 'podpress_enqueue_xspf_script');
+	//~ function podpress_enqueue_xspf_script() {
+		//~ wp_enqueue_script('swfobject');
+	//~ }
+	
+	function podpress_xspf_jukebox_skin_xml($width = 230, $height = 210) {
+		if (600 < $width) {
+			$width = 600;
+		} elseif (170 > $width) {
+			$width = 170;
+		}
+		if (1000 < $height) {
+			$height = 1000;
+		} elseif (210 > $height) {
+			$height = 210;
+		}
+		$top_row_h = 18;
+		$bottom_row_w = $width;
+		$bottom_row_h = 19;
+		$scrollbar_w = 10;
+		$middle_row_h = ($height - ($top_row_h+$bottom_row_h));
+		$volume_display_w=14;
+		$td_lb_tb_x = 59;
+		$timedisplay_w = 26;
+		$space_w = 3;
+		$space_h = 3;
+		$timebar_h = 13;
+		$loadBar_h = 3;
+
+		$player_buttons_h = $top_row_h-$space_h-1-$space_h-1;
+		
+		// colors
+		$bgcolor = 'CCCCCC';
+		$rowsandbars_bgcolor = 'EAEAEA';
+		$buttons_color = '999999';
+		$playlist_text_color = $button_text_color = '333333';
+		$playlist_selectedtext_color = 'aa3333';
+		$infodisplay_text_color = '000000';
+		
+		// misc.
+		if ( TRUE === defined( 'PODPRESS_XSPF_SHOW_PREVIEW_IMAGE' ) AND TRUE === PODPRESS_XSPF_SHOW_PREVIEW_IMAGE ) { 
+			$show_episode_image = TRUE;
+		} else {
+			$show_episode_image = FALSE;
+		}
+		
+		$output = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
+		$output .= '<skin version="0" xmlns="http://xsml.org/ns/0/">'."\n";
+		$output .= '	<width>'.$width.'</width>'."\n";
+		$output .= '	<height>'.$height.'</height>'."\n";
+		$output .= '	<name>SlimOriginal</name>'."\n";
+		$output .= '	<author>Lacy Morrow</author>'."\n";
+		$output .= '	<email>gojukebox@gmail.com</email>'."\n";
+		$output .= '	<website>http://www.lacymorrow.com</website>'."\n";
+		$output .= '	<comment>DYNAMIC SlimOriginal Skin for XSPF Jukebox (This is a derivate of the SlimOriginal skin.) - THIS FILE WILL BE OVERWRITTEN BY THE PODPRESS XSPF WIDGET! You can prevent this by defining the constant PODPRESS_XSPF_PLAYER_USE_CUSTOM_SKINFILE in the podpress.php file.</comment>'."\n";
+		$output .= '	<objects>'."\n";
+		$output .= '		<background color="'.$bgcolor.'" />'."\n";
+		
+		// playlist
+		$output .= '		<playlist x="'.$space_w.'" y="'.($top_row_h+$space_h).'" width="'.($width-$space_w-$scrollbar_w-$space_w).'" height="'.$middle_row_h.'" size="10" font="Arial" color="'.$playlist_text_color.'" selectedColor="'.$playlist_selectedtext_color.'" />'."\n";
+		// top row background
+		$output .= '		<shape shape="rectangle" x="0" y="0" width="'.$width.'" height="'.$top_row_h.'" color="'.$rowsandbars_bgcolor.'" />'."\n";
+		// scroll bar background
+		$output .= '		<shape shape="rectangle" x="'.($width-$scrollbar_w).'" y="'.$top_row_h.'" width="'.$scrollbar_w.'" height="'.$middle_row_h.'" color="'.$rowsandbars_bgcolor.'" />'."\n";
+		// bottom row background
+		$output .= '		<shape shape="rectangle" x="0" y="'.($height-($bottom_row_h)).'" width="'.$bottom_row_w.'" height="'.$bottom_row_h.'" color="'.$rowsandbars_bgcolor.'" />'."\n";
+		// "About" - button element
+		$output .= '		<text x="'.($width-33).'" y="'.($height-$bottom_row_h).'" size="10" text="'.__('About', 'podpress').'" font="Arial" bold="0" color="'.$button_text_color.'" hoverMessage="'.__('About XSPF Jukebox player', 'podpress').'" url="http://blog.lacymorrow.com" />'."\n";
+		// player as Popup player - button element
+		// $output .= '		<text x="'.($width-85).'" y="'.($height-$bottom_row_h+2).'" size="10" text="'.__('Popup', 'podpress').'" font="Arial" bold="0" color="'.$button_text_color.'" hoverMessage="'.__('Popup', 'podpress').'" url="../static/object-flash-xspf-popup.php" />'."\n";
+
+		$output .= '		<object label="prevButton" x="2" y="'.$space_h.'" width="11" height="'.$player_buttons_h.'" color="'.$buttons_color.'" />'."\n";
+		$output .= '		<object label="playButton" x="19" y="'.$space_h.'" width="10" height="'.$player_buttons_h.'" color="'.$buttons_color.'" />'."\n";
+		$output .= '		<object label="stopButton" x="32" y="'.$space_h.'" width="9" height="'.$player_buttons_h.'" color="'.$buttons_color.'" />'."\n";
+		$output .= '		<object label="fwdButton" x="46" y="'.$space_h.'" width="11" height="'.$player_buttons_h.'" color="'.$buttons_color.'" />'."\n";
+		
+		$output .= '		<object label="trackDisplay" x="'.$td_lb_tb_x.'" y="0" width="'.($width-$td_lb_tb_x-$volume_display_w-4-26).'" size="10" font="Arial" color="'.$infodisplay_text_color.'" align="left" />'."\n";
+		$output .= '		<object label="timeBar" x="'.$td_lb_tb_x.'" y="1" width="'.($width-$td_lb_tb_x-$volume_display_w-4).'" height="'.$timebar_h.'" alpha="60" color="cc9999" />'."\n";
+		$output .= '		<object label="loadBar" x="'.$td_lb_tb_x.'" y="'.(1+$timebar_h).'" width="'.($width-$td_lb_tb_x-$volume_display_w-4).'" height="'.$loadBar_h.'" alpha="60" color="BBdddd" />'."\n";
+		$output .= '		<object label="timeDisplay" x="'.($width-$volume_display_w-3-26).'" y="0" width="26" size="10" font="Arial" color="'.$infodisplay_text_color.'" />'."\n";
+		$output .= '		<object label="volumeDisplay" x="'.($width-$volume_display_w-2).'" y="'.$space_h.'" width="'.$volume_display_w.'" height="'.$player_buttons_h.'" color="444444" />'."\n";
+		
+		if (TRUE == $show_episode_image) {
+			$output .= '		<object label="imageDisplay" x="20" y="'.($height-$bottom_row_h-110).'" width="130" height="100" />'."\n";
+		}
+		//~ $output .= '		<object label="videoDisplay" x="20" y="20" width="130" height="100" />'."\n";
+		
+		$output .= '		<object label="scrollupButton" x="'.($width-6-$space_w).'" y="'.($top_row_h+2).'" width="6" height="6" color="'.$buttons_color.'" />'."\n";
+		$output .= '		<object label="scrolldownButton" x="'.($width-6-$space_w).'" y="'.($top_row_h+13).'" width="6" height="6" color="'.$buttons_color.'" />'."\n";
+		$output .= '		<object label="scrollButton" x="'.($width-6-$space_w).'" y="'.($top_row_h+25).'" width="6" height="'.($middle_row_h-25).'" color="'.$buttons_color.'" bgAlpha="0" />'."\n";
+		
+		$output .= '		<object label="shuffleButton" x="4" y="'.($height-$bottom_row_h+$space_h).'" width="20.7" height="11.7" color="'.$button_text_color.'" hoverMessage="'.__('Shuffle', 'podpress').'" />'."\n";
+		$output .= '		<object label="repeatButton" x="27" y="'.($height-$bottom_row_h+$space_h).'" width="15.7" height="11.7" color="'.$button_text_color.'" hoverMessage="'.__('Repeat', 'podpress').'" />'."\n";
+		
+		//~ $output .= '		<object label="infoButton" x="79" y="'.($height-$bottom_row_h-20).'" size="+10" color="'.$button_text_color.'" text="'.__('Info', 'podpress').'" font="Arial" hoverMessage="'.__('Track Info', 'podpress').'" />'."\n";
+		//~ $output .= '		<object label="purchaseButton" x="52" y="'.($height-($bottom_row_h)).'" size="+10" color="'.$button_text_color.'" text="'.__('purchase', 'podpress').'" font="Arial" hoverMessage="'.__('Purchase', 'podpress').'" />'."\n";
+		//~ $output .= '		<object label="downloadButton" x="101" y="'.($height-($bottom_row_h)).'" size="+10" color="'.$button_text_color.'" text="'.__('Save', 'podpress').'" font="Arial" bold="0" hoverMessage="'.__('Download Track', 'podpress').'" />'."\n";
+		
+		$output .= '	</objects>'."\n";
+		$output .= '</skin>'."\n";
+		
+		// write the out put to the skin file
+		podPress_write_XSPF_skin_file(PODPRESS_DIR.'/players/xspf_jukebox/dynamic/skin.xml', $output);
+	}
+	
+	function podpress_xspf_jukebox_slim_skin_xml($width = 170, $height = 30) {
+		if (600 < $width) {
+			$width = 600;
+		} elseif (170 > $width) {
+			$width = 170;
+		}
+		if (100 < $height) {
+			$height = 100;
+		} elseif (30 > $height) {
+			$height = 30;
+		}
+		$top_row_h = 18;
+		$bottom_row_w = $width;
+		$bottom_row_h = 12;
+		$middle_row_h = ($height - ($top_row_h+$bottom_row_h));
+		$volume_display_w=14;
+		$td_lb_tb_x = 59;
+		$timedisplay_w = 26;
+		$space_w = 3;
+		$space_h = 3;
+		$timebar_h = 13;
+		$loadBar_h = 3;
+
+		$player_buttons_h = $top_row_h-$space_h-1-$space_h-1;
+		
+		// colors
+		$bgcolor = 'CCCCCC';
+		$rowsandbars_bgcolor = 'EAEAEA';
+		$buttons_color = '999999';
+		$playlist_text_color = $button_text_color = '333333';
+		$playlist_selectedtext_color = 'aa3333';
+		$infodisplay_text_color = '000000';
+		
+		// misc.
+		$show_episode_image = TRUE;
+		
+		$output = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
+		$output .= '<skin version="0" xmlns="http://xsml.org/ns/0/">'."\n";
+		$output .= '	<width>'.$width.'</width>'."\n";
+		$output .= '	<height>'.$height.'</height>'."\n";
+		$output .= '	<name>SlimOriginal</name>'."\n";
+		$output .= '	<author>Lacy Morrow</author>'."\n";
+		$output .= '	<email>gojukebox@gmail.com</email>'."\n";
+		$output .= '	<website>http://www.lacymorrow.com</website>'."\n";
+		$output .= '	<comment>DYNAMIC SlimOriginal Skin for XSPF Jukebox (This is a derivate of the SlimOriginal skin for the slim player.) - THIS FILE WILL BE OVERWRITTEN BY THE PODPRESS XSPF WIDGET! You can prevent this by defining the constant PODPRESS_XSPF_PLAYER_USE_CUSTOM_SKINFILE in the podpress.php file.</comment>'."\n";
+		$output .= '	<objects>'."\n";
+		$output .= '		<background color="'.$bgcolor.'" />'."\n";
+		
+		// top row background
+		$output .= '		<shape shape="rectangle" x="0" y="0" width="'.$width.'" height="'.$top_row_h.'" color="'.$rowsandbars_bgcolor.'" />'."\n";
+		// bottom row background
+		$output .= '		<shape shape="rectangle" x="0" y="'.($height-($bottom_row_h)).'" width="'.$bottom_row_w.'" height="'.$bottom_row_h.'" color="'.$rowsandbars_bgcolor.'" />'."\n";
+		// "About" - button element
+		$output .= '		<text x="'.($width-33).'" y="'.($height-$bottom_row_h-$space_h).'" size="10" text="'.__('About', 'podpress').'" font="Arial" bold="0" color="'.$button_text_color.'" hoverMessage="'.__('About XSPF Jukebox player', 'podpress').'" url="http://blog.lacymorrow.com" />'."\n";
+		// player as Popup player - button element
+		// $output .= '		<text x="'.($width-85).'" y="'.($height-$bottom_row_h+2).'" size="10" text="'.__('Popup', 'podpress').'" font="Arial" bold="0" color="'.$button_text_color.'" hoverMessage="'.__('Popup', 'podpress').'" url="../static/object-flash-xspf-popup.php" />'."\n";
+
+		$output .= '		<object label="prevButton" x="2" y="'.$space_h.'" width="11" height="'.$player_buttons_h.'" color="'.$buttons_color.'" />'."\n";
+		$output .= '		<object label="playButton" x="19" y="'.$space_h.'" width="10" height="'.$player_buttons_h.'" color="'.$buttons_color.'" />'."\n";
+		$output .= '		<object label="stopButton" x="32" y="'.$space_h.'" width="9" height="'.$player_buttons_h.'" color="'.$buttons_color.'" />'."\n";
+		$output .= '		<object label="fwdButton" x="46" y="'.$space_h.'" width="11" height="'.$player_buttons_h.'" color="'.$buttons_color.'" />'."\n";
+		
+		$output .= '		<object label="trackDisplay" x="'.$td_lb_tb_x.'" y="0" width="'.($width-$td_lb_tb_x-$volume_display_w-4-26).'" size="10" font="Arial" color="'.$infodisplay_text_color.'" align="left" />'."\n";
+		$output .= '		<object label="timeBar" x="'.$td_lb_tb_x.'" y="1" width="'.($width-$td_lb_tb_x-$volume_display_w-4).'" height="'.$timebar_h.'" alpha="60" color="cc9999" />'."\n";
+		$output .= '		<object label="loadBar" x="'.$td_lb_tb_x.'" y="'.(1+$timebar_h).'" width="'.($width-$td_lb_tb_x-$volume_display_w-4).'" height="'.$loadBar_h.'" alpha="60" color="BBdddd" />'."\n";
+		$output .= '		<object label="timeDisplay" x="'.($width-$volume_display_w-3-26).'" y="0" width="26" size="10" font="Arial" color="'.$infodisplay_text_color.'" />'."\n";
+		$output .= '		<object label="volumeDisplay" x="'.($width-$volume_display_w-2).'" y="'.$space_h.'" width="'.$volume_display_w.'" height="'.$player_buttons_h.'" color="444444" />'."\n";
+		
+		$output .= '		<object label="shuffleButton" x="4" y="'.($height-$bottom_row_h).'" width="17.1" height="10" color="'.$button_text_color.'" hoverMessage="'.__('Shuffle', 'podpress').'" />'."\n";
+		$output .= '		<object label="repeatButton" x="27" y="'.($height-$bottom_row_h).'" width="12.1" height="10" color="'.$button_text_color.'" hoverMessage="'.__('Repeat', 'podpress').'" />'."\n";
+		// $output .= '		<object label="infoButton" x="79" y="'.($height-$bottom_row_h+2).'" size="+10" color="'.$button_text_color.'" text="'.__('Info', 'podpress').'" font="Arial" hoverMessage="'.__('Track Info', 'podpress').'" />'."\n";
+		
+		$output .= '	</objects>'."\n";
+		$output .= '</skin>'."\n";
+		
+		// write the out put to the skin file
+		podPress_write_XSPF_skin_file(PODPRESS_DIR.'/players/xspf_jukebox/dynamic/skin_slim.xml', $output);
+	}
+	
+	function podPress_write_XSPF_skin_file($filename='', $output='') {
+		if (FALSE == is_dir(dirname($filename))) {
+			echo '<p class="error" style="padding:2px;">'.sprintf(__('The folder %1$s does not exists. Unable to write the skin file.', 'podpress'), dirname($filename)).'</p>';
+			return;
+		}
+		if (is_file($filename) AND FALSE == is_writable($filename)) {
+			chmod ($filename, 0777);
+		}
+		$handle = fopen($filename, "w");
+		fputs($handle, $output);
+		$status = fclose($handle);
+		if (is_file($filename)) {chmod ($filename, 0644);}
+	}
+	
+	
 	/**************************************************************/
 	/* Functions for supporting the downloader */
 	/**************************************************************/
@@ -474,14 +717,8 @@
 			case 'feed':
 			case 'web':
 			case 'play':
-				$sqlI = "INSERT INTO ".$wpdb->prefix."podpress_statcounts (postID, media, $method) VALUES ($postID, '$media', 1)";
-				$sqlU = "UPDATE ".$wpdb->prefix."podpress_statcounts SET $method = $method+1, total = total+1 WHERE postID = '$postID' AND media = '$media'";
-				$wpdb->hide_errors();
-				$result = $wpdb->query($sqlI);
-				if(!$result) {
-					$wpdb->query($sqlU);
-				}
-				$wpdb->show_errors();
+				$sqlIoU = "INSERT INTO ".$wpdb->prefix."podpress_statcounts (postID, media, $method) VALUES ($postID, '$media', 1) ON DUPLICATE KEY UPDATE $method = $method+1, total = total+1";
+				$result = $wpdb->query($sqlIoU);
 				break;
 			default:
 				return;
@@ -980,4 +1217,4 @@
 		podPress_add_option($option_name, $option_value);
 		return true;
 	}
-
+?>
Index: readme.txt
===================================================================
--- readme.txt	(Revision 209741)
+++ readme.txt	(Arbeitskopie)
@@ -3,7 +3,7 @@
 Contributors: seek3r, macx, iscifi
 Donate link: http://www.mightyseek.com/podpress_donate.php
 Requires at least: 1.5
-Tested up to: 2.9.1
+Tested up to: 2.9.2
 Stable Tag: 8.8.4
 
 A dream plugin for Podcasters using WordPress..
@@ -36,10 +36,21 @@
 
 == Changelog ==
 
+= v0.8.5 beta 3 =
+* [Ticket #1089](http://plugins.trac.wordpress.org/ticket/1089) - props: a new customizable XSPF player
+* [Ticket #1085](http://plugins.trac.wordpress.org/ticket/1085) - enhancement for loading time of the podpress pages
+* [Ticket #1083](http://plugins.trac.wordpress.org/ticket/1083) - a reworked player preview 
+* [Ticket #1080](http://plugins.trac.wordpress.org/ticket/1080) - fix for podPress_downloadlinks container
+* [Ticket #1079](http://plugins.trac.wordpress.org/ticket/1079) - fix for the "Before <!- More -> tag:"-functionality
+* [Ticket #1074](http://plugins.trac.wordpress.org/ticket/1074) - better handling of invalid input data in the feed generating functions
+* [Ticket #1073](http://plugins.trac.wordpress.org/ticket/1073) - additional descriptions for the feed settings pages of podPress
+* [Ticket #1068](http://plugins.trac.wordpress.org/ticket/1068) - patch for an error free stats counter (Thanks to [avatarworf](http://wordpress.org/support/profile/17483))
+* [Ticket #1066](http://plugins.trac.wordpress.org/ticket/1066) - Podango message at the general settings page of podPress
+* [Ticket #1061](http://plugins.trac.wordpress.org/ticket/1061) - update to 1PixelOut player a.k.a Audio Player 2.0
+
 = v0.8.5 beta 2 =
 * [Ticket #1064](http://plugins.trac.wordpress.org/ticket/1064) - multiple fixes on the feed feed/iTunes settings page and feed functions
 * [Ticket #1062](http://plugins.trac.wordpress.org/ticket/1062) - Fix for the Video Player Preview and the Listen Wrapper (contains the [Ticket #1060](http://plugins.trac.wordpress.org/ticket/1060) - little enhancement for the variables tempFileSystemPath and tempFileURLPath)
-* [Ticket #1061](http://plugins.trac.wordpress.org/ticket/1061) - update to 1PixelOut player a.k.a Audio Player 2.0
 
 = v0.8.5 beta =
 * [Ticket #1059](http://plugins.trac.wordpress.org/ticket/1059) - fixed color picker (on the player settings page)
@@ -90,6 +101,10 @@
 
 Go to the new podPress menu and start configuring podPress and your Feed settings.
 
+= use a different skin for the XSPF player =
+Since v8.8.5 podPress uses the [XSPF player created by Lacy Morrow](http://blog.lacymorrow.com/projects/xspf-jukebox/) which has the possibility to use customized player skins. These skin files are XML files and situated in a sub folder of podPress (e.g. /podpress/players/xspf_jukebox/dynamic/skin.xml). The file name should be skin.xml and skin_slim.xml for the slim player. podPress overwrites these files to updated the width (and height) of the widget every time the widgets settings are saved. Later versions of podPress might have more customization options for the player.
+But if you want to use you own skin files then you can prevent the overwriting of the skin files by defining the constant PODPRESS_XSPF_PLAYER_USE_CUSTOM_SKINFILE (to do that uncomment the line at the beginning of the podpress.php file).
+The "[XSPF Jukebox skin.xml Specification](http://lacymorrow.com/projects/jukebox/skindoc.html)" documents how-to make such a file. Or you can eventually use one of the [existing skins](http://blog.lacymorrow.com/projects/xspf-jukebox/). podPress uses a derivate of the SlimOriginal skin by default. If you are using a different skin it might be necessary to adjust the heights too. In order to do that define the constants: PODPRESS_XSPF_PLAYER_HEIGHT and PODPRESS_XSPF_SLIM_PLAYER_HEIGHT. (There are prepared lines in the podpress.php file.)
 
 == Frequently Asked Questions ==
 
@@ -104,6 +119,7 @@
 
 In general this just requires that you replace the existing files with the new ones. Sometimes its a good idea to delete all the files in wp-content/plugins/podpress/ and re-upload them fresh.
 
+
 == Screenshots ==
 
 1. Write a page and at the end of your Post add your mp3 filename or full URL.

