Index: C:/xampp/htdocs/wordpress/trunk/wp-includes/js/jquery/jquery.accordion.js
===================================================================
--- C:/xampp/htdocs/wordpress/trunk/wp-includes/js/jquery/jquery.accordion.js	(revision 0)
+++ C:/xampp/htdocs/wordpress/trunk/wp-includes/js/jquery/jquery.accordion.js	(revision 0)
@@ -0,0 +1,365 @@
+/*
+ * Accordion 1.5 - jQuery menu widget
+ *
+ * Copyright (c) 2007 Jörn Zaefferer, Frank Marcia
+ *
+ * http://bassistance.de/jquery-plugins/jquery-plugin-accordion/
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ *
+ * Revision: $Id: jquery.accordion.js 2880 2007-08-24 21:44:37Z joern.zaefferer $
+ *
+ */
+
+/**
+ * Make the selected elements Accordion widgets.
+ *
+ * Semantic requirements:
+ *
+ * If the structure of your container is flat with unique
+ * tags for header and content elements, eg. a definition list
+ * (dl > dt + dd), you don't have to specify any options at
+ * all.
+ *
+ * If your structure uses the same elements for header and
+ * content or uses some kind of nested structure, you have to
+ * specify the header elements, eg. via class, see the second example.
+ *
+ * Use activate(Number) to change the active content programmatically.
+ *
+ * A change event is triggered everytime the accordion changes. Apart from
+ * the event object, all arguments are jQuery objects.
+ * Arguments: event, newHeader, oldHeader, newContent, oldContent
+ *
+ * @example jQuery('#nav').Accordion();
+ * @before <dl id="nav">
+ *   <dt>Header 1</dt>
+ *   <dd>Content 1</dd>
+ *   <dt>Header 2</dt>
+ *   <dd>Content 2</dd>
+ * </dl>
+ * @desc Creates an Accordion from the given definition list
+ *
+ * @example jQuery('#nav').Accordion({
+ *   header: '.title'
+ * });
+ * @before <div id="nav">
+ *  <div>
+ *    <div class="title">Header 1</div>
+ *    <div>Content 1</div>
+ *  </div>
+ *  <div>
+ *    <div class="title">Header 2</div>
+ *    <div>Content 2</div>
+ *  </div>
+ * </div>
+ * @desc Creates an Accordion from the given div structure
+ *
+ * @example jQuery('#nav').Accordion({
+ *   header: '.head',
+ * 	 navigation: true
+ * });
+ * @before <ul id="nav">
+ *   <li>
+ *     <a class="head" href="books/">Books</a>
+ *     <ul>
+ *       <li><a href="books/fantasy/">Fantasy</a></li>
+ *       <li><a href="books/programming/">Programming</a></li>
+ *     </ul>
+ *   </li>
+ *   <li>
+ *     <a class="head" href="movies/">Movies</a>
+ *     <ul>
+ *       <li><a href="movies/fantasy/">Fantasy</a></li>
+ *       <li><a href="movies/programming/">Programming</a></li>
+ *     </ul>
+ *   </li>
+ * </ul>
+ * @after <ul id="nav">
+ *   <li>
+ *     <a class="head" href="">Books</a>
+ *     <ul style="display: none">
+ *       <li><a href="books/fantasy/">Fantasy</a></li>
+ *       <li><a href="books/programming/">Programming</a></li>
+ *     </ul>
+ *   </li>
+ *   <li>
+ *     <a class="head" href="">Movies</a>
+ *     <ul>
+ *       <li><a class="current" href="movies/fantasy/">Fantasy</a></li>
+ *       <li><a href="movies/programming/">Programming</a></li>
+ *     </ul>
+ *   </li>
+ * </ul>
+ * @desc Creates an Accordion from the given navigation list, activating those accordion parts
+ * that match the current location.href. Assuming the user clicked on "Fantasy" in the "Movies" section,
+ * the accordion displayed after loading the page with the "Movies" section open and the "Fantasy" link highlighted
+ * with a class "current".
+ *
+ * @example jQuery('#accordion').Accordion().change(function(event, newHeader, oldHeader, newContent, oldContent) {
+ *   jQuery('#status').html(newHeader.text());
+ * });
+ * @desc Updates the element with id status with the text of the selected header every time the accordion changes
+ *
+ * @param Map options key/value pairs of optional settings.
+ * @option String|Element|jQuery|Boolean|Number active Selector for the active element. Set to false to display none at start. Default: first child
+ * @option String|Element|jQuery header Selector for the header element, eg. 'div.title', 'a.head'. Default: first child's tagname
+ * @option String|Number speed 
+ * @option String selectedClass Class for active header elements. Default: 'selected'
+ * @option Boolean alwaysOpen Whether there must be one content element open. Default: true
+ * @option Boolean|String animated Choose your favorite animation, or disable them (set to false). In addition to the default, "bounceslide" and "easeslide" are supported (both require the easing plugin). Default: 'slide'
+ * @option String event The event on which to trigger the accordion, eg. "mouseover". Default: "click"
+ * @option Boolean navigation If set, looks for the anchor that matches location.href and activates it. Great for href-based pseudo-state-saving. Default: false
+ * @option Boolean autoheight If set, the highest content part is used as height reference for all other parts. Provides more consistent animations. Default: false
+ *
+ * @type jQuery
+ * @see activate(Number)
+ * @name Accordion
+ * @cat Plugins/Accordion
+ */
+
+/**
+ * Activate a content part of the Accordion programmatically.
+ *
+ * The index can be a zero-indexed number to match the position of the header to close
+ * or a string expression matching an element. Pass -1 to close all (only possible with alwaysOpen:false).
+ *
+ * @example jQuery('#accordion').activate(1);
+ * @desc Activate the second content of the Accordion contained in <div id="accordion">.
+ *
+ * @example jQuery('#accordion').activate("a:first");
+ * @desc Activate the first element matching the given expression.
+ *
+ * @example jQuery('#nav').activate(false);
+ * @desc Close all content parts of the accordion.
+ *
+ * @param String|Element|jQuery|Boolean|Number index An Integer specifying the zero-based index of the content to be
+ *				 activated or an expression specifying the element, or an element/jQuery object, or a boolean false to close all.
+ *
+ * @type jQuery
+ * @name activate
+ * @cat Plugins/Accordion
+ */
+
+(function($) {
+
+jQuery.Accordion = {};
+jQuery.extend(jQuery.Accordion, {
+	defaults: {
+		selectedClass: "selected",
+		alwaysOpen: true,
+		animated: 'slide',
+		event: "click"
+	},
+	Animations: {
+		slide: function(settings, additions) {
+			settings = jQuery.extend({
+				easing: "swing",
+				duration: 300
+			}, settings, additions);
+			if ( !settings.toHide.size() ) {
+				settings.toShow.animate({height: "show"}, {
+					duration: settings.duration,
+					easing: settings.easing,
+					complete: settings.finished
+				});
+				return;
+			}
+			var height = settings.toHide.height();
+			settings.toShow.css({ height: 0, overflow: 'hidden' }).show();
+			settings.toHide.filter(":hidden").each(settings.finished).end().filter(":visible").animate({height:"hide"},{
+				step: function(n){
+					settings.toShow.height(Math.ceil(height - (jQuery.fn.stop ? n * height : n)));
+				},
+				duration: settings.duration,
+				easing: settings.easing,
+				complete: settings.finished
+			});
+		},
+		bounceslide: function(settings) {
+			this.slide(settings, {
+				easing: settings.down ? "bounceout" : "swing",
+				duration: settings.down ? 1000 : 200
+			});
+		},
+		easeslide: function(settings) {
+			this.slide(settings, {
+				easing: "easeinout",
+				duration: 700
+			})
+		}
+	}
+});
+
+jQuery.fn.extend({
+	nextUntil: function(expr) {
+	    var match = [];
+	
+	    // We need to figure out which elements to push onto the array
+	    this.each(function(){
+	        // Traverse through the sibling nodes
+	        for( var i = this.nextSibling; i; i = i.nextSibling ) {
+	            // Make sure that we're only dealing with elements
+	            if ( i.nodeType != 1 ) continue;
+	
+	            // If we find a match then we need to stop
+	            if ( jQuery.filter( expr, [i] ).r.length ) break;
+	
+	            // Otherwise, add it on to the stack
+	            match.push( i );
+	        }
+	    });
+	
+	    return this.pushStack( match );
+	},
+	// the plugin method itself
+	Accordion: function(settings) {
+		if ( !this.length )
+			return this;
+	
+		// setup configuration
+		settings = jQuery.extend({}, jQuery.Accordion.defaults, {
+			// define context defaults
+			header: $(':first-child', this)[0].tagName // take first childs tagName as header
+		}, settings);
+		
+		if ( settings.navigation ) {
+			var current = this.find("a").filter(function() { return this.href == location.href; });
+			if ( current.length ) {
+				if ( current.filter(settings.header).length ) {
+					settings.active = current;
+				} else {
+					settings.active = current.parent().parent().prev();
+					current.addClass("current");
+				}
+			}
+		}
+		
+		// calculate active if not specified, using the first header
+		var container = this,
+			headers = container.find(settings.header),
+			active = findActive(settings.active),
+			running = 0;
+
+		if ( settings.autoheight ) {
+			var maxHeight = 0;
+			headers.nextUntil(settings.header).each(function() {
+				maxHeight = Math.max(maxHeight, $(this).height());
+			}).height(maxHeight);
+		}
+
+		headers
+			.not(active || "")
+			.nextUntil(settings.header)
+			.hide();
+		active.addClass(settings.selectedClass);
+		
+		
+		function findActive(selector) {
+			return selector != undefined
+				? typeof selector == "number"
+					? headers.eq(selector)
+					: headers.not(headers.not(selector))
+				: selector === false
+					? $("<div>")
+					: headers.eq(0)
+		}
+		
+		function toggle(toShow, toHide, data, clickedActive, down) {
+			var finished = function(cancel) {
+				running = cancel ? 0 : --running;
+				if ( running )
+					return;
+				// trigger custom change event
+				container.trigger("change", data);
+			};
+			
+			// count elements to animate
+			running = toHide.size() == 0 ? toShow.size() : toHide.size();
+			
+			if ( settings.animated ) {
+				if ( !settings.alwaysOpen && clickedActive ) {
+					toShow.slideToggle(settings.animated);
+					finished(true);
+				} else {
+					jQuery.Accordion.Animations[settings.animated]({
+						toShow: toShow,
+						toHide: toHide,
+						finished: finished,
+						down: down
+					});
+				}
+			} else {
+				if ( !settings.alwaysOpen && clickedActive ) {
+					toShow.toggle();
+				} else {
+					toHide.hide();
+					toShow.show();
+				}
+				finished(true);
+			}
+		}
+		
+		function clickHandler(event) {
+			// called only when using activate(false) to close all parts programmatically
+			if ( !event.target && !settings.alwaysOpen ) {
+				active.toggleClass(settings.selectedClass);
+				var toHide = active.nextUntil(settings.header);
+				var toShow = active = $([]);
+				toggle( toShow, toHide );
+				return;
+			}
+			// get the click target
+			var clicked = $(event.target);
+			
+			// due to the event delegation model, we have to check if one
+			// of the parent elements is our actual header, and find that
+			if ( clicked.parents(settings.header).length )
+				while ( !clicked.is(settings.header) )
+					clicked = clicked.parent();
+			
+			var clickedActive = clicked[0] == active[0];
+			
+			// if animations are still active, or the active header is the target, ignore click
+			if(running || (settings.alwaysOpen && clickedActive) || !clicked.is(settings.header))
+				return;
+
+			// switch classes
+			active.toggleClass(settings.selectedClass);
+			if ( !clickedActive ) {
+				clicked.addClass(settings.selectedClass);
+			}
+
+			// find elements to show and hide
+			var toShow = clicked.nextUntil(settings.header),
+				toHide = active.nextUntil(settings.header),
+				data = [clicked, active, toShow, toHide],
+				down = headers.index( active[0] ) > headers.index( clicked[0] );
+			
+			active = clickedActive ? $([]) : clicked;
+			toggle( toShow, toHide, data, clickedActive, down );
+
+			return !toShow.length;
+		};
+		function activateHandler(event, index) {
+			// IE manages to call activateHandler on normal clicks
+			if ( arguments.length == 1 )
+				return;
+			// call clickHandler with custom event
+			clickHandler({
+				target: findActive(index)[0]
+			});
+		};
+
+		return container
+			.bind(settings.event, clickHandler)
+			.bind("activate", activateHandler);
+	},
+	activate: function(index) {
+		return this.trigger('activate', [index]);
+	}
+});
+
+})(jQuery);
\ No newline at end of file
Index: C:/xampp/htdocs/wordpress/trunk/wp-includes/script-loader.php
===================================================================
--- C:/xampp/htdocs/wordpress/trunk/wp-includes/script-loader.php	(revision 6544)
+++ C:/xampp/htdocs/wordpress/trunk/wp-includes/script-loader.php	(working copy)
@@ -80,6 +80,7 @@
 		$this->add( 'interface', '/wp-includes/js/jquery/interface.js', array('jquery'), '1.2');
 		$this->add( 'dimensions', '/wp-includes/js/jquery/jquery.dimensions.min.js', array('jquery'), '1.1.2');
 		$this->add( 'suggest', '/wp-includes/js/jquery/suggest.js', array('dimensions'), '1.1');
