Interesting…. so you can stack up multiple programs that execute at the same time to configure different times per station? This would be indeed handy, but would make the task of programming unique times per station difficult, at least as I see it. An alternative would be to have the scheduler set up a table of events (either in an array or data file with record structure: program number, OSPi number, station, start time), each of which would be dynamically set in the scheduler page. Changes in % watering would have to access this table and modify the times for each event.
BTW, great job on the web app. It is quite evident that you know what you are doing!