diff --git a/input.php b/input.php
--- a/input.php
+++ b/input.php
@@ -50,7 +50,7 @@ elseif (!empty($_REQUEST['e']))
     $parent_schedule_id = (int)$_POST['postData']['parent_schedule_id'];
   }
 
-$my_hc = 'var slate_permutate_example_course_id = \'' . str_replace('\'', '\\\'', school_example_course_id($inputPage->get_school())) . '\';
+$my_hc = 'var slate_permutate_example_course_id = ' . json_encode(school_example_course_id($inputPage->get_school())) . ';
 
 jQuery(document).ready(
   function()
@@ -77,18 +77,18 @@ elseif ($errors_fix)
 	  if (empty($course['name']))
 	    $my_hc .= '    class_last = add_class();' . PHP_EOL;
 	  else
-	    $my_hc .= '    class_last = add_class_n(\'' . htmlentities($course['name'], ENT_QUOTES) . '\', \'' . htmlentities($title, ENT_QUOTES) . '\');' . PHP_EOL;
+	    $my_hc .= '    class_last = add_class_n(' . json_encode($course['name']) . ', ' . json_encode($title) . ');' . PHP_EOL;
 	  foreach ($course as $section)
 	    if (is_array($section))
-	      $my_hc .= '    add_section_n(class_last, \'' . htmlentities($section['letter'], ENT_QUOTES) . '\', \''
-		. htmlentities($section['synonym'], ENT_QUOTES) . '\', \'' . htmlentities($section['start'], ENT_QUOTES) . '\', \''
-		. htmlentities($section['end'], ENT_QUOTES) . '\', '
+	      $my_hc .= '    add_section_n(class_last, ' . json_encode($section['letter']) . ', '
+		. json_encode($section['synonym']) . ', ' . json_encode($section['start']) . ', '
+		. json_encode($section['end']) . ', '
 		. json_encode(array('m' => !empty($section['days'][0]), 't' => !empty($section['days'][1]), 'w' => !empty($section['days'][2]),
 				    'h' => !empty($section['days'][3]), 'f' => !empty($section['days'][4]),
 				    's' => !empty($section['days'][5])))
-		. ', \'' . htmlentities($section['professor'], ENT_QUOTES) . '\', \''
-		. htmlentities($section['location'], ENT_QUOTES) . '\', \''
-		. htmlentities($section['type'], ENT_QUOTES) . '\');' . PHP_EOL;
+		. ', ' . json_encode($section['professor']) . ', '
+		. json_encode($section['location']) . ', '
+		. json_encode($section['type']) . ');' . PHP_EOL;
 	  $my_hc .= PHP_EOL;
 	}
   }
@@ -187,7 +187,7 @@ if (!empty($_REQUEST['selectsemester']))
         echo 'value="' . htmlentities($_POST['postData']['name'], ENT_QUOTES) . '"';
     ?> />
   
-   
+   
   
 
 
@@ -253,8 +253,8 @@ function input_class_js(Course $course, 
   $title = $course->title_get();
   if (empty($title))
     $title = '';
-  $js = $whitespace . 'class_last = add_class_n(\'' . htmlentities($course->getName(), ENT_QUOTES) . '\', \''
-    . htmlentities($title, ENT_QUOTES) . "');\n";
+  $js = $whitespace . 'class_last = add_class_n(' . json_encode($course->getName()) . ', '
+    . json_encode($title) . ');' . PHP_EOL;
 
   $nsections  = $course->getnsections();
   for ($section_key = $nsections - 1; $section_key >= 0; $section_key --)
@@ -263,15 +263,15 @@ function input_class_js(Course $course, 
       $meetings = $section->getMeetings();
       foreach ($meetings as $meeting)
 	{
-	  $js .= $whitespace . 'add_section_n(class_last, \'' . htmlentities($section->getLetter(), ENT_QUOTES) . '\', \''
-	    . htmlentities($section->getSynonym(), ENT_QUOTES) . '\', \''
-	    . $meeting->getStartTime() . '\', \''
-	    . $meeting->getEndTime() . '\', '
+	  $js .= $whitespace . 'add_section_n(class_last, ' . json_encode($section->getLetter()) . ', '
+	    . json_encode($section->getSynonym()) . ', '
+	    . json_encode($meeting->getStartTime()) . ', '
+	    . json_encode($meeting->getEndTime()) . ', '
 	    . json_encode(array('m' => $meeting->getDay(0), 't' => $meeting->getDay(1), 'w' => $meeting->getDay(2), 'h' => $meeting->getDay(3), 'f' => $meeting->getDay(4),
-				's' => $meeting->getDay(5))) . ', \''
-	    . htmlentities($section->getProf(), ENT_QUOTES) . '\', \''
-	    . htmlentities($meeting->getLocation(), ENT_QUOTES) . '\',\''
-	    . htmlentities($meeting->type_get(), ENT_QUOTES) . "');\n";
+				's' => $meeting->getDay(5))) . ', '
+	    . json_encode($section->getProf()) . ', '
+	    . json_encode($meeting->getLocation()) . ','
+	    . json_encode($meeting->type_get()) . ');' . PHP_EOL;
 	}
     }
 
