buenas...
opino que te complicas demasiado. quiero decir, si solo removieras los options no deseados, no tuvieras que preocuparte sobre el elemento seleccionado. en tu caso, pierde la seleccion porque estas creando todos los options. de todos modos, si deseas continuar con ese codigo, tienes que obtener primero el option seleccionado el cual lo haces en la funcion
cambiarMes. sin embargo, es en las funciones
dias28, dias30 y
dias31 que necesitas ese valor pero no puedes utilizarlo porque la variable es local a la funcion
cambiarMes. ¿que debes hacer? pasa esa variable como argumento a las funciones antes mencionada. en las funciones, luego de crear los options, asigna ese valor a la propiedad
selectedIndex.