diff --git a/lib/scripts/linkwiz.js b/lib/scripts/linkwiz.js
index 01deb2234e57f13f0523846ce2bfb4fa6d4beb46..ce4b6b1015e1c9c2f9b5b083f9701a5e8b28ec66 100644
--- a/lib/scripts/linkwiz.js
+++ b/lib/scripts/linkwiz.js
@@ -119,6 +119,20 @@ linkwiz = {
         if(obj){
             linkwiz.deselect();
             obj.className += ' selected';
+
+            // make sure the item is viewable in the scroll view
+            // FIXME check IE compatibility
+            if(obj.offsetTop > linkwiz.result.scrollTop + linkwiz.result.clientHeight){
+                linkwiz.result.scrollTop += obj.clientHeight;
+            }else if(obj.offsetTop - linkwiz.result.clientHeight < linkwiz.result.scrollTop){ // this works but isn't quite right, fixes welcome
+                linkwiz.result.scrollTop -= obj.clientHeight;
+            }
+            // now recheck - if still not in view, the user used the mouse to scroll
+            if( (obj.offsetTop > linkwiz.result.scrollTop + linkwiz.result.clientHeight) ||
+                (obj.offsetTop < linkwiz.result.scrollTop) ){
+                obj.scrollIntoView();
+            }
+
             linkwiz.selected = num;
         }
     },