diff --git a/scripts/scheduleInput.js b/scripts/scheduleInput.js
--- a/scripts/scheduleInput.js
+++ b/scripts/scheduleInput.js
@@ -60,91 +60,6 @@ var slate_permutate_course_free = -1;
  */
 
 /**
- * \brief
- * Returns the common inputs for each new section.
- */
-function genSectionHtml(cnum)
-{
-    genSectionHtml_n(cnum, '', '', '', '', '', '', '');
-}
-
-/* @TODO: This should select & set items based on args, if the args != '' */
-function genSectionHtml_n(cnum, name, synonym, stime, etime, days, prof, location, type)
-{
-    var snum = last_section_i ++;
-		
-		var cssclasses = 'section class' + cnum;
-		if(type == 'lab') {
-		    cssclasses += ' lab';
-		}
-		
-		var result = ' ';
-	        result = result + ' ';
-		result = result + ' ';
-		result = result + ' ' +
-		    genOptionHtml("0700", "7:00 am", stime) + genOptionHtml("0730", "7:30 am", stime) +
-		    genOptionHtml("0800", "8:00 am", stime) + genOptionHtml("0830", "8:30 am", stime) +
-		    genOptionHtml("0900", "9:00 am", stime) + genOptionHtml("0930", "9:30 am", stime) +
-		    genOptionHtml("1000", "10:00 am", stime) + genOptionHtml("1030", "10:30 am", stime) +
-		    genOptionHtml("1100", "11:00 am", stime) + genOptionHtml("1130", "11:30 am", stime) +
-		    genOptionHtml("1200", "12:00 pm", stime) + genOptionHtml("1230", "12:30 pm", stime) +
-		    genOptionHtml("1300", "1:00 pm", stime) + genOptionHtml("1330", "1:30 pm", stime) +
-		    genOptionHtml("1400", "2:00 pm", stime) + genOptionHtml("1430", "2:30 pm", stime) +
-		    genOptionHtml("1500", "3:00 pm", stime) + genOptionHtml("1530", "3:30 pm", stime) +
-		    genOptionHtml("1600", "4:00 pm", stime) + genOptionHtml("1630", "4:30 pm", stime) +
-		    genOptionHtml("1700", "5:00 pm", stime) + genOptionHtml("1730", "5:30 pm", stime) +
-		    genOptionHtml("1800", "6:00 pm", stime) + genOptionHtml("1830", "6:30 pm", stime) +
-		    genOptionHtml("1900", "7:00 pm", stime) + genOptionHtml("1930", "7:30 pm", stime) +
-		    genOptionHtml("2000", "8:00 pm", stime) + genOptionHtml("2030", "8:30 pm", stime) +
-		    genOptionHtml("2100", "9:00 pm", stime);
-
-		if (stime.length > 0)
-		    {
-			var stime_end = stime.substr(2);
-			if (stime_end != '00' && stime_end != '30')
-			    result = result + genOptionHtml(stime, prettyTime(stime), stime);
-		    }
-
-		result = result + ' \
-			 ' +
-		    genOptionHtml("0720", "7:20 am", etime) + genOptionHtml("0750", "7:50 am", etime) +
-		    genOptionHtml("0820", "8:20 am", etime) + genOptionHtml("0850", "8:50 am", etime) +
-		    genOptionHtml("0920", "9:20 am", etime) + genOptionHtml("0950", "9:50 am", etime) +
-		    genOptionHtml("1020", "10:20 am", etime) + genOptionHtml("1050", "10:50 am", etime) +
-		    genOptionHtml("1120", "11:20 am", etime) + genOptionHtml("1150", "11:50 am", etime) +
-		    genOptionHtml("1220", "12:20 pm", etime) + genOptionHtml("1250", "12:50 pm", etime) +
-		    genOptionHtml("1320", "1:20 pm", etime) + genOptionHtml("1350", "1:50 pm", etime) +
-		    genOptionHtml("1420", "2:20 pm", etime) + genOptionHtml("1450", "2:50 pm", etime) +
-		    genOptionHtml("1520", "3:20 pm", etime) + genOptionHtml("1550", "3:50 pm", etime) +
-		    genOptionHtml("1620", "4:20 pm", etime) + genOptionHtml("1650", "4:50 pm", etime) +
-		    genOptionHtml("1720", "5:20 pm", etime) + genOptionHtml("1750", "5:50 pm", etime) +
-		    genOptionHtml("1820", "6:20 pm", etime) + genOptionHtml("1850", "6:50 pm", etime) +
-		    genOptionHtml("1920", "7:20 pm", etime) + genOptionHtml("1950", "7:50 pm", etime) +
-		    genOptionHtml("2020", "8:20 pm", etime) + genOptionHtml("2050", "8:50 pm", etime) +
-		    genOptionHtml("2120", "9:20 pm", etime);
-
-		if (etime.length > 0)
-		    {
-			var etime_end = etime.substr(2);
-			if (etime_end != '50' && etime_end != '20')
-			    result = result + genOptionHtml(etime, prettyTime(etime), etime);
-		    }
-
-		result = result + ' \
-			 \
-			 \
-			 \
-			 \
-			 \
-			 ';
-		result = result + '
' +
-		    ' ' +
-		    ' ' +
-		    '  ';
-		return result;
-	}
-
-/**
  * Outputs an   element. It will inlcude selected="selected"
  * if the value param equals the test_value param.
  */
