Index: wp-admin/includes/media.php
===================================================================
--- wp-admin/includes/media.php	(revision 8041)
+++ wp-admin/includes/media.php	(working copy)
@@ -116,6 +116,83 @@
 }
 
 
+function media_sideload_image($file, $post_id) {
+
+	if (!empty($file) ) {
+		// Upload File button was clicked
+		
+		$file_array['name'] = basename($file);
+		$file_array['tmp_name'] = download_url($file);
+		
+		$sideload = media_handle_sideload($file_array, $post_id);
+
+		$id = $sideload['id'];
+		$src = $sideload['src'];
+		
+		unset($file_array['tmp_name']);
+		unset($file_array);
+		
+		if ( is_wp_error($id) ) {
+			$errors['upload_error'] = $id;
+			$id = false;
+		}
+	}
+	
+	if ( !empty($src) && !strpos($src, '://') )
+		
+		$src = "http://$src";
+		/*$alt = attribute_escape($_POST['insertonly']['alt']);
+		if ( isset($_POST['insertonly']['align']) ) {
+			$align = attribute_escape($_POST['insertonly']['align']);
+			$class = " class='align$align'";
+		} */
+		if ( !empty($src) )
+			$html = "<img src='$src' alt='$alt'$class />";
+			return $html;
+	
+}
+
+function media_handle_sideload($file_array, $post_id, $post_data = array()) {
+	$overrides = array('test_form'=>false);
+	$file = wp_handle_sideload($file_array, $overrides);
+
+	if ( isset($file['error']) )
+		return new wp_error( 'upload_error', $file['error'] );
+
+	$url = $file['url'];
+	$type = $file['type'];
+	$file = $file['file'];
+	$title = preg_replace('/\.[^.]+$/', '', basename($file));
+	$content = '';
+
+	// use image exif/iptc data for title and caption defaults if possible
+	if ( $image_meta = @wp_read_image_metadata($file) ) {
+		if ( trim($image_meta['title']) )
+			$title = $image_meta['title'];
+		if ( trim($image_meta['caption']) )
+			$content = $image_meta['caption'];
+	}
+
+	// Construct the attachment array
+	$attachment = array_merge( array(
+		'post_mime_type' => $type,
+		'guid' => $url,
+		'post_parent' => $post_id,
+		'post_title' => $title,
+		'post_content' => $content,
+	), $post_data );
+
+	// Save the data
+	$id = wp_insert_attachment($attachment, $file, $post_parent);
+	if ( !is_wp_error($id) ) {
+		wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
+	}
+
+	return array('id' => $id, 'src' => $url);
+
+}
+
+
 // wrap iframe content (produced by $content_func) in a doctype, html head/body etc
 // any additional function args will be passed to content_func
 function wp_iframe($content_func /* ... */) {
Index: wp-admin/includes/file.php
===================================================================
--- wp-admin/includes/file.php	(revision 8041)
+++ wp-admin/includes/file.php	(working copy)
@@ -184,7 +184,99 @@
 
 	return $return;
 }
