Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Move INSTALL, LICENSE, README, THANKS and TODO into root directory
[xestiaab/.git] / source / vcard / vcard34conv.cpp
index 0c3c545..9137a58 100644 (file)
@@ -1,3 +1,21 @@
+// vcard34conv.cpp - vCard34Conv Object
+//
+// (c) 2012-2015 Xestia Software Development.
+//
+// This file is part of Xestia Address Book.
+//
+// Xestia Address Book is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by the
+// Free Software Foundation, version 3 of the license.
+//
+// Xestia Address Book is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with Xestia Address Book. If not, see <http://www.gnu.org/licenses/>
+
 #include "vcard34conv.h"
 #include "vcard.h"
 #include "../version.h"
 #include <wx/wx.h>
 
 // vcard.cpp - Deals with vCard 4.0 formatted files meeting the
-// RFC 6350 specification.
-
-vCard34Conv::vCard34Conv(){
-    vCardBegin = FALSE;
-    vCardEnd = FALSE;
-    vCardFN = FALSE;
-    vCardVersion = 0.0;
-    SettingCount = 0;
-}
-
-bool vCard34Conv::ConvertToV3(wxString Filename, wxString *wxSData){
-
-       wxString V3Data;
-       wxString V4Data;
-       
-       // Load the contact into the contact editor.
-       
-       wxFFile ContactFile;
-       wxString wxSContactString;
-       wxString ContactLine;
-       vCard ContactData;
-
-       vCard ContactDatav3;
-       
-       //wxSContactFilename = Filename;
-       
-       // Check if we are using wxWidgets version 2.8 or less and
-       // execute the required command accordingly.
-       
-#if wxABI_VERSION < 20900
-       ContactFile.Open(Filename.c_str(), wxT("r"));
-#else
-       ContactFile.Open(Filename, wxT("r"));
-#endif 
-       
-       if (ContactFile.IsOpened() == FALSE){
-
-               return FALSE;
-       
-       }
-       
-       ContactFile.ReadAll(&wxSContactString, wxConvAuto());
-       
-       // Split the lines.
-       
-       std::map<int, wxString> ContactFileLines;
-       std::map<int, wxString>::iterator striter;
-       
-       wxStringTokenizer wSTContactFileLines(wxSContactString, wxT("\r\n"));
-
-       int ContactLineSeek = 0;
-
-       while (wSTContactFileLines.HasMoreTokens() == TRUE){
-
-               ContactLine = wSTContactFileLines.GetNextToken();
-               ContactFileLines.insert(std::make_pair(ContactLineSeek, ContactLine));
-               ContactLineSeek++;              
-       
-       }
-
-       // Get the line.
-
-       bool QuoteMode = FALSE;
-       bool PropertyFind = TRUE;
-       bool HasExtraNicknames = FALSE;
-       bool IgnoreGender = FALSE;
-       bool ExtraLineSeek = TRUE;
-       bool BirthdayProcessed = FALSE;
-       bool AnniversaryProcessed = FALSE;
-       bool FNProcessed = FALSE;
-       bool GenderProcessed = FALSE;
-       bool NameProcessed = FALSE;
-       bool KindProcessed = FALSE;
-       bool FNFirst = FALSE;
-       bool NicknameFirst = FALSE;
-       bool TitleFirst = FALSE;
-       bool OrganisationFirst = FALSE;
-       bool NoteFirst = FALSE;
-       bool PhotoFirst = FALSE;
-       bool LogoFirst = FALSE;
-       int intExtraNickname = 0;
-       wxString wxSProperty;
-       wxString wxSPropertySeg1;
-       wxString wxSPropertySeg2;
-       wxString wxSPropertyNextLine;
-       size_t ContactLineLen = 0;
-       int QuoteBreakPoint = 0;
-       int FNCount = 0;
-       int NameCount = 0;
-       int NicknameCount = 0;
-       int ADRCount = 0;
-       int EmailCount = 0;
-       int IMPPCount = 0;
-       int TelCount = 0;
-       int LangCount = 0;
-       int TZCount = 0;
-       int GeoCount = 0;
-       int URLCount = 0;
-       int RelatedCount = 0;
-       int TitleCount = 0;
-       int RoleCount = 0;
-       int OrgCount = 0;
-       int NoteCount = 0;
-       int CategoryCount = 0;
-       int PhotoCount = 0;
-       int LogoCount = 0;
-       int SoundCount = 0;
-       int CalAdrCount = 0;
-       int CalReqAdrCount = 0;
-       int FreeBusyCount = 0;
-       int KeyCount = 0;
-       int VendorCount = 0;
-       int XTokenCount = 0;
-       int ItemSeek = 1;
-       //int intValueSeek = 1;
-       
-       wxString strVer;
-    
-    // Setup the version string.
-       
-       strVer.Append(wxT("-//Xestia//Address Book Version "));
-       strVer.Append(wxT(XSDAB_VERSION));
-       strVer.Append(wxT("//KW"));
-       
-       ContactDatav3.AddRaw(wxT("BEGIN"), wxT("VCARD"));
-       ContactDatav3.AddRaw(wxT("VERSION"), wxT("3.0"));
-       ContactDatav3.AddRaw(wxT("PRODID"), strVer);
-
-       for (std::map<int,wxString>::iterator iter = ContactFileLines.begin(); 
-        iter != ContactFileLines.end(); ++iter){
-       
-               // Find the colon which splits the start bit from the data part.
-               
-               ContactLine = iter->second;
-               
-               while (ExtraLineSeek == TRUE){
-               
-                       // Check if there is extra data on the next line 
-                       // (indicated by space or tab at the start) and add data.
-               
-                       iter++;
-                       
-                       if (iter == ContactFileLines.end()){
-                       
-                               iter--;
-                               break;
-                       
-                       }                       
-               
-                       wxSPropertyNextLine = iter->second;
-                       
-               
-                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
-               
-                               wxSPropertyNextLine.Remove(0, 1);
-                               //wxSPropertyNextLine.Trim(FALSE);
-                               //ContactLine.Trim();
-                               ContactLine.Append(wxSPropertyNextLine);
-               
-                       } else {
-                       
-                               iter--;
-                               ExtraLineSeek = FALSE;
-                       
-                       }
-               
-               }
-
-               ContactLineLen = ContactLine.Len();
-               
-               // Make sure we are not in quotation mode.
-               // Make sure colon does not have \ or \\ before it.
-               
-               wxSProperty.Clear();
-               
-               for (int i = 0; i <= ContactLineLen; i++){
-               
-                       if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
-                       
-                               PropertyFind = FALSE;
-                       
-                       } else if (PropertyFind == TRUE){
-                       
-                               wxSProperty.Append(ContactLine.Mid(i, 1));
-                       
-                       }               
-               
-                       if (ContactLine.Mid(i, 1) == wxT("\"")){
-                       
-                               if (QuoteMode == TRUE){
-                               
-                                       QuoteMode = FALSE;
-                               
-                               } else {
-                       
-                                       QuoteMode = TRUE;
-                                       
-                               }
-                       
-                       }
-                       
-                       if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
-                       
-                               QuoteBreakPoint = i;
-                               break;
-                       
-                       }
-               
-               }
-               
-               // Split that line at the point into two variables (ignore the colon).
-               
-               wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint);
-               wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1));
-               
-               // Add the data into the contact editor depending on what it is.
-               
-               if (wxSProperty == wxT("FN")){
-                       
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 4;
-
-                       //SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
-                       
-                       intPrevValue = 3;
-                       
-                       if (FNFirst == FALSE){
-
-                               ContactDatav3.AddRaw(wxT("FN"), wxSPropertySeg2);
-                               
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-       
-                               } else {
-                               
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-FN;X-FIRST=TRUE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                                                               
-                               }
-                               FNFirst = TRUE;
-                       
-                       } else {
-                       
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-FN"), wxSPropertySeg2);
-       
-                               } else {
-                               
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-FN;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))),
-                                               wxSPropertySeg2);
-                               
-                               }
-                       
-                       }       
-               
-               } else if (wxSProperty == wxT("N") && NameProcessed == FALSE){
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 3;
-
-                       intPrevValue = 2;
-
-                       ContactDatav3.AddRaw(wxT("N"), wxSPropertySeg2);
-                       
-                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-
-
-                       } else {
-                       
-                               ContactDatav3.AddRaw(wxT("X-VCARD4-N;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT(""));
-                       
-                       }
-                       
-                       NameProcessed = TRUE;
-               
-               } else if (wxSProperty == wxT("KIND") && KindProcessed == FALSE){
-               
-                       // Process Data.
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 5;
-
-                       intPrevValue = 4;
-               
-                       ContactDatav3.AddRaw(wxT("X-ADDRESSBOOKSERVER-KIND"), wxSPropertySeg2);
-               
-                       KindProcessed = TRUE;
-               
-               } else if (wxSProperty == wxT("MEMBER")){
-               
-                       // Process Data.
-                       
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 7;
-
-                       intPrevValue = 6;
-
-                       ContactDatav3.AddRaw(wxT("X-ADDRESSBOOKSERVER-MEMBER"), wxSPropertySeg2);
-               
-               } else if (wxSProperty == wxT("NICKNAME")){
-                       
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 10;
-
-                       intPrevValue = 9;
-                       
-                       if (NicknameFirst == FALSE){
-
-                               ContactDatav3.AddRaw(wxT("NICKNAME"), wxSPropertySeg2);
-                               
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-       
-                               } else {
-                               
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-NICKNAME;X-FIRST=TRUE;") 
-                                               + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT(""));
-                               
-                               }
-                               NicknameFirst = TRUE;
-                               ItemSeek++;
-                       
-                       } else {
-                       
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-NICKNAME"), wxSPropertySeg2);
-
-                               } else {
-                               
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-NICKNAME;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), 
-                                               wxSPropertySeg2);
-                                                               
-                               }
-                       
-                       }
-                       
-
-               } else if (wxSProperty == wxT("GENDER") && GenderProcessed == FALSE){
-               
-                       // Do PID/ALTID/LANG things.
-                       
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 8;
-
-                       
-                       intPrevValue = 7;
-                       
-                       if (wxSPropertySeg2.Mid(1, 1) == wxT(";")){
-                       
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-GENDER;X-GENDERTEXT=\"") + wxSPropertySeg2.Mid(2) + wxT("\""), wxSPropertySeg2.Mid(0, 1));
-       
-                               } else {
-                               
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-GENDER;X-GENDERTEXT=\"") + wxSPropertySeg2.Mid(2) + wxT("\";") 
-                                               + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), 
-                                               wxSPropertySeg2.Mid(0, 1));                             
-                                                               
-                               }
-                       
-                       } else {
-
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-GENDER"), wxSPropertySeg2);
-       
-                               } else {
-                                       
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-GENDER;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                                                               
-                               }
-                       
-                       }
-                       
-                       GenderProcessed = TRUE;
-               
-               } else if (wxSProperty == wxT("BDAY") && BirthdayProcessed == FALSE){
-
-                       // Process date. Preserve the remainder in the string.
-                               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       bool NoYear = FALSE;
-                       int intPrevValue = 6;
-
-                       wxString strResults;            
-               
-                       intPrevValue = 5;
-               
-                       // Look for type before continuing.
-
-                       if (wxSPropertySeg2.Mid(0, 2) == wxT("--")){
-                       
-                               strResults.Append(wxT("1604-"));
-                               NoYear = TRUE;
-
-                               strResults.Append(wxSPropertySeg2.Mid(2, 2) + wxT("-"));
-                               strResults.Append(wxSPropertySeg2.Mid(4, 2));
-                       
-                       } else {
-                       
-                               strResults.Append(wxSPropertySeg2.Mid(0, 4) + wxT("-"));
-                               strResults.Append(wxSPropertySeg2.Mid(4, 2) + wxT("-"));
-                               strResults.Append(wxSPropertySeg2.Mid(6, 2));
-
-                       }
-                       
-
-                       
-                       if (NoYear == TRUE){
-
-                               ContactDatav3.AddRaw(wxT("BDAY;X-APPLE-OMIT-YEAR=1604"), strResults);
-                       
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-BDAY"), wxSPropertySeg2);
-       
-                               } else {
-                                       
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-BDAY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                               
-                               }
-                       
-                       } else {
-                       
-                               ContactDatav3.AddRaw(wxT("BDAY"), strResults);
-
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-BDAY"), wxSPropertySeg2);
-
-                               } else {
-                                       
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-BDAY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                                                               
-                               }
-                       
-                       }
-                       
-                       BirthdayProcessed = TRUE;
-               
-               } else if (wxSProperty == wxT("ANNIVERSARY") && AnniversaryProcessed == FALSE){
-                       
-                       // Process date. Preserve the remainder in the string.
-                               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 13;
-
-                       wxString strResults;
-                       bool NoYear = FALSE;
-               
-                       intPrevValue = 12;
-               
-                       // Look for type before continuing.
-               
-                       if (wxSPropertySeg2.Mid(0, 2) == wxT("--")){
-                       
-                               strResults.Append(wxT("1604-"));
-                               NoYear = TRUE;
-
-                               strResults.Append(wxSPropertySeg2.Mid(2, 2) + wxT("-"));
-                               strResults.Append(wxSPropertySeg2.Mid(4, 2));
-                       
-                       } else {
-                       
-                               strResults.Append(wxSPropertySeg2.Mid(0, 4) + wxT("-"));
-                               strResults.Append(wxSPropertySeg2.Mid(4, 2) + wxT("-"));
-                               strResults.Append(wxSPropertySeg2.Mid(6, 2));
-
-                       }
-                       
-                       if (NoYear == TRUE){
-
-                               ContactDatav3.AddRaw(wxT("ANNIVERSARY;X-APPLE-OMIT-YEAR=1604"), strResults);
-                       
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ANNIVERSARY"), wxSPropertySeg2);
-
-                               } else {
-                                       
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ANNIVERSARY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                                                               
-                               }
-                       
-                       } else {
-                       
-                               ContactDatav3.AddRaw(wxT("ANNIVERSARY"), strResults);
-
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ANNIVERSARY"), wxSPropertySeg2);
-       
-                               } else {
-                                       
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ANNIVERSARY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                               
-                               }
-                       
-                       }
-                       
-                       AnniversaryProcessed = TRUE;
-               
-               } else if (wxSProperty == wxT("TZ")){
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 4;
-                       
-                       intPrevValue = 3;
-                       
-                       // Look for type before continuing.
-                       
-                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                               ContactDatav3.AddRaw(wxT("X-VCARD4-TZ"), wxSPropertySeg2);
-       
-                       } else {
-                                       
-                               ContactDatav3.AddRaw(wxT("X-VCARD4-TZ;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                               
-                       }
-               
-               } else if (wxSProperty == wxT("ADR")){
-                       
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       wxString AddressLabel;
-                       wxString AddressLang;
-                       wxString AddressAltID;
-                       wxString AddressPID;
-                       wxString AddressTokens;
-                       wxString AddressGeo;
-                       wxString AddressTimezone;
-                       wxString AddressType;
-                       wxString AddressMediatype;
-                       wxString AddressPOBox;
-                       wxString AddressExtended;
-                       wxString AddressStreet;
-                       wxString AddressLocality;
-                       wxString AddressCity;
-                       wxString AddressRegion;
-                       wxString AddressPostalCode;
-                       wxString AddressCountry;
-                       int intPrevValue = 5;
-                       
-                       intPrevValue = 4;
-                       
-                        // TODO: Check in value for X-ABLabel and use it if it is there.
-                    
-                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".ADR"), wxSPropertySeg2);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("Address"));
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-ADR"), wxSPropertySeg2);
-       
-                       } else {
-
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".ADR"), wxSPropertySeg2);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("Address"));
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-ADR;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                                                               
-                       }
-                       
-                       ItemSeek++;
-               
-               } else if (wxSProperty == wxT("EMAIL")){
-               
-                       // TODO: Continue from here! See ADR for good example (Replace initer with intPrevValue).
-                       // Remove inserted comma for Extra Tokens in frmContactEditor.cpp
-
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;
-                       std::map<int, int>::iterator SPoint;
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       wxString AddressLabel;
-                       wxString AddressLang;
-                       wxString AddressAltID;
-                       wxString AddressPID;
-                       wxString AddressTokens;
-                       wxString AddressGeo;
-                       wxString AddressTimezone;
-                       wxString AddressType;
-                       wxString AddressMediatype;
-                       wxString AddressPOBox;
-                       wxString AddressExtended;
-                       wxString AddressStreet;
-                       wxString AddressLocality;
-                       wxString AddressCity;
-                       wxString AddressRegion;
-                       wxString AddressPostalCode;
-                       wxString AddressCountry;
-                       int intPrevValue = 7;
-                       
-                       intPrevValue = 6;
-                       
-                    // TODO: Check in value for X-ABLabel and use it if it is there.
-                    
-                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                        
-                        ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".EMAIL"), wxSPropertySeg2);
-                        ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("E-mail Address"));
-                        ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-EMAIL"), wxSPropertySeg2);
-                                                
-                    } else {
-                        
-                        ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".EMAIL"), wxSPropertySeg2);
-                        ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("E-mail Address"));
-                        ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-EMAIL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                        
-                    }
-                    
-                    ItemSeek++;
-               
-               } else if (wxSProperty == wxT("IMPP")){
-
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;
-                       std::map<int, int>::iterator SPoint;
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       wxString IMPPType;
-                       wxString IMPPAddress;
-                       int intPrevValue = 6;
-                       
-                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
-                       
-                       intPrevValue = 5;
-                       
-                        // TODO: Check in value for X-ABLabel and use it if it is there.
-                   
-                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".IMPP"), wxSPropertySeg2);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("Instant Message"));
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-IMPP"), wxSPropertySeg2);
-       
-                       } else {
-
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".IMPP"), wxSPropertySeg2);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("Instant Message"));
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-IMPP;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                                                               
-                       }
-                    
-            ItemSeek++;
-               
-               } else if (wxSProperty == wxT("TEL")){
-               
-                       // Check TEL and make sure it is functioning properly.
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int> TypeSplitPoints;
-                       std::map<int, int> TypeSplitLength;
-                       std::map<int, int>::iterator SLiter;
-                       std::map<int, int>::iterator SPoint;                    
-                       std::map<int, int>::iterator TSLiter;
-                       std::map<int, int>::iterator TSPoint;
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       wxString TelType;
-                       wxString TelNumber;
-                       wxString TelTypeUI;
-                       wxString TelTypeDetail;
-                       wxString TelTypeOut;
-                       wxString FinalFriendlyString;
-                       int intSplitsFound = 0;
-                       int intSplitSize = 0;
-                       int intPrevValue = 5;
-                       int intType = 0;
-                       int intSplitPoint = 0;
-
-                       intPrevValue = 4;
-                       
-                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
-                       
-                       // Look for type before continuing.
-                       
-                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
-                       intiter != SplitPoints.end(); ++intiter){
-                       
-                               SLiter = SplitLength.find(intiter->first);
-                       
-                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second));
-                               
-                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
-                               PropertyName = PropertyElement.GetNextToken();                          
-                               PropertyValue = PropertyElement.GetNextToken();
-                               
-                               intPrevValue = intiter->second;
-                               
-                               if (PropertyName == wxT("TYPE")){
-                               
-                                       // Process each value in type and translate each
-                                       // part.
-                               
-                                       // Strip out the quotes if they are there.
-
-                                       size_t intPropertyValueLen = PropertyValue.Len();
-                               
-                                       if (PropertyValue.Mid((intPropertyValueLen - 1), 1) == wxT("\"")){
-                                       
-                                               PropertyValue.Trim();
-                                               PropertyValue.RemoveLast();
-                                       
-                                       }                               
-                               
-                                       if (PropertyValue.Mid(0, 1) == wxT("\"")){
-                                       
-                                               PropertyValue.Remove(0, 1);
-                                       
-                                       }
-                                       
-                                       TelTypeDetail = PropertyValue;
-                                       
-                                       intSplitSize = 0;
-                                       intSplitsFound = 0;
-                                       intSplitPoint = 0;
-                                       
-                                       for (int i = 0; i <= intPropertyValueLen; i++){
-                       
-                                               intSplitSize++;
-                       
-                                               if (PropertyValue.Mid(i, 1) == wxT(",") && PropertyValue.Mid((i - 1), 1) != wxT("\\")){
-                       
-                                                       if (intSplitsFound == 0){
-
-                                                               TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint));
-                                                               TypeSplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
-                                       
-                                                       } else {
-                                       
-                                                               TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint));
-                                                               TypeSplitLength.insert(std::make_pair(intSplitsFound, intSplitSize));
-                                       
-                                                       }                       
-
-                                                       intSplitsFound++;
-                                                       i++;
-                                                       intSplitPoint = i;
-                                                       intSplitSize = 0;
-                       
-                                               }
-                       
-                                       }
-                                       
-                                       TypeSplitPoints.insert(std::make_pair(intSplitsFound, intSplitPoint));
-                                       TypeSplitLength.insert(std::make_pair(intSplitsFound, intSplitSize));                                                           
-                               
-                                       int intTypeSeek = 0;
-                               
-                                       for (std::map<int, int>::iterator typeiter = TypeSplitPoints.begin(); 
-                                       typeiter != TypeSplitPoints.end(); ++typeiter){
-
-                                               wxString TypePropertyName;
-                                               
-                                               TSLiter = TypeSplitLength.find(typeiter->first);
-                                               
-                                               TypePropertyName = PropertyValue.Mid(typeiter->second, TSLiter->second);
-                                               
-                                               if (intTypeSeek == 0){
-                                               
-                                               
-                                               } else {
-                                                                                               
-                                                       TelTypeUI.Append(wxT(","));                                                     
-                                               
-                                               }
-                                       
-                                               if (TypePropertyName == wxT("home")){
-                                               
-                                                       intType = 1;
-                                               
-                                               } else if (TypePropertyName == wxT("work")){
-                                               
-                                                       intType = 2;
-                                               
-                                               }
-                                               
-                                               if (TypePropertyName == wxT("text")){                                           
-
-                                                       if (!FinalFriendlyString.IsEmpty()){ FinalFriendlyString.Append(_(", Text")); } else { FinalFriendlyString.Append(_("Text")); }
-
-                                                       TelTypeOut.Append(wxT(";"));                                            
-                                                       TelTypeOut.Append(wxT("type=TEXT"));
-                                               
-                                               } else if (TypePropertyName == wxT("voice")){
-                                               
-                                                       if (!FinalFriendlyString.IsEmpty()){  FinalFriendlyString.Append(_(", Voice")); } else { FinalFriendlyString.Append(_("Voice")); }
-
-                                                       TelTypeOut.Append(wxT(";"));                                            
-                                                       TelTypeOut.Append(wxT("type=VOICE"));
-
-                                                       intTypeSeek++;
-                                               
-                                               } else if (TypePropertyName == wxT("fax")){
-                                               
-                                                       if (!FinalFriendlyString.IsEmpty()){  FinalFriendlyString.Append(_(", Fax")); } else { FinalFriendlyString.Append(_("Fax")); }
-                                               
-                                                       TelTypeOut.Append(wxT(";"));
-                                                       TelTypeOut.Append(wxT("type=FAX"));
-                                                       intTypeSeek++;
-                                               
-                                               } else if (TypePropertyName == wxT("cell")){
-                                               
-                                                       if (!FinalFriendlyString.IsEmpty()){  FinalFriendlyString.Append(_(", Mobile")); } else { FinalFriendlyString.Append(_("Mobile")); }
-                                               
-                                                       TelTypeOut.Append(wxT(";"));
-                                                       TelTypeOut.Append(wxT("type=CELL"));
-                                                       intTypeSeek++;
-                                               
-                                               } else if (TypePropertyName == wxT("video")){
-                                               
-                                                       if (!FinalFriendlyString.IsEmpty()){  FinalFriendlyString.Append(_(", Video")); } else { FinalFriendlyString.Append(_("Video")); }
-
-                                                       TelTypeOut.Append(wxT(";"));
-                                                       TelTypeOut.Append(wxT("type=VIDEO"));
-                                                       intTypeSeek++;
-                                               
-                                               } else if (TypePropertyName == wxT("pager")){
-                                               
-                                                       if (!FinalFriendlyString.IsEmpty()){  FinalFriendlyString.Append(_(", Pager")); } else { FinalFriendlyString.Append(_("Pager")); }
-
-                                                       TelTypeOut.Append(wxT(";"));
-                                                       TelTypeOut.Append(wxT("type=PAGER"));
-                                                       intTypeSeek++;
-                                               
-                                               } else if (TypePropertyName == wxT("textphone")){
-                                               
-                                                       //if (!TelTypeOut.IsEmpty()){ TelTypeOut.Append(wxT(";")); }
-                                               
-                                                       if (!FinalFriendlyString.IsEmpty()){  FinalFriendlyString.Append(_(", Textphone")); } else { FinalFriendlyString.Append(_("Textphone")); }
-                                               
-                                                       TelTypeOut.Append(wxT(";"));
-                                                       TelTypeOut.Append(wxT("type=TEXTPHONE"));
-                                                       intTypeSeek++;
-                                               
-                                               }
-                                               
-                                               
-                                       
-                                       }
-                               
-                               }
-                               
-                               
-                       
-                       }
-                       
-                       wxString FinalTel;
-                       
-                       // Remove 'tel:' if it is being used.
-                       
-                       if (wxSPropertySeg2.Mid(0, 4) == wxT("tel:")){
-                       
-                               FinalTel = wxSPropertySeg2.Mid(4);
-                       
-                       } else {
-                       
-                               FinalTel = wxSPropertySeg2;
-                       
-                       }
-                       
-                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                       
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".TEL") + TelTypeOut, FinalTel);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), FinalFriendlyString);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-TEL"), wxSPropertySeg2);
-       
-                       } else {
-
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".TEL") + TelTypeOut, FinalTel);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), FinalFriendlyString);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-TEL;") + wxSPropertySeg1.Mid(4), wxSPropertySeg2);
-                               
-                       }
-                       
-                       ItemSeek++;
-               
-               } else if (wxSProperty == wxT("LANG")){
-
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 6;
-                       
-                       intPrevValue = 5;
-                       
-            if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                        
-                ContactDatav3.AddRaw(wxT("X-VCARD4-LANG"), wxSPropertySeg2);
-                        
-            } else {
-                        
-                ContactDatav3.AddRaw(wxT("X-VCARD4-LANG;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                        
-            }
-               
-               } else if (wxSProperty == wxT("GEO")){
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       wxString GeoType;
-                       wxString GeoData;
-                       int intPrevValue = 5;
-                       
-                       intPrevValue = 4;
-                       
-                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
-                       
-                       wxString strFinalGeoValue;
-                       wxString strFinalType;
-                       
-                       if (wxSPropertySeg2.Mid(0, 3) == wxT("geo")){
-                       
-                               strFinalGeoValue = wxSPropertySeg2.Mid(5);
-                               strFinalType = wxT("geo");
-                       
-                       } else {
-                       
-                               wxStringTokenizer wSTSplit(wxSPropertySeg2, wxT(":")); 
-                               strFinalType = wSTSplit.GetNextToken();
-                               strFinalGeoValue = wSTSplit.GetNextToken();
-                       
-                       }
-                       
-                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                        
-                        ContactDatav3.AddRaw(wxT("X-VCARD4-GEO;X-GEOTYPE=") + strFinalType, wxSPropertySeg2);
-                        
-                    } else {
-                        
-                        ContactDatav3.AddRaw(wxT("X-VCARD4-GEO;X-GEOTYPE=") + strFinalType + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                        
-                    }
-               
-               } else if (wxSProperty == wxT("RELATED")){
-                       
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       wxString RelatedType;
-                       wxString RelatedTypeOriginal;                   
-                       wxString RelatedName;
-                       bool FirstToken = TRUE;
-                       int intPrevValue = 9;
-                       
-                       intPrevValue = 8;
-                       
-                       SplitValues(&wxSPropertySeg1, &SplitPoints, &SplitLength, intPrevValue);
-                       
-                       wxString strDetail;
-                       
-                       for (std::map<int, int>::iterator intiter = SplitPoints.begin(); 
-                       intiter != SplitPoints.end(); ++intiter){
-                       
-                               SLiter = SplitLength.find(intiter->first);
-                       
-                               PropertyData = wxSPropertySeg1.Mid(intPrevValue, (SLiter->second - 1));
-                               
-                               wxStringTokenizer PropertyElement (PropertyData, wxT("="));
-                               PropertyName = PropertyElement.GetNextToken();                          
-                               PropertyValue = PropertyElement.GetNextToken();
-                               
-                               if (PropertyName == wxT("TYPE") && FirstToken == TRUE){
-                               
-                                       if (PropertyValue == wxT("contact")){
-               
-                                               strDetail = _("Contact");
-               
-                                       } else if (PropertyValue == wxT("acquaintance")){
-               
-                                               strDetail = _("Acquaintance");
-               
-                                       } else if (PropertyValue == wxT("friend")){
-               
-                                               strDetail = _("Friend");
-               
-                                       } else if (PropertyValue == wxT("met")){
-               
-                                               strDetail = _("Met");
-               
-                                       } else if (PropertyValue == wxT("co-worker")){
-               
-                                               strDetail = _("Co-worker");
-               
-                                       } else if (PropertyValue == wxT("colleague")){
-               
-                                               strDetail = _("Colleague");
-               
-                                       } else if (PropertyValue == wxT("co-resident")){
-               
-                                               strDetail = _("Co-resident");
-               
-                                       } else if (PropertyValue == wxT("neighbor")){
-               
-                                               strDetail = _("Neighbour");
-               
-                                       } else if (PropertyValue == wxT("child")){
-               
-                                               strDetail = _("Child");
-               
-                                       } else if (PropertyValue == wxT("parent")){
-               
-                                               strDetail = _("Parent");
-               
-                                       } else if (PropertyValue == wxT("sibling")){
-               
-                                               strDetail = _("Sibling");
-               
-                                       } else if (PropertyValue == wxT("spouse")){
-               
-                                               strDetail = _("Spouse");
-               
-                                       } else if (PropertyValue == wxT("kin")){
-               
-                                               strDetail = _("Kin");
-               
-                                       } else if (PropertyValue == wxT("muse")){
-               
-                                               strDetail = _("Muse");
-               
-                                       } else if (PropertyValue == wxT("crush")){
-               
-                                               strDetail = _("Crush");
-               
-                                       } else if (PropertyValue == wxT("date")){
-               
-                                               strDetail = _("Date");
-               
-                                       } else if (PropertyValue == wxT("sweetheart")){
-               
-                                               strDetail = _("Sweetheart");
-               
-                                       } else if (PropertyValue == wxT("me")){
-               
-                                               strDetail = _("Me");
-               
-                                       } else if (PropertyValue == wxT("agent")){
-               
-                                               strDetail = _("Agent");
-               
-                                       } else if (PropertyValue == wxT("emergency")){
-               
-                                               strDetail = _("Emergency");
-               
-                                       } else {
-               
-                                               strDetail = PropertyValue;
-               
-                                       }
-                                       
-                                       FirstToken = FALSE;
-                               
-                               }
-                               
-                       }
-                       
-                       if (strDetail.IsEmpty()){
-                       
-                               strDetail = _("Relation");
-                       
-                       }
-                       
-                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                       
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABRELATEDNAMES"), wxSPropertySeg2);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), strDetail);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-RELATED"), wxSPropertySeg2);
-       
-                       } else {
-
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABRELATEDNAMES"), wxSPropertySeg2);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), strDetail);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-RELATED;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                                                               
-                       }
-                       
-                       ItemSeek++;
-               
-               } else if (wxSProperty == wxT("URL")){
-
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 5;
-                       
-                       intPrevValue = 4;
-                       
-                       // Todo: Check for X-ABLabel.
-                       
-                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                       
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".URL"), wxSPropertySeg2);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("URL"));
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-URL"), wxSPropertySeg2);
-       
-                       } else {
-
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".URL"), wxSPropertySeg2);
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-ABLabel"), _("URL"));
-                               ContactDatav3.AddRaw(wxT("item") + wxString::Format(wxT("%i"), ItemSeek) + wxT(".X-VCARD4-URL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                               
-                       }
-                       
-                       ItemSeek++;
-               
-               } else if (wxSProperty == wxT("TITLE")) {
-
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 7;
-                       
-                       intPrevValue = 6;
-                       
-                       // Look for type before continuing.
-                       
-                       if (TitleFirst == FALSE){
-
-                               ContactDatav3.AddRaw(wxT("TITLE"), wxSPropertySeg2);
-                               
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-       
-                               } else {
-                               
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-TITLE;X-FIRST=TRUE;") 
-                                               + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT(""));
-                               
-                               }
-                               TitleFirst = TRUE;
-                               ItemSeek++;
-                       
-                       } else {
-                       
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-TITLE"), wxSPropertySeg2);
-       
-                               } else {
-                               
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-TITLE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), 
-                                               wxSPropertySeg2);
-                               
-                               }
-                       
-                       }
-                       
-               } else if (wxSProperty == wxT("ROLE")) {
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 6;
-                       
-                       intPrevValue = 5;
-                       
-                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                               ContactDatav3.AddRaw(wxT("X-VCARD4-ROLE"), wxSPropertySeg2);
-
-                       } else {
-                                       
-                               ContactDatav3.AddRaw(wxT("X-VCARD4-ROLE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                               
-                       }
-                       
-               } else if (wxSProperty == wxT("ORG")) {
-
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 5;
-                       
-                       intPrevValue = 4;
-                       
-                       if (OrganisationFirst == FALSE){
-
-                               ContactDatav3.AddRaw(wxT("ORG"), wxSPropertySeg2);
-                               
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-       
-                               } else {
-                               
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ORG;X-FIRST=TRUE;") 
-                                               + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT(""));
-                               
-                               }
-                               OrganisationFirst = TRUE;
-                               ItemSeek++;
-                       
-                       } else {
-                       
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ORG"), wxSPropertySeg2);
-       
-                               } else {
-                               
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-ORG;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), 
-                                               wxSPropertySeg2);
-                               
-                               }
-                       
-                       }
-                       
-               } else if (wxSProperty == wxT("NOTE")) {
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 6;
-                       
-                       intPrevValue = 5;
-                       
-                       if (NoteFirst == FALSE){
-
-                               ContactDatav3.AddRaw(wxT("NOTE"), wxSPropertySeg2);
-                               
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-       
-                               } else {
-                               
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-NOTE;X-FIRST=TRUE;") 
-                                               + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxT(""));
-                                                               
-                               }
-                               NoteFirst = TRUE;
-                               ItemSeek++;
-                       
-                       } else {
-                       
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-NOTE"), wxSPropertySeg2);
-       
-                               } else {
-                               
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-NOTE;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), 
-                                               wxSPropertySeg2);
-                               
-                               }
-                       
-                       }
-                       
-               } else if (wxSProperty == wxT("CATEGORIES")) {
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       wxString PropertyType;
-                       int intPrevValue = 12;
-                       
-                       intPrevValue = 11;
-                       
-                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                        
-                        ContactDatav3.AddRaw(wxT("X-VCARD4-CATEGORIES"), wxSPropertySeg2);
-   
-                    } else {
-                        
-                        ContactDatav3.AddRaw(wxT("X-VCARD4-CATEGORIES;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-
-                    }
-                       
-               } else if (wxSProperty == wxT("PHOTO")) {
-               
-                       size_t intPropertyLen = wxSPropertySeg1.Len();
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intSplitsFound = 0;
-                       int intSplitSize = 0;
-                       int intPrevValue = 7;
-                       
-                       intPropertyLen = wxSPropertySeg2.Len();
-                       SplitPoints.clear();
-                       SplitLength.clear();
-                       intSplitsFound = 0;
-                       intSplitSize = 0;                       
-                       
-                       CaptureString(&wxSPropertySeg2, FALSE);
-                       
-                       for (int i = 0; i <= intPropertyLen; i++){
-               
-                               intSplitSize++;
-                       
-                               if (wxSPropertySeg2.Mid(i, 1) == wxT(";")){
-                       
-                                       intSplitsFound++;
-                                       SplitPoints.insert(std::make_pair(intSplitsFound, (i + 1)));
-                                       
-                                       if (intSplitsFound == 6){ 
-                                       
-                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
-                                               break; 
-                                               
-                                       } else {
-                                       
-                                               SplitLength.insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
-                                       
-                                       }
-                                       
-                                       intSplitSize = 0;                                       
-                       
-                               }
-               
-                       }
-                       
-                       wxString wxSPhotoURI;
-                       wxString wxSPhotoMIME;
-                       wxString wxSPhotoEncoding;
-                       wxString wxSPhotoData;
-                       std::string base64enc;
-                       
-                       if (intSplitsFound == 0){
-                       
-                       } else {
-                       
-                               std::map<int, int>::iterator striter;
-                       
-                               striter = SplitLength.find(1);
-                       
-                               wxStringTokenizer wSTDataType(wxSPropertySeg2.Mid(0, striter->second), wxT(":"));
-                       
-                               while (wSTDataType.HasMoreTokens() == TRUE){
-                               
-                                       wxSPhotoURI = wSTDataType.GetNextToken();
-                                       wxSPhotoMIME = wSTDataType.GetNextToken();
-                                       break;
-                               
-                               }                       
-                       
-                               wxStringTokenizer wSTDataInfo(wxSPropertySeg2.Mid((striter->second + 1)), wxT(","));                    
-                       
-                               while (wSTDataInfo.HasMoreTokens() == TRUE){
-                               
-                                       wxSPhotoEncoding = wSTDataInfo.GetNextToken();
-                                       wxSPhotoData = wSTDataInfo.GetNextToken();                                      
-                                       base64enc = wxSPhotoData.mb_str();
-                                       break;
-                               
-                               }
-                       
-                       }
-                       
-                       
-                       if (PhotoFirst == FALSE){
-
-                               bool PhotoKeepData = FALSE;
-
-                               wxString wxSPhotoMIMEF;
-                               
-                               if (wxSPhotoMIME == wxT("image/png")){
-                                       wxSPhotoMIMEF = wxT("PNG");
-                               } else if (wxSPhotoMIME == wxT("image/jpeg")){
-                                       wxSPhotoMIMEF = wxT("JPEG");
-                               } else if (wxSPhotoMIME == wxT("image/gif")){
-                                       wxSPhotoMIMEF = wxT("GIF");
-                               } else if (wxSPhotoMIME == wxT("image/bmp")){
-                                       wxSPhotoMIMEF = wxT("BMP");                     
-                               } else {
-                                       wxSPhotoMIMEF = wxT("UNKNOWN");
-                                       PhotoKeepData = TRUE;
-                               }
-
-                               ContactDatav3.AddRaw(wxT("PHOTO;ENCODING=b;TYPE=") + wxSPhotoMIMEF, wxSPhotoData);
-
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-       
-                               } else {
-
-                                       if (PhotoKeepData == TRUE){
-                               
-                                               ContactDatav3.AddRaw(wxT("X-VCARD4-PHOTO;X-FIRST=TRUE;") 
-                                                       + ContactLine.Mid((intPrevValue - 1), ((QuoteBreakPoint + 1) - (intPrevValue))), wxSPropertySeg2);
-                                               
-                                       } else {
-
-                                               ContactDatav3.AddRaw(wxT("X-VCARD4-PHOTO;X-FIRST=TRUE;") 
-                                                       + ContactLine.Mid((intPrevValue - 1), ((QuoteBreakPoint + 1) - (intPrevValue))), wxT(""));
-                                       
-                                       }
-                               
-                               }
-                               PhotoFirst = TRUE;
-                               ItemSeek++;
-                       
-                       } else {
-                       
-                               if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-PHOTO"), wxSPropertySeg2);
-       
-                               } else {
-                               
-                                       ContactDatav3.AddRaw(wxT("X-VCARD4-PHOTO;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))) + wxT(":"), 
-                                               wxSPropertySeg2);
-                               }
-                       
-                       }
-                       
-               } else if (wxSProperty == wxT("LOGO")) {
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 6;
-                       
-                       intPrevValue = 5;
-                       
-                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                        
-                               ContactDatav3.AddRaw(wxT("X-VCARD4-LOGO"), wxSPropertySeg2);
-
-                       } else {
-                        
-                               ContactDatav3.AddRaw(wxT("X-VCARD4-LOGO;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                        
-                       }
-                       
-               } else if (wxSProperty == wxT("SOUND")) {
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 7;
-                       
-                       intPrevValue = 6;
-                       
-                       if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                        
-                               ContactDatav3.AddRaw(wxT("X-VCARD4-SOUND"), wxSPropertySeg2);
-
-                       } else {
-                        
-                               ContactDatav3.AddRaw(wxT("X-VCARD4-SOUND;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-                        
-                       }
-                       
-               } else if (wxSProperty == wxT("CALURI")){
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 8;
-            
-                       intPrevValue = 7;
-                       
-            if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                        
-                ContactDatav3.AddRaw(wxT("X-VCARD4-CALURI"), wxSPropertySeg2);
-
-            } else {
-                        
-                ContactDatav3.AddRaw(wxT("X-VCARD4-CALURI;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-
-            }
-               
-               } else if (wxSProperty == wxT("CALADRURI")){
-
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 11;
-                       
-                       intPrevValue = 10;
-                       
-                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                        
-                        ContactDatav3.AddRaw(wxT("X-VCARD4-CALADRURI"), wxSPropertySeg2);
-
-                    } else {
-                        
-                        ContactDatav3.AddRaw(wxT("X-VCARD4-CALADRURI;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-
-                    }
-               
-               } else if (wxSProperty == wxT("FBURL")){
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 7;
-            
-                       intPrevValue = 6;
-                       
-                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                        
-                        ContactDatav3.AddRaw(wxT("X-VCARD4-FBURL"), wxSPropertySeg2);
-
-                    } else {
-                        
-                        ContactDatav3.AddRaw(wxT("X-VCARD4-FBURL;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-
-                    }
-               
-               } else if (wxSProperty == wxT("KEY")){
-               
-                       std::map<int, int> SplitPoints;
-                       std::map<int, int> SplitLength;
-                       std::map<int, int>::iterator SLiter;                    
-                       wxString PropertyData;
-                       wxString PropertyName;
-                       wxString PropertyValue;
-                       wxString PropertyTokens;
-                       int intPrevValue = 5;
-                       
-                       intPrevValue = 4;
-                                               
-            if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                        
-                ContactDatav3.AddRaw(wxT("X-VCARD4-KEY"), wxSPropertySeg2);
-
-            } else {
-                        
-                ContactDatav3.AddRaw(wxT("X-VCARD4-KEY;") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-
-            }
-               
-               } else if (wxSProperty == wxT("UID")){
-               
-                       ContactDatav3.AddRaw(wxT("UID"), wxSPropertySeg2);
-               
-               } else if (wxSProperty.Mid(0, 3) == wxT("VND")){
-               
-                       // Split the Vendor three ways.
-                       
-                       wxStringTokenizer wSTVendorDetails(wxSPropertySeg1, wxT("-"));
-                       
-                       wxString wxSVNDID;
-                       wxString wxSVNDPropName;
-                       
-                       size_t intPrevValue = (wxSProperty.Len() + 1);
-
-                       while (wSTVendorDetails.HasMoreTokens() == TRUE){
-                       
-                               wSTVendorDetails.GetNextToken();
-                               wxSVNDID = wSTVendorDetails.GetNextToken();
-                               wxSVNDPropName = wSTVendorDetails.GetNextToken();
-                               break;
-                       
-                       }
-
-                    if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                        
-                        ContactDatav3.AddRaw(wxT("X-VCARD4-") + wxSProperty, wxSPropertySeg2);
-
-                    } else {
-                        
-                        ContactDatav3.AddRaw(wxT("X-VCARD4-") + wxSProperty + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-
-                    }
-               
-               } else if (wxSProperty.Mid(0, 2) == wxT("X-")){
-                       
-                       size_t intPrevValue = (wxSProperty.Len() + 1);
-                       
-            if (((QuoteBreakPoint + 1) - intPrevValue) <= 0){
-                        
-                ContactDatav3.AddRaw(wxSProperty, wxSPropertySeg2);
-
-            } else {
-                        
-                ContactDatav3.AddRaw(wxSProperty + wxT(";") + ContactLine.Mid(intPrevValue, ((QuoteBreakPoint + 1) - (intPrevValue + 1))), wxSPropertySeg2);
-
-            }
-                       
-               }
-               
-               // Reset the variables.
-               
-               QuoteMode = FALSE;
-               PropertyFind = TRUE;
-               ExtraLineSeek = TRUE;
-               ContactLineLen = 0;
-               QuoteBreakPoint = 0;
-               ContactLine.Clear();
-               wxSProperty.Clear();    
-       
-       }
-       
-       ContactDatav3.AddRaw(wxT("END"), wxT("VCARD"));
-       *wxSData = ContactDatav3.WriteString();
-       
-       return TRUE;
-       
-}
-
-bool vCard34Conv::ConvertToV4(wxString *wxSData, vCard *vCardOut){
-       
-       std::map<int, wxString> ContactFileLines;
-       std::map<int, bool> ContactFileProcessed;
-       std::map<int, bool> ContactFileProcessedWorking;
-       std::map<int, wxString>::iterator striter;
-       std::map<int,bool>::iterator iterbool;
-       std::map<int,bool>::iterator iterboolsub;
-       wxString ContactLineRec;
-
-       // Process the received data.
-       
-       wxStringTokenizer wSTContactFileLines(*wxSData, wxT("\r\n"));
-
-       int ContactLineSeek = 0;
-
-       while (wSTContactFileLines.HasMoreTokens() == TRUE){
-
-               ContactLineRec = wSTContactFileLines.GetNextToken();
-               ContactFileLines.insert(std::make_pair(ContactLineSeek, ContactLineRec));
-               ContactFileProcessed.insert(std::make_pair(ContactLineSeek, FALSE));
-               ContactLineSeek++;              
-       
-       }
-       
-       bool QuoteMode = FALSE;
-       bool PropertyFind = TRUE;
-       bool ExtraLineSeek = TRUE;
-       bool ExtraLineSeekSub = TRUE;
-       bool BirthdayProcessed = FALSE;
-       bool AnniversaryProcessed = FALSE;
-       bool FNProcessed = FALSE;
-       bool GenderProcessed = FALSE;
-       bool NameProcessed = FALSE;
-       bool FNFirst = FALSE;
-       bool NicknameFirst = FALSE;
-       bool TitleFirst = FALSE;
-       bool OrganisationFirst = FALSE;
-       bool NoteFirst = FALSE;
-       bool PhotoFirst = FALSE;
-       bool LogoFirst = FALSE;
-       bool NameFirst = FALSE;
-       bool FoundData = FALSE;
-       int intExtraNickname = 0;
-       wxString wxSProperty;
-       wxString wxSPropertyVCARD4;
-       wxString wxSPropertySeg1;
-       wxString wxSPropertySeg2;
-       wxString wxSPropertyNextLine;
-       wxString ContactLine;
-       wxString ContactLineSub;
-       wxString PropertyName;
-       wxString PropertyValue;
-       wxString PropertyDataStr;
-       size_t ContactLineLen = 0;
-       size_t ContactLineSubLen = 0;
-       int QuoteBreakPoint = 0;
-       size_t intPrevValueSub = 0;
-
-       std::map<wxString, wxString> PropertyData;
-       std::map<wxString, bool> PropertyLock;
-       std::map<wxString, wxString> TempPropertyData;
-       std::map<wxString, bool> TempPropertyLock;
-       std::map<int, int> TempSplitPoints;
-       std::map<int, int> TempSplitLength;
-       std::map<int, int>::iterator SLiter;
-
-       wxString PropertFindSub;
-       wxString wxSPropertySub;
-       wxString wxSPropertySeg1Sub;
-       wxString wxSPropertySeg2Sub;
-       wxString wxSPropertyValues;
-       wxString wxSPropertyData;
-       wxString wxSPropertyNameConv;
-       wxString wxSPropertyXVCard4Value;
-       wxString ItemProcString;
-       
-       bool XVCard4Value = FALSE;
-       bool VCard3Value = FALSE;
-       bool SeekItemData = FALSE;
-       
-       wxString strVer;
-    
-       // Setup the version string.
-       
-       strVer.Append(wxT("-//Xestia//Address Book Version "));
-       strVer.Append(wxT(XSDAB_VERSION));
-       strVer.Append(wxT("//KW"));
-       
-       vCardOut->AddRaw(wxT("BEGIN"), wxT("VCARD"));
-       vCardOut->AddRaw(wxT("VERSION"), wxT("4.0"));
-       vCardOut->AddRaw(wxT("PRODID"), strVer);
-       
-               // FN
-               // NICKNAME
-               // TITLE
-               // ORG
-               // NOTE
-               // PHOTO
-               
-       // Process the properties which have X-FIRST.
-       
-       // Clone the ContactFileProcessed into ContactFileProcessedWorking.
-
-       ContactFileProcessedWorking.insert(ContactFileProcessed.begin(), ContactFileProcessed.end());
-
-       for (std::map<int,wxString>::iterator iter = ContactFileLines.begin(); 
-        iter != ContactFileLines.end(); ++iter){
-        
-               ExtraLineSeek = TRUE;
-
-               iterbool = ContactFileProcessed.find(iter->first);
-               
-               ContactLine = iter->second;
-               
-               // Ignore certain variables as they are not needed.
-               
-               if (ContactLine == wxT("BEGIN:VCARD") || 
-               ContactLine == wxT("END:VCARD") || 
-               ContactLine.Mid(0, 8) == wxT("VERSION:") || 
-               ContactLine.Mid(0, 7) == wxT("PRODID:") || 
-               ContactLine.Mid(0, 5) == wxT("X-AIM") || 
-               ContactLine.Mid(0, 5) == wxT("X-MSN") || 
-               ContactLine.Mid(0, 5) == wxT("X-ICQ") || 
-               ContactLine.Mid(0, 10) == wxT("X-GADUGADU") || 
-               ContactLine.Mid(0, 7) == wxT("X-YAHOO") || 
-               ContactLine.Mid(0, 7) == wxT("X-SKYPE") || 
-               ContactLine.Mid(0, 8) == wxT("X-JABBER") ||
-               ContactLine.Mid(0, 4) == wxT("REV:")){
-                       
-                       iterbool->second = TRUE;
-                       continue;
-                       
-               }
-               
-               if (iterbool->second == TRUE){
-                       
-                       continue;
-                       
-               }
-               
-               if (ContactLine.Mid(0, 1) == wxT(" ") || ContactLine.Mid(0, 1) == wxT("\t")){
-               
-                       continue;
-               
-               }
-       
-               if (ContactLine.Mid(0, 4) == wxT("item")){
-               
-                       // Line is a itemn... so ignore.
-               
-                       continue;
-               
-               }
-               
-               std::map<int,int> DataLineProcess;
-               std::map<int, bool>::iterator DLSLiter;
-               std::map<int,int> DataLineProcessOriginal;
-               int DataLineSeek = 0;
-               int DataLineSeekOrig = 0;
-
-               std::map<int,wxString>::iterator itersub = iter;
-               DataLineProcessOriginal.insert(std::make_pair(DataLineSeekOrig, iterbool->first));
-               DataLineSeekOrig++;
-
-               while (ExtraLineSeek == TRUE){
-               
-                       // Check if there is extra data on the next line 
-                       // (indicated by space or tab at the start) and add data.
-               
-                       itersub++;
-
-                       if (itersub == ContactFileLines.end()){
-
-                               break;
-
-                       }
-
-                       iterboolsub = ContactFileProcessed.find(itersub->first);
-
-                       if (iterboolsub == ContactFileProcessed.end()){
-                       
-                               break;
-                       
-                       }
-                       
-                       if (iterboolsub->second == TRUE){
-                       
-                               continue;
-                       
-                       }               
-               
-                       wxSPropertyNextLine = itersub->second;
-               
-                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
-               
-                               wxSPropertyNextLine.Remove(0, 1);
-                               //wxSPropertyNextLine.Trim(FALSE);
-                               //ContactLine.Trim();
-                               ContactLine.Append(wxSPropertyNextLine);
-                               DataLineProcessOriginal.insert(std::make_pair(DataLineSeekOrig, iterboolsub->first));
-                               DataLineSeekOrig++;
-                               //iterboolsub->second = TRUE;
-               
-                       } else {
-                       
-                               ExtraLineSeek = FALSE;
-                       
-                       }
-               
-               }
-               
-               ContactLineLen = ContactLine.Len();
-               
-               for (int i = 0; i <= ContactLineLen; i++){
-               
-                       if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
-                       
-                               PropertyFind = FALSE;
-                       
-                       } else if (PropertyFind == TRUE){
-                       
-                               wxSProperty.Append(ContactLine.Mid(i, 1));
-                       
-                       }               
-               
-                       if (ContactLine.Mid(i, 1) == wxT("\"")){
-                       
-                               if (QuoteMode == TRUE){
-                               
-                                       QuoteMode = FALSE;
-                               
-                               } else {
-                       
-                                       QuoteMode = TRUE;
-                                       
-                               }
-                       
-                       }
-                       
-                       if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
-                       
-                               QuoteBreakPoint = i;
-                               break;
-                       
-                       }
-               
-               }
-
-               wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint);
-               wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1));
-
-               wxStringTokenizer wxSPropertySegSplit(wxSPropertySeg1, wxT(";"));
-               wxSProperty = wxSPropertySegSplit.GetNextToken();
-                       
-               // Check what type of property it is.
-               
-               FoundData = FALSE;
-               
-               if ((wxSProperty == wxT("PHOTO") && PhotoFirst == FALSE) ||
-               (wxSProperty == wxT("NICKNAME") && NicknameFirst == FALSE) || 
-               (wxSProperty == wxT("TITLE") && TitleFirst == FALSE) || 
-               (wxSProperty == wxT("FN") && FNFirst == FALSE) || 
-               (wxSProperty == wxT("ORG") && OrganisationFirst == FALSE) ||
-               (wxSProperty == wxT("NOTE") && NoteFirst == FALSE)){
-                       
-                       wxSPropertyVCARD4 = wxT("X-VCARD4-") + wxSProperty;
-                       intPrevValueSub = (wxSPropertyVCARD4.Len() + 2);
-                       
-                       for (std::map<int,wxString>::iterator itersub = ContactFileLines.begin(); 
-                       itersub != ContactFileLines.end(); ++itersub){
-               
-                               //DataLineProcess = DataLineProcessOriginal;
-                               //DataLineSeek = DataLineSeekOrig;
-               
-                               ContactLineSub = itersub->second;
-               
-                               ExtraLineSeekSub = TRUE;
-
-                               iterboolsub = ContactFileProcessed.find(itersub->first);
-                               //std::map<int,bool>::iterator iterorig = ContactFileProcessed.find(itersub->first);
-                               //std::map<int,bool>::iterator itersuborig;
-               
-                               // Ignore certain variables as they are not needed.
-               
-                               if (ContactLineSub == wxT("BEGIN:VCARD") || 
-                               ContactLineSub == wxT("END:VCARD") || 
-                               ContactLineSub.Mid(0, 8) == wxT("VERSION:") || 
-                               ContactLineSub.Mid(0, 7) == wxT("PRODID:") || 
-                               ContactLineSub.Mid(0, 5) == wxT("X-AIM") || 
-                               ContactLineSub.Mid(0, 5) == wxT("X-MSN") || 
-                               ContactLineSub.Mid(0, 5) == wxT("X-ICQ") || 
-                               ContactLineSub.Mid(0, 10) == wxT("X-GADUGADU") || 
-                               ContactLineSub.Mid(0, 7) == wxT("X-YAHOO") || 
-                               ContactLineSub.Mid(0, 7) == wxT("X-SKYPE") || 
-                               ContactLineSub.Mid(0, 8) == wxT("X-JABBER") ||
-                               ContactLineSub.Mid(0, 4) == wxT("REV:")){
-                       
-                                       iterboolsub->second = TRUE;
-                                       continue;
-                       
-                               }
-               
-                               if (iterboolsub->second == TRUE){
-
-                                       continue;
-                       
-                               }
-               
-                               if (ContactLineSub.Mid(0, 1) == wxT(" ") || ContactLineSub.Mid(0, 1) == wxT("\t")){
-               
-                                       continue;
-               
-                               }
-       
-                               if (ContactLineSub.Mid(0, 4) == wxT("item")){
-               
-                                       // Line is a itemn... so ignore.
-               
-                                       continue;
-               
-                               }
-               
-                               //std::map<int,wxString>::iterator itersub = iter;
-                               
-                               DataLineProcess.insert(std::make_pair(DataLineSeek, itersub->first));
-                               DataLineSeek++;
-
-
-
-                               while (ExtraLineSeekSub == TRUE){
-
-                                       if (itersub == ContactFileLines.end()){
-                                               ExtraLineSeekSub = FALSE;
-                                               continue;
-                                       } else {
-                                               itersub++;
-
-                                       }
-
-                                       iterboolsub = ContactFileProcessedWorking.find(itersub->first);
-
-                                       wxSPropertyNextLine = itersub->second;
-
-                                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
-
-                                               wxSPropertyNextLine.Remove(0, 1);
-                                               //wxSPropertyNextLine.Trim(FALSE);
-                                               //ContactLine.Trim();
-                                               ContactLineSub.Append(wxSPropertyNextLine);
-                                               //iterboolsub->second = TRUE;
-                                               DataLineProcess.insert(std::make_pair(DataLineSeek, itersub->first));
-                                               DataLineSeek++;
-
-                                       } else {
-
-                                               itersub--;
-                                               ExtraLineSeekSub = FALSE;
-
-                                       }
-
-                               }
-
-                               /*while (ExtraLineSeekSub == TRUE && iterboolsub != ContactFileProcessedWorking.end()){
-               
-                                       // Check if there is extra data on the next line 
-                                       // (indicated by space or tab at the start) and add data.
-               
-                                       itersub++;
-
-                                       iterboolsub = ContactFileProcessedWorking.find(itersub->first);
-                       
-                                       if (iterboolsub->second == TRUE){
-                       
-                                               continue;
-                       
-                                       }
-                       
-                                       if (itersub == ContactFileLines.end()){
-                       
-                                               break;
-                       
-                                       }                       
-               
-                                       wxSPropertyNextLine = itersub->second;
-               
-                                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
-               
-                                               wxSPropertyNextLine.Remove(0, 1);
-                                               //wxSPropertyNextLine.Trim(FALSE);
-                                               //ContactLine.Trim();
-                                               ContactLineSub.Append(wxSPropertyNextLine);
-                                               //iterboolsub->second = TRUE;
-                                               DataLineProcess.insert(std::make_pair(DataLineSeek, itersub->first));
-                                               DataLineSeek++;
-               
-                                       } else {
-                       
-                                               itersub--;
-                                               ExtraLineSeekSub = FALSE;
-                       
-                                       }
-
-                                       if (iterboolsub == ContactFileProcessedWorking.end()){
-
-                                               break;
-                                               ExtraLineSeekSub = FALSE;
-
-                                       }
-               
-                               }*/
-               
-                               ContactLineSubLen = ContactLineSub.Len();
-                               PropertyFind = TRUE;
-                               wxSPropertySub.clear();
-                       
-                               for (int i = 0; i <= ContactLineSubLen; i++){
-               
-                                       if ((ContactLineSub.Mid(i, 1) == wxT(";") || ContactLineSub.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
-                       
-                                               PropertyFind = FALSE;
-                       
-                                       } else if (PropertyFind == TRUE){
-                       
-                                               wxSPropertySub.Append(ContactLineSub.Mid(i, 1));
-                       
-                                       }               
-               
-                                       if (ContactLineSub.Mid(i, 1) == wxT("\"")){
-                       
-                                               if (QuoteMode == TRUE){
-                                
-                                                       QuoteMode = FALSE;
-                               
-                                               } else {
-                       
-                                                       QuoteMode = TRUE;
-                                       
-                                               }
-                       
-                                       }
-                       
-                                       if (ContactLineSub.Mid(i, 1) == wxT(":") && ContactLineSub.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
-                       
-                                               QuoteBreakPoint = i;
-                                               break;
-                       
-                                       }
-               
-                               }
-
-                               if (wxSPropertySub != wxSPropertyVCARD4){
-                       
-                                       wxSPropertySub.clear();
-                                       DataLineSeek = 0;
-                                       DataLineProcess.clear();
-                                       continue;
-                       
-                               }
-
-                               wxSPropertySeg1Sub = ContactLineSub.Mid(0, QuoteBreakPoint);
-                               wxSPropertySeg2Sub = ContactLineSub.Mid((QuoteBreakPoint + 1));
-
-                               // Split the property name data.
-                       
-                               // Strip the X-VCARD4- from the variable.
-                               
-                               wxString wxSPropertyChopped =  wxSPropertySeg1Sub.Mid(9);
-                       
-                               intPrevValueSub = (wxSProperty.Len() + 2);
-                               
-                               SplitValuesData(&wxSPropertyChopped, &TempSplitPoints, &TempSplitLength, (int)intPrevValueSub, &TempPropertyData);
-                               
-                               // Process the splitted data into temporary property data.
-
-                               // Look for certain property names and the X-FIRST
-                               // property name.
-                                       
-                               bool ProcessData = FALSE;
-                       
-                               // Check for X-FIRST.
-                       
-                               for (std::map<wxString, wxString>::iterator xfiter = TempPropertyData.begin(); 
-                               xfiter != TempPropertyData.end(); ++xfiter){
-                       
-                                       PropertyName = xfiter->first;
-                                       PropertyValue = xfiter->second;
-                                               
-                                       if (PropertyName == wxT("X-FIRST") && PropertyValue == wxT("TRUE")){
-                               
-                                               ProcessData = TRUE;
-                                               
-                                               if (wxSProperty == wxT("PHOTO")){ PhotoFirst = TRUE; }
-                                               else if (wxSProperty == wxT("NICKNAME")){ NicknameFirst = TRUE; }
-                                               else if (wxSProperty == wxT("TITLE")){ TitleFirst = TRUE; }
-                                               else if (wxSProperty == wxT("FN")){ FNFirst = TRUE; }
-                                               else if (wxSProperty == wxT("ORG")){ OrganisationFirst = TRUE; }
-                                               else if (wxSProperty == wxT("NOTE")){ NoteFirst = TRUE; }
-                                               break;
-                               
-                                       }
-                       
-                               }
-                       
-                               if (ProcessData == FALSE){
-                       
-                                       DataLineProcess.clear();
-                                       DataLineSeek = 0;
-                                       TempPropertyData.clear();
-                       
-                               } else {
-                               
-                                       wxT("PHOTODANCEMATCH!");
-                       
-                                       for (std::map<wxString, wxString>::iterator xfiter = TempPropertyData.begin(); 
-                                       xfiter != TempPropertyData.end(); ++xfiter){
-                       
-                                               PropertyName = xfiter->first;
-                                               PropertyValue = xfiter->second;
-                       
-                                               if (PropertyName == wxT("X-FIRST")){
-                               
-                                                       continue;
-                               
-                                               }
-                               
-                                               PropertyData.insert(std::make_pair(PropertyName, PropertyValue));
-                                               PropertyLock.insert(std::make_pair(PropertyName, FALSE));
-                       
-                                       }
-                               
-                                       // Mark all lines as processed.
-                                       
-                                       for (std::map<int,int>::iterator dpiter = DataLineProcess.begin(); 
-                                       dpiter != DataLineProcess.end(); ++dpiter){
-                                       
-                                               DLSLiter = ContactFileProcessed.find(dpiter->second);
-                                               DLSLiter->second = TRUE;
-                                       
-                                       }
-                                       
-                                       for (std::map<int,int>::iterator dpoiter = DataLineProcessOriginal.begin(); 
-                                       dpoiter != DataLineProcessOriginal.end(); ++dpoiter){
-                                       
-                                               DLSLiter = ContactFileProcessed.find(dpoiter->second);
-                                               DLSLiter->second = TRUE;
-                                       
-                                       }
-                                       
-                                       DataLineProcess.clear();
-                                       DataLineProcessOriginal.clear();
-                                       DataLineSeek = 0;
-                                       DataLineSeekOrig = 0;
-                                       TempSplitPoints.clear();
-                                       TempSplitLength.clear();
-                                       TempPropertyData.clear();
-                                       FoundData = TRUE;
-                                       
-                                       break;
-                       
-                               }
-                               
-                       }
-               
-               } else {
-               
-                       wxSProperty.clear();
-                       wxSPropertySub.Clear();
-                       wxSPropertySeg1.Clear();
-                       wxSPropertySeg2.Clear();
-                       wxSPropertySeg1Sub.Clear();
-                       wxSPropertySeg2Sub.Clear();
-                       wxSPropertyValues.Clear();
-                       wxSPropertyData.Clear();
-                       wxSPropertyXVCard4Value.Clear();
-                       wxSPropertyNameConv.Clear();
-                       PropertyData.clear();
-                       PropertyLock.clear();
-                       ContactLine.clear();
-                       ContactLineSub.clear();
-                       DataLineProcess.clear();
-                       DataLineProcessOriginal.clear();
-                       TempSplitPoints.clear();
-                       TempSplitLength.clear();
-                       wxSPropertyVCARD4.clear();
-                       DataLineSeek = 0;
-                       DataLineSeekOrig = 0;
-                       XVCard4Value = FALSE;
-                       VCard3Value = FALSE;
-               
-               }
-               
-               if (FoundData == FALSE){
-               
-                       wxSProperty.clear();
-                       wxSPropertySub.Clear();
-                       wxSPropertySeg1.Clear();
-                       wxSPropertySeg2.Clear();
-                       wxSPropertySeg1Sub.Clear();
-                       wxSPropertySeg2Sub.Clear();
-                       wxSPropertyValues.Clear();
-                       wxSPropertyData.Clear();
-                       wxSPropertyXVCard4Value.Clear();
-                       wxSPropertyNameConv.Clear();
-                       PropertyData.clear();
-                       PropertyLock.clear();
-                       ContactLine.clear();
-                       ContactLineSub.clear();
-                       DataLineProcess.clear();
-                       DataLineProcessOriginal.clear();
-                       TempSplitPoints.clear();
-                       TempSplitLength.clear();
-                       wxSPropertyVCARD4.clear();
-                       DataLineSeek = 0;
-                       DataLineSeekOrig = 0;
-                       XVCard4Value = FALSE;
-                       VCard3Value = FALSE;
-               
-               }
-               
-               ConvertV4PropertyProc(&wxSProperty, &wxSPropertySeg1, &wxSPropertySeg2, 
-                       &wxSPropertyValues, &wxSPropertyData, &wxSPropertyXVCard4Value, 
-                       &wxSPropertyNameConv, &PropertyData, &PropertyLock, FALSE, &VCard3Value, &XVCard4Value);
-               
-               wxString FinalPropertyData;
-       
-               FinalPropertyData.Append(wxSPropertyNameConv);
-       
-               for (std::map<wxString, wxString>::iterator striter = PropertyData.begin(); 
-               striter != PropertyData.end(); ++striter){
-
-                       FinalPropertyData.Append(wxT(";"));             
-                       FinalPropertyData.Append(striter->first);
-                       FinalPropertyData.Append(wxT("="));
-                       FinalPropertyData.Append(striter->second);
-               
-               }
-               
-               wxString FinalPropValue;
-               
-               if (wxSPropertyXVCard4Value.IsEmpty()){
-               
-                       FinalPropValue = wxSPropertyData;
-               
-               } else {
-               
-                       if (wxSPropertyXVCard4Value != wxSPropertyData){
-               
-                               FinalPropValue = wxSPropertyXVCard4Value;
-                       
-                       }
-               
-               }
-                       
-               if (FinalPropertyData.IsEmpty() && FinalPropValue.IsEmpty()){
-               
-                       continue;
-               
-               }
-               
-               vCardOut->AddRaw(FinalPropertyData, FinalPropValue);
-
-               wxSProperty.clear();
-               wxSPropertySub.Clear();
-               wxSPropertySeg1.Clear();
-               wxSPropertySeg2.Clear();
-               wxSPropertySeg1Sub.Clear();
-               wxSPropertySeg2Sub.Clear();
-               wxSPropertyValues.Clear();
-               wxSPropertyData.Clear();
-               wxSPropertyXVCard4Value.Clear();
-               wxSPropertyNameConv.Clear();
-               //FinalPropertyData.clear();
-               //FinalPropValue.clear();
-               PropertyData.clear();
-               PropertyLock.clear();
-               ContactLine.clear();
-               ContactLineSub.clear();
-               DataLineProcess.clear();
-               DataLineProcessOriginal.clear();
-               wxSPropertyVCARD4.clear();
-               DataLineSeek = 0;
-               DataLineSeekOrig = 0;
-               XVCard4Value = FALSE;
-               VCard3Value = FALSE;
-       
-       }
-       
-       // Process the non-itemn values.
-       
-       for (std::map<int,wxString>::iterator iter = ContactFileLines.begin(); 
-        iter != ContactFileLines.end(); ++iter){
-       
-               ExtraLineSeek = TRUE;
-
-               iterbool = ContactFileProcessed.find(iter->first);
-               
-               ContactLine = iter->second;
-               
-               // Ignore certain variables as they are not needed.
-               
-               if (ContactLine == wxT("BEGIN:VCARD") || 
-               ContactLine == wxT("END:VCARD") || 
-               ContactLine.Mid(0, 8) == wxT("VERSION:") || 
-               ContactLine.Mid(0, 7) == wxT("PRODID:") || 
-               ContactLine.Mid(0, 5) == wxT("X-AIM") || 
-               ContactLine.Mid(0, 5) == wxT("X-MSN") || 
-               ContactLine.Mid(0, 5) == wxT("X-ICQ") || 
-               ContactLine.Mid(0, 10) == wxT("X-GADUGADU") || 
-               ContactLine.Mid(0, 7) == wxT("X-YAHOO") || 
-               ContactLine.Mid(0, 7) == wxT("X-SKYPE") || 
-               ContactLine.Mid(0, 8) == wxT("X-JABBER") ||
-               ContactLine.Mid(0, 4) == wxT("REV:")){
-                       
-                       iterbool->second = TRUE;
-                       continue;
-                       
-               }
-               
-               if (iterbool->second == TRUE){
-                       
-                       continue;
-                       
-               }
-               
-               if (ContactLine.Mid(0, 1) == wxT(" ") || ContactLine.Mid(0, 1) == wxT("\t")){
-               
-                       continue;
-               
-               }
-       
-               if (ContactLine.Mid(0, 4) == wxT("item")){
-               
-                       // Line is a itemn... so ignore.
-               
-                       continue;
-               
-               }
-               
-               std::map<int,wxString>::iterator itersub = iter;
-
-               while (ExtraLineSeek == TRUE){
-               
-                       // Check if there is extra data on the next line 
-                       // (indicated by space or tab at the start) and add data.
-
-                       if (itersub == ContactFileLines.end()){
-                               ExtraLineSeekSub = FALSE;
-                               continue;
-                       }
-                       else {
-                               itersub++;
-
-                       }
-
-                       iterboolsub = ContactFileProcessedWorking.find(itersub->first);
-
-                       if (iterboolsub == ContactFileProcessedWorking.end()){
-                       
-                               break;
-                       
-                       }
-                       
-                       if (iterboolsub->second == TRUE){
-                       
-                               continue;
-                       
-                       }
-                       
-                       if (itersub == ContactFileLines.end()){
-                       
-                               break;
-                       
-                       }                       
-               
-                       wxSPropertyNextLine = itersub->second;
-               
-                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
-               
-                               wxSPropertyNextLine.Remove(0, 1);
-                               //wxSPropertyNextLine.Trim(FALSE);
-                               //ContactLine.Trim();
-                               ContactLine.Append(wxSPropertyNextLine);
-                               iterboolsub->second = TRUE;
-               
-                       } else {
-                       
-                               ExtraLineSeek = FALSE;
-                       
-                       }
-               
-               }
-               
-               ContactLineLen = ContactLine.Len();
-               
-               for (int i = 0; i <= ContactLineLen; i++){
-               
-                       if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
-                       
-                               PropertyFind = FALSE;
-                       
-                       } else if (PropertyFind == TRUE){
-                       
-                               wxSProperty.Append(ContactLine.Mid(i, 1));
-                       
-                       }               
-               
-                       if (ContactLine.Mid(i, 1) == wxT("\"")){
-                       
-                               if (QuoteMode == TRUE){
-                               
-                                       QuoteMode = FALSE;
-                               
-                               } else {
-                       
-                                       QuoteMode = TRUE;
-                                       
-                               }
-                       
-                       }
-                       
-                       if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
-                       
-                               QuoteBreakPoint = i;
-                               break;
-                       
-                       }
-               
-               }
-
-               wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint);
-               wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1));
-
-               wxStringTokenizer wxSPropertySegSplit(wxSPropertySeg1, wxT(";"));
-               wxSProperty = wxSPropertySegSplit.GetNextToken();
-
-               std::map<int,int> DataLineProcess;
-               std::map<int, bool>::iterator DLSLiter;
-               
-               // Look for the X-VCARD4-(variablename) equivilant.
-               
-               wxSPropertyVCARD4 = wxT("X-VCARD4-") + wxSProperty;
-                       
-               // Sort out remainder of the types.
-               
-               ConvertV4PropertyProc(&wxSProperty, &wxSPropertySeg1, &wxSPropertySeg2, 
-                       &wxSPropertyValues, &wxSPropertyData, &wxSPropertyXVCard4Value, 
-                       &wxSPropertyNameConv, &PropertyData, &PropertyLock, FALSE, &VCard3Value, &XVCard4Value);
-               
-               wxString FinalPropertyData;
-       
-               FinalPropertyData.Append(wxSPropertyNameConv);
-       
-               for (std::map<wxString, wxString>::iterator striter = PropertyData.begin(); 
-               striter != PropertyData.end(); ++striter){
-
-                       FinalPropertyData.Append(wxT(";"));             
-                       FinalPropertyData.Append(striter->first);
-                       FinalPropertyData.Append(wxT("="));
-                       FinalPropertyData.Append(striter->second);
-               
-               }
-               
-               wxString FinalPropValue;
-               
-               if (wxSPropertyXVCard4Value.IsEmpty()){
-               
-                       FinalPropValue = wxSPropertyData;
-               
-               } else {
-               
-                       if (wxSPropertyXVCard4Value != wxSPropertyData){
-               
-                               FinalPropValue = wxSPropertyXVCard4Value;
-                       
-                       }
-               
-               }
-               
-               vCardOut->AddRaw(FinalPropertyData, FinalPropValue);
-
-               wxSProperty.clear();
-               wxSPropertySub.Clear();
-               wxSPropertySeg1.Clear();
-               wxSPropertySeg2.Clear();
-               wxSPropertyValues.Clear();
-               wxSPropertyData.Clear();
-               wxSPropertyXVCard4Value.Clear();
-               wxSPropertyNameConv.Clear();
-               //FinalPropertyData.clear();
-               //FinalPropValue.clear();
-               PropertyData.clear();
-               PropertyLock.clear();
-               ContactLine.clear();
-               XVCard4Value = FALSE;
-               VCard3Value = FALSE;
-       
-       }
-       
-       int FNCount = 0;
-       int NameCount = 0;
-       int NicknameCount = 0;
-       int ADRCount = 0;
-       int EmailCount = 0;
-       int IMPPCount = 0;
-       int TelCount = 0;
-       int LangCount = 0;
-       int TZCount = 0;
-       int GeoCount = 0;
-       int URLCount = 0;
-       int RelatedCount = 0;
-       int TitleCount = 0;
-       int RoleCount = 0;
-       int OrgCount = 0;
-       int NoteCount = 0;
-       int CategoryCount = 0;
-       int PhotoCount = 0;
-       int LogoCount = 0;
-       int SoundCount = 0;
-       int CalAdrCount = 0;
-       int CalReqAdrCount = 0;
-       int FreeBusyCount = 0;
-       int KeyCount = 0;
-       int VendorCount = 0;
-       int XTokenCount = 0;
-       int ItemSeek = 1;
-       int MaxItemNumber = 0;
-       int ItemOrdered = 0;
-       int ItemUnordered = 0;
-       int ItemNumber = 0;
-       size_t ItemStringSeekLen = 0;
-       int ItemSeekSub = 0;
-       int ItemSeekSecSub = 0;
-       //int intValueSeek = 1;
-       
-       std::map<int, wxString> NumberedName;
-       std::map<int, wxString> NumberedData;
-       std::map<int, wxString> NumberedPropValues;
-       std::map<int, wxString> NumberedPropOldValue;
-       
-       std::map<int, wxString> UnNumberedName;
-       std::map<int, wxString> UnNumberedData;
-       std::map<int, wxString> UnNumberedPropValues;
-       std::map<int, wxString> UnNumberedPropOldValue;
-
-       // Part 1: Get the itemn number.
-       
-       std::map<int,bool>::iterator iterboolsecsub;
-       std::map<int,wxString>::iterator itersub;
-       std::map<int, wxString> TempData;
-       PropertyData.clear();
-       PropertyLock.clear();
-       wxString ItemString;
-       wxString ItemStringSeek;
-       wxString ItemPropName;
-       ContactLineSeek = 0;
-       
-       ContactLineSub.clear();
-       ExtraLineSeekSub = 0;
-       wxString wxSPropertyNextLineSub;
-       ContactLineSubLen = 0;
-       int ItemIndex = 0;
-       PropertFindSub.clear();
-       wxSPropertySub.clear();
-       wxSPropertySeg1Sub.clear();
-       wxSPropertySeg2Sub.clear();
-       wxSPropertyValues.clear();
-       wxSPropertyData.clear();
-       wxSPropertyNameConv.clear();
-       wxSPropertyXVCard4Value.clear();
-       ItemProcString.clear();
-       
-       XVCard4Value = FALSE;
-       VCard3Value = FALSE;
-       SeekItemData = FALSE;
-       
-       std::map<wxString, void*> ItemMapIndex;
-       //std::map<wxString, wxString> ItemNameIndex;
-       
-       // Look for item in the initial line, process into a proper line then
-       // look for other lines with the same item association.
-       
-       for (std::map<int,wxString>::iterator iter = ContactFileLines.begin();
-               iter != ContactFileLines.end(); ++iter){
-       
-               ExtraLineSeek = TRUE;
-               
-               iterbool = ContactFileProcessed.find(iter->first);
-               
-               if (iterbool->second == TRUE){
-               
-                       continue;
-               
-               }
-               
-               ContactLine = iter->second;
-               
-               if (ContactLine.Mid(0, 1) == wxT(" ") || ContactLine.Mid(0, 1) == wxT("\t")){
-               
-                       continue;
-               
-               }
-               
-               if (ContactLine.Mid(0, 4) != wxT("item")){
-               
-                       continue;
-               
-               }
-               
-               // Get Item data.
-
-               //ContactLineSeekSub = ContactLineSeek;
-               std::map<int,wxString>::iterator itersub = iter;
-
-               while (ExtraLineSeek == TRUE){
-               
-                       // Check if there is extra data on the next line 
-                       // (indicated by space or tab at the start) and add data.
-               
-                       itersub++;
-                       iterboolsub = ContactFileProcessed.find(itersub->first);
-
-                       if (iterboolsub == ContactFileProcessed.end()){
-                       
-                               break;
-                       
-                       }
-                       
-                       if (iterboolsub->second == TRUE){
-                       
-                               continue;
-                       
-                       }
-                       
-                       if (itersub == ContactFileLines.end()){
-                       
-                               break;
-                       
-                       }                       
-               
-                       wxSPropertyNextLine = itersub->second;
-               
-                       if (wxSPropertyNextLine.Mid(0, 1) == wxT(" ") || wxSPropertyNextLine.Mid(0, 1) == wxT("\t")){
-               
-                               wxSPropertyNextLine.Remove(0, 1);
-                               //wxSPropertyNextLine.Trim(FALSE);
-                               //ContactLine.Trim();
-                               ContactLine.Append(wxSPropertyNextLine);
-                               iterboolsub->second = TRUE;
-               
-                       } else {
-                       
-                               ExtraLineSeek = FALSE;
-                       
-                       }
-               
-               }
-               
-               ContactLineLen = ContactLine.Len();
-               
-               for (int i = 0; i <= ContactLineLen; i++){
-               
-                       if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
-                       
-                               PropertyFind = FALSE;
-                       
-                       } else if (PropertyFind == TRUE){
-                       
-                               wxSProperty.Append(ContactLine.Mid(i, 1));
-                       
-                       }               
-               
-                       if (ContactLine.Mid(i, 1) == wxT("\"")){
-                       
-                               if (QuoteMode == TRUE){
-                               
-                                       QuoteMode = FALSE;
-                               
-                               } else {
-                       
-                                       QuoteMode = TRUE;
-                                       
-                               }
-                       
-                       }
-                       
-                       if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
-                       
-                               QuoteBreakPoint = i;
-                               break;
-                       
-                       }
-               
-               }
-
-               wxSPropertySeg1 = ContactLine.Mid(0, QuoteBreakPoint);
-               wxSPropertySeg2 = ContactLine.Mid((QuoteBreakPoint + 1));
-               
-               // Go through the lines and collect the lines like itemn.
-               
-               std::map<int,wxString> *ItemListData;
-               ItemListData = new std::map<int,wxString>;
-               
-               wxStringTokenizer ItemData(wxSPropertySeg1, wxT("."));
-               
-               ItemString = ItemData.GetNextToken();
-               ItemStringSeek = wxT("item") + ItemString.Mid(4);
-               
-               wxStringTokenizer ItemPropSplit(ItemData.GetNextToken(), wxT(";"));
-               
-               ItemPropName = ItemPropSplit.GetNextToken();
-               
-               ItemStringSeekLen = ItemStringSeek.Len();
-               
-               ItemIndex = 0;
-               
-               for (std::map<int,wxString>::iterator itersec = ContactFileLines.begin();
-               itersec != ContactFileLines.end(); ++itersec){
-               
-                       ExtraLineSeek = TRUE;
-               
-                       iterboolsub = ContactFileProcessed.find(itersec->first);
-               
-                       if (iterboolsub->second == TRUE){
-                       
-                               continue;
-                       
-                       }
-               
-                       ContactLineSub = itersec->second;
-                       
-                       wxStringTokenizer ItemProcData(ContactLineSub, wxT("."));
-                       ItemProcString = ItemData.GetNextToken();
-                       
-                       if (ItemStringSeek != ContactLineSub.Mid(0, ItemStringSeekLen)){
-                       
-                               continue;
-                       
-                       }
-                       
-                       ItemIndex++;
-                       
-                       ItemListData->insert(std::make_pair(ItemIndex, ContactLineSub));
-                       
-                       iterboolsub->second = TRUE;
-               
-               }
-               
-               //ItemNameIndex.insert(std::make_pair(ItemStringSeek, ItemPropName));
-               ItemListData->insert(std::make_pair(ItemIndex, ContactLineSub));
-               ItemMapIndex.insert(std::make_pair(ItemStringSeek, ItemListData));
-               
-       }
-       
-       // Process each itemn set.
-       
-       for (std::map<wxString, void*>::iterator iter = ItemMapIndex.begin();
-               iter != ItemMapIndex.end(); ++iter){
-                       
-               std::map<int, wxString> *ItemDataPtr;
-
-               ItemDataPtr = (std::map<int,wxString>*)iter->second;
-               
-               for (std::map<int,wxString>::iterator itersub = ItemDataPtr->begin();
-                       itersub != ItemDataPtr->end(); ++itersub){
-                       
-                       ContactLine = itersub->second;
-                       
-                       ContactLineLen = ContactLine.Len();
-               
-                       for (int i = 0; i <= ContactLineLen; i++){
-               
-                               if ((ContactLine.Mid(i, 1) == wxT(";") || ContactLine.Mid(i, 1) == wxT(":")) && PropertyFind == TRUE){
-                       
-                                       PropertyFind = FALSE;
-                       
-                               } else if (PropertyFind == TRUE){
-                       
-                                       wxSProperty.Append(ContactLine.Mid(i, 1));
-                       
-                               }               
-               
-                               if (ContactLine.Mid(i, 1) == wxT("\"")){
-                       
-                                       if (QuoteMode == TRUE){
-                               
-                                               QuoteMode = FALSE;
-                               
-                                       } else {
-                       
-                                               QuoteMode = TRUE;
-                                       
-                                       }
-                       
-                               }
-                       
-                               if (ContactLine.Mid(i, 1) == wxT(":") && ContactLine.Mid((i - 1), 1) != wxT("\\") && QuoteMode == FALSE){
-                       
-                                       QuoteBreakPoint = i;
-                                       break;
-                       
-                               }
-               
-                       }
-                       
-                       wxSPropertySeg1Sub = ContactLine.Mid(0, QuoteBreakPoint);
-                       wxSPropertySeg2Sub = ContactLine.Mid((QuoteBreakPoint + 1));
-                       
-                       wxStringTokenizer wxSPropertySegSplit(wxSPropertySeg1Sub, wxT(";"));
-                       wxSProperty = wxSPropertySegSplit.GetNextToken();
-                       
-                       // Sort out remainder of the types.
-                       
-                       // Skip certain X-* IM variables as they are processed via
-                       // IMPP.
-                       
-                       if (wxSProperty == wxT("X-AIM") || wxSProperty == wxT("X-MSN") || 
-                       wxSProperty == wxT("X-ICQ") || wxSProperty == wxT("X-GADUGADU") || 
-                       wxSProperty == wxT("X-YAHOO") || wxSProperty == wxT("X-SKYPE") || 
-                       wxSProperty == wxT("X-JABBER")){
-               
-                               wxSProperty.clear();
-                               wxSPropertySub.Clear();
-                               wxSPropertySeg1.Clear();
-                               wxSPropertySeg2.Clear();
-                               wxSPropertyValues.Clear();
-                               wxSPropertyData.Clear();
-                               wxSPropertyXVCard4Value.Clear();
-                               wxSPropertyNameConv.Clear();
-                               //FinalPropertyData.clear();
-                               //FinalPropValue.clear();
-                               PropertyData.clear();
-                               PropertyLock.clear();
-                               ContactLine.clear();
-                               XVCard4Value = FALSE;
-                               VCard3Value = FALSE;
-                               continue;
-               
-                       }
-                       
-                       ConvertV4PropertyProc(&wxSProperty, &wxSPropertySeg1Sub, &wxSPropertySeg2Sub, 
-                       &wxSPropertyValues, &wxSPropertyData, &wxSPropertyXVCard4Value, 
-                       &wxSPropertyNameConv, &PropertyData, &PropertyLock, TRUE, &VCard3Value, &XVCard4Value);
-                       
-               }
-               
-               if (wxSPropertyNameConv.IsEmpty()){
-               
-                       wxSProperty.clear();
-                       wxSPropertySub.Clear();
-                       wxSPropertySeg1.Clear();
-                       wxSPropertySeg2.Clear();
-                       wxSPropertyValues.Clear();
-                       wxSPropertyData.Clear();
-                       wxSPropertyXVCard4Value.Clear();
-                       wxSPropertyNameConv.Clear();
-                       //FinalPropertyData.clear();
-                       //FinalPropValue.clear();
-                       PropertyData.clear();
-                       PropertyLock.clear();
-                       ContactLine.clear();
-                       XVCard4Value = FALSE;
-                       VCard3Value = FALSE;
-                       continue;
-               
-               }
-               
-               wxString FinalPropertyData;
-       
-               FinalPropertyData.Append(wxSPropertyNameConv);
-       
-               for (std::map<wxString, wxString>::iterator striter = PropertyData.begin(); 
-               striter != PropertyData.end(); ++striter){
-
-                       FinalPropertyData.Append(wxT(";"));             
-                       FinalPropertyData.Append(striter->first);
-                       FinalPropertyData.Append(wxT("="));
-                       FinalPropertyData.Append(striter->second);
-               
-               }
-               
-               wxString FinalPropValue;
-               
-               if (wxSPropertyXVCard4Value.IsEmpty()){
-               
-                       FinalPropValue = wxSPropertyData;
-               
-               } else {
-               
-                       if (wxSPropertyXVCard4Value != wxSPropertyData){
-                       
-                               FinalPropValue = wxSPropertyData;
-                               
-                       } else {
-               
-                               FinalPropValue = wxSPropertyXVCard4Value;
-               
-                       }
-               
-               }
-               
-               vCardOut->AddRaw(FinalPropertyData, FinalPropValue);
-               
-               wxSProperty.clear();
-               wxSPropertySub.Clear();
-               wxSPropertySeg1Sub.Clear();
-               wxSPropertySeg2Sub.Clear();
-               wxSPropertyValues.Clear();
-               wxSPropertyData.Clear();
-               wxSPropertyXVCard4Value.Clear();
-               wxSPropertyNameConv.Clear();
-               FinalPropertyData.clear();
-               FinalPropValue.clear();
-               PropertyData.clear();
-               PropertyLock.clear();
-               ContactLine.clear();
-               XVCard4Value = FALSE;
-               VCard3Value = FALSE;
-       
-               TempData.clear();
-               //PropertyData.clear();
-               //PropertyLock.clear();
-               
-       }
-       
-       // Delete data.
-       
-       std::map<int, wxString> *ItemEraseData;
-       
-       for (std::map<wxString, void*>::iterator iter = ItemMapIndex.begin();
-               iter != ItemMapIndex.end(); ++iter){
-               
-               ItemEraseData = (std::map<int,wxString>*)iter->second;
-
-               delete ItemEraseData;
-               ItemEraseData = NULL;
-               
-       }
-
-       ItemMapIndex.clear();
-       
-       vCardOut->AddRaw(wxT("END"), wxT("VCARD"));
+// RFC 6350 specification.
 
