Index: src/webapp/fluid-components/js/fluid/Reorderer.js
===================================================================
--- src/webapp/fluid-components/js/fluid/Reorderer.js	(revision 5041)
+++ src/webapp/fluid-components/js/fluid/Reorderer.js	(working copy)
@@ -561,12 +561,40 @@
         this.domNode.ariaState ("activedescendent", anItem.id);
     };
     
+    var buildFnFromSelector = function (selector, container) {
+        return function () {
+            return jQuery(selector, container);
+        };
+    };
+    
+    var buildFindItems = function (itemSelectors, container) {
+        var itemFinder = function () {};
+        var findItems = {};
+        
+        if (typeof itemSelectors === 'string') {
+            return buildFnFromSelector(itemSelectors, container);
+        } 
+        
+        findItems.movables = buildFnFromSelector(itemSelectors.movables, container);
+        if (itemSelectors.selectables) {
+            findItems.selectables = buildFnFromSelector(itemSelectors.selectables, container);
+        }
+        if (itemSelectors.dropTargets) {
+            findItems.dropTargets = buildFnFromSelector(itemSelectors.dropTargets, container);
+        }
+        if (itemSelectors.grabHandle) {
+            findItems.grabHandle = function (item) {
+                return jQuery(itemSelectors.grabHandle, item);            
+            };
+        }
+            
+        return findItems;
+    };
+    
     // Simplified API for reordering lists and grids.
     var simpleInit = function (containerSelector, itemSelector, layoutHandlerFn, orderChangedCallback, options) {
         var container = jQuery(containerSelector);
-        var itemFinder = function () {
-            return jQuery(itemSelector, container);
-        };
+        var itemFinder = buildFindItems(itemSelector, container);
         
         var lOptions = options || {};
         lOptions.orderChangedCallback = orderChangedCallback;
Index: src/webapp/tests/fluid-tests/js/ReorderListTests.js
===================================================================
--- src/webapp/tests/fluid-tests/js/ReorderListTests.js	(revision 5041)
+++ src/webapp/tests/fluid-tests/js/ReorderListTests.js	(working copy)
@@ -60,4 +60,63 @@
         
     });    
 
+    tests.test ("reorderList with multi selectors", function () {
+        var selectors = {
+            movables: ".orderable",
+            selectables: "li", 
+            dropTargets: "li" 
+        };
+
+        var listReorderer = fluid.reorderList("#list2", selectors, callbackConfirmer);
+        
+        var item1 = jQuery("#list2item1").focus();
+        var item2 = jQuery("#list2item2");
+        var item3 = jQuery("#list2item3");
+        var item4 = jQuery("#list2item4");
+        var downArrow = fluid.testUtils.createEvtDownArrow(); 
+        var ctrlDownArrow = fluid.testUtils.createEvtCtrlDownArrow();
+
+        jqUnit.assertTrue("focus on item1", item1.hasClass ("orderable-selected"));
+/*
+ * There is currently a bug where we don't originally put the 'default' class onto things that are
+ * selectable but not movable. After they get focus and then lose focus they will have the 'default' style.
+ * Once this bug is fixed the following line should be uncommented
+ */
+//        jqUnit.assertTrue("focus on item1 - item2 should be default", item2.hasClass ("orderable-default"));
+        jqUnit.assertFalse("focus on item1 - item2 should not be selected", item2.hasClass ("orderable-selected"));
+        jqUnit.assertFalse("order hasn't change", orderChangedCallbackWasCalled);
+
+        listReorderer.handleDirectionKeyDown(downArrow);
+        jqUnit.assertTrue("down arrow to item2 - item1 should be default", item1.hasClass ("orderable-default"));
+        jqUnit.assertTrue("down arrow to item2 - item2 should be selected", item2.hasClass ("orderable-selected"));
+        jqUnit.assertFalse("order shouldn't change", orderChangedCallbackWasCalled);
+        
+        listReorderer.handleDirectionKeyDown(ctrlDownArrow);
+        var items = jQuery("li", jQuery("#list2"));
+        jqUnit.assertEquals("after ctrl-down on non-movable, expect order 1, 2, 3, 4", "list2item1", items[0].id);
+        jqUnit.assertEquals("after ctrl-down on non-movable, expect order 1, 2, 3, 4", "list2item2", items[1].id);
+        jqUnit.assertEquals("after ctrl-down on non-movable, expect order 1, 2, 3, 4", "list2item3", items[2].id);
+        jqUnit.assertEquals("after ctrl-down on non-movable, expect order 1, 2, 3, 4", "list2item4", items[3].id);
+        jqUnit.assertFalse("after ctrl-down on non-movable, order shouldn't change", orderChangedCallbackWasCalled);
+
+        listReorderer.handleDirectionKeyDown(downArrow);
+        jqUnit.assertTrue("down arrow to item3 - item2 should be default", item2.hasClass ("orderable-default"));
+        jqUnit.assertTrue("down arrow to item3 - item3 should be selected", item3.hasClass ("orderable-selected"));
+        jqUnit.assertFalse("order shouldn't change", orderChangedCallbackWasCalled);
+
+        listReorderer.handleDirectionKeyDown(ctrlDownArrow);
+        items = jQuery("li", jQuery("#list2"));
+        jqUnit.assertEquals("after ctrl-down on movable, expect order 1, 2, 4, 3", "list2item1", items[0].id);
+        jqUnit.assertEquals("after ctrl-down on movable, expect order 1, 2, 4, 3", "list2item2", items[1].id);
+        jqUnit.assertEquals("after ctrl-down on movable, expect order 1, 2, 4, 3", "list2item4", items[2].id);
+/*
+ * There is currently a bug in the keyboard reordering: when a selectable is a drop targets but is not movable 
+ * the item being moved is placed after the next movable item rather then after the next selectable item.
+ * When the bug is fixed, the next line should be uncommented and the line following should be removed.
+ */
+//        jqUnit.assertEquals("after ctrl-down on movable, expect order 1, 2, 4, 3", "list2item3", items[3].id);
+        jqUnit.assertEquals("after ctrl-down on movable, expect order 1, 2, 4, 3", "list2item3", items[4].id);
+        jqUnit.assertTrue("after ctrl-down on movable, order should change", orderChangedCallbackWasCalled);
+
+    });
 });
