+ propertyData = SplitValues(*propertyNameData);
+
+ for(map<string,string>::iterator propdataiter = propertyData.begin();
+ propdataiter != propertyData.end(); propdataiter++){
+
+ if (propdataiter->first == "ALTREP"){
+
+ newTZData.commentListAltRep[objectSeekCount] = propdataiter->second;
+
+ } else if (propdataiter->first == "LANGUAGE"){
+
+ newTZData.commentListLanguage[objectSeekCount] = propdataiter->second;
+
+ } else {
+
+ if (TokenData == false){
+ TokenData = true;
+ } else {
+ propertyTokens += ";";
+ }
+
+ propertyTokens += propdataiter->first;
+ propertyTokens += "=";
+ propertyTokens += propdataiter->second;
+
+ }
+
+ }
+
+ if (propertyTokens.size() > 0){
+ newTZData.commentListTokens[objectSeekCount] = propertyTokens;
+ }
+
+ newTZData.commentList[objectSeekCount] = propiter->second;
+
+ objectSeekCount++;
+
+ }
+
+ // Process the data from RDATE.
+
+ dataReceived = ProcessTextVectors(&timezoneStandardName[seekCount],
+ &timezoneStandardData[seekCount], true, "RDATE");
+
+ objectSeekCount = 0;
+
+ for(multimap<string,string>::iterator propiter = dataReceived.begin();
+ propiter != dataReceived.end();
+ ++propiter){
+
+ newTZData.recurranceDateDataTokens.push_back("");
+ newTZData.recurranceDateDataValue.push_back("");
+ newTZData.recurranceDateDataTimeZoneParam.push_back("");
+ newTZData.recurranceDateData.push_back("");
+
+ bool TokenData = false;
+ string propertyTokens;
+
+ propertyNameData = (string*)&propiter->first;
+
+ propertyData = SplitValues(*propertyNameData);
+
+ for(map<string,string>::iterator dataiter = propertyData.begin();
+ dataiter != propertyData.end(); dataiter++){
+
+ if (dataiter->first == "VALUE"){
+
+ newTZData.recurranceDateDataValue[objectSeekCount] = dataiter->second;
+
+ } else if (dataiter->first == "TZID"){
+
+ newTZData.recurranceDateDataTimeZoneParam[objectSeekCount] = dataiter->second;
+
+ } else {
+
+ if (TokenData == false){
+ TokenData = true;
+ } else {
+ propertyTokens += ";";
+ }
+
+ propertyTokens += dataiter->first;
+ propertyTokens += "=";
+ propertyTokens += dataiter->second;
+
+ }
+
+ }
+
+ if (propertyTokens.size() > 0){
+ newTZData.recurranceDateDataTokens[objectSeekCount] = propertyTokens;
+ }
+
+ newTZData.recurranceDateData[objectSeekCount] = propiter->second;
+
+ objectSeekCount++;
+
+ }
+
+// Process the data from TZNAME.
+
+ dataReceived = ProcessTextVectors(&timezoneStandardName[seekCount],
+ &timezoneStandardData[seekCount], true, "TZNAME");
+
+ objectSeekCount = 0;
+
+ for(multimap<string,string>::iterator propiter = dataReceived.begin();
+ propiter != dataReceived.end();
+ ++propiter){
+
+ newTZData.timeZoneNameTokens.push_back("");
+ newTZData.timeZoneNameLanguage.push_back("");
+ newTZData.timeZoneNameData.push_back("");
+
+ bool TokenData = false;
+ string propertyTokens;
+
+ propertyNameData = (string*)&propiter->first;
+
+ propertyData = SplitValues(*propertyNameData);
+
+ for(map<string,string>::iterator dataiter = propertyData.begin();
+ dataiter != propertyData.end(); dataiter++){
+
+ if (dataiter->first == "LANGUAGE"){
+
+ newTZData.timeZoneNameLanguage[objectSeekCount] = dataiter->second;
+
+ } else {
+
+ if (TokenData == false){
+ TokenData = true;
+ } else {
+ propertyTokens += ";";
+ }
+
+ propertyTokens += dataiter->first;
+ propertyTokens += "=";
+ propertyTokens += dataiter->second;
+
+ }
+
+ }
+
+ if (propertyTokens.size() > 0){
+ newTZData.timeZoneNameTokens[objectSeekCount] = propertyTokens;
+ }
+
+ newTZData.timeZoneNameData[objectSeekCount] = propiter->second;
+
+ objectSeekCount++;
+
+ }
+
+ objectSeekCount = 0;
+
+ // Process data from X-*
+
+ for(vector<string>::iterator propiter = timezoneStandardName[seekCount].begin();
+ propiter != timezoneStandardName[seekCount].end(); ++propiter){
+
+ if (propiter->substr(0,2) == "X-" &&
+ propiter->size() > 2){
+
+ newTZData.xTokensData.push_back(timezoneStandardData[seekCount][objectSeekCount]);
+ newTZData.xTokensDataTokens.push_back(timezoneStandardName[seekCount][objectSeekCount]);
+
+ }
+
+ objectSeekCount++;
+
+ }
+
+ // Check if the required values were given and
+ // insert newTZData into the vector list of
+ // standard timezones.
+
+ if (dateTimeStartFound == true &&
+ timeZoneOffsetToFound == true &&
+ timeZoneOffsetFromFound == true){
+
+ timezoneStandardCollection.push_back(newTZData);
+
+ }
+
+ seekCount++;
+
+ }
+
+ seekCount = 0;
+
+ for (vector<vector<string>>::iterator tzsiter = timezoneDaylightName.begin();
+ tzsiter != timezoneDaylightName.end(); tzsiter++){
+
+ bool dateTimeStartFound = false;
+ bool timeZoneOffsetToFound = false;
+ bool timeZoneOffsetFromFound = false;
+
+ TimezoneDataStruct newTZData;