-       return TRUE;
+vCard34Conv::vCard34Conv(){
 
+       // Setup the vCard34Conv object.
+       
+       vCardBegin = FALSE;
+       vCardEnd = FALSE;
+       vCardFN = FALSE;
+       vCardVersion = 0.0;
+       SettingCount = 0;
+       
 }
 
 void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName, 
@@ -3085,9 +52,11 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
        std::map<wxString,bool> *PropertyLockMap,
        bool ProcessItemData, bool *VCardV3Value, bool *XVCardV4Value){
 
+       // Convert and format data to vCard 4.0 specifications.
+               
        wxString wxSProperty;
        wxString wxSPropertySeg1Chopped;
-    size_t intPropertyLen;
+       size_t intPropertyLen;
     
        if (ProcessItemData == TRUE){
                
@@ -3192,31 +161,43 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        intPrevValue = intiter->second;
                        
                        if (PropertyName == wxT("type") && PropertyValue == wxT("INTERNET")){
+                               
                                continue;
+                               
                        }
                                
                        if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
                                
                                if (ProcessItemData == FALSE){
+                                       
                                        PropertyName = wxT("PREF");
                                        PropertyValue = wxT("50");
+                                       
                                } else {
+                                       
                                        continue;
+                                       
                                }
                                
                        }
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){
+                               
                                PropertyValue = wxT("home");
+                               
                        }
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){
+                               
                                PropertyValue = wxT("work");
+                               
                        }
 
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){
+                               
                                PropertyName = wxT("X-TYPE");
                                PropertyValue = wxT("other");
+                               
                        }
                        
                        // Process properties.