+// Pass this function an array similar to that of a $_FILES POST array.
+function wp_handle_sideload( &$file, $overrides = false ) {
+	// The default error handler.
+	if (! function_exists( 'wp_handle_upload_error' ) ) {
+		function wp_handle_upload_error( &$file, $message ) {
+			return array( 'error'=>$message );
+		}
+	}
 
+	// You may define your own function and pass the name in $overrides['upload_error_handler']
+	$upload_error_handler = 'wp_handle_upload_error';
+
+	// $_POST['action'] must be set and its value must equal $overrides['action'] or this:
+	$action = 'wp_handle_sideload';
+
+	// Courtesy of php.net, the strings that describe the error indicated in $_FILES[{form field}]['error'].
+	$upload_error_strings = array( false,
+		__( "The file exceeds the <code>upload_max_filesize</code> directive in <code>php.ini</code>." ),
+		__( "The file exceeds the <em>MAX_FILE_SIZE</em> directive that was specified in the HTML form." ),
+		__( "The file was only partially uploaded." ),
+		__( "No file was sent." ),
+		__( "Missing a temporary folder." ),
+		__( "Failed to write file to disk." ));
+
+	// All tests are on by default. Most can be turned off by $override[{test_name}] = false;
+	$test_form = true;
+	$test_size = true;
+
+	// If you override this, you must provide $ext and $type!!!!
+	$test_type = true;
+	$mimes = false;
+
+	// Install user overrides. Did we mention that this voids your warranty?
+	if ( is_array( $overrides ) )
+		extract( $overrides, EXTR_OVERWRITE );
+
+	// A correct form post will pass this test.
+	if ( $test_form && (!isset( $_POST['action'] ) || ($_POST['action'] != $action ) ) )
+		return $upload_error_handler( $file, __( 'Invalid form submission.' ));
+
+	// A successful upload will pass this test. It makes no sense to override this one.
+	if ( $file['error'] > 0 )
+		return $upload_error_handler( $file, $upload_error_strings[$file['error']] );
+
+	// A non-empty file will pass this test.
+	if ( $test_size && !(filesize($file['tmp_name']) > 0 ) )
+		return $upload_error_handler( $file, __( 'File is empty. Please upload something more substantial. This error could also be caused by uploads being disabled in your php.ini.' ));
+
+	// A properly uploaded file will pass this test. There should be no reason to override this one.
+	if (! @ is_file( $file['tmp_name'] ) )
+		return $upload_error_handler( $file, __( 'Specified file does not exist.' ));
+
+	// A correct MIME type will pass this test. Override $mimes or use the upload_mimes filter.
+	if ( $test_type ) {
+		$wp_filetype = wp_check_filetype( $file['name'], $mimes );
+
+		extract( $wp_filetype );
+
+		if ( ( !$type || !$ext ) && !current_user_can( 'unfiltered_upload' ) )
+			return $upload_error_handler( $file, __( 'File type does not meet security guidelines. Try another.' ));
+
+		if ( !$ext )
+			$ext = ltrim(strrchr($file['name'], '.'), '.');
+
+		if ( !$type )
+			$type = $file['type'];
+	}
+
+	// A writable uploads dir will pass this test. Again, there's no point overriding this one.
+	if ( ! ( ( $uploads = wp_upload_dir() ) && false === $uploads['error'] ) )
+		return $upload_error_handler( $file, $uploads['error'] );
+
+	$filename = wp_unique_filename( $uploads['path'], $file['name'], $unique_filename_callback );
+
+	// Move the file to the uploads dir
+	$new_file = $uploads['path'] . "/$filename";
+	if ( false === @ rename( $file['tmp_name'], $new_file ) ) {
+		return $upload_error_handler( $file, sprintf( __('The uploaded file could not be moved to %s.' ), $uploads['path'] ) );
+	}
+
+	// Set correct file permissions
+	$stat = stat( dirname( $new_file ));
+	$perms = $stat['mode'] & 0000666;
+	@ chmod( $new_file, $perms );
+
+	// Compute the URL
+	$url = $uploads['url'] . "/$filename";
+
+	$return = apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $type ) );
+
+	return $return;
+}
+
 /**
 * Downloads a url to a local file using the Snoopy HTTP Class
 *
Index: wp-admin/press-this.php
===================================================================
--- wp-admin/press-this.php	(revision 8041)
+++ wp-admin/press-this.php	(working copy)
@@ -1,114 +1,226 @@
 <?php
 require_once('admin.php');
 
-if ( ! current_user_can('publish_posts') ) wp_die( __( 'Cheatin&#8217; uh?' ));
+if ( ! current_user_can('publish_posts') ) wp_die( __( 'Cheatin&#8217; uh?' )); ?>
 
-if ( 'post' == $_REQUEST['action'] ) {
-	check_admin_referer('press-this');
-	$post_ID = press_it(); ?>
-		<script>if(confirm("<?php _e('Your post is saved. Do you want to view the post?') ?>")) {window.opener.location.replace("<?php echo get_permalink($post_ID);?>");}window.close();</script>
 <?php 
-die;
-}
-
 function press_it() {
-	$quick['post_status'] = 'publish';
-	$quick['post_category'] = $_REQUEST['post_category'];
-	$quick['tags_input'] = $_REQUEST['tags_input'];
-	$quick['post_title'] = $_REQUEST['post_title'];
+		$quick['post_status'] = 'publish';
+		$quick['post_category'] = $_REQUEST['post_category'];
+		$quick['tags_input'] = $_REQUEST['tags_input'];
+		$quick['post_title'] = $_REQUEST['post_title'];
+		$quick['post_content'] = '';
+		
+		// insert the post with nothing in it, to get an ID
+		$post_ID = wp_insert_post($quick, true);
+		
+		$content = '';
+		switch ( $_REQUEST['post_type'] ) {
+			case 'text':
+				$content .= $_REQUEST['content'];
 
-	$content = '';
-	switch ( $_REQUEST['post_type'] ) {
-		case 'text':
-			$content = $_REQUEST['content'];
+			case 'quote':
+				$content .= $_REQUEST['content'];
+				break;
 
-		case 'quote':
-			$content = $_REQUEST['content'];
-			break;
+			case 'photo':
+				if ($_REQUEST['photo_link'])
+					$content .= '<a href="' . $_REQUEST['photo_link'] . '">';
+					
+					$content .= media_sideload_image($_REQUEST['photo_src'], $post_ID);
 
-		case 'photo':
-		
-//		http_post_data();
-			
-			if ($_REQUEST['photo_link'])
-				$content = '<a href="' . $_REQUEST['photo_link'] . '">';
+				if ($_REQUEST['photo_link'])
+					$content .= '</a>';
 
-			$content .= '<img src="' . $_REQUEST['photo_src'] . '" alt=""/>';
+				if ($_REQUEST['content'])
+					$content .= $content . "\n\n".$_REQUEST['content']; 
 
-			if ($_REQUEST['photo_link'])
-				$content .= '</a>
-				';
+				break;
+			case "video":
+				if($_REQUEST['embed_code']) 
+					$content .= $_REQUEST['embed_code']."\n\n";
+				$content .= $_REQUEST['content'];
+				break;	
+		}
 
-			if ($_REQUEST['content'])
-				$content = $content . "\n".$_REQUEST['content']; 
+	$quick['post_content'] = $content;
 
-			break;
-		case "video":
-			$content = $_REQUEST['content'];
-			
-			break;	
+	if ( is_wp_error($post_ID) ) {
+		wp_die($id);
+		wp_delete_post($post_ID);
+	} else {
+		$quick['ID'] = $post_ID;
+		wp_update_post($quick);
 	}
+	return $post_ID;
+}
 
-	$quick['post_content'] = $content;
+	function tag_div() { ?>
+		<p id="jaxtag"><label class="hidden" for="newtag"><?php _e('Tags'); ?></label><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>
+		<div id="tagchecklist"></div>
+	<?php 
+	}
 
-	$post_ID = wp_insert_post($quick, true);
+	function category_div() {
+	?>
+	<div id="categories">
+		<div class="submitbox" id="submitpost">
+			<div id="previewview">	<h2><?php _e('Categories') ?></h2></div>
+			<div class="inside">
+				<div id="categories-all">
+					<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
+						<?php wp_category_checklist() ?>
+					</ul>
+				</div>
+			</div>
+			<p class="submit">         
+			<input type="submit" value="<?php _e('Publish') ?>" onclick="document.getElementById('photo_saving').style.display = '';"/>
+			<img src="images/loading.gif" alt="" id="photo_saving" style="width:16px; height:16px; vertical-align:-4px; display:none;"/>
+			</p>
+		</div>	
+	<?php
+	}
 
-	if ( is_wp_error($post_ID) )
-		wp_die($wp_error);
-
-	return $post_ID;
+// For posts submitted
+if ( 'post' == $_REQUEST['action'] ) { 
+	check_admin_referer('press-this'); $post_ID = press_it(); ?>
+		<script>if(confirm("<?php _e('Your post is saved. Do you want to view the post?') ?>")){window.opener.location.replace("<?php echo get_permalink($post_ID);?>");}window.close();</script>
+	<?php die;
 }
 
-function tag_div() { ?>
-	<p id="jaxtag"><label class="hidden" for="newtag"><?php _e('Tags'); ?></label><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>
-	<div id="tagchecklist"></div>
-<?php 
-}
+// Ajax Requests
+$url = $_REQUEST['url'];
+$selection = $_REQUEST['selection'];
 
-function category_div() {
-?>
-<div id="categories">
-	<div class="submitbox" id="submitpost">
-		<div id="previewview">	<h2><?php _e('Categories') ?></h2></div>
-		<div class="inside">
-			<div id="categories-all">
-				<ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
-					<?php wp_category_checklist() ?>
-				</ul>
-			</div>
-		</div>
-		<p class="submit">         
-		<input type="submit" value="<?php _e('Publish') ?>" onclick="document.getElementById('photo_saving').style.display = '';"/>
-		<img src="images/loading.gif" alt="" id="photo_saving" style="width:16px; height:16px; vertical-align:-4px; display:none;"/>
-		</p>
-	</div>	
-<?php
+if($_REQUEST['ajax'] == 'video') { ?>
+	<h2 id="embededcode"><label for="embed_code"><?php _e('Embed Code') ?></label></h2>
+	<div class="titlewrap" >
+		<textarea name="embed_code" id="embed_code" rows="8" cols="40"><?php echo $selection; ?></textarea>
+	</div>
+<?php die;
 }
 
-function get_images_from_uri($uri) {
+if($_REQUEST['ajax'] == 'photo_images') {
+	function get_images_from_uri($uri) {
+		$content = wp_remote_fopen($uri);
+		$host = parse_url($uri);
+		if ( false === $content ) return '';
 
-	$content = wp_remote_fopen($uri);
-	$uri = str_replace(basename($uri), '', $uri);			
-	$host = parse_url($uri);
-	
-	if ( false === $content ) return '';
+		$pattern = '/<img[^>]+src=[\'"]([^\'" >]+?)[\'" >]/is';
+		preg_match_all($pattern, $content, $matches);
+		if ( empty($matches[1]) ) return '';
+    
+		$sources = array();
 
-	$pattern = '/<img[^>]+src=[\'"]([^\'" >]+?)[\'" >]/is';
-	preg_match_all($pattern, $content, $matches);
-	if ( empty($matches[1]) ) return '';
-	
-	$sources = array();
-	foreach ($matches[1] as $src) {
-		if ( false !== strpos($src, '&') )
-			continue;
-		if ( !strstr( $src, 'http://' ) )
-			$src = 'http://'.str_replace('//','/', $host['host'].'/'.$host['path'].'/'.$src);
+		foreach ($matches[1] as $src) {
+			if ( false !== strpos($src, '&') ) continue;
+				if(strpos($src, 'http') === false) {
+					if(strpos($src, '../') === false && strpos($src, './') === false) {
+						$src = 'http://'.str_replace('//','/', $host['host'].'/'.$src);
+					} else {
+						$src = 'http://'.str_replace('//','/', $host['host'].'/'.$host['path'].'/'.$src);
+					}
+				}
+				$sources[] = $src;
+		}
+		return "'" . implode("','", $sources) . "'";
+	}  
 		
-		$sources[] = $src;
-	}
-	return "'" . implode("','", $sources) . "'";
+	echo 'new Array('.get_images_from_uri($url).')'; 
+die;		
 }
 
+if($_REQUEST['ajax'] == 'photo_js') { ?>
+	
+			var last = null
+			function pick(img) {
+
+				if (last) last.style.backgroundColor = '#f4f4f4';
+				if (img) {
+					jQuery('#photo_src').val(img.src);
+					img.style.backgroundColor = '#44f';
+				}
+				last = img;
+				
+				/*noel's code to select more than one image....
+				jQuery('.photolist').append('<h2><?php _e("Photo URL") ?></h2>' +
+				'<div class="titlewrap">' + 
+				'<a href="#" class="remove">remove <input name="photo_src" id="photo_src[]" value ="'+ img.src +'" class="text" onkeydown="pick(0);"/></a>' +
+				'</div>');*/
+
+				return false;
+			}
+
+			jQuery('.remove').click(function() {
+				jQuery(this).remove;
+			});
+
+
+			var my_src, img, img_tag, aspect, w, h, skip, i, strtoappend = "";
+			
+			var my_src =eval(
+			jQuery.ajax({
+			   	type: "GET",
+			   	url: "<?php echo clean_url($_SERVER['PHP_SELF']); ?>",
+				cache : false,
+				async : false,
+			   	data: "ajax=photo_images&url=<?php echo $url?>",
+			dataType : "script"
+			}).responseText);
+
+			for (i = 0; i < my_src.length; i++) {
+				img = new Image();
+				img.src = my_src[i];
+				img_attr = 'id="img' + i + '" onclick="pick(this);"';
+				skip = false;
+
+				if (img.width && img.height) {
+					if (img.width * img.height < 2500) skip = true;
+					aspect = img.width / img.height;
+					if (aspect > 1) { // Image is wide
+						scale = 75 / img.width;
+					} else { // Image is tall or square
+						scale = 75 / img.height;
+					}
+					if (scale < 1) {
+						w = parseInt(img.width * scale);
+						h = parseInt(img.height * scale);
+					} else {
+						w = img.width;
+						h = img.height;
+					}
+					img_attr += ' style="width: ' + w + 'px; height: ' + h + 'px;"';
+				}
+
+				if (!skip) strtoappend += '<a href="' + img.src + '" title="" class="thickbox"><img src="' + img.src + '" ' + img_attr + '/></a>';
+
+			}
+
+			jQuery('#img_container').html(strtoappend);
+
+			tb_init('a.thickbox, area.thickbox, input.thickbox'); //pass where to apply thickbox
+
+<?php die; }
+
+if($_REQUEST['ajax'] == 'photo') { ?>
+		<h2><?php _e('Photo URL') ?></h2>
+		<div class="titlewrap">
+			<input name="photo_src" id="photo_src" class="text" onkeydown="pick(0);"/>
+		</div>
+	
+		<div class="photolist"></div>
+	
+		<h2><?php _e('Link Photo to following URL') ?></h2><?php _e('(leave blank to leave the photo unlinked)') ?>
+		<div class="titlewrap">
+			<input name="photo_link" id="photo_link" class="text" value="<?php echo attribute_escape($url);?>"/>
+		</div>
+	
+		<small><?php _e('Click images to select:') ?></small>
+		<div class="titlewrap">
+			<div id="img_container">Loading Images...</div>
+		</div>
+<?php die; }
+
 // Clean up the data being passed in
 $title = wp_specialchars(stripslashes($_GET['t']));
 $selection = trim(wp_specialchars(str_replace("\n", ' ',stripslashes($_GET['s']))));
