I know what you mean exactly since i went tru the same thing a month or so ago!
I tried to implement a more effecient method but it didn't work and what i then ended up to do was the following:
I created a form with the fields i'm intrested in and also asked the user to select the recurrence..monthly, weekly, yearly etc...
then when the user hits the apply button the script will
1) insert a new row in the events table
2) then it will check for recurence and the type of recurence
3) For each type i calculate the number of extra events that wll be created..
4) then i insert a new row for each of the recurence within the events table...making a reference to the original...
5) If the uer decides to update the record first each row will be deleted then reinstated with the script!
Hope this helped!
Nick