Index: bp-xprofile/bp-xprofile-classes.php
===================================================================
--- bp-xprofile/bp-xprofile-classes.php	(revision 6193)
+++ bp-xprofile/bp-xprofile-classes.php	(working copy)
@@ -737,11 +737,11 @@
 
 			<div id="<?php echo $type; ?>" class="options-box" style="<?php echo $class; ?> margin-left: 15px;">
 				<h4><?php _e( 'Please enter options for this Field:', 'buddypress' ); ?></h4>
-				<p><label for="sort_order_<?php echo $type; ?>"><?php _e( 'Order By:', 'buddypress' ); ?></label>
+				<p><label for="sort_order_<?php echo $type; ?>"><?php _e( 'Sort Order:', 'buddypress' ); ?></label>
 					<select name="sort_order_<?php echo $type; ?>" id="sort_order_<?php echo $type; ?>" >
-						<option value="default" <?php if ( 'default' == $this->order_by ) {?> selected="selected"<?php } ?> ><?php _e( 'Order Entered', 'buddypress' ); ?></option>
-						<option value="asc" <?php if ( 'asc' == $this->order_by ) {?> selected="selected"<?php } ?>><?php _e( 'Name - Ascending', 'buddypress' ); ?></option>
-						<option value="desc" <?php if ( 'desc' == $this->order_by ) {?> selected="selected"<?php } ?>><?php _e( 'Name - Descending', 'buddypress' ); ?></option>
+						<option value="custom" <?php if ( 'custom' == $this->order_by ) {?> selected="selected"<?php } ?> ><?php _e( 'Custom', 'buddypress' ); ?></option>
+						<option value="asc" <?php if ( 'asc' == $this->order_by ) {?> selected="selected"<?php } ?>><?php _e( 'Ascending', 'buddypress' ); ?></option>
+						<option value="desc" <?php if ( 'desc' == $this->order_by ) {?> selected="selected"<?php } ?>><?php _e( 'Descending', 'buddypress' ); ?></option>
 					</select>
 
 				<?php if ( !$options = $this->get_children( true ) ) {
@@ -765,16 +765,12 @@
 						if ( 'multiselectbox' == $type || 'checkbox' == $type )
 							$default_name = '[' . $j . ']'; ?>
 
-						<p><?php _e( 'Option', 'buddypress' ); ?> <?php echo $j; ?>:
-						   <input type="text" name="<?php echo $type; ?>_option[<?php echo $j; ?>]" id="<?php echo $type; ?>_option<?php echo $j; ?>" value="<?php echo stripslashes( esc_attr( $options[$i]->name ) ); ?>" />
-						   <input type="<?php echo $default_input; ?>" name="isDefault_<?php echo $type; ?>_option<?php echo $default_name; ?>" <?php if ( (int) $options[$i]->is_default_option ) {?> checked="checked"<?php } ?> " value="<?php echo $j; ?>" /> <?php _e( 'Default Value', 'buddypress' ); ?>
-
-							<?php if ( $j != 1 && $options[$i]->id != -1 ) : ?>
-
-								<a href="admin.php?page=bp-profile-setup&amp;mode=delete_option&amp;option_id=<?php echo $options[$i]->id ?>" class="ajax-option-delete" id="delete-<?php echo $options[$i]->id; ?>">[x]</a>
-
-							<?php endif; ?>
-
+						<p class="sortable">
+							<span>&nbsp;&Xi;&nbsp;</span>
+						  <input type="text" name="<?php echo $type; ?>_option[<?php echo $j; ?>]" id="<?php echo $type; ?>_option<?php echo $j; ?>" value="<?php echo stripslashes( esc_attr( $options[$i]->name ) ); ?>" />
+						  <input type="<?php echo $default_input; ?>" name="isDefault_<?php echo $type; ?>_option<?php echo $default_name; ?>" <?php if ( (int) $options[$i]->is_default_option ) {?> checked="checked"<?php } ?> " value="<?php echo $j; ?>" />
+						  <span><?php _e( 'Default Value', 'buddypress' ); ?></span>
+							<a href="admin.php?page=bp-profile-setup&amp;mode=delete_option&amp;option_id=<?php echo $options[$i]->id ?>" class="ajax-option-delete" id="delete-<?php echo $options[$i]->id; ?>">[x]</a>
 						</p>
 
 					<?php } /* end for */ ?>
@@ -786,9 +782,13 @@
 					if ( 'multiselectbox' == $type || 'checkbox' == $type )
 						$default_name = '[1]'; ?>
 