@@ -3320,32 +301,40 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                                
                        if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
                                
                                if (ProcessItemData == FALSE){
+                                       
                                        PropertyName = wxT("PREF");
                                        PropertyValue = wxT("50");
+                                       
                                } else {
+                                       
                                        continue;
+                                       
                                }
                                
                        }
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){
+                               
                                PropertyValue = wxT("home");
+                               
                        }
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){
+                               
                                PropertyValue = wxT("work");
+                               
                        }
 
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){
+                               
                                PropertyName = wxT("X-TYPE");
                                PropertyValue = wxT("other");
+                               
                        }
                        
                        // Process properties.
@@ -3396,7 +385,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                wxString PropertyValue;
                wxString PropertyTokens;
                bool FirstToken = TRUE;
-        int intPrevValue = 7;
+               int intPrevValue = 7;
                
                wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
                *wxSPropertyDataNameOut = wxT("ADR");
@@ -3449,25 +438,31 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                                
                        if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
+                               
                                continue;
+                               
                        }
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){
+                               
                                PropertyValue = wxT("home");
+                               
                        }
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){
+                               
                                PropertyValue = wxT("work");
+                               
                        }
 
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){
+                               
                                PropertyName = wxT("X-TYPE");
                                PropertyValue = wxT("other");
+                               
                        }
                        
                        // Process properties.
