diff --git a/application/controllers/RequestController.php b/application/controllers/RequestController.php
index 9562103e35bb87d5e131fe2181e9375932f86d6a..93f9117f0ef0d4fa139b1660a2af9c12fdb092da 100755
--- a/application/controllers/RequestController.php
+++ b/application/controllers/RequestController.php
@@ -612,6 +612,7 @@ class RequestController extends Nmc_Controller_Action
         $view->addCssFile('/ooss/request/course_id');
         $view->addJsFile('/tinymce/jscripts/tiny_mce/tiny_mce.js');
         $view->addJsFile('/javascript/mce.js');
+        $view->addJsFile('/javascript/request/courseId.js');
 
         $view->course = $course;
         $view->request = $request;
diff --git a/application/views/request/course_id.xhtml b/application/views/request/course_id.xhtml
index 89a06f000cb729d4bf75143d29ee6d19a10289a0..5893b82a856721b2e4a02e599ae4374f7c91bc80 100644
--- a/application/views/request/course_id.xhtml
+++ b/application/views/request/course_id.xhtml
@@ -1,15 +1,15 @@
 <fieldset class="three_column">
     <label>
         <h2>Subject</h2>
-        <input type="text" name="subject" value="<?php echo htmlspecialchars($this->course->subject); ?>" />
+        <input type="text" name="subject" id="subject" value="<?php echo htmlspecialchars($this->course->subject); ?>" />
     </label>
     <label>
         <h2>Course Number</h2>
-        <input type="text" name="courseNumber" value="<?php echo htmlspecialchars($this->course->courseNumber); ?>" />
+        <input type="text" name="courseNumber" id="courseNumber" value="<?php echo htmlspecialchars($this->course->courseNumber); ?>" />
     </label>
     <label>
         <h2>Alpha Suffix (opt.)</h2>
-        <input type="text" name="courseLetter" value="<?php echo htmlspecialchars($this->course->courseLetter); ?>" />
+        <input type="text" name="courseLetter" id="courseLetter" value="<?php echo htmlspecialchars($this->course->courseLetter); ?>" />
     </label>
 </fieldset>
 <fieldset class="one_column">
diff --git a/document_root/javascript/request/courseId.js b/document_root/javascript/request/courseId.js
new file mode 100644
index 0000000000000000000000000000000000000000..c0439dbcef89b5875a334f1557cba880cf5ddb2f
--- /dev/null
+++ b/document_root/javascript/request/courseId.js
@@ -0,0 +1,65 @@
+addLoadEvent(onCourseIdLoad);
+
+function onCourseIdLoad()
+{
+    var subjectNode = document.getElementById('subject');
+    subjectNode.previousValue = subjectNode.value;
+    subjectNode.onchange = handleChangeSubject;
+    document.getElementById('courseNumber').onchange = handleChangeCourseNumber;
+    document.getElementById('courseLetter').onchange = handleChangeCourseLetter;
+}
+
+
+
+function handleChangeSubject()
+{
+    var previousSubject = this.previousValue;
+    var currentSubject = this.value;
+
+    this.previousValue = currentSubject;
+
+    var gradTieInRows = getElementsByClass('grad_tie_in_row');
+    var noChange = false;
+    for (var i = 0; i != gradTieInRows.length; i++) {
+        var gradTieInRow = gradTieInRows[i];
+        var gradNode = gradTieInRows[i].childNodes[3].childNodes[1];
+
+        if (gradNode.value == currentSubject) {
+            noChange = true;
+        }
+    }
+
+    if (noChange) {
+        return;
+    }
+
+    for (var i = 0; i != gradTieInRows.length; i++) {
+        var gradNode = gradTieInRows[i].childNodes[1].childNodes[1];
+
+        if (gradNode.value == previousSubject) {
+            gradNode.value = currentSubject;
+        }
+    }
+
+}
+
+function handleChangeCourseNumber()
+{
+    var gradNumber = 800 + (this.value % 100);
+    var gradTieInRows = getElementsByClass('grad_tie_in_row');
+    for (var i = 0; i != gradTieInRows.length; i++) {
+
+        gradTieInRows[i].childNodes[3].childNodes[1].value = gradNumber;
+    }
+}
+
+
+function handleChangeCourseLetter()
+{
+    var gradLetter = this.value;
+    var gradTieInRows = getElementsByClass('grad_tie_in_row');
+    for (var i = 0; i != gradTieInRows.length; i++) {
+
+        gradTieInRows[i].childNodes[5].childNodes[1].value = gradLetter;
+    }
+}
\ No newline at end of file