From 3ef0fc1b36b0ecaee7a446abe915b901dd046b79 Mon Sep 17 00:00:00 2001
From: Tim Steiner <tsteiner2@unl.edu>
Date: Fri, 11 Jun 2010 20:48:03 +0000
Subject: [PATCH] Supplemental

---
 document_root/javascript/courses/edit.js | 39 ++++++++++++++++--------
 1 file changed, 27 insertions(+), 12 deletions(-)

diff --git a/document_root/javascript/courses/edit.js b/document_root/javascript/courses/edit.js
index a47e4d35..74b44957 100644
--- a/document_root/javascript/courses/edit.js
+++ b/document_root/javascript/courses/edit.js
@@ -536,8 +536,11 @@ function handleChangeDfRemoval()
 	}
 }
 
-function doesCrosslistExist(subject, courseNumber, courseLetter)
+function doesCrosslistExist(subject, courseNumber, courseLetter, includeMarkedForRemoval)
 {
+	if (includeMarkedForRemoval === null) {
+		includeMarkedForRemoval = false;
+	}
 	var itDoes = false;
 	$('#crosslistingsTable tr').each(function(index) {
 		if ($(this).attr('class') == 'hidden_new_record') {
@@ -550,7 +553,8 @@ function doesCrosslistExist(subject, courseNumber, courseLetter)
 		
 		if (courseCodeInputs[0].value == subject &&
 			courseCodeInputs[1].value == courseNumber &&
-			courseCodeInputs[2].value == courseLetter) {
+			courseCodeInputs[2].value == courseLetter &&
+			(!$(this).find('input:last').attr('checked') || includeMarkedForRemoval)) {
 			itDoes = index;
 		}
 	})
@@ -571,7 +575,7 @@ function handleChangeDeliveryMethods()
 		case 'Web':
 			var crosslistExists = doesCrosslistExist(subject, courseNumber, 'X');
 			
-			if (this.checked && !crosslistExists) {
+			if (this.checked && crosslistExists === false) {
 				message = 'Web delivered courses must have a crosslisting ending in an X.  It will be created now.';
 				addCrosslist = true;
 			} else if (!this.checked && crosslistExists !== false) {
@@ -595,17 +599,28 @@ function handleChangeDeliveryMethods()
     	    	},
     	    	'Ok': function() {
     	    		if (addCrosslist) {
-    	    			$('[alt=Add Crosslisting]').parent().click();
-    	    			var crosslistingRows = $('#crosslistingsTable tr');
-    	    			var newCrosslistingRow = $(crosslistingRows[crosslistingRows.length - 3]);
-    	    			var newCrosslistingInputs = newCrosslistingRow.find('input.courseCodeInput');
-    	    			document.foobar = newCrosslistingInputs;
-    	    			$(newCrosslistingInputs[0]).val(subject);
-    	    			$(newCrosslistingInputs[1]).val(courseNumber);
-    	    			$(newCrosslistingInputs[2]).val('X');
+    	    			var markedCrosslistExists = doesCrosslistExist(subject, courseNumber, 'X', true);
+    	    			if (markedCrosslistExists === false) {
+	    	    			$('[alt=Add Crosslisting]').parent().click();
+	    	    			var crosslistingRows = $('#crosslistingsTable tr');
+	    	    			var newCrosslistingRow = $(crosslistingRows[crosslistingRows.length - 3]);
+	    	    			var newCrosslistingInputs = newCrosslistingRow.find('input.courseCodeInput');
+	    	    			$(newCrosslistingInputs[0]).val(subject);
+	    	    			$(newCrosslistingInputs[1]).val(courseNumber);
+	    	    			$(newCrosslistingInputs[2]).val('X');
+    	    			} else {
+    	    				$('#crosslistingsTable tr:eq(' + markedCrosslistExists + ') input[type=checkbox]').attr('checked', false);
+    	    			}
     	    		}
     	    		if (removeCrosslist !== false) {
-    	    			$('#crosslistingsTable tr:eq(' + removeCrosslist + ') a').click()
+    	    			var removeLink = $('#crosslistingsTable tr:eq(' + removeCrosslist + ') a');
+    	    			if (removeLink) {
+    	    				removeLink.click();
+    	    			}
+    	    			var removeCheckbox = $('#crosslistingsTable tr:eq(' + removeCrosslist + ') input[type=checkbox]');
+    	    			if (removeCheckbox) {
+    	    				removeCheckbox.attr('checked', true);
+    	    			}
     	    		}
     	    		$(this).dialog('close');
     	    	}
-- 
GitLab