-					<p><?php _e( 'Option', 'buddypress' ); ?> 1: <input type="text" name="<?php echo $type; ?>_option[1]" id="<?php echo $type; ?>_option1" />
-					<input type="<?php echo $default_input; ?>" name="isDefault_<?php echo $type; ?>_option<?php echo $default_name; ?>" id="isDefault_<?php echo $type; ?>_option" value="1" /> <?php _e( 'Default Value', 'buddypress' ); ?>
-					<input type="hidden" name="<?php echo $type; ?>_option_number" id="<?php echo $type; ?>_option_number" value="2" />
+					<p class="sortable">
+						<span>&nbsp;&Xi;&nbsp;</span>
+						<input type="text" name="<?php echo $type; ?>_option[1]" id="<?php echo $type; ?>_option1" />
+						<input type="<?php echo $default_input; ?>" name="isDefault_<?php echo $type; ?>_option<?php echo $default_name; ?>" id="isDefault_<?php echo $type; ?>_option" value="1" />
+						<span><?php _e( 'Default Value', 'buddypress' ); ?></span>
+						<input type="hidden" name="<?php echo $type; ?>_option_number" id="<?php echo $type; ?>_option_number" value="2" />
+					</p>
 
 				<?php } /* end if */ ?>
 
Index: bp-xprofile/admin/js/admin.dev.js
===================================================================
--- bp-xprofile/admin/js/admin.dev.js	(revision 6193)
+++ bp-xprofile/admin/js/admin.dev.js	(working copy)
@@ -3,20 +3,20 @@
 	var theId     = document.getElementById(forWhat + '_option_number').value;
 	var newDiv    = document.createElement('p');
 	var newOption = document.createElement('input');
-	var label     = document.createElement( 'label' );
-	var txt       = document.createTextNode( "Option " + theId + ": " );
+	var span     = document.createElement( 'span' );
+	var txt       = document.createTextNode( "\u00A0\u039E\u00A0" );
 	var isDefault = document.createElement( 'input' );
-	var label1    = document.createElement( 'label' );
+	var span1    = document.createElement( 'span' );
 	var txt1      = document.createTextNode( " Default Value " );
 
 	newDiv.setAttribute('id', forWhat + '_div' + theId);
+	newDiv.setAttribute('class', 'sortable');
 	
 	newOption.setAttribute( 'type', 'text' );
 	newOption.setAttribute( 'name', forWhat + '_option[' + theId + ']' );
 	newOption.setAttribute( 'id', forWhat + '_option' + theId );
 
-	label.setAttribute( 'for', forWhat + '_option' + theId );
-	label.appendChild( txt );
+	span.appendChild( txt );
 
 	if ( forWhat == 'checkbox' || forWhat == 'multiselectbox' ) {
 		isDefault.setAttribute( 'type', 'checkbox' );
@@ -28,8 +28,7 @@
 
 	isDefault.setAttribute( 'value', theId );
 
-	label1.appendChild( txt1 );
-	label1.setAttribute( 'for', 'isDefault_' + forWhat + '_option[]' );
+	span1.appendChild( txt1 );
 
 	var toDelete     = document.createElement( 'a' );
 	var toDeleteText = document.createTextNode( '[x]' );
@@ -38,14 +37,16 @@
 	toDelete.setAttribute( 'class', 'delete' );
 	toDelete.appendChild( toDeleteText );
 
-	newDiv.appendChild( label );
+	newDiv.appendChild( span );
 	newDiv.appendChild( newOption );
 	newDiv.appendChild( document.createTextNode( " " ) );
 	newDiv.appendChild( isDefault );
-	newDiv.appendChild( label1 );
+	newDiv.appendChild( span1 );
 	newDiv.appendChild( toDelete );
 	holder.appendChild( newDiv );
 
+	// re-initialize the sorable ui
+	enableSortableFieldOptions( forWhat );
 
 	theId++;
 
@@ -85,9 +86,27 @@
 	return ui;
 };
 
-// Set up deleting options ajax
+function enableSortableFieldOptions( forWhat ) {
+	if ( jQuery( '#' + forWhat + ' p.sortable' ).length > 1 ) {
+		jQuery( '.options-box' ).sortable( {
+			items: 'p.sortable',
+			tolerance: 'pointer',
+			axis: 'y',
+			handle: 'span'
+		});
+
+		jQuery( '.sortable span' ).css( 'cursor', 'move' );
+	}
+}
+
+function destroySortableFieldOptions() {
+	jQuery( '.options-box' ).sortable( 'destroy' );
+	jQuery( '.sortable span' ).css( 'cursor', 'default' );
+}
+
 jQuery( document ).ready( function() {
 
+	// Set up deleting options ajax
 	jQuery( 'a.ajax-option-delete' ).click(
 		function() {
 			var theId = this.id.split( '-' );
@@ -103,6 +122,15 @@
 		}
 	);
 
+	// 
+	jQuery( '[id^="sort_order_"]' ).change(function() {
+		if ( jQuery( this ).val() != 'custom' ) {
+			destroySortableFieldOptions();
+		} else {
+			enableSortableFieldOptions( jQuery('#fieldtype :selected').val() );
+		}
+	});
+
 	// Show object if JS is enabled
 	jQuery( 'ul#field-group-tabs' ).show();
 
@@ -150,6 +178,9 @@
 	// Change cursor to move if JS is enabled
 	.css( 'cursor', 'move' );
 
+	// Allow reordering of field options
+	enableSortableFieldOptions( jQuery('#fieldtype :selected').val() );
+
 	// tabs init with a custom tab template and an "add" callback filling in the content
 	var $tab_items;
 	var $tabs = jQuery( '#tabs' ).tabs();
