Index: src/webapp/fluid-components/js/fluid/Uploader.js
===================================================================
--- src/webapp/fluid-components/js/fluid/Uploader.js	(revision 5255)
+++ src/webapp/fluid-components/js/fluid/Uploader.js	(working copy)
@@ -1052,7 +1052,26 @@
 	var hideNow = function(which){
         $(which).fadeOut('slow');
     };      
+	
+	var initARIA = function(container){
+		container.ariaRole("progressbar");
+		container.ariaState("valuemin","0");
+		container.ariaState("valuemax","100");
+		container.ariaState("live","assertive");
+		container.ariaState("busy","false");
+		container.ariaState("valuenow","0");
+	}
     
+	var updateARIA = function(container, percent){
+		
+		if (percent < 100 && percent > 0) {
+			container.ariaState("busy","true");			
+		} else {
+			container.ariaState("busy","false");
+		}
+		container.ariaState("valuenow",percent);	
+	}
+	
 	 /* Constructor */
 	fluid.Progress = function (options) {
 		this.minWidth = 5;
@@ -1066,7 +1085,10 @@
 		this.totalProgressElm.width(this.minWidth);
 		
 		this.fileProgressElm.hide();
-		this.totalProgressElm.hide();
+		this.totalProgressElm.hide();	
+		
+		initARIA(this.totalProgressContainer);	
+
 	};
 	
 	fluid.Progress.prototype.init = function(fileRowSelector){
@@ -1088,7 +1110,7 @@
 		this.fileProgressElm.show();
 	};
 	
-	fluid.Progress.prototype.updateProgress = function(which, percent, text, dontAnimate) {
+	fluid.Progress.prototype.updateProgress = function(which, percent, text, dontAnimate) {			
 		if (which === 'file') {
 			setProgress(percent, text, this.fileProgressElm, this.currRowElm, this.fileTextElm, dontAnimate);
 		} else {
@@ -1114,6 +1136,7 @@
 		} else {
 			animateToWidth(progressElm,newWidth);
 		}
+		updateARIA(containerElm, percent);
 	};
         
     fluid.Progress.prototype.hide = function(dontPause) {
Index: src/webapp/tests/fluid-tests/js/ProgressTests.js
===================================================================
--- src/webapp/tests/fluid-tests/js/ProgressTests.js	(revision 5255)
+++ src/webapp/tests/fluid-tests/js/ProgressTests.js	(working copy)
@@ -103,6 +103,55 @@
 			 msg = "After total progress update to the context of the total progress string should be &quot;" + text + "&quot;";
 			jqUnit.assertEquals(msg, text, $(options.totalText).html());
         });
+		
+		progressTests.test("ARIA initialization", function() {
+			// ensure nothing exists before
+			var container = $("#progress-container .total-progress-container");
+			jqUnit.assertFalse("Before Init: role should not exist",container.ariaRole());
+			jqUnit.assertFalse("Before Init: valuemin should not exist",container.ariaState("valuemin"));
+			jqUnit.assertFalse("Before Init: valuemax should not exist",container.ariaState("valuemax"));
+			jqUnit.assertFalse("Before Init: valuenow should not exist",container.ariaState("valuenow"));
+			jqUnit.assertFalse("Before Init: busy should not exist",container.ariaState("busy"));
+			jqUnit.assertFalse("Before Init: live should not exist",container.ariaState("live"));
+			
+			// test for live, role, valuemin, valuemax after
+			createProgressBar();
+			jqUnit.assertEquals("After Init: role should be ", "progressbar",container.ariaRole());
+			jqUnit.assertEquals("After Init: valuemin should be ", "0", container.ariaState("valuemin"));
+			jqUnit.assertEquals("After Init: valuemax should be ", "100", container.ariaState("valuemax"));
+			jqUnit.assertEquals("After Init: valuenow should be ", "0", container.ariaState("valuenow"));
+			jqUnit.assertEquals("After Init: live should be ", "assertive", container.ariaState("live"));
+			jqUnit.assertEquals("After Init: busy should be ", "false", container.ariaState("busy"));
 
+		});
+		progressTests.test("ARIA update", function() {
+			var container = $("#progress-container .total-progress-container");
+			createProgressBar();
+			jqUnit.assertEquals("Start: busy should be ", "false", container.ariaState("busy"));
+			jqUnit.assertEquals("Start: valuenow should be ", "0", container.ariaState("valuenow"));
+			
+			var updateValue;
+			
+			updateValue = 10;
+			progressBar.updateProgress("total",updateValue,"Some Text",true); 
+			
+			jqUnit.assertEquals("Working: busy should be ", "true", container.ariaState("busy"));
+			jqUnit.assertEquals("Working: valuenow should be ", updateValue, container.ariaState("valuenow"));
+
+
+			updateValue = 50;
+			progressBar.updateProgress("total",updateValue,"Some Text",true); 
+			
+			jqUnit.assertEquals("Working: busy should be ", "true", container.ariaState("busy"));
+			jqUnit.assertEquals("Working: valuenow should be ", updateValue, container.ariaState("valuenow"));
+
+			updateValue = 100;
+			progressBar.updateProgress("total",updateValue,"Some Text",true); 
+			
+			jqUnit.assertEquals("Done: busy should be ", "false", container.ariaState("busy"));
+			jqUnit.assertEquals("Done: valuenow should be ", updateValue, container.ariaState("valuenow"));
+			
+		});
+
     });
 }) (jQuery);
Index: src/webapp/tests/fluid-tests/Progress-test.html
===================================================================
--- src/webapp/tests/fluid-tests/Progress-test.html	(revision 5255)
+++ src/webapp/tests/fluid-tests/Progress-test.html	(working copy)
@@ -7,6 +7,7 @@
         
         <!--  These are the required javascript modules for the Uploader -->
         <script src="../../fluid-components/js/jquery/jquery-1.2.6.js" type="text/javascript"></script>ript>
+	    <script src="../../fluid-components/js/jquery/jARIA.js" type="text/javascript"></script>
 	    <script src="../../fluid-components/js/jquery/ui.core.js" type="text/javascript"></script>
     	<script src="../../fluid-components/js/swfupload/swfupload.js" type="text/javascript"></script>
 	    <script src="../../fluid-components/js/fluid/Fluid.js" type="text/javascript"></script>
