Los errores de tipo "notice" te están ayudando a ver tu problema .. ese tipo de mensajes de error los puedes ver o decidir que no quieres verlos (pero en este caso bien útiles son para ver otros mensajes de error que se puedan estar derivando).
Todo esto sobre visualización o nivel de mensajes de error que deseas ver en tus aplicaciones lo controla la directiva de PHP (php.ini):
error_reporting
y también en tiempo de ejecución de tus scripts por la la función de mismo nombre_
www.php.net/error_reporting
En tu caso particular .. revisa tus condiciones y evalua si se están produciendo cuando corresponde .. tienes muchos if() con elseif() y várias condicines .. si te dice que una variable no está definida es por qué no entró a alguno de tus IF() donde le das un valor que luego usas. En su defecto o bien elminas ese tipo de mensajes de "aviso" por configuración . .o defines un valor por defecto a varaibles como tu $estado .. tipo $estado=''; al principio de tu script .. los "condicionales" subsiguientes ya actuaran si corresponde y darán otro valor (y por ende "declararan") esa variable.
Un saludo,