+ }
+
+ // Process data from X-*
+
+ if (timezoneStandardCollection[timezoneStandardSeek].xTokensData.size() > 0){
+
+ for (int timezoneXTokenSeek = 0; timezoneXTokenSeek < timezoneStandardCollection[timezoneStandardSeek].xTokensData.size();
+ timezoneXTokenSeek++){
+
+ dataLine += timezoneStandardCollection[timezoneStandardSeek].xTokensDataTokens[timezoneXTokenSeek];
+ dataLine += ":";
+ dataLine += timezoneStandardCollection[timezoneStandardSeek].xTokensData[timezoneXTokenSeek];
+ dataLine += "\n";
+
+ dataLineProcessed = OutputText(&dataLine);
+
+ *saveData += dataLineProcessed;
+
+ dataLine.clear();
+ dataLineProcessed.clear();
+
+ }
+
+ }
+
+ *saveData += "END:STANDARD\n";
+
+ }
+
+ }
+
+ // Process Daylight timezones.
+
+ if (timezoneDaylightCollection.size() > 0){
+
+ for (int timezoneDaylightSeek = 0; timezoneDaylightSeek < timezoneDaylightCollection.size();
+ timezoneDaylightSeek++){
+
+ *saveData += "BEGIN:DAYLIGHT\n";
+
+ // Process the DTSTART value.
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].dateTimeStartData.size() > 0){
+
+ if (timezoneStandardCollection[timezoneDaylightSeek].dateTimeStartTokens.size() > 0){
+
+ dataLine += "DTSTART;";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].dateTimeStartTokens;
+
+ } else {
+
+ dataLine += "DTSTART";
+
+ }
+
+ dataLine += ":";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].dateTimeStartData;
+ dataLine += "\n";
+
+ dataLineProcessed = OutputText(&dataLine);
+
+ *saveData += dataLineProcessed;
+
+ dataLine.clear();
+ dataLineProcessed.clear();
+
+ }
+
+ // Process the TZOFFSETFROM value.
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].timeZoneOffsetFromData.size() > 0){
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].timeZoneOffsetFromTokens.size() > 0){
+
+ dataLine += "TZOFFSETFROM;";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].timeZoneOffsetFromTokens;
+
+ } else {
+
+ dataLine += "TZOFFSETFROM";
+
+ }
+
+ dataLine += ":";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].timeZoneOffsetFromData;
+ dataLine += "\n";
+
+ dataLineProcessed = OutputText(&dataLine);
+
+ *saveData += dataLineProcessed;
+
+ dataLine.clear();
+ dataLineProcessed.clear();
+
+ }
+
+ // Process the TZOFFSETTO value.
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].timeZoneOffsetToData.size() > 0){
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].timeZoneOffsetToTokens.size() > 0){
+
+ dataLine += "TZOFFSETTO;";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].timeZoneOffsetToTokens;
+
+ } else {
+
+ dataLine += "TZOFFSETTO";
+
+ }
+
+ dataLine += ":";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].timeZoneOffsetToData;
+ dataLine += "\n";
+
+ dataLineProcessed = OutputText(&dataLine);
+
+ *saveData += dataLineProcessed;
+
+ dataLine.clear();
+ dataLineProcessed.clear();
+
+ }
+
+ // Process the RRULE value.
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].recurranceRuleData.size() > 0){
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].recurranceRuleDataTokens.size() > 0){
+
+ dataLine += "RRULE;";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].recurranceRuleDataTokens;
+
+ } else {
+
+ dataLine += "RRULE";
+
+ }
+
+ dataLine += ":";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].recurranceRuleData;
+ dataLine += "\n";
+
+ dataLineProcessed = OutputText(&dataLine);
+
+ *saveData += dataLineProcessed;
+
+ dataLine.clear();
+ dataLineProcessed.clear();
+
+ }
+
+ // Process the COMMENT value.
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].commentList.size() > 0){
+
+ for (int commentListSeek = 0; commentListSeek < timezoneDaylightCollection[timezoneDaylightSeek].commentList.size();
+ commentListSeek++){
+
+ dataLine += "COMMENT";
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].commentListAltRep[commentListSeek].size() > 0){
+
+ dataLine += ";ALTREP=\"";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].commentListAltRep[commentListSeek];
+ dataLine += "\"";
+
+ }
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].commentListLanguage[commentListSeek].size() > 0){
+
+ dataLine += ";LANGUAGE=";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].commentListLanguage[commentListSeek];
+
+ }
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].commentListTokens[commentListSeek].size() > 0){
+
+ dataLine += ";";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].commentListTokens[commentListSeek];
+
+ }
+
+ dataLine += ":";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].commentList[commentListSeek];
+ dataLine += "\n";
+
+ dataLineProcessed = OutputText(&dataLine);
+
+ *saveData += dataLineProcessed;
+
+ dataLine.clear();
+ dataLineProcessed.clear();
+
+ }
+
+ }
+
+ // Process the RDATE value.
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].recurranceDateData.size() > 0){
+
+ for (int recurranceDataSeek = 0; recurranceDataSeek < timezoneDaylightCollection[timezoneDaylightSeek].recurranceDateData.size();
+ recurranceDataSeek++){
+
+ dataLine += "RDATE";
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].recurranceDateDataValue[recurranceDataSeek].size() > 0){
+
+ dataLine += ";VALUE=";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].recurranceDateDataValue[recurranceDataSeek];
+
+ }
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].recurranceDateDataTimeZoneParam[recurranceDataSeek].size() > 0){
+
+ dataLine += ";TZID=";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].recurranceDateDataTimeZoneParam[recurranceDataSeek];
+
+ }
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].recurranceDateDataTokens[recurranceDataSeek].size() > 0){
+
+ dataLine += ";";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].recurranceDateDataTokens[recurranceDataSeek];
+
+ }
+
+ dataLine += ":";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].recurranceDateData[recurranceDataSeek];
+ dataLine += "\n";
+
+ dataLineProcessed = OutputText(&dataLine);
+
+ *saveData += dataLineProcessed;
+
+ dataLine.clear();
+ dataLineProcessed.clear();
+
+ }
+
+ }
+
+ // Process the TZNAME value.
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].timeZoneNameData.size() > 0){
+
+ for (int timezoneNameSeek = 0; timezoneNameSeek < timezoneDaylightCollection[timezoneDaylightSeek].timeZoneNameData.size();
+ timezoneNameSeek++){
+
+ dataLine += "TZNAME";
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].timeZoneNameLanguage[timezoneNameSeek].size() > 0){
+
+ dataLine += ";LANGUAGE=";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].timeZoneNameLanguage[timezoneNameSeek];
+
+ }
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].timeZoneNameTokens[timezoneNameSeek].size() > 0){
+
+ dataLine += ";";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].timeZoneNameTokens[timezoneNameSeek];
+
+ }
+
+ dataLine += ":";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].timeZoneNameData[timezoneNameSeek];
+ dataLine += "\n";
+
+ dataLineProcessed = OutputText(&dataLine);
+
+ *saveData += dataLineProcessed;
+
+ dataLine.clear();
+ dataLineProcessed.clear();
+
+ }
+
+ }
+
+ // Process data from X-*
+
+ if (timezoneDaylightCollection[timezoneDaylightSeek].xTokensData.size() > 0){
+
+ for (int timezoneXTokenSeek = 0; timezoneXTokenSeek < timezoneDaylightCollection[timezoneDaylightSeek].xTokensData.size();
+ timezoneXTokenSeek++){
+
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].xTokensDataTokens[timezoneXTokenSeek];
+ dataLine += ":";
+ dataLine += timezoneDaylightCollection[timezoneDaylightSeek].xTokensData[timezoneXTokenSeek];
+ dataLine += "\n";
+
+ dataLineProcessed = OutputText(&dataLine);
+
+ *saveData += dataLineProcessed;
+
+ dataLine.clear();
+ dataLineProcessed.clear();
+
+ }
+
+ }
+
+ *saveData += "END:DAYLIGHT\n";
+
+ }