@@ -189,11 +104,94 @@ function addTips()
  */
 function add_section_n(cnum, name, synonym, stime, etime, days, prof, location, type)
 {
-    jQuery('.pclass'+cnum).after(genSectionHtml_n(cnum, name, synonym, stime, etime, days, prof, location, type));
+    var snum = last_section_i ++;
+    var cssclasses = 'section class' + cnum;
+
+    if(type == 'lab')
+	cssclasses += ' lab';
+
+    var section_html = ' ' +
+	' ' +
+	' ' +
+	' ' +
+	genOptionHtml("0700", "7:00 am", stime) + genOptionHtml("0730", "7:30 am", stime) +
+	genOptionHtml("0800", "8:00 am", stime) + genOptionHtml("0830", "8:30 am", stime) +
+	genOptionHtml("0900", "9:00 am", stime) + genOptionHtml("0930", "9:30 am", stime) +
+	genOptionHtml("1000", "10:00 am", stime) + genOptionHtml("1030", "10:30 am", stime) +
+	genOptionHtml("1100", "11:00 am", stime) + genOptionHtml("1130", "11:30 am", stime) +
+	genOptionHtml("1200", "12:00 pm", stime) + genOptionHtml("1230", "12:30 pm", stime) +
+	genOptionHtml("1300", "1:00 pm", stime) + genOptionHtml("1330", "1:30 pm", stime) +
+	genOptionHtml("1400", "2:00 pm", stime) + genOptionHtml("1430", "2:30 pm", stime) +
+	genOptionHtml("1500", "3:00 pm", stime) + genOptionHtml("1530", "3:30 pm", stime) +
+	genOptionHtml("1600", "4:00 pm", stime) + genOptionHtml("1630", "4:30 pm", stime) +
+	genOptionHtml("1700", "5:00 pm", stime) + genOptionHtml("1730", "5:30 pm", stime) +
+	genOptionHtml("1800", "6:00 pm", stime) + genOptionHtml("1830", "6:30 pm", stime) +
+	genOptionHtml("1900", "7:00 pm", stime) + genOptionHtml("1930", "7:30 pm", stime) +
+	genOptionHtml("2000", "8:00 pm", stime) + genOptionHtml("2030", "8:30 pm", stime) +
+	genOptionHtml("2100", "9:00 pm", stime);
+
+    if (stime.length > 0)
+    {
+	var stime_end = stime.substr(2);
+	if (stime_end != '00' && stime_end != '30')
+	    section_html = section_html + genOptionHtml(stime, prettyTime(stime), stime);
+    }
+
+    section_html = section_html + ' \
+ ' +
+	genOptionHtml("0720", "7:20 am", etime) + genOptionHtml("0750", "7:50 am", etime) +
+	genOptionHtml("0820", "8:20 am", etime) + genOptionHtml("0850", "8:50 am", etime) +
+	genOptionHtml("0920", "9:20 am", etime) + genOptionHtml("0950", "9:50 am", etime) +
+	genOptionHtml("1020", "10:20 am", etime) + genOptionHtml("1050", "10:50 am", etime) +
+	genOptionHtml("1120", "11:20 am", etime) + genOptionHtml("1150", "11:50 am", etime) +
+	genOptionHtml("1220", "12:20 pm", etime) + genOptionHtml("1250", "12:50 pm", etime) +
+	genOptionHtml("1320", "1:20 pm", etime) + genOptionHtml("1350", "1:50 pm", etime) +
+	genOptionHtml("1420", "2:20 pm", etime) + genOptionHtml("1450", "2:50 pm", etime) +
+	genOptionHtml("1520", "3:20 pm", etime) + genOptionHtml("1550", "3:50 pm", etime) +
+	genOptionHtml("1620", "4:20 pm", etime) + genOptionHtml("1650", "4:50 pm", etime) +
+	genOptionHtml("1720", "5:20 pm", etime) + genOptionHtml("1750", "5:50 pm", etime) +
+	genOptionHtml("1820", "6:20 pm", etime) + genOptionHtml("1850", "6:50 pm", etime) +
+	genOptionHtml("1920", "7:20 pm", etime) + genOptionHtml("1950", "7:50 pm", etime) +
+	genOptionHtml("2020", "8:20 pm", etime) + genOptionHtml("2050", "8:50 pm", etime) +
+	genOptionHtml("2120", "9:20 pm", etime);
+
+    if (etime.length > 0)
+    {
+	var etime_end = etime.substr(2);
+	if (etime_end != '50' && etime_end != '20')
+	    section_html = section_html + genOptionHtml(etime, prettyTime(etime), etime);
+    }
+
+    section_html = section_html + ' \
+ \
+ \
+ \
+ \
+ \
+ ' +
+	'
' +
+	' ' +
+	' ' +
+	'  ';
+
+
+    jQuery('.pclass' + cnum).after(section_html);
     sectionsOfClass[cnum] ++;
 
+    var section_tr = jQuery('.pclass' + cnum).next();
     /* store course_i in a place the newly added section will look for it */
-    jQuery('.pclass' + cnum).next().data({course_i: cnum});
+    section_tr.data({course_i: cnum});
+
+    /*
+     * Store data into the newly created HTML. With this method we
+     * have to _avoid_ escaping entities in the text we're setting as
+     * values because the DOM stuff will escape it for us.
+     */
+    section_tr.find('.section-letter-entry').val(name);
+    section_tr.find('.section-synonym-entry').val(synonym);
+    section_tr.find('.profName').val(prof);
+    section_tr.find('.section-location-entry').val(location);
+    section_tr.find('.section-type-entry').val(type);
 
     /* unhide the saturday columns if it's used by autocomplete data */
     if (days.s)
@@ -255,19 +253,22 @@ function add_sections(cnum, data)
  *   The javascript-local course entry identifying number.
  */
 function add_class_n(course_id, title)
-	{
-	    /*
-	     * If we're adding a course entry form with preadded
-	     * content, first remove the empty course.
-	     */
-	    if (course_id.length && slate_permutate_course_free != -1)
-		course_remove(slate_permutate_course_free);
+{
+    /*
+     * If we're adding a course entry form with preadded
+     * content, first remove the empty course.
+     */
+    if (course_id.length && slate_permutate_course_free != -1)
+	course_remove(slate_permutate_course_free);
 
-		sectionsOfClass[classNum] = 0; // Initialize at 0
-		jQuery('#jsrows').append('
+  ');
+    sectionsOfClass[classNum] = 0; // Initialize at 0
+    jQuery('#jsrows').append('
+  ');
 
 		/* store classNum as course_i into the  : */
-		jQuery('#tr-course-' + classNum).data({course_i: classNum});
+    var tr_course = jQuery('#tr-course-' + classNum);
+    tr_course.data({course_i: classNum});
+    tr_course.find('.course-title-entry').val(title);
+    tr_course.find('.className').val(course_id);
 
 		var class_elem = jQuery('.className' + classNum);