+		$this->add( 'jquery.accordian', '/wp-includes/js/jquery/jquery.accordion.js', array('jquery'), '1.5');
 
 		if ( is_admin() ) {
 			global $pagenow;
@@ -117,7 +118,7 @@
 			$this->add( 'admin-users', '/wp-admin/js/users.js', array('wp-lists'), '20070823' );
 			$this->add( 'xfn', '/wp-admin/js/xfn.js', false, '3517' );
 			$this->add( 'upload', '/wp-admin/js/upload.js', array('jquery'), '20070518' );
-			$this->add( 'post', '/wp-admin/js/post.js', array('suggest'), '20080102' );
+			$this->add( 'post', '/wp-admin/js/post.js', array('suggest','jquery.accordian'), '20080103' );
 			$this->localize( 'upload', 'uploadL10n', array(
 				'browseTitle' => attribute_escape(__('Browse your files')),
 				'back' => __('&laquo; Back'),
Index: C:/xampp/htdocs/wordpress/trunk/wp-admin/js/post.js
===================================================================
--- C:/xampp/htdocs/wordpress/trunk/wp-admin/js/post.js	(revision 6544)
+++ C:/xampp/htdocs/wordpress/trunk/wp-admin/js/post.js	(working copy)
@@ -74,4 +74,7 @@
 
 	// auto-suggest stuff
 	jQuery('#newtag').suggest( 'admin-ajax.php?action=ajax-tag-search', { onSelect: tag_flush_to_text } );
+	
+	// accordian
+	jQuery('#advancedoptions').Accordion({header: '.boxtitle'});
 });
\ No newline at end of file
Index: C:/xampp/htdocs/wordpress/trunk/wp-admin/edit-form-advanced.php
===================================================================
--- C:/xampp/htdocs/wordpress/trunk/wp-admin/edit-form-advanced.php	(revision 6544)
+++ C:/xampp/htdocs/wordpress/trunk/wp-admin/edit-form-advanced.php	(working copy)
@@ -69,7 +69,7 @@
 <div id="poststuff">
 
 <div id="titlediv">
-<h3><?php _e('Title') ?></h3>
+<h3 class="boxtitle"><?php _e('Title') ?></h3>
 <div class="inside"><input type="text" name="post_title" size="30" tabindex="1" value="<?php echo attribute_escape($post->post_title); ?>" id="title" /></div>
 </div>
 
@@ -111,7 +111,7 @@
 ?>" /></p>
 
 <div id="tagsdiv" class="postbox">
-<h3><?php _e('Tags'); ?></h3>
+<h3 class="boxtitle"><?php _e('Tags'); ?></h3>
 <div class="inside">
 <p id="jaxtag"><input type="text" name="tags_input" class="tags-input" id="tags-input" size="40" tabindex="3" value="<?php echo get_tags_to_edit( $post_ID ); ?>" /></p>
 <p id="tagchecklist"></p>
@@ -119,7 +119,7 @@
 </div>
 
 <div id="categorydiv" class="postbox">
-<h3><?php _e('Categories') ?></h3>
+<h3 class="boxtitle"><?php _e('Categories') ?></h3>
 <div class="inside">
 <p id="jaxcat"><?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?></p>
 <ul id="categorychecklist" class="list:category"><?php dropdown_categories(); ?></ul>
@@ -138,15 +138,16 @@
 }
 ?>
 