@@ -3593,29 +588,37 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                                
                        if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
+                               
                                continue;
+                               
                        }
                        
                        if (PropertyName == wxT("X-SERVICE-TYPE")){
+                               
                                continue;
+                               
                        }
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){
+                               
                                PropertyValue = wxT("home");
+                               
                        }
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){
+                               
                                PropertyValue = wxT("work");
+                               
                        }
 
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){
+                               
                                PropertyName = wxT("X-TYPE");
                                PropertyValue = wxT("other");
+                               
                        }
                        
                        // Process properties.
@@ -3721,27 +724,33 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                                
                        if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
+                               
                                continue;
+                               
                        }
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){
+                               
                                TelType.insert(std::make_pair(wxT("home"), wxT("home")));
                                continue;
+                               
                        }
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){
+                               
                                TelType.insert(std::make_pair(wxT("work"), wxT("work")));
                                continue;
+                               
                        }
 
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){
+                               
                                PropertyName = wxT("X-TYPE");
                                PropertyValue = wxT("other");
+                               
                        }
                        
                        // Process the telephone type options.
@@ -3749,53 +758,68 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        // text
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("TEXT") || PropertyValue == wxT("text"))){
+                               
                                TelType.insert(std::make_pair(wxT("text"), wxT("text")));
                                continue;
+                               
                        }
                        
                        // voice
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("VOICE") || PropertyValue == wxT("voice"))){
+                               
                                TelType.insert(std::make_pair(wxT("voice"), wxT("voice")));
                                continue;
+                               
                        }
                        
                        // fax
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("FAX") || PropertyValue == wxT("fax"))){
+                               
                                TelType.insert(std::make_pair(wxT("fax"), wxT("fax")));
                                continue;
+                               
                        }
                        
                        // cell
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("CELL") || PropertyValue == wxT("cell"))){
+                               
                                TelType.insert(std::make_pair(wxT("cell"), wxT("cell")));
                                continue;
+                               
                        }
                        
                        // video
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("VIDEO") || PropertyValue == wxT("video"))){
+                               
                                TelType.insert(std::make_pair(wxT("video"), wxT("video")));
                                continue;
+                               
                        }
                        
                        // pager
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("PAGER") || PropertyValue == wxT("pager"))){
+                               
                                TelType.insert(std::make_pair(wxT("pager"), wxT("pager")));
                                continue;
+                               
                        }
                        
                        // textphone
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("TEXTPHONE") || PropertyValue == wxT("textphone"))){
+                               
                                TelType.insert(std::make_pair(wxT("textphone"), wxT("textphone")));
                                continue;
+                               
                        }
                        
                        if (PropertyName == wxT("type") && PropertyValue.Find(wxT(",")) != wxNOT_FOUND){
+                               
                                wxStringTokenizer TypeSplit(PropertyValue, wxT(","));
                                wxString TypeSplitData;
                                while (TypeSplit.HasMoreTokens()){
@@ -3961,7 +985,9 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        intPrevValue = intiter->second;
                                
                        if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
+                               
                                continue;
+                               
                        }
                        
                        // Process properties.
@@ -4065,25 +1091,31 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                                
                        if (PropertyName == wxT("type") && PropertyValue == wxT("pref")){
+                               
                                continue;
+                               
                        }
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("HOME") || PropertyValue == wxT("home"))){
+                               
                                PropertyValue = wxT("home");
+                               
                        }
                        
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("WORK") || PropertyValue == wxT("work"))){
+                               
                                PropertyValue = wxT("work");
+                               
                        }
 
                        if (PropertyName == wxT("type") && (PropertyValue == wxT("OTHER") || PropertyValue == wxT("other"))){
+                               
                                PropertyName = wxT("X-TYPE");
                                PropertyValue = wxT("other");
+                               
                        }
                        
                        // Process properties.
