diff --git a/application/modules/courses/controllers/EditController.php b/application/modules/courses/controllers/EditController.php
index 640a4525b4898c432f3107142a7689b55ddef603..8deb25282bb3065f89b8d48cc6f3b39eb8a9374a 100644
--- a/application/modules/courses/controllers/EditController.php
+++ b/application/modules/courses/controllers/EditController.php
@@ -36,12 +36,7 @@ class Courses_EditController extends App_Controller_Action
         $errors = array();
 
         if (!in_array($request->getType(), array('RemoveCourse', 'AddACEToCourse', 'RemoveACEFromCourse'))) {
-            if ($this->_courseCodeIsAvailable($course, $in->subject, $in->courseNumber, $in->courseLetter)) {
-                $course->setCourseCode($in->subject, $in->courseNumber, $in->courseLetter);
-            } else {
-                $errors['courseCode'] = 'The course code ' . $in->subject . ' ' . $in->courseNumber . $in->courseLetter
-                                      . ' is not available.';
-            }
+            $course->setCourseCode($in->subject, $in->courseNumber, $in->courseLetter);
 	        $course->setTitle($in->title);
 	        if (Unl_Util::isArray($in->crosslistings)) {
 		        foreach ($in->crosslistings as $id => $crosslisting) {
@@ -57,11 +52,6 @@ class Courses_EditController extends App_Controller_Action
 		        	if ($crosslisting->delete == 'yes') {
 		        		$course->removeCrosslisting($id);
 		        	} else {
-		        	    if (!$this->_courseCodeIsAvailable($course, $crosslisting->subject, $crosslisting->courseNumber, $crosslisting->courseLetter)) {
-                            $errors['crosslistings'][] = 'The course code ' . $crosslisting->subject . ' ' . $crosslisting->courseNumber . $crosslisting->courseLetter
-                                                       . ' is not available.';
-		        	        continue;
-		        	    }
 		        	    if ($crosslisting->action == 'edit') {
     		        	    $course->editCrosslisting($id, $crosslisting->type, $crosslisting->subject, $crosslisting->courseNumber, $crosslisting->courseLetter);
     		        	} else {
@@ -339,4 +329,29 @@ class Courses_EditController extends App_Controller_Action
         
         return true;
     }
+    
+    protected function isCourseCodeAvailableAction()
+    {
+        $in = $this->_getAllParams();
+        
+        $session = new Zend_Session_Namespace('Edit Request');
+        $course = $session->course;
+        
+        $available = $this->_courseCodeIsAvailable($course, $in['subject'], $in['courseNumber'], $in['courseLetter']);
+        
+        $dom = new DOMDocument();
+        $root = $dom->createElement('response');
+        $dom->appendChild($root);
+        if ($available) {
+            $responseNode = $dom->createElement('true');
+        } else {
+            $responseNode = $dom->createElement('false');
+        }
+        $root->appendChild($responseNode);
+        
+        header('Content-type: text/xml');
+        echo $dom->saveXML();
+        
+        exit;
+    }
 }
diff --git a/application/modules/courses/views/scripts/edit/index.phtml b/application/modules/courses/views/scripts/edit/index.phtml
index 3bdf675d93165b9d9871af2b5b06200f215cac2e..9444f4f702c43e850b8a1043b14b2e432855a551 100644
--- a/application/modules/courses/views/scripts/edit/index.phtml
+++ b/application/modules/courses/views/scripts/edit/index.phtml
@@ -16,17 +16,13 @@
 <div class="main_section">
 <h2>Course ID</h2>
 
-    <?php if ($this->errors['courseCode']) { ?>
-    <div class="error">
-        <?php echo $this->errors['courseCode']; ?>
-    </div>
-    <?php } ?>
     <fieldset class="three_column" id="courseId">
         <div class="column">
             <label for="subject" class="required">Subject:</label>
             <input type="text"
                    id="subject"
                    name="subject"
+                   class="courseCodeInput"
                    value="<?php echo htmlentities($this->course->getSubject(), ENT_COMPAT, 'UTF-8'); ?>" />
         </div>
 
@@ -36,6 +32,7 @@
             <input type="text"
                    id="courseNumber"
                    name="courseNumber"
+                   class="courseCodeInput"
                    value="<?php echo htmlentities($this->course->getCourseNumber(), ENT_COMPAT, 'UTF-8'); ?>" />
         </div>
 
@@ -44,6 +41,7 @@
             <input type="text"
                    id="courseLetter"
                    name="courseLetter"
+                   class="courseCodeInput"
                    value="<?php echo htmlentities($this->course->getCourseLetter(), ENT_COMPAT, 'UTF-8'); ?>" />
         </div>
 
@@ -62,14 +60,6 @@
     <fieldset class="three_column">
         <h3>Crosslistings</h3>
         
-        <?php if ($this->errors['crosslistings']) { ?>
-        <div class="error">
-            <?php foreach ($this->errors['crosslistings'] as $error) { ?>
-            <?php echo $error; ?><br />
-            <?php } ?>
-        </div>
-        <?php } ?>
-        
         <table>
             <?php $hasTieIn = false;
             foreach($this->course->getCrosslistings() as $key => $crosslist) {
@@ -83,16 +73,19 @@
                             <?php if($crosslist['type'] == 'grad tie-in') { ?>readonly=""<?php } ?>/>
                      <input type="text"
                             name="crosslistings[<?php echo $key; ?>][subject]"
+                            class="courseCodeInput"
                             value="<?php echo $crosslist['subject']; ?>"
                             <?php if($crosslist['type'] == 'grad tie-in') { ?>readonly=""<?php } ?>/> </td>
                 <th> Course Number: </th>
                 <td> <input type="text"
                             name="crosslistings[<?php echo $key; ?>][courseNumber]"
+                            class="courseCodeInput"
                             value="<?php echo $crosslist['courseNumber']; ?>"
                             <?php if($crosslist['type'] == 'grad tie-in') { ?>readonly=""<?php } ?> /> </td>
                 <th> Course Letter: </th>
                 <td> <input type="text"
                             name="crosslistings[<?php echo $key; ?>][courseLetter]"
+                            class="courseCodeInput"
                             value="<?php echo $crosslist['courseLetter']; ?>"
                             <?php if($crosslist['type'] == 'grad tie-in') { ?>readonly=""<?php } ?> /> </td>
                 <td class="hidden">
@@ -110,11 +103,11 @@
             <?php } } ?>
             <tr class="hidden_new_record">
                 <th> Subject: </th>
-                <td> <input disabled="disabled" type="text" name="crosslistings[__key__][subject]" /> </td>
+                <td> <input disabled="disabled" type="text" class="courseCodeInput" name="crosslistings[__key__][subject]" /> </td>
                 <th> Course Number: </th>
-                <td> <input disabled="disabled" type="text" name="crosslistings[__key__][courseNumber]" /> </td>
+                <td> <input disabled="disabled" type="text" class="courseCodeInput" name="crosslistings[__key__][courseNumber]" /> </td>
                 <th> Course Letter: </th>
-                <td> <input disabled="disabled" type="text" name="crosslistings[__key__][courseLetter]" /> </td>
+                <td> <input disabled="disabled" type="text" class="courseCodeInput" name="crosslistings[__key__][courseLetter]" /> </td>
                 <td class="hidden"> <input disabled="disabled" type="hidden" name="crosslistings[__key__][type]" value="crosslisting" /> </td>
                 <td> <a href="#" class="remove_record_button">Remove</a> </td>
             </tr>
diff --git a/document_root/javascript/courses/edit.js b/document_root/javascript/courses/edit.js
index 64c3b5836bf88a691f08cd7e372d4492d3889f57..70dd5ca89bacad8ed176f9117eff24872d404413 100644
--- a/document_root/javascript/courses/edit.js
+++ b/document_root/javascript/courses/edit.js
@@ -53,6 +53,11 @@ function onEditWrapperLoad()
             }
         }
     }