+<div id="advancedoptions">
 <h2><?php _e('Advanced Options'); ?></h2>
 
 <div id="postexcerpt" class="postbox">
-<h3><?php _e('Optional Excerpt') ?></h3>
+<h3 class="boxtitle"><?php _e('Optional Excerpt') ?></h3>
 <div class="inside"><textarea rows="1" cols="40" name="excerpt" tabindex="6" id="excerpt"><?php echo $post->post_excerpt ?></textarea></div>
 </div>
 
 <div id="trackbacksdiv" class="postbox">
-<h3><?php _e('Trackbacks') ?></h3>
+<h3 class="boxtitle"><?php _e('Trackbacks') ?></h3>
 <div class="inside">
 <?php _e('Send trackbacks to:'); ?> <?php echo $form_trackback; ?> (<?php _e('Separate multiple URLs with spaces'); ?>)
 <?php
@@ -157,7 +158,7 @@
 </div>
 
 <div id="postcustom" class="postbox">
-<h3><?php _e('Custom Fields') ?></h3>
+<h3 class="boxtitle"><?php _e('Custom Fields') ?></h3>
 <div class="inside">
 <div id="postcustomstuff">
 <table cellpadding="3">
@@ -178,7 +179,7 @@
 <?php do_action('dbx_post_advanced'); ?>
 
 <div id="commentstatusdiv" class="postbox">