Index: src/webapp/tests/fluid-tests/List-test.html
===================================================================
--- src/webapp/tests/fluid-tests/List-test.html	(revision 5041)
+++ src/webapp/tests/fluid-tests/List-test.html	(working copy)
@@ -4,7 +4,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" lang="en-ca">
   <head>
     <title>List Layout Handler Tests</title>
-    <link href="../markup-examples.css" type="text/css" rel="stylesheet" media="all" />
+    <link href="../../sample-code/reorderer/markup-examples.css" type="text/css" rel="stylesheet" media="all" />
 
     <!--  These are the required javascript modules for the Reorderer
           eventually to be replaced with a single build generated file -->
@@ -17,7 +17,6 @@
     <script type="text/javascript" src="../../fluid-components/js/jquery/jARIA.js"></script>
     <script type="text/javascript" src="../../fluid-components/js/fluid/Fluid.js"></script>
     <script type="text/javascript" src="../../fluid-components/js/fluid/Reorderer.js"></script>
-    <script type="text/javascript" src="../../fluid-components/js/firebuglite/firebug.js"></script>
 
     <!--  These are the jqUnit test files -->
     <link rel="Stylesheet" media="screen" href="../jqUnit/testsuite.css" />
@@ -57,7 +56,7 @@
       </ul>
     </div>
 
-    <h1>Unordered List No Reorderer </h1>
+    <h1>Unordered List</h1>
     <div id="list2" class="reorderer_container">
       <p>This is an example of an unordered list that is visually laid out
          vertically.
@@ -63,19 +62,18 @@
          vertically.
       </p>
       <ul>
-        <li class="orderable">An Item 1</li>
-        <li>An Item 2</li>
-        <li class="orderable">An Item 3</li>
-        <li>An Item 4</li>
-        <li class="orderable">An Item 5</li>
-        <li class="orderable">An Item 6</li>
-        <li class="orderable">An Item 7</li>
-        <li class="orderable">An Item 8</li>
-        <li>An Item 9</li>
-        <li class="orderable">An Item 10</li>
+        <li id="list2item1" class="orderable">An Item 1</li>
+        <li id="list2item2">An Item 2</li>
+        <li id="list2item3" class="orderable">An Item 3</li>
+        <li id="list2item4">An Item 4</li>
+        <li id="list2item5" class="orderable">An Item 5</li>
+        <li id="list2item6" class="orderable">An Item 6</li>
+        <li id="list2item7" class="orderable">An Item 7</li>
+        <li id="list2item8" class="orderable">An Item 8</li>
+        <li id="list2item9">An Item 9</li>
+        <li id="list2item10" class="orderable">An Item 10</li>
       </ul>
     </div>
-
     </div>
   </body>
 </html>
