Index: photark-ui/src/main/webapp/gallery.html
===================================================================
--- photark-ui/src/main/webapp/gallery.html	(revision 928381)
+++ photark-ui/src/main/webapp/gallery.html	(working copy)
@@ -112,10 +112,13 @@
 				var albumName = galleryAlbums[i].name;
 				var img = document.createElement("img");
 				img.src = window.location.href + "gallery/"+ albumName +"/" + albumCovers[i];
-				var img_html = "<img src=" + img.src + " class=\"slideImage\" height=25% width=25% ondragstart=\"return false\" onselectstart=\"return false\" oncontextmenu=\"return false\" galleryimg=\"no\" usemap=\"#imagemap\" alt=\"\"/>";
+				var img_html = "<img src=" + img.src + " class=\"slideImage\" height=85% width=85% ondragstart=\"return false\" onselectstart=\"return false\" oncontextmenu=\"return false\" galleryimg=\"no\" usemap=\"#imagemap\" alt=\"\"/>";
 				var html = "<a href=\"javascript:initializeAlbum('" + albumName + "')\">" + img_html + "</a>";
 				column.innerHTML = html;
-			
+				
+				column = row.insertCell(1);
+				column.innerHTML = "<div style=\"width:500\">"+galleryAlbums[i].description+"</div>";
+				
 				row = table.insertRow(lastRow++);
 				column = row.insertCell(0)
 				column.innerHTML = albumName;
Index: photark-ui/src/main/webapp/styles.css
===================================================================
--- photark-ui/src/main/webapp/styles.css	(revision 928381)
+++ photark-ui/src/main/webapp/styles.css	(working copy)
@@ -136,4 +136,4 @@
 	font-weight: bold;
 	color: #EEEEEE;
 	background-color: #558800;
-}
\ No newline at end of file
+}
Index: photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRAlbumImpl.java
===================================================================
--- photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRAlbumImpl.java	(revision 928381)
+++ photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRAlbumImpl.java	(working copy)
@@ -53,9 +53,9 @@
     private boolean initialized;
     private static Map<String, Album> albums = new HashMap<String, Album>();
 
-    public synchronized static Album createAlbum(JCRRepositoryManager repositoryManager, String name) {
+    public synchronized static Album createAlbum(JCRRepositoryManager repositoryManager, String name ) {
         if (!albums.containsKey(name)) {
-            albums.put(name, new JCRAlbumImpl(repositoryManager,name));
+            albums.put(name, new JCRAlbumImpl(repositoryManager,name ));
         }
         return albums.get(name);
     }
@@ -65,7 +65,7 @@
         this.name = name;
     }
 
-    /**
+	/**
      * Initialize the gallery service
      *   - During initialization, check for local images and create a JCR album 
      *     which is usefull for sample gallery shiped in the sample application.
@@ -136,7 +136,42 @@
         this.name = name;
         this.location = null;
     }
+    
+    public String getDescription() {
+    	String description="";
+    	if (!initialized) {
+            init();
+        }
+        try {
+            Session session = repositoryManager.getSession();
+            Node root = session.getRootNode();
+            Node albumNode = root.getNode(name);
+            description =albumNode.getProperty("description").getString();
+        } catch (Exception e) {
+            // FIXME: ignore for now
+            e.printStackTrace();
+        } finally {
+            //repositoryManager.releaseSession();
+        }
+        return description;
+    }
 
+    @Property
+    public void setDescription(String description) {
+        try {
+            Session session = repositoryManager.getSession();
+            Node root = session.getRootNode();
+            Node albumNode = root.getNode(name);
+            albumNode.setProperty("description", description);
+            session.save();
+        } catch (RepositoryException e) {
+            e.printStackTrace();
+        }  finally {
+            //repositoryManager.releaseSession();
+        }
+    
+    }
+
     public String getLocation() {
         if (location == null) {
             location = gallery + "/" + name + "/";
Index: photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRImageUploadServiceImpl.java
===================================================================
--- photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRImageUploadServiceImpl.java	(revision 928381)
+++ photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRImageUploadServiceImpl.java	(working copy)
@@ -129,13 +129,18 @@
             }
 
             String albumName = "";
+            String albumDescription= "";
             StringBuffer sb = new StringBuffer();
             while (fileItems.hasNext()) {
                 FileItem fileItem = fileItems.next();
-
                 if (fileItem.getFieldName().equalsIgnoreCase("albumName")) {
                     albumName = fileItem.getString();
                 }
+                
+                if (fileItem.getFieldName().equalsIgnoreCase("albumDescription")) {
+                	albumDescription = fileItem.getString();
+                }
+               
                 boolean isFormField = fileItem.isFormField();
                 
                 if (!isFormField) {
@@ -144,6 +149,7 @@
                     if(logger.isLoggable(Level.INFO)) {
                         logger.log(Level.INFO, "fileName:"+fileName);
                     }
+                    
 
                     InputStream inStream = new BufferedInputStream(fileItem.getInputStream());
                     List<Image> pictures = new ArrayList<Image>();
@@ -158,7 +164,7 @@
                     }
 
                     for (Image picture : pictures) {
-                        addPictureToAlbum(albumName, picture);
+                        addPictureToAlbum(albumName,albumDescription, picture);
                     }
                     sb.append("file=uploaded/" + fileName);
                     sb.append(",name=" + fileName);
@@ -181,10 +187,11 @@
      * @param albumName String
      * @param picture Picture
      */