-<h3><?php _e('Discussion') ?></h3>
+<h3 class="boxtitle"><?php _e('Discussion') ?></h3>
 <div class="inside">
 <input name="advanced_view" type="hidden" value="1" />
 <label for="comment_status" class="selectit">
@@ -189,21 +190,21 @@
 </div>
 
 <div id="passworddiv" class="postbox">
-<h3><?php _e('Post Password') ?></h3>
+<h3 class="boxtitle"><?php _e('Post Password') ?></h3>
 <div class="inside">
 <input name="post_password" type="text" size="13" id="post_password" value="<?php echo attribute_escape( $post->post_password ); ?>" />
 </div>
 </div>
 
 <div id="slugdiv" class="postbox">
-<h3><?php _e('Post Slug') ?></h3>
+<h3 class="boxtitle"><?php _e('Post Slug') ?></h3>
 <div class="inside">
 <input name="post_name" type="text" size="13" id="post_name" value="<?php echo attribute_escape( $post->post_name ); ?>" />
 </div>
 </div>
 
 <div id="poststatusdiv" class="postbox">
-<h3><?php _e('Post Status') ?></h3>
+<h3 class="boxtitle"><?php _e('Post Status') ?></h3>
 <div class="inside">
 <?php if ( current_user_can('publish_posts') ) : ?>
 <label for="post_status_publish" class="selectit"><input id="post_status_publish" name="post_status" type="radio" value="publish" <?php checked($post->post_status, 'publish'); checked($post->post_status, 'future'); ?> /> <?php _e('Published') ?></label>