@@ -4186,9 +1218,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -4292,8 +1322,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -4344,7 +1372,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                wxString PropertyValue;
                wxString PropertyTokens;
                bool FirstToken = TRUE;
-        int intPrevValue = 3;
+               int intPrevValue = 3;
         
                wxSPropertyDataOut->Append(*wxSPropertySeg2Ptr);
                *wxSPropertyDataNameOut = wxT("N");
@@ -4397,8 +1425,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -4502,8 +1528,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -4607,8 +1631,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -4711,9 +1733,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -4816,9 +1836,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        intPrevValue = intiter->second;
                        
                        if (PropertyName == wxT("X-APPLE-OMIT-YEAR")){
@@ -4958,8 +1976,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        if (PropertyName == wxT("X-APPLE-OMIT-YEAR")){
@@ -5100,9 +2116,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -5206,9 +2220,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -5312,9 +2324,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -5418,9 +2428,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -5517,9 +2525,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                wxSMIMEType = wxT("image/unknown");
                                continue;
                        }
-                       
-                       //intPrevValue = intiter->second;
-                       
+
                        // Process properties.
                        
                        if (PropertyName.IsEmpty()){
@@ -5630,9 +2636,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        if (PropertyName == wxT("ENCODING") && PropertyValue == wxT("b")){
                                wxSEncType = wxT("base64");
                                continue;
@@ -5753,8 +2757,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -5782,10 +2784,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
-               
+
                }
                
                wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
@@ -5815,7 +2814,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                wxString PropertyName;
                wxString PropertyValue;
                wxString PropertyTokens;
-        bool FirstToken = TRUE;
+               bool FirstToken = TRUE;
                int intPrevValue = 12;
 
                if (ProcessItemData == TRUE){
@@ -5865,9 +2864,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -5896,9 +2893,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                
                        }
                        
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
-               
                }
                
                wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
@@ -5979,8 +2973,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -6008,9 +3000,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -6121,9 +3110,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -6204,9 +3190,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -6234,10 +3218,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
-               
+
                }
                
                wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