-    private void addPictureToAlbum(String albumName, Image image) {
+    private void addPictureToAlbum(String albumName,String albumDescription, Image image) {
     	gallery.addAlbum(albumName);
         Album album = new JCRAlbumImpl(repositoryManager, albumName);
         album.addPicture(image);
+        album.setDescription(albumDescription);
     }
     
     /**
Index: photark-filesystem/src/main/java/org/apache/photark/filesystem/impl/AlbumImpl.java
===================================================================
--- photark-filesystem/src/main/java/org/apache/photark/filesystem/impl/AlbumImpl.java	(revision 928381)
+++ photark-filesystem/src/main/java/org/apache/photark/filesystem/impl/AlbumImpl.java	(working copy)
@@ -33,7 +33,7 @@
 public class AlbumImpl implements Album {
     private String name;
     private String location;
-    
+    private String description;    
     private boolean initialized;
     private List<String> pictures = new ArrayList<String>();
 
@@ -97,4 +97,12 @@
     public void deletePicture(Image picture){
         throw new UnsupportedOperationException("Not implemented");
     }
+
+	public String getDescription() {
+		return description;
+	}
+
+	public void setDescription(String description) {
+		this.description=description;
+	}
 }
\ No newline at end of file
Index: photark/src/main/java/org/apache/photark/services/album/Album.java
===================================================================
--- photark/src/main/java/org/apache/photark/services/album/Album.java	(revision 928381)
+++ photark/src/main/java/org/apache/photark/services/album/Album.java	(working copy)
@@ -29,6 +29,10 @@
     
     void setName(String name);
     
+    String getDescription();
+    
+    void setDescription(String description);
+    
     String getLocation();
     
     void setLocation(String location);
Index: photark/src/main/java/org/apache/photark/services/album/AlbumAgregator.java
===================================================================
--- photark/src/main/java/org/apache/photark/services/album/AlbumAgregator.java	(revision 928381)
+++ photark/src/main/java/org/apache/photark/services/album/AlbumAgregator.java	(working copy)
@@ -83,6 +83,14 @@
         throw new UnsupportedOperationException();
     }
     
+    public String getDescription(){
+        throw new UnsupportedOperationException();
+    }
+    
+    public void setDescription(String description){
+        throw new UnsupportedOperationException();
+    }
+    
     public String getLocation() {
         throw new UnsupportedOperationException();
     }
Index: photark-ui-admin/src/main/webapp/admin/upload.js
===================================================================
--- photark-ui-admin/src/main/webapp/admin/upload.js	(revision 928381)
+++ photark-ui-admin/src/main/webapp/admin/upload.js	(working copy)
@@ -80,6 +80,7 @@
 			displayProgress();
 			var selectAlbum = dojo.byId("selectAlbum");
 			var selected = selectAlbum.value;
+			var albumDescription= dojo.byId("albumDescription").value;
 			console.log("selected:"+selected);
 			if(selected == null || (selected != null && selected == "" && selected.length == 0)) {
 				alert("Photo Upload can not be started.Select Album before upload");
@@ -92,12 +93,12 @@
 					selectAlbum.options[selectAlbum.options.length] =  new Option(albumName, albumName, false, false);
 					//upload the files
 					setProgressbar(0,1);
-					uploader.upload({albumName:albumName});
+					uploader.upload({albumName:albumName, albumDescription:albumDescription});
 				}
 			} else {
 				//upload files to existent album
 				setProgressbar(0,1);
-				uploader.upload({albumName:selected});
+				uploader.upload({albumName:selected,albumDescription:albumDescription});
 			}
 			//dojo.byId("newAlbumName").value ="";
 		}
Index: photark-ui-admin/src/main/webapp/admin/upload.html
===================================================================
--- photark-ui-admin/src/main/webapp/admin/upload.html	(revision 928381)
+++ photark-ui-admin/src/main/webapp/admin/upload.html	(working copy)
@@ -82,17 +82,28 @@
 	}
 	
 	// only shows the new album field when "new album" is selected from the dropdown
-	function manageNewAlubField(){
+	function manageAlubFields(){
 		var selectAlbum = dojo.byId("selectAlbum");
 		var selected = selectAlbum.value;
 		if(selected == "New Album") {
 		dojo.byId("newAlbumName").style.display = "";
+		dojo.byId("albumDescription").value="";
 		}else{
 		dojo.byId("newAlbumName").style.display = "none";
+		gallery.getAlbums().addCallback( function(albums, exception) {
+			if(exception) {
+				alert(exception.msg);
+				return;
+			}
+			dojo.byId("albumDescription").value=albums[selectAlbum.selectedIndex-1].description;
+		});
 		}
 	}
 	
-	dojo.addOnLoad( function() { populateSelect(); });
+	dojo.addOnLoad( function() { 
+		populateSelect();
+		dojo.byId("albumDescription").value=""; 
+	});
 	
 </script>
 </head>
@@ -104,13 +115,13 @@
 		  <ol>
 			  <li>
 				  <label for="selectAlbum">Select Album:</label>
-				  <select  id="selectAlbum" name="selectAlbum" autoComplete="true" onChange="manageNewAlubField();"/>
+				  <select  id="selectAlbum" name="selectAlbum" autoComplete="true" onChange="manageAlubFields();"/>
 				  <label>New Album:</label>
 				  <input type="text" class="text" name="newAlbumName" id="newAlbumName">
 			  </li>
 			  <li>
 				  <label for="albumDescription">Album Description</label>
-				  <textarea cols="25" rows="5" class="textarea" name="albumDescription" id="albumDescription"/>
+				  <textarea cols="25" rows="5" class="textarea" name="albumDescription" id="albumDescription" />
 				  </textarea>
 			  </li>
               <li>
