Yo simplemente te daré una pista, y algunos consejos (no tengo tiempo como para ponerme a desarrollarte la solución completa):
La siguiente función
Código PHP:
date(w,mktime(0,0,0,$mes,$dia,$anio)
(sustituyendo las variables mes, dia y anio por sus valores respectivos) te devuelve 0 si es domingo, 1 si es lunes, 2 si es martes... 6 si es sábado.
Por lo tanto, ya tienes el día de la semana que es.
Luego... aunque no fuera práctico, yo sumaría a la variable día de 1 en 1 y comprobaría si ese día coincide con el que quiero ver y si es así lo muestro.
Cuando día llegue a 31, 28, 31, 30... según el mes, subes un mes, y cuando mes es mayor que 12, cortas el bucle
(yo lo haría con un for dentro de otro).
El resto... te veo capaz de hacerlo bien por ti mismo XD
EDITO:
De hecho... ahora que veo que tienes un while dentro de otro, te sirve el código que tienes cambiando un poco