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,33 @@
+<?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="startButton" x="19" y="3" width="10" height="10" alpha="0" />
+		<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/variables.txt
===================================================================
--- players/xspf_jukebox/dynamic/variables.txt	(Revision 0)
+++ players/xspf_jukebox/dynamic/variables.txt	(Revision 0)
@@ -0,0 +1 @@
+&autoload=true&autoplay=false&loaded=true
\ No newline at end of file
Index: players/xspf_jukebox/dynamic_slim/skin.xml
===================================================================
--- players/xspf_jukebox/dynamic_slim/skin.xml	(Revision 0)
+++ players/xspf_jukebox/dynamic_slim/skin.xml	(Revision 0)
@@ -0,0 +1,28 @@
+<?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="startButton" x="19" y="3" width="10" height="10" alpha="0" />
+		<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/dynamic_slim/variables.txt
===================================================================
--- players/xspf_jukebox/dynamic_slim/variables.txt	(Revision 0)
+++ players/xspf_jukebox/dynamic_slim/variables.txt	(Revision 0)
@@ -0,0 +1 @@
+&autoload=true&autoplay=false&loaded=true
\ No newline at end of file
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 210539)
+++ 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,31 @@
 if (!defined('PLUGINDIR')) { define('PLUGINDIR', 'wp-content/plugins'); }
 if (!defined('PODPRESSPLUGINDIR')) { define('PODPRESSPLUGINDIR', ABSPATH.PLUGINDIR); }
 
+// Begin - XSPF Jukebox player configuration:
+// Background-color of the player <object>
+if ( ! defined( 'PODPRESS_XSPF_BACKGROUND_COLOR' ) ) { define( 'PODPRESS_XSPF_BACKGROUND_COLOR', 'FFFFFF' ); }
+
+// Before you use these options please read the player documentation http://lacymorrow.com/projects/jukebox/xspfdoc.html and the skin documentation http://lacymorrow.com/projects/jukebox/skindoc.html
+// If you want to use a custom skin file for the XSPF player then uncomment this line and replace or edit the skin files in the folders /podpress/players/xspf_jukebox/dynamic/ or /podpress/players/xspf_jukebox/dynamic_slim/
+// if ( ! defined('PODPRESS_XSPF_PLAYER_USE_CUSTOM_SKINFILE') ) { define('PODPRESS_XSPF_PLAYER_USE_CUSTOM_SKINFILE', TRUE); }
+
+// the minimum width of the XSPF player (default: 170) in pixels (Choose the actual width in the widgets settings! Change this value only if you want to use a smaller skin.)
+if ( ! defined( 'PODPRESS_XSPF_MIN_PLAYER_WIDTH' ) ) { define( 'PODPRESS_XSPF_MIN_PLAYER_WIDTH', 170 ); }
+
+// 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); }
+
+// podPress uses the parameters: &autoload=true&autoplay=false&loaded=true to load the XSPF player
+// If you want to use custom parameters then uncomment the following lines and edit or replace the variables.txt files in the folders /podpress/players/xspf_jukebox/dynamic/ and /podpress/players/xspf_jukebox/dynamic_slim/.
+// if ( ! defined('PODPRESS_XSPF_USE_CUSTOM_VARIABLES') ) { define('PODPRESS_XSPF_USE_CUSTOM_VARIABLES', TRUE); }
+// if ( ! defined('PODPRESS_XSPF_SLIM_USE_CUSTOM_VARIABLES') ) { define('PODPRESS_XSPF_SLIM_USE_CUSTOM_VARIABLES', TRUE); }
+// End - XSPF Jukebox player configuration
+
+
 if(!function_exists('memory_get_usage')) {
 	unset($_GET['podpress_showmem']);
 	function memory_get_usage() { return 0;	}
@@ -154,7 +179,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 +806,4 @@
 	$podPress->post_form_wp25plus('page');
 	echo "\n<!-- podPress dbx for modern WP versions - page -->\n";
 }
