protected static int compareViaClass(
            ViewItemClass class1, DateTime dateCreated1, DateTime actualDate1,
            ViewItemClass class2, DateTime dateCreated2, DateTime actualDate2)
        {
            if (class1 == null || class2 == null || class1 == class2)
            {
                return(dateCreated1.CompareTo(dateCreated2));
            }

            ViewItemSchedule schedule1 = findSchedule(class1, actualDate1);
            ViewItemSchedule schedule2 = findSchedule(class2, actualDate2);

            //if both schedules missing, group by class
            if (schedule1 == null && schedule2 == null)
            {
                return(class1.CompareTo(class2));
            }

            //if the other schedule is missing, this item should go first
            if (schedule2 == null)
            {
                return(-1);
            }

            //if this schedule is missing, the other item should go first
            if (schedule1 == null)
            {
                return(1);
            }

            //get the comparison of their start times
            int comp = schedule1.StartTime.TimeOfDay.CompareTo(schedule2.StartTime.TimeOfDay);

            //if they started at the same time, use the updated time
            if (comp == 0)
            {
                return(dateCreated1.CompareTo(dateCreated2));
            }

            return(comp);
        }