@@ -122,7 +234,6 @@
 
 	<script type="text/javascript" src="../wp-includes/js/tinymce/tiny_mce.js"></script>
 <?php
-	wp_enqueue_script('jquery-ui-tabs');
 	add_thickbox();
 	wp_enqueue_style('press-this');
 	wp_enqueue_style( 'colors' );
@@ -153,6 +264,7 @@
 				width: "100%",
 				theme : "advanced",
 				theme_advanced_buttons1 : "bold,italic,underline,blockquote,separator,strikethrough,bullist,numlist,undo,redo,link,unlink",
+				extended_valid_elements : "object[width|height],param[name|value],embed[src|type|wmode|width|height], a[name|href|target|title|onclick], img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name], hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
 				theme_advanced_buttons2 : "",
 				theme_advanced_buttons3 : "",
 				theme_advanced_toolbar_location : "top",
@@ -174,26 +286,26 @@
 			});
     <?php } ?>
 
-    	jQuery('#tags-input').hide();
+    jQuery('#tags-input').hide();
 
-		tag_update_quickclicks();
+	tag_update_quickclicks();
 
-		// add the quickadd form
-		jQuery('#jaxtag').prepend('<span id="ajaxtag"><input type="text" name="newtag" id="newtag" class="form-input-tip" size="16" autocomplete="off" value="'+postL10n.addTag+'" /><input type="submit" class="button" id="tagadd" value="' + postL10n.add + '" tabindex="3" onclick="return false;" /><input type="hidden"/><input type="hidden"/><span class="howto">'+postL10n.separate+'</span></span>');
+	// add the quickadd form
+	jQuery('#jaxtag').prepend('<span id="ajaxtag"><input type="text" name="newtag" id="newtag" class="form-input-tip" size="16" autocomplete="off" value="'+postL10n.addTag+'" /><input type="submit" class="button" id="tagadd" value="' + postL10n.add + '" tabindex="3" onclick="return false;" /><input type="hidden"/><input type="hidden"/><span class="howto">'+postL10n.separate+'</span></span>');
 		
