+sub off_for_holidays {
+ my %class = @_;
+ $class{'duration'} =~ /(\d\d\d\d)(\d\d)(\d\d)-(\d\d\d\d)(\d\d)(\d\d)/;
+ my $days = Delta_Days($1,$2,$3,$4,$5,$6);
+ my $firstday = Date::Calc->new($1,$2,$3);
+ my $lastday = Date::Calc->new($4,$5,$6);
+ my $year = Date::Calendar::Year->new($1, $opts{'holidays'});
+ my @holidays=();
+ my @days=();
+ foreach(split(" ",$class{days})) {
+ $days[Decode_Day_of_Week($_)] = 1;
+ }
+ foreach ($year->search("")) {
+ my $good=1;
+ #foreach my $x ($year->labels($_)) {
+ # $good=0 if ($x =~ /Veteran/ or $x =~ /President/);
+ #}
+ next unless ($year->is_full($_) && $_>=$firstday && $_<=$lastday);
+ push @holidays, $_
+ if (defined($days[Day_of_Week($_->date)]) && $good > 0);
+ }
+ return wantarray ? @holidays : "@holidays";
+}
+
+sub off_for_exams {
+ my %class = @_;
+ my $time = $class{'begin'} . "-" . $class{'end'};
+ $class{'duration'} =~ /\d{8}-(\d\d\d\d)(\d\d)(\d\d)/;
+ my $lastday = Date::Calc->new($1,$2,$3);
+ return wantarray ? () : undef unless (Day_of_Week($lastday->date) == 7);
+ my $beginning="(08:00-09:15|11:00-12:15|14:00-15:15|17:00-18:15|17:30-18:45|20:00-21:15|20:30-21:45)";
+ my $ending ="(06:30-07:45|09:30-10:45|12:30-13:45|15:30-16:45|18:30-19:45|19:00-20:15)";
+ my $days = join(" ",map {Decode_Day_of_Week($_)} split(/ /, $class{'days'}));
+ if($days eq "1 3") {
+ if($time =~ /$beginning/) {
+ return $lastday-4;
+ } elsif($time =~ /$ending/) {
+ return $lastday-6;
+ }
+ } elsif($days eq "2 4") {
+ if($time =~ /$beginning/) {
+ return $lastday-3;
+ } elsif($time =~ /$ending/) {
+ return $lastday-5;
+ }
+ } elsif($days eq "5") {
+ return $lastday-2;
+ }
+ return wantarray ? () : "";
+}
+
+sub capitalize {
+ local $_ = shift || "";
+ s/ +$//;
+ s/\b([A-Z])([A-Z]*)\b/$1\L$2/g;
+ s/\b(I)(i*)\b/$1\U$2/g;
+ s/\bUs\b/US/g;
+ s/ (And|For|Of|Or|The|To|With) / \l$1 /g;
+ s/\b(Mc)([a-z])/$1\u$2/g;
+ s/\b(Tcp\/Ip|Pc)\b/\U$&/g;
+ s/\bThru\b/Through/g;
+ s/\bAcct\b/Accounting/g;
+ s/\bAmer\b/American/g;
+ s/\bChem\b/Chemistry/g;
+ s/\bComp\b/Composition/g;
+ s/\bFed\b/Federal/g;
+ s/\bGen\b/General/g;
+ s/\bIntro\b/Introduction/g;
+ s/\bPrgm\b/Programming/g;
+ s/\bOp Sys\b/Operating System/g;
+ #s/\bGovt\b/Government/g;
+ s/\bLit\b/Literature/g;
+ s/\bPrin\b/Principles/g;
+ s/\bBus\b/Business/g;
+ return $_;
+}
+
+sub get_schedule_terms {
+ my (@sterms, @a);
+ if($opts{school} eq 'tamuk') {
+ @a=('F','S','1','2');
+ } else {
+ @a=('1','2','3','4');
+ }