@@ -216,7 +217,7 @@
 
 <?php if ( current_user_can('edit_posts') ) : ?>
 <div id="posttimestampdiv" class="postbox">
-<h3><?php _e('Post Timestamp'); ?></h3>
+<h3 class="boxtitle"><?php _e('Post Timestamp'); ?></h3>
 <div class="inside"><?php touch_time(($action == 'edit')); ?></div>
 </div>
 <?php endif; ?>
@@ -228,7 +229,7 @@
 if ( $authors && count( $authors ) > 1 ) :
 ?>
 <div id="authordiv" class="postbox">
-<h3><?php _e('Post Author'); ?></h3>
+<h3 class="boxtitle"><?php _e('Post Author'); ?></h3>
 <div class="inside">
 <?php wp_dropdown_users( array('include' => $authors, 'name' => 'post_author_override', 'selected' => empty($post_ID) ? $user_ID : $post->post_author) ); ?>
 </div>
@@ -238,7 +239,7 @@
 <?php do_action('dbx_post_sidebar'); ?>
 
 </div>
-
+</div>
 <?php if ('edit' == $action) : $delete_nonce = wp_create_nonce( 'delete-post_' . $post_ID ); ?>
 <input name="deletepost" class="button delete" type="submit" id="deletepost" tabindex="10" value="<?php echo ( 'draft' == $post->post_status ) ? __('Delete this draft') : __('Delete this post'); ?>" <?php echo "onclick=\"if ( confirm('" . js_escape(sprintf( ('draft' == $post->post_status) ? __("You are about to delete this draft '%s'\n  'Cancel' to stop, 'OK' to delete.") : __("You are about to delete this post '%s'\n  'Cancel' to stop, 'OK' to delete."), $post->post_title )) . "') ) { document.forms.post._wpnonce.value = '$delete_nonce'; return true;}return false;\""; ?> />
 <?php endif; ?>
