Pasa que estás intentando tomar desde GET dia mes y ano, mientras que al cambiar de mes le pasás date.
Algo así me funcionó:
Código PHP:
<?
$fecha = getdate(time());
$date=$_GET["date"];
if($date) {
$date = strtotime($date);
$dia = date("j",$date);
$mes = date("n",$date);
$ano = date("Y",$date);
}
if(!$dia) $dia = $fecha['mday'];
if(!$mes) $mes = $fecha['mon'];
if(!$ano) $ano = $fecha['year'];
$fecha = mktime(0,0,0,$mes,$dia,$ano);
$fechaInicioMes = mktime(0,0,0,$mes,1,$ano);
$fechaInicioMes = date("w",$fechaInicioMes);
?>
Saludos.