Its a little early for me, but I think this might work:
... html that shows the drop down box ...
<?
$month = date('m');
$offset = 1;
if(date('d') > 14)
$offset = 2;
for($a = ($month + $offset); $a < ($month + $offset + 3); $a++)
{
$monthval = date('m', mktime(0, 0, 0, $a, 0, 0));;
echo '<option value=' . $monthval . (($STARTMONTH == '' && $month == $monthval) ? ' selected' : '') . '>' . $monthval . "</option>\n";
} // end for($a = 0; $a < 12; $a++)
?>
... end html that shows the drop down box ...
I swapped out your huge chunk of HTML with a for() loop which I think is a bit easier to manage.
Basically, just check if the day is greater than what your threshold is (15) and if it is, you want to offset the month by two (default is to offset by 1).
The part I was stuck on and you need to figure out is how many months you want to show. Right now the code will just show 3 months. If you want more or less, just update the 3 to however many months you want.
Not sure if fits what you're looking for. If you have questions, just ask...