1) Follow this tutorial:
2) Either use StreamType "live-record" to record all live streams that are published to an application; or use StreamType "live" and setup the LiveStreamRecord addon (or your module using the API) to record on demand.
Here is a version that records hour long segments, and that might be adapted to a scheduled recording:
3) There is not a built-in way to do this in Wowza. With a Flash RTMP client, if you are the developer and have full control of Wowza and the cllent, it is not that hard, but there you have to work with client-side notifications. Take a look at the Wowza LiveVideooStreaming example, at this part:
You can listen for "NetStream.Play.Complete" notification in this handler to meet your requirement.
nsPlayClientObj.onPlayStatus = function(infoObject:Object):void
for (var prop:String in infoObject)