@@ -6317,9 +3298,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -6347,10 +3326,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
-               
+
                }
                
                wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
@@ -6431,8 +3407,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -6460,9 +3434,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -6543,9 +3514,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -6573,9 +3542,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -6657,8 +3623,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -6686,10 +3650,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
-               
+
                }
                
                wxSPropertyXVCard4Value->Append(*wxSPropertySeg2Ptr);
@@ -6769,9 +3730,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-                       
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
+
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -6799,9 +3758,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -6883,8 +3839,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -6912,9 +3866,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -6996,8 +3947,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -7025,9 +3974,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -7109,8 +4055,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -7138,9 +4082,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -7222,8 +4163,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -7251,9 +4190,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -7335,8 +4271,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -7364,9 +4298,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -7448,8 +4379,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -7477,9 +4406,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -7561,8 +4487,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -7590,9 +4514,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -7674,8 +4595,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -7703,9 +4622,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -7787,8 +4703,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -7816,9 +4730,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -7900,8 +4811,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -7929,9 +4838,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -8013,8 +4919,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -8042,9 +4946,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -8126,8 +5027,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -8155,9 +5054,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -8239,8 +5135,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -8268,9 +5162,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -8352,8 +5243,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -8381,9 +5270,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -8465,8 +5351,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -8494,9 +5378,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -8578,8 +5459,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -8607,9 +5486,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -8690,8 +5566,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        wxStringTokenizer PropertyElement (PropertyData, wxT("="));
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
-               
-                       //ProcessCaptureStrings(&PropertyValue);
                        
                        intPrevValue = intiter->second;
                        