+?>
Index: podpress_functions.php
===================================================================
--- podpress_functions.php	(Revision 210539)
+++ 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,28 +297,54 @@
 	/* 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() {
 		GLOBAL $podPress;
 		$options = $newoptions = get_option('widget_podPressFeedButtons');
-		if ( $_POST["podPressFeedButtons-submit"] ) {
+		if ( $_POST['podPressFeedButtons-submit'] ) {
 			$newoptions['blog'] = isset($_POST['podPressFeedButtons-blog']);
 			$newoptions['podcast'] = isset($_POST['podPressFeedButtons-podcast']);
 			$newoptions['itunes'] = isset($_POST['podPressFeedButtons-itunes']);
 			// iscifi new option for itunes protocol
 			$newoptions['iprot'] = isset ($_POST['podPressItunesProtocol-iprot']);
-			$newoptions['title'] = strip_tags(stripslashes($_POST["podPressFeedButtons-title"]));
+			$newoptions['title'] = strip_tags(stripslashes($_POST['podPressFeedButtons-title']));
 		}
 		if ( $options != $newoptions ) {
 			$options = $newoptions;
@@ -329,7 +356,6 @@
 		if (!isset($options['iprot'])) {
 			$options['iprot'] = false;
 			}
-			
 		if(!isset($options['podcast'])) {
 			$options['podcast'] = true;
 		}
@@ -347,19 +373,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 button', '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 protocol for URL', 'podpress'); ?> <?php _e('(itpc://)', 'podpress'); ?></label> <input class="checkbox" type="checkbox" <?php echo $iprot; ?> id="podPressFeedButtons-iprot" name="podPressItunesProtocol-iprot" /> <span class="nonessential"><?php _e('(The user subscribes immediatly after the click. Otherwise the iTunes Store page of the podcast will be displayed first and the user can subscribe.)', 'podpress'); ?></span></p>
 		<input type="hidden" id="podPressFeedButtons-submit" name="podPressFeedButtons-submit" value="1" />
 		<?php
 	}
@@ -388,44 +413,68 @@
 		echo $before_widget;
 		echo $before_title . $options['title'] . $after_title;
 		echo "<ul>\n";
-		if($options['itunes']) {
-		 if ($options['iprot']) {
-		   echo ' <li><a href="itpc://';
-		 }
-		 else {
-		   echo ' <li><a href="http://';
-		 }
-			echo 'phobos.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id='.$podPress->settings['iTunes']['FeedID'].'"><img src="'.podPress_url().'images/button_itunes.png" border="0" alt="View in iTunes"/></a></li>'."\n";
+		if ($options['itunes']) {
+			// for more info: http://www.apple.com/itunes/podcasts/specs.html#linking
+			if ($options['iprot'] ) {
+				echo ' <li><a href="itpc://'.preg_replace('/^https?:\/\//i', '', $podPress->settings['podcastFeedURL']).'"';
+			} else {
+				echo ' <li><a href="http://http://www.itunes.com/podcast?id='.$podPress->settings['iTunes']['FeedID'].'"';
+			}
+			echo ' title="'.__('Subscribe to the Podcast RSS Feed with iTunes', 'podpress').'"><img src="'.podPress_url().'images/button_itunes.png" alt="'.__('Subscribe with iTunes', 'podpress').'" /></a></li>'."\n";
 		}
 		if($options['podcast']) {
-			echo '	<li><a href="'.$podPress->settings['podcastFeedURL'].'"><img src="'.podPress_url().'images/button_rss_podcast.png" border="0" alt="Any Podcatcher"/></a></li>'."\n";
+			echo '	<li><a href="'.$podPress->settings['podcastFeedURL'].'" title="'.__('Subscribe to the Podcast RSS Feed with any other podcatcher', 'podpress').'"><img src="'.podPress_url().'images/button_rss_podcast.png" alt="'.__('Subscribe to the Podcast RSS Feed', 'podpress').'" /></a></li>'."\n";
 		}
 		if($options['blog']) {
-		echo '	<li><a href="'.get_bloginfo ('rss2_url').'"><img src="'.podPress_url().'images/button_rss_blog.png" border="0" alt="Any Feed Reader"/></a></li>'."\n";
+			echo '	<li><a href="'.get_bloginfo('rss2_url').'" title="'.__('Subscribe to the main RSS Feed with any feed reader', 'podpress').'"><img src="'.podPress_url().'images/button_rss_blog.png" border="0" alt="'.__('Subscribe to the RSS Feed', 'podpress').'" /></a></li>'."\n";
 		}
 		echo "</ul>\n";
 		echo $after_widget;
 	}
 
 	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 (PODPRESS_XSPF_MIN_PLAYER_WIDTH > $options['PlayerWidth']) {
+				$options['PlayerWidth'] = PODPRESS_XSPF_MIN_PLAYER_WIDTH;
+			}
+			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"' : '';
+		$useSlimPlayer = $options['useSlimPlayer'] ? ' checked="checked"' : '';
 		if(!isset($options['title'])) {
 			$options['title'] = __('Podcast Player');
 		}
+		if ( TRUE === $options['useSlimPlayer'] AND FALSE == isset($options['PlayerHeight']) ) {
+			$options['PlayerHeight'] = PODPRESS_XSPF_SLIM_PLAYER_HEIGHT;
+		}
+		if ( FALSE == isset($options['PlayerHeight']) ) {
+			$options['PlayerHeight'] = PODPRESS_XSPF_PLAYER_HEIGHT;
+		}
 		$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
 	}
@@ -441,28 +490,239 @@
 		if(!isset($options['useSlimPlayer'])) {
 			$options['useSlimPlayer'] = false;
 		}
-			
-		echo $before_widget;
-		echo $before_title . $options['title'] . $after_title;
+		if ( TRUE === $options['useSlimPlayer'] AND FALSE == isset($options['PlayerHeight']) ) {
+			$options['PlayerHeight'] = PODPRESS_XSPF_SLIM_PLAYER_HEIGHT;
+		}
+		if ( FALSE == isset($options['PlayerHeight']) ) {
+			$options['PlayerHeight'] = PODPRESS_XSPF_PLAYER_HEIGHT;
+		}
+		if ( FALSE == isset($options['PlayerWidth']) ) { $options['PlayerWidth'] = PODPRESS_XSPF_MIN_PLAYER_WIDTH; }
 
-		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";
-			echo '</object>'."\n";
+		echo $before_widget."\n";
+		echo $before_title . $options['title'] . $after_title."\n";
+		if ($options['useSlimPlayer']) {
+			if ( TRUE === defined( 'PODPRESS_XSPF_SLIM_USE_CUSTOM_VARIABLES' ) AND TRUE === PODPRESS_XSPF_SLIM_USE_CUSTOM_VARIABLES AND TRUE == is_readable(PODPRESS_DIR.'/players/xspf_jukebox/dynamic_slim/variables.txt')) { 
+				$variables = '&skin_url='.PODPRESS_URL.'/players/xspf_jukebox/dynamic_slim/skin.xml&loadurl='.PODPRESS_URL.'/players/xspf_jukebox/dynamic_slim/variables.txt';
+			} else {
+				$variables = '&skin_url='.PODPRESS_URL.'/players/xspf_jukebox/dynamic_slim/skin.xml&autoload=true&autoplay=false&loaded=true';
+			}
+			$data_string = PODPRESS_URL.'/players/xspf_jukebox/xspf_jukebox.swf?playlist_url='.get_feed_link('playlist.xspf').$variables;
+			echo '<object type="application/x-shockwave-flash" width="'.$options['PlayerWidth'].'" height="'.$options['PlayerHeight'].'" id="podpress_xspf_player_slim" data="'.$data_string.'">'."\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";
-			echo '</object>'."\n";
+			if ( TRUE === defined( 'PODPRESS_XSPF_USE_CUSTOM_VARIABLES' ) AND TRUE === PODPRESS_XSPF_USE_CUSTOM_VARIABLES AND TRUE == is_readable(PODPRESS_DIR.'/players/xspf_jukebox/dynamic/variables.txt')) { 
+				$variables = '&skin_url='.PODPRESS_URL.'/players/xspf_jukebox/dynamic/skin.xml&loadurl='.PODPRESS_URL.'/players/xspf_jukebox/dynamic/variables.txt';
+			} else {
+				$variables = '&skin_url='.PODPRESS_URL.'/players/xspf_jukebox/dynamic/skin.xml&autoload=true&autoplay=false&loaded=true';
+			}
+			$data_string = PODPRESS_URL.'/players/xspf_jukebox/xspf_jukebox.swf?playlist_url='.get_feed_link('playlist.xspf').$variables;
+			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="#'.PODPRESS_XSPF_BACKGROUND_COLOR.'" />'."\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="startButton" x="19" y="'.$space_h.'" width="10" height="'.$player_buttons_h.'" alpha="0" />'."\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="startButton" x="19" y="'.$space_h.'" width="10" height="'.$player_buttons_h.'" alpha="0" />'."\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_slim/skin.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 +734,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 +1234,4 @@
 		podPress_add_option($option_name, $option_value);
 		return true;
 	}
-
+?>
Index: readme.txt
===================================================================
--- readme.txt	(Revision 210539)
+++ readme.txt	(Arbeitskopie)
@@ -1,12 +1,12 @@
 === podPress ===
-Tags: post, podcast, audio, video, admin, feed, widget, stats, statistics 
+Tags: post, podcast, podcasting, audio, video, admin, feed, widget, stats, statistics 
 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..
+A plugin for Podcasters using WordPress.
 
 == Description ==
 
@@ -17,10 +17,8 @@
 
 Features:
 
-* Full featured and automatic feed generation (RSS2, iTunes and ATOM and BitTorrent RSS)
-* Preview of what your Podcast will look like on iTunes
+* Full featured and automatic feed generation (RSS2, iTunes and ATOM and XSPF playlist)
 * Podcast Download stats, with cool graphs. See below.
-* Support for Premium Content (Pay Only)
 * Makes adding a Podcast to a Post very simple
 * View MP3 Files ID3 tags when your Posting
 * Control over where the player will display within your post and what it will look like.
@@ -29,6 +27,8 @@
 * Automatic Media player for MP3, RM, OGG, MP4, MOV, QT, FLV, ASF, WMV, AVI, and more, with inline and Popup Window support.
 * Preview image for videos
 * Support for seperate Category podcasts
+* Support for Premium Content (Pay Only)
+* Preview of what your Podcast will look like on iTunes
 * Audio Comments
 
 For the more information visit the website
@@ -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)
@@ -70,12 +81,21 @@
 1. To add a link to itunes on your website, set the FeedID in the PodPress options page, and then add this code in  your template `<?php podPress_iTunesLink(); ?>`
 
 Details about all the optional_files are in optional_files/details.txt
-Details about premium podcasting support is in optional_files/premiumcasting.txt
 
+= included software =
+podPress v8.8.5 includes:
 
+* 1PixelOut Audio Player v2.0 - http://www.1pixelout.net/code/audio-player-wordpress-plugin/
+* Podango player - http://sites.google.com/site/podangohibernate/
+* XSPF Jukebox v5.9.5 - http://lacymorrow.com/projects/jukebox/
+* getID3 v1.7.8b2 - http://www.getid3.org 
+
+
 == Upgrade Notice ==
 
-VERY IMPORTANT
+Upgrading to 8.8.5:
+If you have used the widgets of podPress then it will be necessary to  reactivate these widgets manually after the upgrade to v8.8.5. 
+
 Upgrading to 4.0:
 The plugins/podpress.php file is no longer needed and MUST be deleted. The podpress.php file now lives in `plugins/podpress/`
 
@@ -88,13 +108,35 @@
 
 == Configuration ==
 
-Go to the new podPress menu and start configuring podPress and your Feed settings.
+Go to the new podPress menu and start configuring your Feed settings, player appearance, statistics and more general settings.
 
+= How-To 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 sub folders of podPress (/podpress/players/xspf_jukebox/dynamic/skin.xml and ... /dynamic_slim/skin.xml). 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 height of the player-<object> 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 ==
 
 For more FAQs see the official [podPress FAQ](http://podcasterswiki.com/index.php?title=PodPress_FAQ "Official podPress FAQ") (This Domain name of this FAQs page is currently (01/2010) unavailable resp. parked. Please, use the WP.org [Plugins and Hacks forum](http://wordpress.org/support/forum/10) to ask your questions or for bug reports.)
 
+= How can I add podcast episodes with podPress? =
+
+You can get probably a good impression how it works from [this WP.org forum thread](http://wordpress.org/support/topic/356947) although the original question is a little bit different.
+
+= How can I submit podcast episodes to iTunes? =
+
+podPress creates a RSS feed with additional information for iTunes. You can use the "Feed/iTunes settings"-page of podPress to determine what the content of these [iTunes RSS tags](http://www.apple.com/uk/itunes/podcasts/specs.html#rss) should be. It is possible to subscribe to this feed directly with the iTunes client program.
+But you can add your podcast to the iTunes Store. For more information go to the [iTunes Podcast Resources / Making a Podcast / Submitting Your Podcast to the iTunes Store](http://www.apple.com/itunes/podcasts/specs.html#submitting).
+
+= What is this iTunes:FeedID? =
+
+If you submit your podcast to the iTunes Store then your podcast will get an ID. Insert this ID on the "Feed/iTunes settings"-page of podPress e.g. if you want to use the Feed Buttons widget of podPress. podPress creates the link to your podcast in the iTunes Store with this ID.
+
+= How can I change the my podcast feed-URL in the iTunes Store? =
+
+Apple describes [how it works](http://www.apple.com/itunes/podcasts/specs.html#changing) basically in there [iTunes Podcasting Resources](http://www.apple.com/itunes/podcasts/specs.html) and how you do this with podPress is dicussed in this WP.org [forum thread](http://wordpress.org/support/topic/249345).
+
 = Blank screen after activating podPress =
 
 Some PHP5 users end up with a blank screen after activating the podPress plugin. For reasons yet fully understood some PHP5 installations consume double the memory compared to a PHP4 install when dealing with WordPress. Some notes I have seen blame it on a bug with caching objects in session data, but I have not debugged it to that level yet.
@@ -104,6 +146,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.