-		jQuery('#tagadd').click( tag_flush_to_text );
-		jQuery('#newtag').focus(function() {
-			if ( this.value == postL10n.addTag )
-				jQuery(this).val( '' ).removeClass( 'form-input-tip' );
-		});
-		jQuery('#newtag').blur(function() {
-			if ( this.value == '' )
-				jQuery(this).val( postL10n.addTag ).addClass( 'form-input-tip' );
-		});
+	jQuery('#tagadd').click( tag_flush_to_text );
+	jQuery('#newtag').focus(function() {
+		if ( this.value == postL10n.addTag )
+			jQuery(this).val( '' ).removeClass( 'form-input-tip' );
+	});
+	jQuery('#newtag').blur(function() {
+		if ( this.value == '' ) 
+			jQuery(this).val( postL10n.addTag ).addClass( 'form-input-tip' );
+	});
 
-		// auto-save tags on post save/publish
-		jQuery('#publish').click( tag_save_on_publish );
-		jQuery('#save-post').click( tag_save_on_publish );
+	// auto-save tags on post save/publish
+	jQuery('#publish').click( tag_save_on_publish );
+	jQuery('#save-post').click( tag_save_on_publish );
 		
 	function set_menu(type) {
 		jQuery('#text_button').removeClass('ui-tabs-selected');
@@ -202,129 +314,113 @@
 		jQuery("#post_type").val(type);
 	}
 	function set_editor(text) {
-		tinyMCE.activeEditor.setContent('');
-		tinyMCE.execCommand('mceInsertContent' ,false, text);
+		if(tinyMCE.activeEditor) tinyMCE.activeEditor.setContent('');
+		if(tinyMCE.activeEditor) tinyMCE.execCommand('mceInsertContent' ,false, text);
 	}
 	function set_title(title) { jQuery("#content_type").text(title); }
-	
-		var last = null;
-	function pick(img) {
-		if (last) last.style.backgroundColor = '#f4f4f4';
-		if (img) {
-			document.getElementById('photo_src').value = img.src;
-			img.style.backgroundColor = '#44f';
-		}
-		last = img;
-		
-		/*noel's code to select more than one image....
-		jQuery('.photolist').append('<h2><?php _e("Photo URL") ?></h2>' +
-		'<div class="titlewrap">' + 
-		'<a href="#" class="remove">remove <input name="photo_src" id="photo_src[]" value ="'+ img.src +'" class="text" onkeydown="pick(0);"/></a>' +
-		'</div>');*/
-		
-		return false;
+	function reset_height() {
+		tinyMCE.height = '170px';
 	}
+	function show(tab_name) {
+		jQuery('body').removeClass('video_split');
+		jQuery('#extra_fields').hide();
+		switch(tab_name) {
+			case 'text' :
+				reset_height();
+				jQuery('.editor-container').show();
+				jQuery('#content_type').show();
+				set_menu('text');
+				set_title('<?php _e('Text') ?>');
+				set_editor('<?php echo $selection; ?>');
+				return false;
+			break;
+			case 'quote' :
+				reset_height();
+				jQuery('.editor-container').show();
+				jQuery('#content_type').show();
+				set_menu('quote');
+				set_title('<?php _e('Quote') ?>');
+				set_editor('<blockquote><p><?php echo $selection; ?> </p><p><cite><a href="<?php echo $url; ?>"><?php echo $title; ?></a></cite> </p></blockquote>');
 
-	jQuery(document).ready(function() {
-		
-    	
-		<?php if ( preg_match("/youtube\.com\/watch/i", $url) ) { ?>
-	
-		<?php } elseif ( preg_match("/flickr\.com/i", $url) ) { ?>
+				return false;
+			break;
+			case 'video' :
+				reset_height();
+				jQuery('.editor-container').show();
+				jQuery('#content_type').show();
+				set_menu('video');
+				set_title('<?php _e('Caption') ?>');
+				
+				jQuery('#extra_fields').show();
+				jQuery('body').addClass('video_split');
 			
-		<?php } else { ?>
+				
+				jQuery('#extra_fields').load('<?php echo clean_url($_SERVER['PHP_SELF']); ?>', { ajax: 'video', selection: '<?php echo attribute_escape($selection); ?>'}, function() {
+					
+					<?php 
+					if ( preg_match("/youtube\.com\/watch/i", $url) ) {
+					list($domain, $video_id) = split("v=", $url);
+					$content = '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/' . $video_id . '"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/' . $video_id . '" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>'; ?>
+					
+					<?php } elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) {
+					
+					list($domain, $video_id) = split(".com/", $url);
+					$content = '<object width="400" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=' . $video_id . '&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" />	<embed src="http://www.vimeo.com/moogaloop.swf?clip_id=' . $video_id . '&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"></embed></object>';
+					
+					if(trim($selection) == '') $selection = '<a href="http://www.vimeo.com/' . $video_id . '?pg=embed&sec=' . $video_id . '">' . $title . '</a> on <a href="http://vimeo.com?pg=embed&sec=' . $video_id . '">Vimeo</a>';
+					}else {
+						$content = $selection;
+					} ?>
+					jQuery('#embed_code').prepend('<?php echo htmlentities($content); ?>');
+					set_editor('<?php echo $title; ?>');
+					
+				});
 
-		<?php } ?>
-	
-	
-		jQuery("#text_button").click(function () {
-			jQuery('.editor-container').show();
-			jQuery('#content_type').show();
-			jQuery('#photo_fields').hide();
-			set_menu('text');
-			set_title('<?php _e('Text') ?>');
-			set_editor('<?php echo $selection; ?>');
-			return false;
-		});
-	
-		jQuery("#quote_button").click(function () {
-			jQuery('.editor-container').show();
-			jQuery('#content_type').show();
-			jQuery('#photo_fields').hide();
-			set_menu('quote');
-			set_title('<?php _e('Quote') ?>');
-			set_editor('<blockquote><p><?php echo $selection; ?> </p><p><cite><a href="<?php echo $url; ?>"><?php echo $title; ?></a></cite> </p></blockquote>');
+				
+				return false;
+			break;
 			
-			return false;
-		});
-		
+			case 'photo' :
+				reset_height();
+				set_menu('photo');
+				set_title('Caption');
+				set_editor('<a href="<?php echo $url; ?>"><?php echo $title; ?></a>');
+				
+				jQuery('#extra_fields').show();
+				jQuery('#extra_fields').load('<?php echo clean_url($_SERVER['PHP_SELF']).'/?ajax=photo&url='.attribute_escape($url); ?>');
+				jQuery('#extra_fields').prepend('<h2><img src="images/loading.gif" alt="" /> Loading...</h2>');
+				jQuery.ajax({
+					type: "GET",
+					cache : false,
+					url: "<?php echo clean_url($_SERVER['PHP_SELF']); ?>",
+					data: "ajax=photo_js&url=<?php echo $url?>",
+					dataType : "script",
+					success : function() {
+					}
+				});
+				return false;
+			break;
 
-		jQuery("#video_button").click(function () {
-			jQuery('.editor-container').show();
-			jQuery('#content_type').show();
-			jQuery('#photo_fields').hide();
-			set_menu('video');
-			set_title('<?php _e('Video') ?>');
-			set_editor('<a href="<?php echo $url; ?>"><?php echo $title; ?></a>');
-			<?php /*
-			<!--list($garbage,$video_id) = split("v=", $_REQUEST['content']);
-			$content = '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/' . $video_id . '"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/' . $video_id . '" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>';-->
-			*/?>
-			return false;
-		});	
+		}
 	
-
-	jQuery("#photo_button").click(function () {
-		set_menu('photo');
-		set_title('Caption');
-		set_editor('<a href="<?php echo $url; ?>"><?php echo $title; ?></a>');
-		jQuery('#photo_fields').show();
-		jQuery('.remove').click(function() {
-			jQuery(this).remove;
-
+	}
+	
+	jQuery(document).ready(function() {
+    	jQuery('#menu li').click(function (){ 
+			tab_name = this.id.split('_');
+			tab_name = tab_name[0];
+			show(tab_name);
 		});
 		
-		
-		var img, img_tag, aspect, w, h, skip, i, strtoappend = "";
-		var my_src = [<?php echo get_images_from_uri($url); ?>];
-
-		for (i = 0; i < my_src.length; i++) {
-			img = new Image();
-			img.src = my_src[i];
-			img_attr = 'id="img' + i + '" onclick="pick(this);"';
-			skip = false;
-			
-			if (img.width && img.height) {
-				if (img.width * img.height < 2500) skip = true;
-				aspect = img.width / img.height;
-				if (aspect > 1) { // Image is wide
-					scale = 75 / img.width;
-				} else { // Image is tall or square
-					scale = 75 / img.height;
-				}
-				if (scale < 1) {
-					w = parseInt(img.width * scale);
-					h = parseInt(img.height * scale);
-				} else {
-					w = img.width;
-					h = img.height;
-				}
-				img_attr += ' style="width: ' + w + 'px; height: ' + h + 'px;"';
-			}
-			
-			if (!skip) strtoappend += '<a href="' + img.src + '" title="" class="thickbox"><img src="' + img.src + '" ' + img_attr + '/></a>';
-            	
-		}
-			
-			jQuery('#img_container').html(strtoappend);
-
-			tb_init('a.thickbox, area.thickbox, input.thickbox'); //pass where to apply thickbox
-		
-		});
+		<?php if ( preg_match("/youtube\.com\/watch/i", $url) ) { ?>
+			show('video');
+		<?php } elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) { ?>
+			show('video');
+			<?php  } elseif ( preg_match("/flickr\.com/i", $url) ) { ?>
+			show('photo');
+		<?php } ?>
 	});
-	</script>
-	
-
+</script>
 </head>
 <body class="press-this">
 <div id="wphead">
@@ -339,8 +435,8 @@
 		</ul>
 
 			<form action="press-this.php?action=post" method="post">
+
 				<?php wp_nonce_field('press-this') ?>
-				<input type="hidden" name="source" value="bookmarklet"/>
 				<input type="hidden" name="post_type" id="post_type" value="text"/>
 				<div id="posting">
 					
@@ -348,49 +444,20 @@
 					<div class="titlewrap">
 						<input name="post_title" id="post_title" class="text" value="<?php echo attribute_escape($title);?>"/>
 					</div>
-					<div id="photo_fields" style="display: none;">
-						<h2><label for="photo_src"><?php _e('Photo URL') ?></label></h2>
-						<div class="titlewrap">
-							<input name="photo_src" id="photo_src" class="text" onkeydown="pick(0);"/>
-						</div>
-					
-						<div class="photolist"></div>
-					
-						<h2><label for="photo_link"><?php _e('Link Photo to following URL') ?></label></h2><?php _e('(leave blank to leave the photo unlinked)') ?>
-						<div class="titlewrap">
-							<input name="photo_link" id="photo_link" class="text" value="<?php echo attribute_escape($url);?>"/>
-						</div>
-					
-						<small><?php _e('Click images to select:') ?></small>
-						<div class="titlewrap">
-							<div id="img_container"></div>
-						</div>
-					
-					</div>
-					
+
+					<div id="extra_fields" style="display: none"></div>
+					<div class="editor_area">
 					<h2 id="content_type"><label for="content"><?php _e('Post') ?></label></h2>
 					<div class="editor-container">
-						<textarea name="content" id="content" style="height:170px;width:100%;" class="mceEditor">
+						<textarea name="content" id="content" style="width:100%;" class="mceEditor">
 						<?php echo $selection; ?>
 						</textarea>
 					</div>
-					
+					</div>
 					<?php tag_div(); ?>
-					
 				</div>
 				<?php category_div(); ?>
 			</form>		
-					<?php /*
-					if ( preg_match("/youtube\.com\/watch/i", $url) ) {
-						list($domain, $video_id) = split("v=", $url);
-					?>
-					<input type="hidden" name="content" value="<?php echo attribute_escape($url); ?>" />
-					<img src="http://img.youtube.com/vi/<?php echo $video_id; ?>/default.jpg" align="right" style="border:solid 1px #aaa;" width="130" height="97"/>
-					<?php } else { ?>
 					
-					<h2><label for="video_post_one"><?php _e('Embed Code') ?></label></h2>
-					<textarea name="content" id="video_post_one" style="height:80px;width:100%;"></textarea>
-					<?php } */?>
-					
 </body>
-</html>
+</html>
\ No newline at end of file
Index: wp-admin/css/press-this.css
===================================================================
--- wp-admin/css/press-this.css	(revision 8041)
+++ wp-admin/css/press-this.css	(working copy)
@@ -91,10 +91,27 @@
 	border-top: none;
 }
 
-.submit input {
-	
+.button {
+font-family: "Lucida Grande", "Lucida Sans Unicode", Tahoma, Verdana, sans-serif;
+padding: 3px 5px;
+font-size: 12px;
+line-height: 1.5em;
+border-width: 1px;
+border-style: solid;
+-moz-border-radius: 3px;
+-khtml-border-radius: 3px;
+-webkit-border-radius: 3px;
+border-radius: 3px;
+cursor: pointer;
+margin-left: 5px;
+text-decoration: none;
 }
 
+.howto {
+font-size: 11px;
+}
+#newtag { padding: 3px; }
+
 #wphead {
 	height: 2em;
 	padding-top: 8px;
@@ -189,7 +206,7 @@
 div#categories {
 	font-size: 85%;
 	position: absolute;
-
+	top: 50px;
 	right: 16px;
 	width: 27%;
 	z-index: 2;
@@ -269,7 +286,6 @@
 
 #img_container {
 	background-color: #fff;
-	margin-top: 10px;
 	overflow: auto;
 	height: 100px;
 }
@@ -283,42 +299,39 @@
 	margin-bottom: 7px;
 	cursor: pointer;
 }
-
+.submit {
+-moz-border-radius-bottomleft: 3px;
+-khtml-border-bottom-left-radius: 3px;
+-webkit-border-bottom-left-radius: 3px;
+border-bottom-left-radius: 3px;
+-moz-border-radius-bottomright: 3px;
+-khtml-border-bottom-right-radius: 3px;
+-webkit-border-bottom-right-radius: 3px;
+border-bottom-right-radius: 3px;
+margin: 0;
+padding: 0;
+}
 .submitbox {
 	width: 100%;
 	float: right;
 }
 
-.submitbox .submit {
-	text-align: left;
-	padding: 12px 10px 10px 10px;
-	font-size: 11px;
-}
-
-.submit {
-	border-top: 1px solid #ccc;
-	padding: 1.5em 0 0 0;
-	margin: 10px 0 0 0;
-	-moz-border-radius-bottomleft: 3px;
-	-khtml-border-bottom-left-radius: 3px;
-	-webkit-border-bottom-left-radius: 3px;
-	border-bottom-left-radius: 3px;
-	-moz-border-radius-bottomright: 3px;
-	-khtml-border-bottom-right-radius: 3px;
-	-webkit-border-bottom-right-radius: 3px;
-	border-bottom-right-radius: 3px;
-}
-
 .submitbox .submit a:hover {
 	border-bottom-width: 1px;
 	border-bottom-style: solid;
 }
 
 .submitbox .submit input {
-	margin-bottom: 8px;
-	margin-right: 3px;
-	padding: 6px 4px;
 	border: none;
+	text-align: left;
+	padding: 12px 10px 10px 10px;
+	font-size: 12px;
+	margin: 10px;
+
+	-moz-border-radius: 3px;
+	-khtml-border-radius: 3px;
+	-webkit-border-radius: 3px;
+	border-radius: 3px;
 	cursor: pointer;
 }
 
@@ -337,3 +350,22 @@
 .hidden {
 	display: none;
 }
+
+.video_split #extra_fields {
+width: 27%;
+height: 300px;
+float: left;
+}
+#embed_code {
+border: 0;
+width: 99%;
+height: 200px;
+}
+.video_split .editor_area {
+width: 70%;
+float: right;
+}
+
+#jaxtag {
+clear: both;
+}
\ No newline at end of file