@@ -8720,9 +5594,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -8804,8 +5675,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -8833,9 +5702,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -8920,8 +5786,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -8949,9 +5813,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -9036,8 +5897,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                        PropertyName = PropertyElement.GetNextToken();                          
                        PropertyValue = PropertyElement.GetNextToken();
                        
-                       //ProcessCaptureStrings(&PropertyValue);
-                       
                        intPrevValue = intiter->second;
                        
                        // Process properties.
@@ -9065,9 +5924,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                                }
                                
                        }
-                       
-                       //wxSPropertyPropValuesOut->Append(wxT(";"));
-                       //wxSPropertyPropValuesOut->Append(PropertyName + wxT("=") + PropertyValue);
                
                }
                
@@ -9081,7 +5937,6 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
        
        if (wxSProperty == wxT("X-ABLabel") && ProcessItemData == TRUE){
        
-               //int intPropertyLen = wxSPropertySeg1Ptr->Len();
         intPropertyLen = wxSPropertySeg1Ptr->Len();
         std::map<int, int> SplitPoints;
                std::map<int, int> SplitLength;
@@ -9093,8 +5948,7 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
                int intPrevValue = 11;
                
                SplitValues(wxSPropertySeg1Ptr, &SplitPoints, &SplitLength, intPrevValue);
-               
-               //EscapeString(wxSPropertySeg2Ptr, FALSE);
+
                PropertyDataMap->insert(std::make_pair(wxT("X-ABLabel"), *wxSPropertySeg2Ptr));
                                
        }
