so yeah, i had to create some code to determine what the last business day of the month is each month dynamically so that we could have a link and some text go away for the last business day. this task seemed super easy till they started throwing in things like, if the last business day is on a monday, then make it so the link and text goes away for saturday sunday and monday, making friday the real last business day. then take into consideration, if a holiday is on the last business day (dont think there actually are any). so, this is the crazy opject i built out to get a list of dates that will get the last day of the month, the last business day and any days between so that i can remove the link and text for any of the days found in the array.

PHP Code:
class lastBusinessDay {
    
    private 
$today;
    
    public function 
__construct($today) {
        
        
//$today = "2011-10-15";
        
        // IF NO DATE WAS SET, GET TODAYS DATE
        
if ($today == null) {
            
$this->today         date("Y-m-d");//"2011-01-25";
        
} else {
            
$this->today         $today;
        }
        
        
//return $this->today;
        
        //return $this->lastBusinessDay($this->today);
        //return $this->getLastDay($this->today);
        
    
}
    
    
    public function 
getLastDay() {
        
        
// GET THE LAST DAY OF THE CURRENT MONTH BASED ON TODAYS DATE
        
$dayArray       $this->findDay($this->today);
        
        
//print_r($dayArray);
        
        // GET THE VARIABLES FROM THE LAST DAY OF THE MONTH ARRAY THAT WAS RETURNED
        
$day            $dayArray[0];
        
$nDay           $dayArray[1];
        
$yr             $dayArray[2];
        
$month          $dayArray[3];
        
$nMonth         $dayArray[4];
        
        
// LIST OF HOLIDAY DATES
        
$newYears       $this->format_date($yr11);         // NEW YEAR'S DAY
        
$newYearsO      $this->observed_day($yr11);        // NEW YEAR'S DAY OBSERVED
        
$mlk            $this->get_holiday($yr113);      // MARTIN LUTHER KING DAY
        
$val            $this->format_date($yr214);        // VALENTINE'S DAY
        
$pres           $this->get_holiday($yr213);      // PRESEDENT'S DAY
        
$stPatricks     $this->format_date($yr317);        // ST. PATRICK'S DAY
        
$easter         $this->calculate_easter($yr);          // EASTER SUNDAY
        
$cdMayo         $this->format_date($yr55);         // CINCO DE MAYO
        
$memorial       $this->get_holiday($yr51);         // MEMORIAL DAY
        
$independence   $this->format_date($yr74);         // INDEPENDENCE DAY
        
$independenceO  $this->observed_day($yr74);        // INDEPENDENCE DAY OBSERVED
        
$labor          $this->get_holiday($yr911);      // LABOR DAY
        
$columbus       $this->get_holiday($yr1012);     // COLUMBUS DAY
        
$halloween      $this->format_date($yr1031);       // HALLOWEEN
        
$veterans       $this->format_date($yr1111);       // VETERAN'S DAY
        
$thanksgiving   $this->get_holiday($yr1144);     // THANKSGIVING
        
$christmas      $this->format_date($yr1225);       // CHRISTMAS
        
        // OUR OBSERVED HOLIDAYS FOR FREELIFE
        
$holidays       = array(
                                
$newYearsO,
                                
$memorial,
                                
$independenceO,
                                
$labor,
                                
$thanksgiving,
                                
$christmas
                            
);
        
        
// GET THE CURRENT LAST DAY BEING RETURNED
        
$lastDay "{$yr}-{$nMonth}-{$nDay}";
        
        
// IF THE LAST DAY OF THE MONTH IS A HOLIDAY, LETS TAKE ONE DAY OFF
        
if ( in_array($lastDay$holidays) ) {
            
$nMonth         $nMonth 1;
            
$nDay           $nDay 1;
            if (
$day == 'sun') {
                
$day    'sat';
            } elseif (
$day == 'mon') {
                
$day    'sun';
            } elseif (
$day == 'tue') {
                
$day    'mon';
            } elseif (
$day == 'wed') {
                
$day    'tue';
            } elseif (
$day == 'thu') {
                
$day    'wed';
            } elseif (
$day == 'fri') {
                
$day    'thu';
            } elseif (
$day == 'sat') {
                
$day    'fri';
            }
        }
        
        
// NOW WE WILL SEE IF THE LAST DAY IS ON A WEEKEND
        // IF IS IT, WE WILL RESET THE LAST WORKABLE DAY TO FRIDAY
        
if ($day == 'sat') {
            
$nDay   $nDay 1;
        } elseif (
$day == 'sun') {
            
$nDay   $nDay 2;
        } elseif (
$day == 'mon') {
            
$nDay   $nDay 2;
        } else {
            
$nDay   $nDay;
        }
        
        
$dayBeforeLast "{$yr}-{$nMonth}-{$nDay}";
        
        
$start  $dayBeforeLast;
        
$end    $lastDay;
        
$dateDiff $this->date_diff($start,$end);
        
//print_r($dateDiff);
        
        
$lastWorkDay $nDay;
        
$lastMonthDay $dayArray[1];
        
        
$datesArray = array();
        
$datesArray["last_day"]        = $lastDay;
        
$datesArray["last_busi"]    = $dayBeforeLast;
        
        if (
$lastMonthDay != $lastWorkDay) {
                
                for(
$i=$lastWorkDay$i<=$lastMonthDay$i++) {
                        if (
$lastWorkDay != $i && $lastMonthDay != $i) {
                                
$datesArray["id{$i}"]    = "{$yr}-{$nMonth}-{$i}";
                        }
                }
                
        }
        
        
//print_r($datesArray);
        
        // RETURN WHAT THE LAST WORK DAY HAS BEEN CALCULATED TO
        //return $day . ', ' . $month . ' ' . $nDay . ', ' . $yr;
        
return $datesArray;
        
    }
    
    
    
// FORMAT THE RETURNED DATE
    
private function format_date($year$month$day) {
        
        
// PAD SINGLE DIGIT MONTH/DAY WITH A LEADING ZERO FOR CONSITENCY
        // AND FORMAT DATE AS DESIRED: YYYY-MM-DD BY DEFAULT
        
if (strlen($month) == 1) {
            
$month "0"$month;
        }
        if (
strlen($day) == 1) {
            
$day "0"$day;
        }
        
        
$today $year ."-"$month ."-"$day;
        return 
$today;
    
    }
    
    
// FIND THE LAST DAY OF THE MONTH FROM ANY GIVEN DATE
    
private function findDay($today=null) {
        
        list(
$yr,$mn,$dt)   = explode('-',$today);    // separate year, month and date
        
$timeStamp          mktime(0,0,0,$mn,1,$yr);    //Create time stamp of the first day from the give date.
        
list($y,$m,$t)      = explode('-',date('Y-m-t',$timeStamp)); //Find the last date of the month and separating it
        
$lastDayTimeStamp   mktime(0,0,0,$m,$t,$y);//create time stamp of the last date of the give month
        
$day                strtolower(date('D',$lastDayTimeStamp)); //date('D',$lastDayTimeStamp);// Find last day of the month
        
$nDay               date('d',$lastDayTimeStamp); // Find last day of the month
        
$month              date('F',$lastDayTimeStamp); // Find last day of the month
        
$nMonth             date('m',$lastDayTimeStamp); // Find last day of the month
        
        
return array($day,$nDay,$yr,$month,$nMonth);
    }
    
    
    
// IF $WEEK IS NOT PASSED, THEN CHECK FOR LAST WEEK OF MONTH
    
private function get_holiday($year$month$day_of_week$week="") {
        
        if ( ((
$week != "") && (($week 5) || ($week 1))) || ($day_of_week 6) || ($day_of_week 0) ) {
            
// $day_of_week must be between 0 and 6 (Sun=0, ... Sat=6); $week must be between 1 and 5
            
return FALSE;
        } else {
            if (!
$week || ($week == "")) {
                
$lastday date("t"mktime(0,0,0,$month,1,$year));
                
$temp = (date("w",mktime(0,0,0,$month,$lastday,$year)) - $day_of_week) % 7;
            } else {
                
$temp = ($day_of_week date("w",mktime(0,0,0,$month,1,$year))) % 7;
            }
            
            if (
$temp 0) {
                
$temp += 7;
            }
            
            if (!
$week || ($week == "")) {
                
$day $lastday $temp;
            } else {
                
$day = ($week) - $temp;
            }
            
            return 
$this->format_date($year$month$day);
        }
        
    }
    
    
    private function 
observed_day($year$month$day) {
        
        
// sat -> fri & sun -> mon, any exceptions?
        //
        // should check $lastday for bumping forward and $firstday for bumping back,
        // although New Year's & Easter look to be the only holidays that potentially
        // move to a different month, and both are accounted for.
        
        
$dow date("w"mktime(000$month$day$year));
        
        if (
$dow == 0) {
            
$dow $day 1;
        } elseif (
$dow == 6) {
            if ((
$month == 1) && ($day == 1)) {    // New Year's on a Saturday
                
$year--;
                
$month 12;
                
$dow 31;
            } else {
                
$dow $day 1;
            }
        } else {
            
$dow $day;
        }
        
        return 
$this->format_date($year$month$dow);
        
    }
    
    
    private function 
calculate_easter($y) {
        
        
// In the text below, 'intval($var1/$var2)' represents an integer division neglecting
        // the remainder, while % is division keeping only the remainder. So 30/7=4, and 30%7=2
        //
        // This algorithm is from Practical Astronomy With Your Calculator
        
        
$a $y%19;
        
$b intval($y/100);
        
$c $y%100;
        
$d intval($b/4);
        
$e $b%4;
        
$f intval(($b+8)/25);
        
$g intval(($b-$f+1)/3);
        
$h = (19*$a+$b-$d-$g+15)%30;
        
$i intval($c/4);
        
$k $c%4;
        
$l = (32+2*$e+2*$i-$h-$k)%7;
        
$m intval(($a+11*$h+22*$l)/451);
        
$p = ($h+$l-7*$m+114)%31;
        
$EasterMonth intval(($h+$l-7*$m+114)/31);    // [3 = March, 4 = April]
        
$EasterDay $p+1;    // (day in Easter Month)
        
        
return $this->format_date($y$EasterMonth$EasterDay);
        
    }
    
    
    
// THIS FUNCTION USES THE NATIVE FUNCTIONS OF PHP TO CALCULATE THE DIFFERENCE BETWEEN TWO TIMESTAMPS
    
private function date_diff($start,$end false) {
        
        
//echo $start . ' / ' . $end . '<br/>';
        
        
$diff abs(strtotime($end) - strtotime($start));
        
        
$years floor($diff / (365*60*60*24));
        
$months floor(($diff $years 365*60*60*24) / (30*60*60*24));
        
$days floor(($diff $years 365*60*60*24 $months*30*60*60*24)/ (60*60*24));
        
        
//printf("%d years, %d months, %d days\n", $years, $months, $days);
        
        
return array("year"=>"{$years}""month"=>"{$months}""day"=>"{$days}""start"=>"{$start}""end"=>"{$end}");
        
    }
    

// END CLASS LASTBUSINESSDAY 
this may be something that could be useful to others for certain things, so, feel free to use the object or parts of it for whatever.