+    
+    var courseCodeInputs = getElementsByClass('courseCodeInput');
+    for (var i = 0; i != courseCodeInputs.length; i++) {
+        courseCodeInputs[i].onchange = handleCourseCodeInputChange;
+    }
 
 }
 
@@ -113,6 +118,12 @@ function handleAddRecord()
         newNode.className = 'grad_tie_in_row';
     }
 
+
+    var courseCodeInputs = getElementsByClass('courseCodeInput');
+    for (var i = 0; i != courseCodeInputs.length; i++) {
+        courseCodeInputs[i].onchange = handleCourseCodeInputChange;
+    }
+    
     return false;
 }
 
@@ -251,3 +262,47 @@ function enforceMaximumSelectionCount(inputNodes, toggledInput, maxSelected, hid
         }
     }
 }
+
+function handleCourseCodeInputChange()
+{
+    var courseCodeNodes = this.parentNode.parentNode.getElementsByTagName('input');
+    var ajax = new courseCodeAvailableAjaxResponder();
+    ajax.subjectNode = courseCodeNodes[0];
+    ajax.courseNumberNode = courseCodeNodes[1];
+    ajax.courseLetterNode = courseCodeNodes[2];
+    ajax.sendRequest(ajax.getUrl());
+}
+
+var courseCodeAvailableAjaxResponder = AjaxClient.extend(
+{
+    subjectNode: null,
+    courseNumberNode: null,
+    courseLetterNode: null,
+
+    processResponse: function() {
+        if(this.requestObject.responseXML.childNodes[0].childNodes[0].nodeName == 'true') {
+            return;
+        }
+        
+        var message = 'The course code ' 
+                    + this.subjectNode.value + ' ' + this.courseNumberNode.value + this.courseLetterNode.value
+                    + ' belongs to an active course.  Clik OK if you are you sure you want to continue.';
+        
+        if (confirm(message)) {
+            return;
+        }
+        
+        this.subjectNode.value = '';
+        this.courseNumberNode.value = '';
+        this.courseLetterNode.value = '';
+    },
+
+    getUrl: function() {
+        return baseUrl
+             + '/courses/edit/is-course-code-available'
+             + '/subject/' + this.subjectNode.value
+             + '/courseNumber/' + this.courseNumberNode.value
+             + '/courseLetter/' + this.courseLetterNode.value; 
+    }
+});
+