@@ -9103,7 +5957,9 @@ void vCard34Conv::ConvertV4PropertyProc(wxString *wxSPropertyName,
 
 void vCard34Conv::ProcessCaptureStringsProc(wxString *strCapture){
 
-    CaptureString(strCapture, FALSE);
+       // Process code for capturing the strings.
+       
+       CaptureString(strCapture, FALSE);
 
 }
 
@@ -9112,6 +5968,8 @@ void vCard34Conv::SplitValues(wxString *PropertyLine,
        std::map<int,int> *SplitLength, 
        int intSize){
        
+       // Split the values as required.
+               
        size_t intPropertyLen = PropertyLine->Len();
        int intSplitsFound = 0;
        int intSplitSize = 0;
@@ -9124,21 +5982,21 @@ void vCard34Conv::SplitValues(wxString *PropertyLine,
                if (PropertyLine->Mid(i, 1) == wxT(";") &&
                    PropertyLine->Mid((i - 1), 1) != wxT("\\")){
           
-                   if (intSplitsFound == 0){
+                       if (intSplitsFound == 0){
            
-                       SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize)));
+                               SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize)));
          
-                   } else {
+                       } else {
           
-                       SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
+                               SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize - 1)));
            
-                   }
+                       }
            
-                   SplitPoints->insert(std::make_pair(intSplitsFound, (i + 1)));
+                       SplitPoints->insert(std::make_pair(intSplitsFound, (i + 1)));
            
-                   intSplitsFound++;
-                   intSplitSeek = i;
-                   intSplitSize = 0;
+                       intSplitsFound++;
+                       intSplitSeek = i;
+                       intSplitSize = 0;
            
                }
 
@@ -9164,6 +6022,9 @@ void vCard34Conv::SplitValuesData(wxString *PropertyLine,
        int intSize,
        std::map<wxString,wxString> *SplitData){
        
+               
+       // Split the data values as required.
+               
        wxString DataStr;
        wxStringTokenizer PropertyElement;
        wxString PropertyName;
@@ -9180,7 +6041,7 @@ void vCard34Conv::SplitValuesData(wxString *PropertyLine,
                if (PropertyLine->Mid(i, 1) == wxT(";") &&
                    PropertyLine->Mid((i - 1), 1) != wxT("\\")){
           
-                   if (intSplitsFound == 0){
+                       if (intSplitsFound == 0){
            
                                DataStr = PropertyLine->Mid(intSplitSeek, (intSplitSize));
                                SplitLength->insert(std::make_pair(intSplitsFound, (intSplitSize)));
@@ -9192,24 +6053,24 @@ void vCard34Conv::SplitValuesData(wxString *PropertyLine,
 
                        }
                    
-                   SplitPoints->insert(std::make_pair(intSplitsFound, (i + 1)));
+                       SplitPoints->insert(std::make_pair(intSplitsFound, (i + 1)));
            
-                   intSplitsFound++;
-                   intSplitSeek = (i + 1);
-                   intSplitSize = 0;
+                       intSplitsFound++;
+                       intSplitSeek = (i + 1);
+                       intSplitSize = 0;
                    
-                   if (!DataStr.IsEmpty()){
+                       if (!DataStr.IsEmpty()){
                    
-                       PropertyElement.SetString(DataStr, wxT("="));
-                       PropertyName = PropertyElement.GetNextToken();
-                       PropertyValue = PropertyElement.GetNextToken();
-                       SplitData->insert(std::make_pair(PropertyName, PropertyValue));
+                               PropertyElement.SetString(DataStr, wxT("="));
+                               PropertyName = PropertyElement.GetNextToken();
+                               PropertyValue = PropertyElement.GetNextToken();
+                               SplitData->insert(std::make_pair(PropertyName, PropertyValue));
                    
-                   }
+                       }
                    
-                   DataStr.clear();
-                   PropertyName.clear();
-                   PropertyValue.clear();
+                       DataStr.clear();
+                       PropertyName.clear();
+                       PropertyValue.clear();
            
                }
 
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy