Index: /trunk/admin/include/photos_add_direct_process.inc.php
===================================================================
--- /trunk/admin/include/photos_add_direct_process.inc.php	(revision 11961)
+++ /trunk/admin/include/photos_add_direct_process.inc.php	(revision 11962)
@@ -44,42 +44,5 @@
   }
   
-  $category_id = null;
-  if (!isset($_POST['category_type']))
-  {
-    // nothing to do, we certainly have the post_max_size issue
-  }
-  elseif ('existing' == $_POST['category_type'])
-  {
-    $category_id = $_POST['category'];
-  }
-  elseif ('new' == $_POST['category_type'])
-  {
-    $output_create = create_virtual_category(
-      $_POST['category_name'],
-      (0 == $_POST['category_parent'] ? null : $_POST['category_parent'])
-      );
-    
-    $category_id = $output_create['id'];
-
-    if (isset($output_create['error']))
-    {
-      array_push($page['errors'], $output_create['error']);
-    }
-    else
-    {
-      $category_name = get_cat_display_name_from_id($category_id, 'admin.php?page=cat_modify&amp;cat_id=');
-      // information
-      array_push(
-        $page['infos'],
-        sprintf(
-          l10n('Album "%s" has been added'),
-          '<em>'.$category_name.'</em>'
-          )
-        );
-      // TODO: add the onclick="window.open(this.href); return false;"
-      // attribute with jQuery on upload.tpl side for href containing
-      // "cat_modify"
-    }
-  }
+  $category_id = $_POST['category'];
 
   $image_ids = array();
@@ -207,18 +170,4 @@
     {
       $image_ids = $_SESSION['uploads'][ $_POST['upload_id'] ];
-
-      associate_images_to_categories(
-        $image_ids,
-        array($category_id)
-        );
-
-      $query = '
-UPDATE '.IMAGES_TABLE.'
-  SET level = '.$_POST['level'].'
-  WHERE id IN ('.implode(', ', $image_ids).')
-;';
-      pwg_query($query);
-    
-      invalidate_user_cache();
     }
   }
@@ -292,7 +241,5 @@
     }
 
-    if ('existing' == $_POST['category_type'])
-    {
-      $query = '
+    $query = '
 SELECT
     COUNT(*)
@@ -300,18 +247,17 @@
   WHERE category_id = '.$category_id.'
 ;';
-      list($count) = pwg_db_fetch_row(pwg_query($query));
-      $category_name = get_cat_display_name_from_id($category_id, 'admin.php?page=cat_modify&amp;cat_id=');
-      
-      // information
-      array_push(
-        $page['infos'],
-        sprintf(
-          l10n('Album "%s" now contains %d photos'),
-          '<em>'.$category_name.'</em>',
-          $count
-          )
-        );
-    }
-
+    list($count) = pwg_db_fetch_row(pwg_query($query));
+    $category_name = get_cat_display_name_from_id($category_id, 'admin.php?page=cat_modify&amp;cat_id=');
+    
+    // information
+    array_push(
+      $page['infos'],
+      sprintf(
+        l10n('Album "%s" now contains %d photos'),
+        '<em>'.$category_name.'</em>',
+        $count
+        )
+      );
+    
     $page['batch_link'] = PHOTOS_ADD_BASE_URL.'&batch='.implode(',', $image_ids);
   }
Index: /trunk/admin/include/uploadify/uploadify.php
===================================================================
--- /trunk/admin/include/uploadify/uploadify.php	(revision 11961)
+++ /trunk/admin/include/uploadify/uploadify.php	(revision 11962)
@@ -20,5 +20,5 @@
 $tmp = ob_get_contents(); 
 ob_end_clean();
-// error_log($tmp, 3, "/tmp/php-".date('YmdHis').'-'.sprintf('%020u', rand()).".log");
+error_log($tmp, 3, "/tmp/php-".date('YmdHis').'-'.sprintf('%020u', rand()).".log");
 
 if ($_FILES['Filedata']['error'] !== UPLOAD_ERR_OK)
@@ -44,6 +44,6 @@
   $_FILES['Filedata']['tmp_name'],
   $_FILES['Filedata']['name'],
-  null,
-  8
+  array($_POST['category_id']),
+  $_POST['level']
   );
 
@@ -63,4 +63,22 @@
   );
 
+$query = '
+SELECT
+    id,
+    path,
+    tn_ext
+  FROM '.IMAGES_TABLE.'
+  WHERE id = '.$image_id.'
+;';
+$image_infos = pwg_db_fetch_assoc(pwg_query($query));
+
+$thumbnail_url = preg_replace('#^'.PHPWG_ROOT_PATH.'#', './', get_thumbnail_url($image_infos));
+
+$return = array(
+  'image_id' => $image_id,
+  'category_id' => $_POST['category_id'],
+  'thumbnail_url' => $thumbnail_url,
+  );
+
 $output = ob_get_contents(); 
 ob_end_clean();
@@ -68,6 +86,7 @@
 {
   add_upload_error($_POST['upload_id'], $output);
+  $return['error_message'] = $output;
 }
 
-echo "1";
+echo json_encode($return);
 ?>
Index: /trunk/admin/themes/clear/theme.css
===================================================================
--- /trunk/admin/themes/clear/theme.css	(revision 11961)
+++ /trunk/admin/themes/clear/theme.css	(revision 11962)
@@ -21,5 +21,5 @@
 INPUT, select, textarea { color:#666; background-color: #ccc; }
 input[type="radio"], input[type="checkbox"] { background-color: transparent; }
-INPUT[type="submit"], INPUT[type="reset"]  { color:#666; border: 1px solid #777; background-color: #bbb; padding: 1px 15px; }
+INPUT[type="submit"], INPUT[type="button"], INPUT[type="reset"]  { color:#666; border: 1px solid #777; background-color: #bbb; padding: 1px 15px; }
 legend, h3 { color: #777; }
 h2 { color: #777; }
@@ -51,4 +51,5 @@
 
 input[type="button"]:hover, input[type="submit"]:hover, input[type="reset"]:hover {
+  cursor:pointer;
   color:#666;
   border-color: #999;
Index: /trunk/admin/themes/default/template/include/colorbox.inc.tpl
===================================================================
--- /trunk/admin/themes/default/template/include/colorbox.inc.tpl	(revision 11961)
+++ /trunk/admin/themes/default/template/include/colorbox.inc.tpl	(revision 11962)
@@ -1,2 +1,2 @@
 {combine_script id='jquery.colorbox' load='footer' require='jquery' path='themes/default/js/plugins/jquery.colorbox.min.js'}
-{combine_css path="themes/default/js/plugins/jquery.colorbox.css"}
+{combine_css path="themes/default/js/plugins/colorbox/style2/colorbox.css"}
Index: /trunk/admin/themes/default/template/photos_add_direct.tpl
===================================================================
--- /trunk/admin/themes/default/template/photos_add_direct.tpl	(revision 11961)
+++ /trunk/admin/themes/default/template/photos_add_direct.tpl	(revision 11962)
@@ -7,4 +7,6 @@
 {/if}
 
+{include file='include/colorbox.inc.tpl'}
+
 {footer_script}{literal}
 jQuery(document).ready(function(){
@@ -14,9 +16,4 @@
     jQuery("#formErrors li").hide();
 
-    if (jQuery("input[name=category_type]:checked").val() == "new" && jQuery("input[name=category_name]").val() == "") {
-      jQuery("#formErrors #emptyCategoryName").show();
-      nbErrors++;
-    }
-
     var nbFiles = 0;
     if (jQuery("#uploadBoxes").size() == 1) {
@@ -66,13 +63,77 @@
   }
 
-  if (jQuery("select[name=category] option").length == 0) {
-    jQuery('input[name=category_type][value=existing]').attr('disabled', true);
-    jQuery('input[name=category_type]').attr('checked', false);
-    jQuery('input[name=category_type][value=new]').attr('checked', true);
+  function fillCategoryListbox(selectId, selectedValue) {
+    jQuery.getJSON(
+      "ws.php?format=json&method=pwg.categories.getList",
+      {
+        recursive: true,
+        fullname: true,
+        format: "json",
+      },
+      function(data) {
+        jQuery.each(
+          data.result.categories,
+          function(i,category) {
+            var selected = "";
+            if (category.id == selectedValue) {
+              selected = "selected";
+            }
+            
+            jQuery("<option/>")
+              .attr("value", category.id)
+              .attr("selected", selected)
+              .text(category.name)
+              .appendTo("#"+selectId)
+              ;
+          }
+        );
+      }
+    );
   }
 
-  jQuery("input[name=category_type]").click(function () {
-    jQuery("[id^=category_type_]").hide();
-    jQuery("#category_type_"+jQuery(this).attr("value")).show();
+/*
+  jQuery("#albumSelect").find("option").remove();
+  fillCategoryListbox("albumSelect");
+  fillCategoryListbox("category_parent");
+*/
+  
+  jQuery(".addAlbumOpen").colorbox({inline:true, href:"#addAlbumForm"});
+
+  jQuery("#addAlbumForm form").submit(function(){
+      jQuery("#categoryNameError").text("");
+
+      jQuery.ajax({
+        url: "ws.php?format=json&method=pwg.categories.add",
+        data: {
+          parent: jQuery("select[name=category_parent] option:selected").val(),
+          name: jQuery("input[name=category_name]").val(),
+        },
+        beforeSend: function() {
+          jQuery("#albumCreationLoading").show();
+        },
+        success:function(html) {
+          jQuery("#albumCreationLoading").hide();
+
+          var newAlbum = jQuery.parseJSON(html).result.id;
+          jQuery(".addAlbumOpen").colorbox.close();
+
+          jQuery("#albumSelect").find("option").remove();
+          fillCategoryListbox("albumSelect", newAlbum);
+
+          /* we refresh the album creation form, in case the user wants to create another album */
+          jQuery("#category_parent").find("option").remove();
+          fillCategoryListbox("category_parent", newAlbum);
+
+          jQuery("#addAlbumForm form input[name=category_name]").val('');
+
+          return true;
+        },
+        error:function(XMLHttpRequest, textStatus, errorThrows) {
+            jQuery("#albumCreationLoading").hide();
+            jQuery("#categoryNameError").text(errorThrows).css("color", "red");
+        }
+      });
+
+      return false;
   });
 
@@ -121,5 +182,4 @@
     'queueID'        : 'fileQueue',
     'auto'           : false,
-    'displayData'    : 'speed',
     'buttonText'     : buttonText,
     'multi'          : true,
@@ -197,6 +257,12 @@
       );
     },
-    onComplete: function (a, b ,c, d, e) {
+    onComplete: function (a, b ,c, response, e) {
       var size = Math.round(c.size/1024);
+
+      var response = jQuery.parseJSON(response);
+
+      jQuery("#uploadedPhotos").parent("fieldset").show();
+      jQuery("#uploadedPhotos").prepend('<img src="'+response.thumbnail_url+'" class="thumbnail"> ');
+
       jQuery.jGrowl(
         '<p></p>'+c.name+' - '+size+'KB',
@@ -215,4 +281,12 @@
       return false;
     }
+
+    jQuery("#uploadify").uploadifySettings(
+      'scriptData',
+      {
+        'category_id' : jQuery("select[name=category] option:selected").val(),
+        'level' : jQuery("select[name=level] option:selected").val(),
+      }
+    );
 
     jQuery("#uploadify").uploadifyUpload();
@@ -269,5 +343,4 @@
 <div id="formErrors" class="errors" style="display:none">
   <ul>
-    <li id="emptyCategoryName">{'The name of an album must not be empty'|@translate}</li>
     <li id="noPhoto">{'Select at least one photo'|@translate}</li>
   </ul>
@@ -275,39 +348,32 @@
 </div>
 
+<div style="display:none">
+  <div id="addAlbumForm" style="text-align:left;padding:1em;">
+    <form>
+      {'Parent album'|@translate}<br>
+      <select id ="category_parent" name="category_parent">
+        <option value="0">------------</option>
+        {html_options options=$category_parent_options selected=$category_parent_options_selected}
+      </select>
+
+      <br><br>{'Album name'|@translate}<br><input name="category_name" type="text"> <span id="categoryNameError"></span>
+      <br><br><br><input type="submit" value="{'Create'|@translate}"> <span id="albumCreationLoading" style="display:none"><img src="themes/default/images/ajax-loader-small.gif"></span>
+    </form>
+  </div>
+</div>
+
 <form id="uploadForm" enctype="multipart/form-data" method="post" action="{$form_action}" class="properties">
+{if $upload_mode eq 'multiple'}
+    <input name="upload_id" value="{$upload_id}" type="hidden">
+{/if}
+
     <fieldset>
       <legend>{'Drop into album'|@translate}</legend>
-      {if $upload_mode eq 'multiple'}
-      <input name="upload_id" value="{$upload_id}" type="hidden">
-      {/if}
-
-      <label><input type="radio" name="category_type" value="existing"> {'existing album'|@translate}</label>
-      <label><input type="radio" name="category_type" value="new" checked="checked"> {'create a new album'|@translate}</label>
-
-      <div id="category_type_existing" style="display:none" class="category_selection">
-        <select class="categoryDropDown" name="category">
-          {html_options options=$category_options selected=$category_options_selected}
-        </select>
-      </div>
-
-      <div id="category_type_new" class="category_selection">
-        <table>
-          <tr>
-            <td>{'Parent album'|@translate}</td>
-            <td>
-              <select class="categoryDropDown" name="category_parent">
-                <option value="0">------------</option>
-                {html_options options=$category_parent_options selected=$category_parent_options_selected}
-              </select>
-            </td>
-          </tr>
-          <tr>
-            <td>{'Album name'|@translate}</td>
-            <td>
-              <input type="text" name="category_name" value="{$F_CATEGORY_NAME}" style="width:400px">
-            </td>
-          </tr>
-        </table>
-      </div>
+
+      <select id="albumSelect" name="category">
+        {html_options options=$category_options selected=$category_options_selected}
+      </select>
+      <br>{'... or '|@translate}<a href="#" class="addAlbumOpen" title="{'create a new album'|@translate}">{'create a new album'|@translate}</a>
+      
     </fieldset>
 
@@ -349,9 +415,15 @@
     </fieldset>
     <p>
-      <input class="submit" type="button" value="{'Upload'|@translate}">
+      <input class="submit" type="button" value="{'Start Upload'|@translate}">
       <input type="submit" name="submit_upload" style="display:none">
     </p>
 {/if}
 </form>
+
+<fieldset style="display:none">
+  <legend>{'Uploaded Photos'|@translate}</legend>
+  <div id="uploadedPhotos"></div>
+</fieldset>
+
 {/if} {* empty($thumbnails) *}
 {/if} {* $setup_errors *}
Index: /trunk/admin/themes/default/theme.css
===================================================================
--- /trunk/admin/themes/default/theme.css	(revision 11961)
+++ /trunk/admin/themes/default/theme.css	(revision 11962)
@@ -606,4 +606,8 @@
 }
 
+#photosAddContent {
+  text-align:left;
+}
+
 #photosAddContent FIELDSET {
   width:650px;
Index: /trunk/include/ws_functions.inc.php
===================================================================
--- /trunk/include/ws_functions.inc.php	(revision 11961)
+++ /trunk/include/ws_functions.inc.php	(revision 11962)
@@ -512,11 +512,18 @@
     }
 
-    $row['name'] = strip_tags(
-      trigger_event(
-        'render_category_name',
-        $row['name'],
-        'ws_categories_getList'
-        )
-      );
+    if ($params['fullname'])
+    {
+      $row['name'] = strip_tags(get_cat_display_name_cache($row['uppercats'], null, false));
+    }
+    else
+    {
+      $row['name'] = strip_tags(
+        trigger_event(
+          'render_category_name',
+          $row['name'],
+          'ws_categories_getList'
+          )
+        );
+    }
 
     $row['comment'] = strip_tags(
Index: /trunk/language/en_UK/admin.lang.php
===================================================================
--- /trunk/language/en_UK/admin.lang.php	(revision 11961)
+++ /trunk/language/en_UK/admin.lang.php	(revision 11962)
@@ -252,5 +252,5 @@
 $lang['Downloads'] = "Downloads";
 $lang['Drag to re-order'] = "Click-and-drag to re-order";
-$lang['Drop into album'] = 'Drop into album';
+$lang['Drop into album'] = 'Select an album';
 $lang['duplicates'] = 'duplicates';
 $lang['Edit album permissions'] = "Edit album permissions";
@@ -844,3 +844,6 @@
 $lang['If you want to regenerate thumbnails, please go to the <a href="%s">Batch Manager</a>.'] = 'If you want to regenerate thumbnails, please go to the <a href="%s">Batch Manager</a>.';
 $lang['Graphics Library'] = 'Graphics Library';
+$lang['... or '] = '... or ';
+$lang['Create'] = 'Create';
+$lang['Start Upload'] = 'Start Upload';
 ?>
Index: /trunk/language/fr_FR/admin.lang.php
===================================================================
--- /trunk/language/fr_FR/admin.lang.php	(revision 11961)
+++ /trunk/language/fr_FR/admin.lang.php	(revision 11962)
@@ -853,4 +853,6 @@
 $lang['You have specified <i>$conf[\'order_by\']</i> in your local configuration file, this parameter in deprecated, please remove it or rename it into <i>$conf[\'order_by_custom\']</i> !'] = 'Vous avez spécifié <i>$conf[\'order_by\']</i> dans votre fichier de configuration, ce paramètre est obsolète, veuillez le supprimer ou le renommer en <i>$conf[\'order_by_custom\']</i> !';
 $lang['Add a criteria'] = 'Ajouter un critère';
-
+$lang['... or '] = '... ou bien ';
+$lang['Create'] = 'Créer';
+$lang['Start Upload'] = 'Démarrer le transfert';
 ?>
Index: /trunk/themes/default/js/plugins/colorbox/style1/colorbox.css
===================================================================
--- /trunk/themes/default/js/plugins/colorbox/style1/colorbox.css	(revision 11962)
+++ /trunk/themes/default/js/plugins/colorbox/style1/colorbox.css	(revision 11962)
@@ -0,0 +1,82 @@
+/*
+    ColorBox Core Style:
+    The following CSS is consistent between example themes and should not be altered.
+*/
+#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxOverlay{position:fixed; width:100%; height:100%;}
+#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
+#cboxContent{position:relative;}
+#cboxLoadedContent{overflow:auto;}
+#cboxTitle{margin:0;}
+#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block;}
+.cboxIframe{width:100%; height:100%; display:block; border:0;}
+
+/* 
+    User Style:
+    Change the following styles to modify the appearance of ColorBox.  They are
+    ordered & tabbed in a way that represents the nesting of the generated HTML.
+*/
+#cboxOverlay{background:url(images/overlay.png) repeat 0 0;}
+#colorbox{}
+    #cboxTopLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -100px 0;}
+    #cboxTopRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -129px 0;}
+    #cboxBottomLeft{width:21px; height:21px; background:url(images/controls.png) no-repeat -100px -29px;}
+    #cboxBottomRight{width:21px; height:21px; background:url(images/controls.png) no-repeat -129px -29px;}
+    #cboxMiddleLeft{width:21px; background:url(images/controls.png) left top repeat-y;}
+    #cboxMiddleRight{width:21px; background:url(images/controls.png) right top repeat-y;}
+    #cboxTopCenter{height:21px; background:url(images/border.png) 0 0 repeat-x;}
+    #cboxBottomCenter{height:21px; background:url(images/border.png) 0 -29px repeat-x;}
+    #cboxContent{background:#fff; overflow:hidden;}
+        #cboxError{padding:50px; border:1px solid #ccc;}
+        #cboxLoadedContent{margin-bottom:28px;}
+        #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#949494;}
+        #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}
+        #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}
+        #cboxPrevious{position:absolute; bottom:0; left:0; background:url(images/controls.png) no-repeat -75px 0; width:25px; height:25px; text-indent:-9999px;}
+        #cboxPrevious.hover{background-position:-75px -25px;}
+        #cboxNext{position:absolute; bottom:0; left:27px; background:url(images/controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
+        #cboxNext.hover{background-position:-50px -25px;}
+        #cboxLoadingOverlay{background:url(images/loading_background.png) no-repeat center center;}
+        #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+        #cboxClose{position:absolute; bottom:0; right:0; background:url(images/controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
+        #cboxClose.hover{background-position:-25px -25px;}
+
+/*
+  The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill
+  when an alpha filter (opacity change) is set on the element or ancestor element.  This style is not applied to IE9.
+*/
+.cboxIE #cboxTopLeft,
+.cboxIE #cboxTopCenter,
+.cboxIE #cboxTopRight,
+.cboxIE #cboxBottomLeft,
+.cboxIE #cboxBottomCenter,
+.cboxIE #cboxBottomRight,
+.cboxIE #cboxMiddleLeft,
+.cboxIE #cboxMiddleRight {
+    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
+}
+
+/*
+  The following provides PNG transparency support for IE6
+*/
+.cboxIE6 #cboxTopLeft{background:url(images/ie6/borderTopLeft.png);}
+.cboxIE6 #cboxTopCenter{background:url(images/ie6/borderTopCenter.png);}
+.cboxIE6 #cboxTopRight{background:url(images/ie6/borderTopRight.png);}
+.cboxIE6 #cboxBottomLeft{background:url(images/ie6/borderBottomLeft.png);}
+.cboxIE6 #cboxBottomCenter{background:url(images/ie6/borderBottomCenter.png);}
+.cboxIE6 #cboxBottomRight{background:url(images/ie6/borderBottomRight.png);}
+.cboxIE6 #cboxMiddleLeft{background:url(images/ie6/borderMiddleLeft.png);}
+.cboxIE6 #cboxMiddleRight{background:url(images/ie6/borderMiddleRight.png);}
+
+.cboxIE6 #cboxTopLeft,
+.cboxIE6 #cboxTopCenter,
+.cboxIE6 #cboxTopRight,
+.cboxIE6 #cboxBottomLeft,
+.cboxIE6 #cboxBottomCenter,
+.cboxIE6 #cboxBottomRight,
+.cboxIE6 #cboxMiddleLeft,
+.cboxIE6 #cboxMiddleRight {
+    _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')");
+}
Index: /trunk/themes/default/js/plugins/colorbox/style1/index.html
===================================================================
--- /trunk/themes/default/js/plugins/colorbox/style1/index.html	(revision 11962)
+++ /trunk/themes/default/js/plugins/colorbox/style1/index.html	(revision 11962)
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+	<meta charset=utf-8 />
+	<title>ColorBox Examples</title>
+	<style type="text/css">
+		body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
+		a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
+		h2{font-size:13px; margin:15px 0 0 0;}
+	</style>
+	<link media="screen" rel="stylesheet" href="colorbox.css" />
+	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
+	<script src="../colorbox/jquery.colorbox.js"></script>
+	<script>
+		$(document).ready(function(){
+			//Examples of how to assign the ColorBox event to elements
+			$("a[rel='example1']").colorbox();
+			$("a[rel='example2']").colorbox({transition:"fade"});
+			$("a[rel='example3']").colorbox({transition:"none", width:"75%", height:"75%"});
+			$("a[rel='example4']").colorbox({slideshow:true});
+			$(".example5").colorbox();
+			$(".example6").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+			$(".example7").colorbox({width:"80%", height:"80%", iframe:true});
+			$(".example8").colorbox({width:"50%", inline:true, href:"#inline_example1"});
+			$(".example9").colorbox({
+				onOpen:function(){ alert('onOpen: colorbox is about to open'); },
+				onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
+				onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
+				onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
+				onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
+			});
+			
+			//Example of preserving a JavaScript event for inline calls.
+			$("#click").click(function(){ 
+				$('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
+				return false;
+			});
+		});
+	</script>
+</head>
+<body>
+	<h1>ColorBox Demonstration</h1>
+	
+	<h2>Elastic Transition</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example1" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example1" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example1" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>Fade Transition</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example2" title="Me and my grandfather on the Ohoopee">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example2" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example2" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>No Transition + fixed width and height (75% of screen size)</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example3"  title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example3"  title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example3"  title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>Slideshow</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example4"  title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example4"  title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example4"  title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>Other Content Types</h2>
+	<p><a class='example5' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
+	<p><a class='example5' href="../content/flash.html" title="Royksopp: Remind Me">Flash / Video (Ajax/Embedded)</a></p>
+	<p><a class='example6' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+	<p><a class='example7' href="http://google.com">Outside Webpage (Iframe)</a></p>
+	<p><a class='example8' href="#">Inline HTML</a></p>
+	
+	<h2>Demonstration of using callbacks</h2>
+	<p><a class='example9' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+	
+	<!-- This contains the hidden content for inline calls -->
+	<div style='display:none'>
+		<div id='inline_example1' style='padding:10px; background:#fff;'>
+		<p><strong>This content comes from a hidden element on this page.</strong></p>
+		<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.<br />
+		<a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
+		
+		<p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+		<p>Updating Content Example:<br />
+		<a class="example5" href="../content/flash.html">Click here to load new content</a></p>
+		</div>
+	</div>
+</body>
+</html>
Index: /trunk/themes/default/js/plugins/colorbox/style2/colorbox.css
===================================================================
--- /trunk/themes/default/js/plugins/colorbox/style2/colorbox.css	(revision 11962)
+++ /trunk/themes/default/js/plugins/colorbox/style2/colorbox.css	(revision 11962)
@@ -0,0 +1,42 @@
+/*
+    ColorBox Core Style:
+    The following CSS is consistent between example themes and should not be altered.
+*/
+#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
+#cboxOverlay{position:fixed; width:100%; height:100%;}
+#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
+#cboxContent{position:relative;}
+#cboxLoadedContent{overflow:auto;}
+#cboxTitle{margin:0;}
+#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
+.cboxPhoto{float:left; margin:auto; border:0; display:block;}
+.cboxIframe{width:100%; height:100%; display:block; border:0;}
+
+/* 
+    User Style:
+    Change the following styles to modify the appearance of ColorBox.  They are
+    ordered & tabbed in a way that represents the nesting of the generated HTML.
+*/
+#cboxOverlay{background:#000;}
+#colorbox{}
+    #cboxContent{margin-top:32px; overflow:visible;}
+        #cboxError{padding:50px; border:1px solid #ccc;}
+        #cboxLoadedContent{background:#f1f1f1; padding:1px;}
+        #cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
+        #cboxLoadingOverlay{background:#000;}
+        #cboxTitle{position:absolute; top:-22px; left:0; color:#fff;}
+        #cboxTitle:first-letter{text-transform:capitalize;}
+        #cboxCurrent{position:absolute; top:-22px; right:205px; text-indent:-9999px;}
+        #cboxSlideshow, #cboxPrevious, #cboxNext, #cboxClose{text-indent:-9999px; width:20px; height:20px; position:absolute; top:-20px; background:url(images/controls.png) no-repeat 0 0;}
+        #cboxPrevious{background-position:0px 0px; right:44px;}
+        #cboxPrevious.hover{background-position:0px -25px;}
+        #cboxNext{background-position:-25px 0px; right:22px;}
+        #cboxNext.hover{background-position:-25px -25px;}
+        #cboxClose{background-position:-50px 0px; right:0;}
+        #cboxClose.hover{background-position:-50px -25px;}
+        .cboxSlideshow_on #cboxPrevious, .cboxSlideshow_off #cboxPrevious{right:66px;}
+        .cboxSlideshow_on #cboxSlideshow{background-position:-75px -25px; right:44px;}
+        .cboxSlideshow_on #cboxSlideshow.hover{background-position:-100px -25px;}
+        .cboxSlideshow_off #cboxSlideshow{background-position:-100px 0px; right:44px;}
+        .cboxSlideshow_off #cboxSlideshow.hover{background-position:-75px -25px;}
Index: /trunk/themes/default/js/plugins/colorbox/style2/index.html
===================================================================
--- /trunk/themes/default/js/plugins/colorbox/style2/index.html	(revision 11962)
+++ /trunk/themes/default/js/plugins/colorbox/style2/index.html	(revision 11962)
@@ -0,0 +1,87 @@
+<!DOCTYPE html>
+<html lang="en">
+	<head>
+	<meta charset=utf-8 />
+	<title>ColorBox Examples</title>
+	<style type="text/css">
+		body{font:12px/1.2 Verdana, sans-serif; padding:0 10px;}
+		a:link, a:visited{text-decoration:none; color:#416CE5; border-bottom:1px solid #416CE5;}
+		h2{font-size:13px; margin:15px 0 0 0;}
+	</style>
+	<link media="screen" rel="stylesheet" href="colorbox.css" />
+	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
+	<script src="../colorbox/jquery.colorbox.js"></script>
+	<script>
+		$(document).ready(function(){
+			//Examples of how to assign the ColorBox event to elements
+			$("a[rel='example1']").colorbox();
+			$("a[rel='example2']").colorbox({transition:"fade"});
+			$("a[rel='example3']").colorbox({transition:"none", width:"75%", height:"75%"});
+			$("a[rel='example4']").colorbox({slideshow:true});
+			$(".example5").colorbox();
+			$(".example6").colorbox({iframe:true, innerWidth:425, innerHeight:344});
+			$(".example7").colorbox({width:"80%", height:"80%", iframe:true});
+			$(".example8").colorbox({width:"50%", inline:true, href:"#inline_example1"});
+			$(".example9").colorbox({
+				onOpen:function(){ alert('onOpen: colorbox is about to open'); },
+				onLoad:function(){ alert('onLoad: colorbox has started to load the targeted content'); },
+				onComplete:function(){ alert('onComplete: colorbox has displayed the loaded content'); },
+				onCleanup:function(){ alert('onCleanup: colorbox has begun the close process'); },
+				onClosed:function(){ alert('onClosed: colorbox has completely closed'); }
+			});
+			
+			//Example of preserving a JavaScript event for inline calls.
+			$("#click").click(function(){ 
+				$('#click').css({"background-color":"#f00", "color":"#fff", "cursor":"inherit"}).text("Open this window again and this message will still be here.");
+				return false;
+			});
+		});
+	</script>
+</head>
+<body>
+	<h1>ColorBox Demonstration</h1>
+	
+	<h2>Elastic Transition</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example1" title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example1" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example1" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>Fade Transition</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example2" title="Me and my grandfather on the Ohoopee">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example2" title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example2" title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>No Transition + fixed width and height (75% of screen size)</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example3"  title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example3"  title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example3"  title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>Slideshow</h2>
+	<p><a href="../content/ohoopee1.jpg" rel="example4"  title="Me and my grandfather on the Ohoopee.">Grouped Photo 1</a></p>
+	<p><a href="../content/ohoopee2.jpg" rel="example4"  title="On the Ohoopee as a child">Grouped Photo 2</a></p>
+	<p><a href="../content/ohoopee3.jpg" rel="example4"  title="On the Ohoopee as an adult">Grouped Photo 3</a></p>
+	
+	<h2>Other Content Types</h2>
+	<p><a class='example5' href="../content/ajax.html" title="Homer Defined">Outside HTML (Ajax)</a></p>
+	<p><a class='example5' href="../content/flash.html" title="Royksopp: Remind Me">Flash / Video (Ajax/Embedded)</a></p>
+	<p><a class='example6' href="http://www.youtube.com/embed/617ANIA5Rqs?rel=0&amp;wmode=transparent" title="The Knife: We Share Our Mother's Health">Flash / Video (Iframe/Direct Link To YouTube)</a></p>
+	<p><a class='example7' href="http://google.com">Outside Webpage (Iframe)</a></p>
+	<p><a class='example8' href="#">Inline HTML</a></p>
+	
+	<h2>Demonstration of using callbacks</h2>
+	<p><a class='example9' href="../content/marylou.jpg" title="Marylou on Cumberland Island">Example with alerts</a>. Callbacks and event-hooks allow users to extend functionality without having to rewrite parts of the plugin.</p>
+	
+	<!-- This contains the hidden content for inline calls -->
+	<div style='display:none'>
+		<div id='inline_example1' style='padding:10px; background:#fff;'>
+		<p><strong>This content comes from a hidden element on this page.</strong></p>
+		<p>The inline option preserves bound JavaScript events and changes, and it puts the content back where it came from when it is closed.<br />
+		<a id="click" href="#" style='padding:5px; background:#ccc;'>Click me, it will be preserved!</a></p>
+		
+		<p><strong>If you try to open a new ColorBox while it is already open, it will update itself with the new content.</strong></p>
+		<p>Updating Content Example:<br />
+		<a class="example5" href="../content/flash.html">Click here to load new content</a></p>
+		</div>
+	</div>
+</body>
+</html>
Index: unk/themes/default/js/plugins/jquery.colorbox.css
===================================================================
--- /trunk/themes/default/js/plugins/jquery.colorbox.css	(revision 11961)
+++ 	(revision )
@@ -1,32 +1,0 @@
-/* ColorBox Core Style */
-#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
-#cboxOverlay{position:fixed; width:100%; height:100%;}
-#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
-#cboxContent{position:relative;}
-#cboxLoadedContent{overflow:auto;}
-#cboxTitle{margin:0;}
-#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%;}
-#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
-.cboxPhoto{float:left; margin:auto; border:0; display:block;}
-.cboxIframe{width:100%; height:100%; display:block; border:0;}
-
-/* User Style */
-#cboxWrapper{border-radius:10px; -moz-border-radius:10px: -webkit-border-radius:10px; background:#fff;}
-#cboxOverlay{background:#000;}
-#colorbox{}
-    #cboxTopLeft, #cboxTopRight, #cboxBottomLeft, #cboxBottomRight{width:11px; height:11px;}
-    #cboxMiddleLeft, #cboxMiddleRight{width:11px;}
-    #cboxTopCenter, #cboxBottomCenter{height:11px;} 
-    #cboxContent{background:#fff; overflow:hidden;}
-        #cboxError{padding:50px; colorbox-border:1px solid #ccc;}
-        #cboxLoadedContent{margin-bottom:28px;}
-        #cboxTitle{position:absolute; bottom:4px; left:0; text-align:center; width:100%; color:#666;}
-        #cboxCurrent{position:absolute; bottom:4px; left:58px; color:#949494;}
-        #cboxSlideshow{position:absolute; bottom:4px; right:30px; color:#0092ef;}
-        #cboxPrevious{position:absolute; bottom:0; left:0; background:url(../../images/colorbox-controls.png) no-repeat -50px 0; width:25px; height:25px; text-indent:-9999px;}
-        #cboxPrevious.hover{background-position:-50px -25px;}
-        #cboxNext{position:absolute; bottom:0; left:27px; background:url(../../images/colorbox-controls.png) no-repeat -25px 0; width:25px; height:25px; text-indent:-9999px;}
-        #cboxNext.hover{background-position:-25px -25px;}
-        #cboxLoadingGraphic{background:url(../../images/colorbox-loading.gif) no-repeat center center;}
-        #cboxClose{position:absolute; bottom:0; right:0; background:url(../../images/colorbox-controls.png) no-repeat 0 0; width:25px; height:25px; text-indent:-9999px;}
-        #cboxClose.hover{background-position:0 -25px;}
Index: /trunk/ws.php
===================================================================
--- /trunk/ws.php	(revision 11961)
+++ /trunk/ws.php	(revision 11962)
@@ -83,4 +83,5 @@
         'public' => array('default'=>false),
         'tree_output' => array('default'=>false),
+        'fullname' => array('default'=>false),
       ),
       'retrieves a list of categories (tree_output option only compatible with json/php output format' );
