diff --git a/class.schedule.php b/class.schedule.php
new file mode 100644
--- /dev/null
+++ b/class.schedule.php
@@ -0,0 +1,528 @@
+nclasses = 0;
+        $this->scheduleName = $n; 
+    }
+    
+	//--------------------------------------------------
+	// Adds a new class to the schedule.
+	//--------------------------------------------------
+	function addClass($n)
+    {
+        $this->classStorage[$this->nclasses] = new Classes($n);
+        $this->nclasses++;
+    }
+
+	//--------------------------------------------------
+	// Adds a section to the desired class.
+	//--------------------------------------------------
+    function addSection($n, $l, $s, $e, $d)
+    {
+        $found = false;
+        $counter = 0;
+      
+        while(!$found && ($counter < $this->nclasses))
+        {
+			$temp = $this->classStorage[$counter]->getName();
+			
+			if((strcmp($temp,$n)) == 0)
+            {
+				$found = true;
+            } else {
+				$counter++;
+			}
+		}
+		
+		if($counter == $this->nclasses)
+		{
+			echo "Could not find class: " . $n . "
";
+        } else {
+			$p = "unknown prof";
+            $this->classStorage[$counter]->addSection($l, $p, $s, $e, $d);
+        }
+    }
+
+	//--------------------------------------------------
+	// Finds all of the possible permutations and stores
+	// the results in the storage array.
+	//--------------------------------------------------
+	function findPossibilities()
+	{
+        $this->possiblePermutations = 1;
+		$position = 0;
+		$counter = 0;
+
+        for($i = 0; $i < $this->nclasses; $i++)
+        {
+			$this->possiblePermutations = $this->possiblePermutations * $this->classStorage[$i]->getnsections();
+			$cs[$i] = 0;	// Sets the counter array to all zeroes.
+        }
+        
+		// Checks for conflicts in given classes, stores if none found
+        do
+        {
+			$conflict = false;
+			$upCounter = 0;
+         
+			// Get first class to compare
+			while($upCounter < $this->nclasses)
+			{
+				$downCounter = $this->nclasses-1;
+				while($downCounter > $upCounter)
+				{
+					$start1 = $this->classStorage[$upCounter]->getSection($cs[$upCounter])->getStartTime();
+					$end1 = $this->classStorage[$upCounter]->getSection($cs[$upCounter])->getEndTime();
+					$start2 = $this->classStorage[$downCounter]->getSection($cs[$downCounter])->getStartTime();
+					$end2 = $this->classStorage[$downCounter]->getSection($cs[$downCounter])->getEndTime();
+					
+					// If the two times overlap, then check if days overlap.
+					if(!$conflict && ((($start1 >= $start2) && ($start1 <= $end2)) || (($start2 >= $start1) && ($start2 <= $end1))))
+					{
+						// Monday
+						if(!$conflict && ($this->classStorage[$upCounter]->getSection($cs[$upCounter])->getM() == $this->classStorage[$downCounter]->getSection($cs[$downCounter])->getM()))
+						{
+							$conflict = true;
+						}
+						
+						// Tuesday
+						if(!$conflict && ($this->classStorage[$upCounter]->getSection($cs[$upCounter])->getTu() == $this->classStorage[$downCounter]->getSection($cs[$downCounter])->getTu()))
+						{
+							$conflict = true;
+						}
+						
+						// Wednesday
+						if(!$conflict && ($this->classStorage[$upCounter]->getSection($cs[$upCounter])->getW() == $this->classStorage[$downCounter]->getSection($cs[$downCounter])->getW()))
+						{
+							$conflict = true;
+						}
+						
+						// Thursday
+						if(!$conflict && ($this->classStorage[$upCounter]->getSection($cs[$upCounter])->getTh() == $this->classStorage[$downCounter]->getSection($cs[$downCounter])->getTh()))
+						{
+							$conflict = true;
+						}
+						
+						// Friday
+						if(!$conflict && ($this->classStorage[$upCounter]->getSection($cs[$upCounter])->getF() == $this->classStorage[$downCounter]->getSection($cs[$downCounter])->getF()))
+						{
+							$conflict = true;
+						}
+					}
+               
+					$downCounter--;
+				}
+				
+				$upCounter++;
+            }
+            
+			// Store to storage if no conflict is found.
+			if(!$conflict)
+			{
+				for($i = 0; $i < $this->nclasses; $i++)
+				{
+					$this->storage[$this->nPermutations][$i] = $cs[$i];
+				}
+				$this->nPermutations++;
+			}
+			
+			// Increase the counter by one to get the next combination of class sections.
+			$cs[$position] = $cs[$position] + 1;
+			
+			// Check to make sure the counter is still valid.
+			$valid = false;
+			while(!$valid)
+			{
+				if($cs[$position] == $this->classStorage[$position]->getnsections())
+				{
+					$cs[$position] = 0;
+
+					$position++;
+					
+					// This is for the very last permutation. Even 
+					// though the combination is not actually true
+					// the larger while loop will end before any 
+					// new combinations are performed.
+					if($position == $this->nclasses)
+					{
+						$valid = true;
+					} else {
+						$cs[$position]++;
+					}
+				} else {
+					$valid = true;
+					$position = 0;
+				}
+            }
+            
+			$counter++;
+		} while($counter < $this->possiblePermutations);
+	}
+    
+	//--------------------------------------------------
+	// Prints out the possible permutations in tables.
+	//--------------------------------------------------
+	function writeoutTables()
+	{
+		$table = "";
+		$header = "";
+		$footer = "";
+		$M = -1;
+		$Tu = -1;
+		$W = -1;
+		$Th = -1;
+		$F = -1;
+		$filled = false;
+		$time = array(700,730,800,830,900,930,1000,1030,1100,1130,1200,1230,1300,1330,1400,1430,1500,1530,1600,1630,1700,1730,1800,1830,1900,1930,2000,2030,2100,2130, 2200);
+
+		// Reminder:
+		// border-style:top right bottom left
+		$header .= "
There were a total of " . $this->possiblePermutations . " possible permutations. Only " . $this->nPermutations . " permutations had no class conflicts.
". + + "\n\n| " . ($i+1) . " | \n\t\tMonday | \n\t\tTuesday | \n\t\tWednesday | \n\t\tThursday | \n\t\tFriday | \n\t||||||||||||||||||||
| " . $this->prettyTime($time[$r]) . " | "; + + //---------------MONDAY--------------- + for($j = 0; $j < $this->nclasses; $j++) + { + if($M == -1) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getM()) + { + if(($this->classStorage[$j]->getSection($this->storage[$i][$j])->getStartTime() >= $time[$r]) && ($this->classStorage[$j]->getSection($this->storage[$i][$j])->getStartTime() < $time[$r+1])) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getEndTime() > $time[$r+1]) + { + $table .= "\n\t\t" . $this->classStorage[$j]->getName() . " " . $this->classStorage[$j]->getSection($this->storage[$i][$j])->getLetter() . " | "; + $M = $j; + $filled = true; + } else { + $table .= "\n\t\t" . $this->classStorage[$j]->getName() . " " . $this->classStorage[$j]->getSection($this->storage[$i][$j])->getLetter() . " | "; + $filled = true; + } + } + } + } else { + if($j == $M) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getEndTime() > $time[$r+1]) + { + $table .= "\n\t\t"; + $filled = true; + } else { + $table .= "\n\t\t | "; + $M = -1; + $filled = true; + } + } + } + } + + // If the cell was not filled, fill it with an empty cell. + if(!$filled) + { + $table .= "\n\t\t | "; + } + $filled = false; + + //---------------TUESDAY--------------- + for($j = 0; $j < $this->nclasses; $j++) + { + if($Tu == -1) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getTu()) + { + if(($this->classStorage[$j]->getSection($this->storage[$i][$j])->getStartTime() >= $time[$r]) && ($this->classStorage[$j]->getSection($this->storage[$i][$j])->getStartTime() < $time[$r+1])) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getEndTime() > $time[$r+1]) + { + $table .= "\n\t\t | " . $this->classStorage[$j]->getName() . " " . $this->classStorage[$j]->getSection($this->storage[$i][$j])->getLetter() . " | "; + $Tu = $j; + $filled = true; + } else { + $table .= "\n\t\t" . $this->classStorage[$j]->getName() . " " . $this->classStorage[$j]->getSection($this->storage[$i][$j])->getLetter() . " | "; + $filled = true; + } + } + } + } else { + if($j == $Tu) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getEndTime() > $time[$r+1]) + { + $table .= "\n\t\t"; + $filled = true; + } else { + $table .= "\n\t\t | "; + $Tu = -1; + $filled = true; + } + } + } + } + + // If the cell was not filled, fill it with an empty cell. + if(!$filled) + { + $table .= "\n\t\t | "; + } + $filled = false; + + //---------------WEDNESDAY--------------- + for($j = 0; $j < $this->nclasses; $j++) + { + if($W == -1) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getW()) + { + if(($this->classStorage[$j]->getSection($this->storage[$i][$j])->getStartTime() >= $time[$r]) && ($this->classStorage[$j]->getSection($this->storage[$i][$j])->getStartTime() < $time[$r+1])) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getEndTime() > $time[$r+1]) + { + $table .= "\n\t\t | " . $this->classStorage[$j]->getName() . " " . $this->classStorage[$j]->getSection($this->storage[$i][$j])->getLetter() . " | "; + $W = $j; + $filled = true; + } else { + $table .= "\n\t\t" . $this->classStorage[$j]->getName() . " " . $this->classStorage[$j]->getSection($this->storage[$i][$j])->getLetter() . " | "; + $filled = true; + } + } + } + } else { + if($j == $W) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getEndTime() > $time[$r+1]) + { + $table .= "\n\t\t"; + $filled = true; + } else { + $table .= "\n\t\t | "; + $W = -1; + $filled = true; + } + } + } + } + + // If the cell was not filled, fill it with an empty cell. + if(!$filled) + { + $table .= "\n\t\t | "; + } + $filled = false; + + //---------------THURSDAY--------------- + for($j = 0; $j < $this->nclasses; $j++) + { + if($Th == -1) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getTh()) + { + if(($this->classStorage[$j]->getSection($this->storage[$i][$j])->getStartTime() >= $time[$r]) && ($this->classStorage[$j]->getSection($this->storage[$i][$j])->getStartTime() < $time[$r+1])) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getEndTime() > $time[$r+1]) + { + $table .= "\n\t\t | " . $this->classStorage[$j]->getName() . " " . $this->classStorage[$j]->getSection($this->storage[$i][$j])->getLetter() . " | "; + $Th = $j; + $filled = true; + } else { + $table .= "\n\t\t" . $this->classStorage[$j]->getName() . " " . $this->classStorage[$j]->getSection($this->storage[$i][$j])->getLetter() . " | "; + $filled = true; + } + } + } + } else { + if($j == $Th) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getEndTime() > $time[$r+1]) + { + $table .= "\n\t\t"; + $filled = true; + } else { + $table .= "\n\t\t | "; + $Th = -1; + $filled = true; + } + } + } + } + + // If the cell was not filled, fill it with an empty cell. + if(!$filled) + { + $table .= "\n\t\t | "; + } + $filled = false; + + //---------------FRIDAY--------------- + for($j = 0; $j < $this->nclasses; $j++) + { + if($F == -1) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getF()) + { + if(($this->classStorage[$j]->getSection($this->storage[$i][$j])->getStartTime() >= $time[$r]) && ($this->classStorage[$j]->getSection($this->storage[$i][$j])->getStartTime() < $time[$r+1])) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getEndTime() > $time[$r+1]) + { + $table .= "\n\t\t | " . $this->classStorage[$j]->getName() . " " . $this->classStorage[$j]->getSection($this->storage[$i][$j])->getLetter() . " | "; + $F = $j; + $filled = true; + } else { + $table .= "\n\t\t" . $this->classStorage[$j]->getName() . " " . $this->classStorage[$j]->getSection($this->storage[$i][$j])->getLetter() . " | "; + $filled = true; + } + } + } + } else { + if($j == $F) + { + if($this->classStorage[$j]->getSection($this->storage[$i][$j])->getEndTime() > $time[$r+1]) + { + $table .= "\n\t\t"; + $filled = true; + } else { + $table .= "\n\t\t | "; + $F = -1; + $filled = true; + } + } + } + } + + // If the cell was not filled, fill it with an empty cell. + if(!$filled) + { + $table .= "\n\t\t | "; + } + $filled = false; + + // End of row + $table .= "\n\t | 
There are no possible schedules. Please try again.
'; + } + } + + //-------------------------------------------------- + // Changes the title of the page. + //-------------------------------------------------- + function changeTitle($t) + { + $this->title = $t; + } + + //-------------------------------------------------- + // Make the time "pretty." + //-------------------------------------------------- + function prettyTime($t){ + if($t > 1259) + { + $t = ($t-1200); + return substr($t, 0, strlen($t)-2) . ":" . substr($t, strlen($t)-2, strlen($t)) . " PM"; + } else { + return substr($t, 0, strlen($t)-2) . ":" . substr($t, strlen($t)-2, strlen($t)) . " AM"; + } + } + +} + +?> \ No newline at end of file