Index: AE/Installer/trunk/source/installer.h
===================================================================
--- AE/Installer/trunk/source/installer.h	(revision 353)
+++ AE/Installer/trunk/source/installer.h	(revision 355)
@@ -50,4 +50,12 @@
 	}
 	
+	     bool operator < (const ModPackage &fs)
+     { return (name < fs.name);}
+
+     bool operator > (const ModPackage &fs)
+     { return (name > fs.name);}
+
+     bool operator == (const ModPackage &fs)
+     { return (name == fs.name);}
 };
 
Index: AE/Installer/trunk/source/main_window.cpp
===================================================================
--- AE/Installer/trunk/source/main_window.cpp	(revision 353)
+++ AE/Installer/trunk/source/main_window.cpp	(revision 355)
@@ -1,10 +1,10 @@
 /*
- AE/Mod Installer
- by Gumby and Iritscen
- */
-
-// To-do: - Disable Install button when nothing (new) is selected
+AE/Mod Installer
+by Gumby and Iritscen
+*/
+
+// To-do: - 
 //		  - Institute lots of checks into file-handling
-//		  - Clear mod info fields when mod is de-selected
+//		  - Clear mod info fields when mod is de-selected ???
 
 #define DEBUG
@@ -21,5 +21,5 @@
 
 #include "boost/filesystem.hpp" // includes all needed Boost.Filesystem declarations
-
+#include "boost/lexical_cast.hpp" //int -> string
 #include "installer.h"
 
@@ -53,104 +53,39 @@
 
 
-/*
- int main(void)
- {
- if ( exists( "../../GameDataFolder/level0_Final.sep" ) ) splitInstances = NOT_SPLIT;
- else splitInstances = NOT_SPLIT;
- //	SetConsoleTitle("AE Installer"); windows junk, convert to SDL
- #ifdef WIN32	
- system("color 0A"); 
- #endif
- cout << "\nWelcome to the AE installer!\n";
- cout << "\nWhat would you like to do?\n";
- 
- return mainMenu();
- }
- */
-
-
-
-int mainMenu(void)
-{
-	char choice = '0';
-	bool exit = false;
+
+
+#include "boost/date_time/gregorian/gregorian.hpp"
+#include "boost/date_time/date_parsing.hpp"
+#include "boost/date_time/posix_time/posix_time.hpp" 
+
+int globalizeData(void)
+{
+	    using boost::lexical_cast;
+    using boost::bad_lexical_cast;
+// using namespace boost::posix_time;
+	using namespace boost::gregorian;
+	using namespace boost::posix_time;
+	ptime start_time(second_clock::local_time());
+
+	setStatusArea("Globalizing!");
 	int err = 0;
-	do
-	{
-		if( exists( "../GameDataFolder" ) ) {
-			cout << "\n1. Add new packages\n";
-			cout << "2. Remove packages\n";
-			cout << "3. See what is installed\n";
-			cout << "4. Globalize data\n";
-			cout << "5. About AE\n";
-			cout << "6. Quit\n\n";
-			
-			choice = cin.get();
-			cin.ignore(128, '\n');
-			switch(choice)
-			{
-				case '1':
-					err = installPackages();
-					break;
-				case '2':
-					err = uninstallPackages();
-					break;
-				case '3':
-					err = listInstalledPackages();
-					break;
-				case '4':
-					err = globalizeData();
-					break;
-				case '5':
-					err = printInstallerInfo();
-					break;
-				case '6':
-					exit = true;
-					break;
-				default:
-					cout << "Please choose one of the above numbers, and press Enter.\n\n";
-			}
-			if (err) // if something fatal happened
-				exit = true;
+	int parts_done = 0;
+	char Step_x_x[300];
+	//char levels[i][5];
+	remove("Globalize.log");
+	ofstream logfile("Globalize.log");
+	logfile << "Globalization started " << to_simple_string(start_time) << endl;
+	try {
+		
+		char levels_cstr[15][3] = {"0", "1", "2", "3", "4", "6", "8", "9", "10", "11", "12", "13", "14", "18", "19"}; // the levels Oni has...probably should have made a string array. Oops.
+		//const vector<double> ck(cv, &cv[CvSize]);
+		vector<string> levels;
+		for (int f = 0; f < 15; f++) {
+			levels.push_back(levels_cstr[f]);
 		}
-		else {
-			cout << "\n1. Globalize data\n";
-			cout << "2. About AE\n";
-			cout << "3. Quit\n\n";
-			
-			choice = cin.get();
-			cin.ignore(128, '\n');
-			switch(choice)
-			{
-				case '1':
-					err = globalizeData();
-					break;
-				case '2':
-					err = printInstallerInfo();
-					break;
-				case '3':
-					exit = true;
-					break;
-				default:
-					cout << "Please choose one of the above numbers, and press Enter.\n\n";
-			}
-			if (err) // if something fatal happened
-				exit = true;
-		}
-	} while(!exit);
-	
-	return err;
-}
-
-int globalizeData(void)
-{
-	int err = 0;
-	
-	try {
-		int levels[15] = {0, 1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14, 18, 19}; // the levels Oni has
 		char choice = 0;
-		
+
 		//SetCurrentDirectory("C:/Program Files/Oni/edition/install");
-		char levelnum[3];
+		///char levels[i][3];
 		path Characters = "../GameDataFolder/level0_Characters";
 		path Particles = "../GameDataFolder/level0_Particles";
@@ -161,24 +96,60 @@
 		path TRAC = Animations / "level0_TRAC";
 		path TRAM = Animations / "level0_TRAM";
+		
+		vector<path> GDFPaths;
+		GDFPaths.push_back(Characters);
+		GDFPaths.push_back(Particles);
+		GDFPaths.push_back(Textures);
+		GDFPaths.push_back(Sounds);
+		GDFPaths.push_back(TRAC);
+		GDFPaths.push_back(TRAM);
+		
+			
+		path VanillaCharacters = "packages/VanillaDats/level0_Final/level0_Characters/level0_Characters.oni";
+		path VanillaParticles = "packages/VanillaDats/level0_Final/level0_Particles/level0_Particles.oni";
+		path VanillaTextures  = "packages/VanillaDats/level0_Final/level0_Textures/level0_Textures.oni";
+		path VanillaSounds = "packages/VanillaDats/level0_Final/level0_Sounds/level0_Sounds.oni";
+		path VanillaAnimations = "packages/VanillaDats/level0_Final/level0_Animations/level0_Animations.oni";
+		path VanillaTRAC = "packages/VanillaDats/level0_Final/level0_Animations/level0_TRAC.oni";
+		path VanillaTRAM = "packages/VanillaDats/level0_Final/level0_Animations/level0_TRAM.oni";
+
+		vector<path> VanillaPaths;
+		
+		VanillaPaths.push_back(VanillaCharacters);
+		VanillaPaths.push_back(VanillaParticles);
+		VanillaPaths.push_back(VanillaTextures);
+		VanillaPaths.push_back(VanillaSounds);
+		VanillaPaths.push_back(VanillaTRAC);
+		VanillaPaths.push_back(VanillaTRAM);
+		
 		/*
-		 if (exists("../GameDataFolder/"))
-		 {
-		 //cout << "\nIt looks like you've already globalized Oni's data.\nDo you want to re-globalize?\n(This will erase existing mods installed to the AE's game data.)"
-		 //	 << "\n1. Re-globalize"
-		 //	 << "\n2. Return to main menu\n";
-		 //choice = cin.get();
-		 cin.ignore(128, '\n');
-		 if (choice == '1')
-		 remove_all("../GameDataFolder"); // remove AE GDF
-		 if (choice == '2')
-		 return 0;
-		 }
-		 */
+		if (exists("../GameDataFolder/"))
+		{
+		//cout << "\nIt looks like you've already globalized Oni's data.\nDo you want to re-globalize?\n(This will erase existing mods installed to the AE's game data.)"
+		//	 << "\n1. Re-globalize"
+		//	 << "\n2. Return to main menu\n";
+		//choice = cin.get();
+		cin.ignore(128, '\n');
+		if (choice == '1')
+		remove_all("../GameDataFolder"); // remove AE GDF
+		if (choice == '2')
+		return 0;
+		}
+		*/
+		setStatusArea("Removing old GameDataFolder...\n");
+		logfile <<  "Removing old GameDataFolder...\n";
+		remove_all( "../GameDataFolder/" );
+		setStatusArea("Creating needed directories...");
+		logfile <<  "Creating needed directories...\n";
 		create_directory( "../GameDataFolder/" );
+		
 		create_directory( "packages" );
-		if (exists("packages/VanillaDats")) remove_all("packages/VanillaDats");
+		
+		if (exists("packages/VanillaDats")) remove_all("packages/VanillaDats"); 
 		create_directory( "packages/VanillaDats" );
 		
 		create_directory( "packages/VanillaDats/level0_Final/" );
+		//blah blah finish this.
+		//logfile <<  "packages/VanillaDats/level0_Final/ created";
 		create_directory( Characters );
 		create_directory( Particles );
@@ -189,109 +160,136 @@
 		create_directory( TRAC );
 		create_directory( TRAM );
-		
+		int num_levels = 0;
+		for(int i = 1; i < 15; i++)
+		{
+				if (exists("../../GameDataFolder/level" + levels[i] + "_Final.dat")) {
+				num_levels++;
+
+			}
+		}
+		logfile << "Exporting and moving...\n\n";
+		int total_steps =  8 + 2 * num_levels;
 		for(int i = 0; i < 15; i++)
 		{
-			sprintf(levelnum,"%d",levels[i]); // int to char array
-			exists("../../GameDataFolder/level" + (string)levelnum + "_Final");
-			system((strOniSplit + " -export ../GameDataFolder/level" + (string)levelnum + "_Final ../../GameDataFolder/level" + (string)levelnum + "_Final.dat").c_str());
 			
-			create_directory( "packages/VanillaDats/level" + (string)levelnum + "_Final" ); //remember to cast your arrays as strings :)
-			create_directory( "packages/VanillaDats/level" + (string)levelnum + "_Final/level" + (string)levelnum + "_Final" );
+			//printf(levels[i],"%d",levels[i]); // int to char array
 			
-			directory_iterator end_iter;
-			for ( directory_iterator dir_itr( "../GameDataFolder/level" + (string)levelnum + "_Final" ); dir_itr != end_iter; ++dir_itr )
-			{
-				//cout << dir_itr->path().filename();
-				if ( is_regular_file( dir_itr->status() ) )
+			if (exists("../../GameDataFolder/level" + levels[i] + "_Final.dat")) {
+				logfile << "level" << levels[i] << "_Final\n";
+				logfile << "\tExporting level" << levels[i] << "_Final.dat\n";
+				//printf(Step_x_x,"Step %d/%d: exporting level%d_final.dat", parts_done + 1,, levels[i]); setStatusArea((string)Step_x_x);
+				setStatusArea("Step " + lexical_cast<std::string>(parts_done + 1) + "/" + lexical_cast<std::string>(total_steps) + " exporting level" + levels[i]+"_Final.dat");
+				create_directory( "../GameDataFolder/level" + levels[i] + "_Final" ); 
+//				setStatusArea(strOniSplit + " -export ../GameDataFolder/level" + levels[i] + "_Final ../../GameDataFolder/level" + levels[i] + "_Final.dat");
+				system((strOniSplit + " -export ../GameDataFolder/level" + levels[i] + "_Final ../../GameDataFolder/level" + levels[i] + "_Final.dat").c_str());
+				create_directory( "packages/VanillaDats/level" + levels[i] + "_Final" ); 
+				create_directory( "packages/VanillaDats/level" + levels[i] + "_Final/level" + levels[i] + "_Final" );
+
+				directory_iterator end_iter;
+				for ( directory_iterator dir_itr( "../GameDataFolder/level" + levels[i] + "_Final" ); dir_itr != end_iter; ++dir_itr )
 				{
+					//cout << dir_itr->path().filename();
+					if ( is_regular_file( dir_itr->status() ) )
+					{
+						if ( dir_itr->path().filename().substr(0,8) == "TXMPfail" || 
+							dir_itr->path().filename().substr(0,9) == "TXMPlevel" ||
+							( dir_itr->path().filename().substr(0,4) == "TXMP" && dir_itr->path().filename().find("intro")!=string::npos) ||
+							dir_itr->path().filename().substr(0,4) == "TXMB" || 
+							dir_itr->path().filename() == "M3GMpowerup_lsi.oni" ||
+							dir_itr->path().filename() == "TXMPlsi_icon.oni" ||
+							( dir_itr->path().filename().substr(0,4) == "TXMB" && dir_itr->path().filename().find("splash_screen.oni")!=string::npos)	)
+						{
+							cout <<dir_itr->path().filename() << "\n";
+							create_directory( dir_itr->path().parent_path() / "NoGlobal");	
+							if(!exists( dir_itr->path().parent_path() / "NoGlobal" / dir_itr->filename())) rename(dir_itr->path(), dir_itr->path().parent_path() / "NoGlobal" /
+								dir_itr->filename());
+							else remove(dir_itr->path());
+						}
+						else if (dir_itr->path().filename().substr(0,4) == "TRAC"
+							|| dir_itr->path().filename().substr(0,4) == "ONVL") {
+								cout <<dir_itr->path().filename() << "\n";
+								if(!exists( TRAC / dir_itr->filename())) rename(dir_itr->path(), TRAC / dir_itr->filename());
+								else remove(dir_itr->path());
+						}
+						else if (dir_itr->path().filename().substr(0,4) == "TRAM") {
+							cout <<dir_itr->path().filename() << "\n";
+							if(!exists( TRAM / dir_itr->filename())) rename(dir_itr->path(), TRAM / dir_itr->filename());
+							else remove(dir_itr->path());
+						}
+						else if (dir_itr->path().filename().substr(0,4) == "ONSK" ||
+							dir_itr->path().filename().substr(0,4) == "TXMP") {
+								cout <<dir_itr->path().filename() << "\n";\
+									create_directory( dir_itr->path().parent_path() / "TexFix");	
+								if(!exists( Textures / dir_itr->filename())) rename(dir_itr->path(), Textures / dir_itr->filename());
+								//rename(dir_itr->path(), dir_itr->path().parent_path() / "TexFix" / dir_itr->filename());
+						}
+						else if (dir_itr->path().filename().substr(0,4) == "ONCC" 
+							|| dir_itr->path().filename().substr(0,4) == "TRBS"
+							|| dir_itr->path().filename().substr(0,4) == "ONCV"
+							|| dir_itr->path().filename().substr(0,4) == "TRMA"
+							|| dir_itr->path().filename().substr(0,4) == "TRSC"
+							|| dir_itr->path().filename().substr(0,4) == "TRAS") {
+								cout <<dir_itr->path().filename() << "\n";
+								if(!exists( Characters / dir_itr->filename())) rename(dir_itr->path(), Characters / dir_itr->filename());
+								else remove(dir_itr->path());
+						}
+						else if (dir_itr->path().filename().substr(0,4) == "OSBD"
+							|| dir_itr->path().filename().substr(0,4) == "SNDD") {
+								cout << dir_itr->path().filename() << "\n";
+								if(!exists( Sounds / dir_itr->filename())) rename(dir_itr->path(), Sounds / dir_itr->filename());
+								else remove(dir_itr->path());
+						}
+						else if (dir_itr->path().filename().substr(0,5) == "BINA3"
+							|| dir_itr->path().filename().substr(0,10) == "M3GMdebris"
+							|| dir_itr->path().filename() == "M3GMtoxic_bubble.oni"
+							|| dir_itr->path().filename().substr(0,8) == "M3GMelec"
+							|| dir_itr->path().filename().substr(0,7) == "M3GMrat"
+							|| dir_itr->path().filename().substr(0,7) == "M3GMjet"
+							|| dir_itr->path().filename().substr(0,9) == "M3GMbomb_"
+							|| dir_itr->path().filename() == "M3GMbarab_swave.oni"
+							|| dir_itr->path().filename() == "M3GMbloodyfoot.oni"
+							){
+								cout <<dir_itr->path().filename() << "\n";
+								if(!exists( Particles / dir_itr->filename())) rename(dir_itr->path(), Particles / dir_itr->filename());
+								else remove(dir_itr->path());
+						}
+						else if (dir_itr->path().filename().substr(0,4) == "AGDB"
+							|| dir_itr->path().filename().substr(0,4) == "TRCM") {
+								cout <<dir_itr->path().filename() << "\n";
 					
-					if ( dir_itr->path().filename().substr(0,8) == "TXMPfail" || 
-						dir_itr->path().filename().substr(0,9) == "TXMPlevel" ||
-						( dir_itr->path().filename().substr(0,4) == "TXMP" && dir_itr->path().filename().find("intro")!=string::npos) ||
-						dir_itr->path().filename().substr(0,4) == "TXMB" || 
-						dir_itr->path().filename() == "M3GMpowerup_lsi.oni" ||
-						dir_itr->path().filename() == "TXMPlsi_icon.oni" ||
-						( dir_itr->path().filename().substr(0,4) == "TXMB" && dir_itr->path().filename().find("splash_screen.oni")!=string::npos)	)
-					{
-						cout <<dir_itr->path().filename() << "\n";
-						create_directory( dir_itr->path().parent_path() / "NoGlobal");	
-						if(!exists( dir_itr->path().parent_path() / "NoGlobal" / dir_itr->filename())) rename(dir_itr->path(), dir_itr->path().parent_path() / "NoGlobal" /
-																											  dir_itr->filename());
-						else remove(dir_itr->path());
+								if(!exists( Archive / dir_itr->filename())) rename(dir_itr->path(), Archive / dir_itr->filename());
+								else remove(dir_itr->path());
+						}
+						if (exists(dir_itr->path())) {
+
+						}
+						else {
+							logfile << "\tMoved file: " << dir_itr->path().filename() << "\n";
+						}
 					}
-					else if (dir_itr->path().filename().substr(0,4) == "TRAC") {
-						cout <<dir_itr->path().filename() << "\n";
-						if(!exists( TRAC / dir_itr->filename())) rename(dir_itr->path(), TRAC / dir_itr->filename());
-						else remove(dir_itr->path());
-					}
-					else if (dir_itr->path().filename().substr(0,4) == "TRAM") {
-						cout <<dir_itr->path().filename() << "\n";
-						if(!exists( TRAM / dir_itr->filename())) rename(dir_itr->path(), TRAM / dir_itr->filename());
-						else remove(dir_itr->path());
-					}
-					else if (dir_itr->path().filename().substr(0,4) == "ONSK" ||
-							 dir_itr->path().filename().substr(0,4) == "TXMP") {
-						cout <<dir_itr->path().filename() << "\n";\
-						create_directory( dir_itr->path().parent_path() / "TexFix");	
-						if(!exists( Textures / dir_itr->filename())) rename(dir_itr->path(), Textures / dir_itr->filename());
-						//rename(dir_itr->path(), dir_itr->path().parent_path() / "TexFix" / dir_itr->filename());
-					}
-					else if (dir_itr->path().filename().substr(0,4) == "ONCC" 
-							 || dir_itr->path().filename().substr(0,4) == "TRBS"
-							 || dir_itr->path().filename().substr(0,4) == "TRMA"
-							 || dir_itr->path().filename().substr(0,4) == "TRSC"
-							 || dir_itr->path().filename().substr(0,4) == "TRAS") {
-						cout <<dir_itr->path().filename() << "\n";
-						if(!exists( Characters / dir_itr->filename())) rename(dir_itr->path(), Characters / dir_itr->filename());
-						else remove(dir_itr->path());
-					}
-					else if (dir_itr->path().filename().substr(0,4) == "OSBD"
-							 || dir_itr->path().filename().substr(0,4) == "SNDD") {
-						cout << dir_itr->path().filename() << "\n";
-						if(!exists( Sounds / dir_itr->filename())) rename(dir_itr->path(), Sounds / dir_itr->filename());
-						else remove(dir_itr->path());
-					}
-					else if (dir_itr->path().filename().substr(0,5) == "BINA3"
-							 || dir_itr->path().filename().substr(0,10) == "M3GMdebris"
-							 || dir_itr->path().filename() == "M3GMtoxic_bubble.oni"
-							 || dir_itr->path().filename().substr(0,8) == "M3GMelec"
-							 || dir_itr->path().filename().substr(0,7) == "M3GMrat"
-							 || dir_itr->path().filename().substr(0,7) == "M3GMjet"
-							 || dir_itr->path().filename().substr(0,9) == "M3GMbomb_"
-							 || dir_itr->path().filename() == "M3GMbarab_swave.oni"
-							 || dir_itr->path().filename() == "M3GMbloodyfoot.oni"
-							 ){
-						cout <<dir_itr->path().filename() << "\n";
-						if(!exists( Particles / dir_itr->filename())) rename(dir_itr->path(), Particles / dir_itr->filename());
-						else remove(dir_itr->path());
-					}
-					else if (dir_itr->path().filename().substr(0,4) == "AGDB"
-							 || dir_itr->path().filename().substr(0,4) == "TRCM") {
-						cout <<dir_itr->path().filename() << "\n";
+
+
 						
-						if(!exists( Archive / dir_itr->filename())) rename(dir_itr->path(), Archive / dir_itr->filename());
-						else remove(dir_itr->path());
-					}
 				}
+				logfile << "\tCleaning up TXMPs...\n";
+				system( (strOniSplit + " -move:delete " + Textures.string() + " ../GameDataFolder/level" + levels[i] + "_Final/TXMP*.oni").c_str());
+				parts_done++;
+
+				setProgressBar( (int)(1000 * (float)(parts_done) / (float)(total_steps) )); 
 				
-				
-			}
-			system( (strOniSplit + " -move:delete " + Textures.string() + " ../GameDataFolder/level" + (string)levelnum + "_Final/TXMP*.oni").c_str());
-			
+			}
 		}
-		
+		logfile << "Reimporting levels\n";
 		for (int i = 0; i < 15; i++)
 		{
-			sprintf(levelnum,"%d",levels[i]);
-			system( (strOniSplit + " " + strImportOption + " ../GameDataFolder/level" + levelnum + "_Final packages/VanillaDats/level" + levelnum + "_Final/level"
-					 + levelnum + "_Final/level" + levelnum + "_Final.oni").c_str());
+			logfile << "\tReimporting level" << levels[i] << "_Final.oni\n";
+			//printf(levels[i],"%d",levels[i]);
+			//printf(Step_x_x,"Step %d/%d: reimporting level", parts_done + 1, 7 + 2 * num_levels); setStatusArea((string)Step_x_x + levels[i] + (string)"_Final.dat");
+			setStatusArea("Step " + lexical_cast<std::string>(parts_done + 1) + "/" + lexical_cast<std::string>(total_steps) + " reimporting level" + levels[i]+"_Final.oni");
+			system( (strOniSplit + " " + strImportOption + " ../GameDataFolder/level" + levels[i] + "_Final packages/VanillaDats/level" + levels[i] + "_Final/level"
+				+ levels[i] + "_Final/level" + levels[i] + "_Final.oni > Globalize.oni").c_str());
+			setProgressBar( (int)(1000 * (float)(parts_done) / (float)(total_steps) ));
+				parts_done++;
 		}
-		path VanillaCharacters = "packages/VanillaDats/level0_Final/level0_Characters/level0_Characters.oni";
-		path VanillaParticles = "packages/VanillaDats/level0_Final/level0_Particles/level0_Particles.oni";
-		path VanillaTextures  = "packages/VanillaDats/level0_Final/level0_Textures/level0_Textures.oni";
-		path VanillaSounds = "packages/VanillaDats/level0_Final/level0_Sounds/level0_Sounds.oni";
-		path VanillaAnimations = "packages/VanillaDats/level0_Final/level0_Animations/level0_Animations.oni";
-		path VanillaTRAC = "packages/VanillaDats/level0_Final/level0_Animations/level0_TRAC.oni";
-		path VanillaTRAM = "packages/VanillaDats/level0_Final/level0_Animations/level0_TRAM.oni";
 		create_directory( VanillaCharacters.parent_path() );
 		create_directory( VanillaParticles.parent_path() );
@@ -299,203 +297,49 @@
 		create_directory( VanillaSounds.parent_path() );
 		create_directory( VanillaAnimations.remove_filename() );
+		
+		for(int j = 0; j < GDFPaths.size(); j++) {
+			logfile << "\tReimporting " << GDFPaths[j].filename() << ".oni\n";
+			setStatusArea("Step" + lexical_cast<std::string>(parts_done + 1) + "/" + lexical_cast<std::string>(total_steps) + ": reimporting " + GDFPaths[j].filename() );
+			system((strOniSplit + " " + strImportOption + " " + GDFPaths[j].string() + " " + VanillaPaths[j].string()).c_str());
+			parts_done++;
+			setProgressBar( (int)(1000 * (float)(parts_done) / (float)(total_steps) )); 
+		}
+/*
+		printf(Step_x_x,"Step %d/%d: reimporting level0_Characters", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) )); 
 		system((strOniSplit + " " + strImportOption + " " + Characters.string() + " " + VanillaCharacters.string()).c_str());
+		parts_done++; printf(Step_x_x,"Step %d/%d: reimporting level0_Particles", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) )); 
 		system((strOniSplit + " " + strImportOption + " " + Particles.string() + " " + VanillaParticles.string()).c_str());
+		parts_done++; printf(Step_x_x,"Step %d/%d: reimporting level0_Textures", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) )); 
 		system((strOniSplit + " " + strImportOption + " " + Textures.string() + " " + VanillaTextures.string()).c_str());
 		//system((strOniSplit	+ " " + strImportOption + (string)" " + Animations.string() + (string)" " + VanillaAnimations.string()).c_str());
+		parts_done++; printf(Step_x_x,"Step %d/%d: reimporting level0_TRAC", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) )); 
 		system((strOniSplit + " " + strImportOption + " " + TRAC.string() + " " + VanillaTRAC.string()).c_str());
+		parts_done++; printf(Step_x_x,"Step %d/%d: reimporting level0_Sounds", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) )); 
 		system((strOniSplit + " " + strImportOption + " " + Sounds.string() + " " + VanillaSounds.string()).c_str());
-		system((strOniSplit + " " + strImportOption + " " + TRAM.string() + " " + VanillaTRAM.string()).c_str());
+		parts_done++; printf(Step_x_x,"Step %d/%d: reimporting level0_TRAM", parts_done,7 + 2 * num_levels); setStatusArea((string)Step_x_x);setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) )); 
+		system((strOniSplit + " " + strImportOption + " " + TRAM.string() + " " + VanillaTRAM.string()).c_str()); 
+		//parts_done++; setStatusArea((string)"Copying level scripts...");setProgressBar( (int)(1000 * (float)(parts_done) / (float)(7 + 2 * num_levels) )); 
+		if (exists("../GameDataFolder/IGMD")) remove_all("../GameDataFolder/IGMD");
+*/
+		create_directory((path)"../GameDataFolder/IGMD");
+		copy((path)"packages/VanillaBSL/", (path)"../GameDataFolder");
+		setProgressBar( 1000 ); 
+		setStatusArea((string)"Done! Now select your mod packages and click install.");
+	//	while(1) Sleep(-1);
 		
-		create_directory("../GameDataFolder/IGMD");
-		copy((path)"packages/VanillaBSL/IGMD", (path)"../GameDataFolder");
 	}
 	catch (exception ex) {
-		cout << ex.what();
-	}
+		setStatusArea("Warning, handled exception: " + (string)ex.what());
+	}
+	
+		ptime end_time(second_clock::local_time());
+		time_period total_time (start_time, end_time);
+		logfile << "\n\nGlobalization ended " << to_simple_string(end_time) << "\nThe process took " << total_time.length();
+		//total_time.length().hours();
+	logfile.close();
+
 	return err;
 }
 
-int installPackages(void)
-{
-	bool installed_something = 0;
-	int err = 0;
-	ModPackage package;
-	vector<string> installed_packages;
-	vector<ModPackage> packages; 
-	vector<ModPackage>::iterator iter;
-	vector<string> installString;
-	
-	iter = packages.begin();
-	packages = getPackages();
-	vector<string> installedMods = getInstallString();
-	
-	if (packages.empty())
-	{
-		cout << "Error: You have no packages!\n";
-		return 0;
-	}
-	
-	cout << "Detecting installed packages...\n";
-	
-	int index = 1;
-	char choice = '0';
-	
-	for (vector<ModPackage>::iterator package_iter = packages.begin(); package_iter != packages.end(); ++package_iter)
-	{
-		if (!binary_search(installedMods.begin(), installedMods.end(), package_iter->modStringName))
-		{ //package_iter->isInstalled :< I forgot about this...
-			//cout << index << " ";
-			system(strClsCmd);
-			cout << (*package_iter).name << "\n";
-			for (int character = 1; character <= (*package_iter).name.length() - 1; character++) cout << '-';
-			cout << "\n"
-			<< (*package_iter).readme << "\n\n"
-			<< "Please enter a number choice\n"
-			<< " 1. Add\n"
-			<< " 2. Don't Add\n"
-			<< "";
-			index++;
-			choice = 0;
-			
-			do
-			{
-				choice = cin.get();
-				cin.ignore(1280, '\n');
-			} while(choice == 0);
-			
-			if (choice == '1')
-			{
-				cout << "\nInstalling...\n\n";
-				if (package_iter->hasOnis || (package_iter->hasDeltas /*(*package_iter).isUnpacked */ ))
-				{
-					installed_something = 1;
-					installedMods.push_back(package_iter->modStringName);
-					system(strPauseCmd);
-				}
-			}
-		}
-	}
-	if (index == 1)
-	{
-		cout << "Warning: All packages are already installed\n";
-		//would you like to recombine your data?
-		return 0;
-	}
-	if (installed_something == 0)
-	{
-		cout << "Warning: You didn't add anything!\n";
-		//would you like to recombine your data?
-		return 0;
-	}
-	
-	sort(installedMods.begin(), installedMods.end());
-	//system(Onisplit.c_str());
-	recompileAll(installedMods);
-	system(strPauseCmd);
-	
-	return err;
-}
-
-int uninstallPackages(void)
-{
-	int err = 0;
-	ModPackage package;
-	vector<string> installed_packages;
-	vector<ModPackage> packages; 
-	vector<ModPackage>::iterator iter;
-	vector<string> installString;
-	
-	iter = packages.begin();
-	packages = getPackages();
-	
-	
-	cout << "Detecting installed packages...\n";
-	
-	vector<string> installedMods = getInstallString();
-	
-	if (packages.empty())
-	{
-		cout << "Error: You have no packages!\n";
-		return 0;
-	}
-	
-	int index = 0;
-	int uninstalled_something = 0;
-	char choice = '0';
-	
-	for (vector<ModPackage>::iterator package_iter = packages.begin(); package_iter != packages.end(); ++package_iter)
-	{
-		if (binary_search(installedMods.begin(), installedMods.end(), package_iter->modStringName))
-		{ //package_iter->isInstalled :< I forgot about this...
-			//cout << index << " ";
-			system(strClsCmd);
-			cout << (*package_iter).name << "\n";
-			for (int character = 1; character <= (*package_iter).name.length() - 1; character++) cout << '-';
-			cout << "\n"
-			<< (*package_iter).readme << "\n\n"
-			<< "Please enter a number choice\n"
-			<< " 1. Remove\n"
-			<< " 2. Don't Remove\n"
-			<< "";
-			
-			choice = 0;
-			
-			do
-			{
-				choice = cin.get();
-				cin.ignore(1280, '\n');
-			} while(choice == 0);
-			
-			if (choice == '1')
-			{
-				cout << "\nUninstalling...\n\n";
-				installedMods.erase( installedMods.begin() + (index) );
-				system(strPauseCmd);
-				uninstalled_something = 1; 
-				
-			}
-			else {
-				index++;
-			}
-		}
-	}
-	if ( uninstalled_something == 0 )
-	{
-		if (index == 0) //bad practice, I need to implement a second vector or something. Meh.
-		{
-			cout << "\nWarning: You have no installed packages!";
-		}
-		else
-		{
-			cout << "\nWarning: You didn't remove anything!";
-		}
-		//would you like to recombine your data?
-		return 0;
-		
-	}	
-	sort(installedMods.begin(), installedMods.end());
-	//system(Onisplit.c_str());
-	recompileAll(installedMods);
-	system(strPauseCmd);
-	
-	return err;
-}
-
-int listInstalledPackages(void)
-{
-	cout << "\nThis feature not yet implemented.\n\n";
-	
-	return 0;
-}
-
-int printInstallerInfo(void)
-{
-	cout << "\nAE/Mod Installer\n";
-	cout << "version " << strInstallerVersion << "\n";
-	cout << "by Gumby & Iritscen\n";
-	cout << "see http://oni.bungie.org/community/forums for more info\n\n";
-	
-	return 0;
-}
 
 vector<ModPackage> getPackages(void)
@@ -506,5 +350,5 @@
 	string filename = "\0";
 	string MODINFO_CFG = "Mod_Info.cfg";
-	
+
 	try
 	{
@@ -514,5 +358,5 @@
 			file.open((dir_itr->path().string() + "/" + MODINFO_CFG).c_str());
 			//cout << filename << "\n";
-			
+
 			if(!file.fail())
 			{
@@ -524,4 +368,5 @@
 			file.clear();
 		}
+		sort(packages.begin(), packages.end());
 	}
 	catch (const std::exception & ex)
@@ -529,5 +374,5 @@
 		cout << "Warning, something odd happened!\n";
 	}
-	
+
 	return packages;
 }
@@ -536,11 +381,11 @@
 {
 	/*
-	 This converts a file to a ModPackage struct.
-	 
-	 A few notes...
-	 "iter" is the current word we are on. I should have named it "token" or something, but I don't have multiple iterators, so its ok.
-	 I refer to (*iter) at the beginning of each if statement block. I could probably store it as a variable, but I'm pretty sure that dereferencing a pointer\iterator isn't much
-	 slower than reading a variable.
-	 */
+	This converts a file to a ModPackage struct.
+
+	A few notes...
+	"iter" is the current word we are on. I should have named it "token" or something, but I don't have multiple iterators, so its ok.
+	I refer to (*iter) at the beginning of each if statement block. I could probably store it as a variable, but I'm pretty sure that dereferencing a pointer\iterator isn't much
+	slower than reading a variable.
+	*/
 	ModPackage package;
 	string line;
@@ -567,7 +412,7 @@
 			iter = tokens.begin();				//what word we are on, starts at first word
 			/*
-			 if (!AEInstallVersion.compare(*iter))
-			 If mod is too old, skip this mod.
-			 */
+			if (!AEInstallVersion.compare(*iter))
+			If mod is too old, skip this mod.
+			*/
 			/*else*/if (!NameOfMod.compare(*iter))  {	//if it contains the name
 				for ( ; iter !=tokens.end() && SLASHSLASH.compare(*iter); iter++) {	//interates through the words, ends if it reaches the end of the line or a "//" comment
@@ -578,5 +423,5 @@
 					}
 				}
-				
+
 			}
 			else if (!ModString.compare(*iter)) {
@@ -590,6 +435,6 @@
 				if (toupper((*iter)[0]) + toupper((*iter)[1]) + toupper((*iter)[2]) == 'Y' + 'E' + 'S') package.hasOnis = 1; //Gotta love c++'s lack of a standard case-insensitive
 				else if (!HasBSL.compare(*iter)) { // string comparer...I know my implementation here sucks. I need to change it to check each character one by one. At the moment,
-				iter++; iter++;}  // using "YFR" would probably set it off. :<
-				
+					iter++; iter++;}  // using "YFR" would probably set it off. :<
+
 				if (toupper((*iter)[0]) + toupper((*iter)[1]) + toupper((*iter)[2]) == 'Y' + 'E' + 'S') package.hasBSL = 1;
 			}
@@ -638,5 +483,5 @@
 			}
 		}
-		
+
 	}
 	package.doOutput();
@@ -646,9 +491,7 @@
 void recompileAll(vector<string> installedMods)
 {
-#ifdef WIN32
-	RedirectIOToConsole(); 
-	HWND hWnd = GetConsoleWindow(); 
-	ShowWindow( hWnd, SW_HIDE ); 
-#endif
+	using namespace boost::gregorian;
+	using namespace boost::posix_time;
+	
 	setStatusArea("Importing levels...");
 	//setStatusArea("Recompiling Data...");
@@ -660,14 +503,17 @@
 	string datString;
 	std::stringstream out;
-	
-	
+
+	ptime start_time(second_clock::local_time());
 	clearOldDats();
-	remove("Onisplit.log");
+	remove("Install.log");
+	ofstream logfile("Install.log");
+	logfile << "Mod Installation started " << to_simple_string(start_time) << endl;
+	logfile.close();
 	if(splitInstances == SPLIT){
 		recursive_directory_iterator end_iter;
-		
+
 		for ( recursive_directory_iterator dir_itr( vanilla_dir );
-			 dir_itr != end_iter;
-			 ++dir_itr )
+			dir_itr != end_iter;
+			++dir_itr )
 		{
 			try{
@@ -678,17 +524,17 @@
 			}
 			catch(exception ex) {
-				
+
 			}
 		}
-		
+
 		//recursive_directory_iterator end_iter;
-		
-		
+
+
 		out << numberOfDats;
 		datString = out.str();
 		try {
 			for ( recursive_directory_iterator dir_itr( vanilla_dir );
-				 dir_itr != end_iter;
-				 ++dir_itr )
+				dir_itr != end_iter;
+				++dir_itr )
 			{
 				try
@@ -700,56 +546,68 @@
 							if (exists("packages/" + installedMods[i] + "/oni/" + dir_itr->path().parent_path().filename() + '/' + dir_itr->path().filename()  ))
 								importCommand += " packages/" + installedMods[i] + "/oni/" + dir_itr->path().parent_path().filename() + '/' + dir_itr->path().filename();
-							
+
 							//else cout << " packages/VanillaDats/" + installedMods[i] + "/oni/";
 						}
-						importCommand += " ../GameDataFolder/" + dir_itr->path().filename() + ".dat >> Onisplit.log";
-						
-						sprintf(statusString,"%d/%i\0",j,numberOfDats);	
+						importCommand += " ../GameDataFolder/" + dir_itr->path().filename() + ".dat >> Install.log";
+
+						printf(statusString,"%d/%i\0",j,numberOfDats);	
 						setProgressBar( (int)(1000 * (float)(j-1) / (float)numberOfDats) ); //100% * dat we're on / total dats
 						setStatusArea("Importing " +  dir_itr->path().filename() + " " + statusString);
-						
+
 						system(importCommand.c_str());
 						//Sleep(1000);
 						//cout << importCommand << "\n";
 						j++;
-						
+
 					}
 				}
 				catch ( const std::exception & ex )
 				{
-					cout << "Warning, exception " << ex.what() << "!";
+					
+	remove("Install.log");
+	ofstream logfile("Install.log");
+	
+	
+					logfile << "Warning, exception " << ex.what() << "!";
+					setStatusArea("Warning, exception " + (string)ex.what() + "!");
+logfile.close();	
 				}
 			}
-			
+
 		}
 		catch( const std::exception & ex ) {
-			cout << "Warning, exception " << ex.what() << "!\n"
-			<< "You probably need to re-globalize.";
-			//create_directory( "./packages/VanillaDats" );
+	
+	remove("Install.log");
+	ofstream logfile("Install.log");
+	
+	
+					logfile << "Warning, exception " << ex.what() << "!";
+					setStatusArea("Warning, exception " + (string)ex.what() + "!");
+logfile.close();
 		}
-		
+
 	}
 	else if(splitInstances == NOT_SPLIT){
 		directory_iterator end_iter;
-		
+
 		for ( directory_iterator dir_itr( vanilla_dir );
-			 dir_itr != end_iter;
-			 ++dir_itr )
+			dir_itr != end_iter;
+			++dir_itr )
 		{
-			
+
 			if ( is_directory( dir_itr->status() ) )
 			{
 				numberOfDats++;
 			}
-			
-			
+
+
 		}
-		
+
 		out << numberOfDats;
 		datString = out.str();
-		
+
 		for ( directory_iterator dir_itr( vanilla_dir );
-			 dir_itr != end_iter;
-			 ++dir_itr )
+			dir_itr != end_iter;
+			++dir_itr )
 		{
 			try
@@ -758,17 +616,17 @@
 				{
 					importCommand = strOniSplit + " " + strImportOption + " " + vanilla_dir.string() + dir_itr->path().filename() + " " + "../GameDataFolder/" + dir_itr->path().filename()
-					+ ".dat";
+						+ ".dat";
 					for (int i = 0; i < installedMods.size(); ++i) {
 						if (exists("packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename()  ))
 							importCommand += " packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename();
 					}
-					importCommand += " ../GameDataFolder/" + dir_itr->path().filename() + ".dat";
-					
-					sprintf(statusString,"%d/%i\0",j,numberOfDats);	
+					importCommand += " ../GameDataFolder/" + dir_itr->path().filename() + ".dat >> Install.log";
+
+					printf(statusString,"%d/%i\0",j,numberOfDats);	
 					setProgressBar( (int)(1000 * (float)(j-1) / (float)numberOfDats) ); //100% * dat we're on / total dats
 					setStatusArea("Importing " +  dir_itr->path().filename() + " " + statusString);
-					
+
 					system(importCommand.c_str());
-					
+
 					j++;
 				}
@@ -776,11 +634,33 @@
 			catch ( const std::exception & ex )
 			{
-				cout << "Warning, something odd happened!\n";
-			}
-		}
-	}
+	
+	remove("Install.log");
+	ofstream logfile("Install.log");
+	
+	
+					logfile << "Warning, exception " << ex.what() << "!";
+					setStatusArea("Warning, exception " + (string)ex.what() + "!");
+logfile.close();
+			}}
+	}
+	logfile << "Writing config file";
 	writeInstalledMods(installedMods);
 	setProgressBar(1000);
-	setStatusArea("Done!");
+	setStatusArea("Done! You can now play Oni.");
+	
+		ptime end_time(second_clock::local_time());
+		time_period total_time (start_time, end_time);
+			
+	
+		ofstream logfile2("Install.log", ios::app | ios::ate);
+		string outstring = (string)"\n\nGlobalization ended " + to_simple_string(end_time) + "\nThe process took ";// + (string)total_time.length();
+		
+		logfile2 << "\nGlobalization ended " << to_simple_string(end_time) << "\nThe process took " << total_time.length();
+		
+		//logfile2.write(outstring.c_str(), outstring.length());
+logfile2.close();
+
+		//total_time.length().hours();
+	
 	Sleep(1000);
 	setProgressBar(0);
@@ -789,25 +669,25 @@
 void writeInstalledMods(vector<string> installedMods)
 {
-	
+
 	if ( exists( strInstallCfg ) )
 	{
 		remove( strInstallCfg );
 	}
-	
+
 	ofstream file(strInstallCfg.c_str());
-	
+
 	vector<string>list = installedMods;
 	vector<string>::iterator begin_iter = list.begin(); 
 	vector<string>::iterator end_iter = list.end();
-	
+
 	sort( list.begin(), list.end() );
-	
+
 	for( ; begin_iter != end_iter; ++begin_iter) {
 		file << *begin_iter << " ";
 	}
-	
+
 	file.close();
 	file.clear();
-	
+
 }
 
@@ -816,8 +696,8 @@
 	//system(strPauseCmd);
 	vector<string> returnval;
-	
+
 	string line;
 	fstream file;
-	
+
 	if (exists( Cfg ))
 	{
@@ -830,5 +710,5 @@
 	}
 	else cout << "fail";
-	
+
 	return returnval;
 }
@@ -841,5 +721,5 @@
 	// Find first "non-delimiter".
 	string::size_type pos     = str.find_first_of(delimiters, lastPos);
-	
+
 	while (string::npos != pos || string::npos != lastPos)
 	{
@@ -856,6 +736,6 @@
 	directory_iterator end_iter_gdf;
 	for ( directory_iterator dir_itr_gdf( "../GameDataFolder" );
-		 dir_itr_gdf != end_iter_gdf;
-		 ++dir_itr_gdf )
+		dir_itr_gdf != end_iter_gdf;
+		++dir_itr_gdf )
 	{
 		//cout << dir_itr_gdf->path().extension() << "\n";
@@ -863,7 +743,7 @@
 			remove( dir_itr_gdf->path() );
 		}
-		
-	}
-	
+
+	}
+
 }
 
@@ -912,6 +792,6 @@
 
 /*
- * MainWindow type definition
- */
+* MainWindow type definition
+*/
 
 IMPLEMENT_CLASS( MainWindow, wxFrame )
@@ -919,40 +799,40 @@
 
 /*
- * MainWindow event table definition
- */
+* MainWindow event table definition
+*/
 
 BEGIN_EVENT_TABLE( MainWindow, wxFrame )
 
 ////@begin MainWindow event table entries
-    EVT_CHECKBOX( SelectAll_Checkbox, MainWindow::OnSelectAllCheckboxClick )
-
-    EVT_BUTTON( Refresh_Button, MainWindow::OnRefreshButtonClick )
-
-    EVT_LISTBOX( Mods_CheckboxList1, MainWindow::OnModsCheckboxList1Selected )
-    EVT_CHECKLISTBOX( Mods_CheckboxList1, MainWindow::OnModsCheckboxList1Toggled )
-
-    EVT_UPDATE_UI( ID_STATUSBAR, MainWindow::OnStatusbarUpdate )
-
-    EVT_BUTTON( Install_Button, MainWindow::OnInstallButtonClick )
-
-    EVT_RADIOBUTTON( Sep_RadioButton, MainWindow::OnSepRadioButtonSelected )
-
-    EVT_RADIOBUTTON( NoSep_RadioButton, MainWindow::OnNoSepRadioButtonSelected )
-
-    EVT_RADIOBUTTON( Separated_RadioButton, MainWindow::OnSeparatedRadioButtonSelected )
-
-    EVT_RADIOBUTTON( Complete_RadioButton, MainWindow::OnCompleteRadioButtonSelected )
-
-    EVT_BUTTON( ReGlobalize_Button, MainWindow::OnReGlobalizeButtonClick )
-
-    EVT_MENU( wxID_LOAD, MainWindow::OnLoadClick )
-
-    EVT_MENU( wxID_SAVE, MainWindow::OnSaveClick )
-
-    EVT_MENU( wxID_EXIT, MainWindow::OnExitClick )
-
-    EVT_MENU( wxID_OPTIONS, MainWindow::OnOptionsClick )
-
-    EVT_MENU( wxID_ABOUT, MainWindow::OnAboutClick )
+EVT_CHECKBOX( SelectAll_Checkbox, MainWindow::OnSelectAllCheckboxClick )
+
+EVT_BUTTON( Refresh_Button, MainWindow::OnRefreshButtonClick )
+
+EVT_LISTBOX( Mods_CheckboxList1, MainWindow::OnModsCheckboxList1Selected )
+EVT_CHECKLISTBOX( Mods_CheckboxList1, MainWindow::OnModsCheckboxList1Toggled )
+
+EVT_UPDATE_UI( ID_STATUSBAR, MainWindow::OnStatusbarUpdate )
+
+EVT_BUTTON( Install_Button, MainWindow::OnInstallButtonClick )
+
+EVT_RADIOBUTTON( Sep_RadioButton, MainWindow::OnSepRadioButtonSelected )
+
+EVT_RADIOBUTTON( NoSep_RadioButton, MainWindow::OnNoSepRadioButtonSelected )
+
+EVT_RADIOBUTTON( Separated_RadioButton, MainWindow::OnSeparatedRadioButtonSelected )
+
+EVT_RADIOBUTTON( Complete_RadioButton, MainWindow::OnCompleteRadioButtonSelected )
+
+EVT_BUTTON( ReGlobalize_Button, MainWindow::OnReGlobalizeButtonClick )
+
+EVT_MENU( wxID_LOAD, MainWindow::OnLoadClick )
+
+EVT_MENU( wxID_SAVE, MainWindow::OnSaveClick )
+
+EVT_MENU( wxID_EXIT, MainWindow::OnExitClick )
+
+EVT_MENU( wxID_OPTIONS, MainWindow::OnOptionsClick )
+
+EVT_MENU( wxID_ABOUT, MainWindow::OnAboutClick )
 
 ////@end MainWindow event table entries
@@ -962,78 +842,80 @@
 
 /*
- * MainWindow constructors
- */
+* MainWindow constructors
+*/
 
 MainWindow::MainWindow()
 {
-    Init();
+	Init();
 }
 
 MainWindow::MainWindow( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
 {
-    Init();
-    Create( parent, id, caption, pos, size, style );
-}
-
-
-/*
- * MainWindow creator
- */
+	Init();
+	Create( parent, id, caption, pos, size, style );
+}
+
+
+/*
+* MainWindow creator
+*/
 
 bool MainWindow::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
 {
-////@begin MainWindow creation
-    wxFrame::Create( parent, id, caption, pos, size, style );
-
-    CreateControls();
-    SetIcon(GetIconResource(wxT("oni_special.ico")));
-    Centre();
-////@end MainWindow creation
-    return true;
-}
-
-
-/*
- * MainWindow destructor
- */
+	////@begin MainWindow creation
+	wxFrame::Create( parent, id, caption, pos, size, style );
+
+	CreateControls();
+	SetIcon(GetIconResource(wxT("oni_special.ico")));
+	Centre();
+	
+	
+	////@end MainWindow creation
+	return true;
+}
+
+
+/*
+* MainWindow destructor
+*/
 
 MainWindow::~MainWindow()
 {
-////@begin MainWindow destruction
-////@end MainWindow destruction
-}
-
-
-/*
- * Member initialisation
- */
+	////@begin MainWindow destruction
+	////@end MainWindow destruction
+}
+
+
+/*
+* Member initialisation
+*/
 
 void MainWindow::Init()
 {
-////@begin MainWindow member initialisation
-    MainSplitter = NULL;
-    SelectAll = NULL;
-    RefreshButton = NULL;
-    Mods_CheckboxList = NULL;
-    titleText = NULL;
-    creatorText = NULL;
-    descriptionText = NULL;
-    StatusArea = NULL;
-    ProgressBar = NULL;
-    InstallButton = NULL;
-    OptionsPanel = NULL;
-    SepRadio = NULL;
-    NoSepRadio = NULL;
-    SeparatedRadio = NULL;
-    CompleteRadio = NULL;
-    ReglobalizeButton = NULL;
-////@end MainWindow member initialisation
-
-}
-
-
-/*
- * Control creation for MainWindow
- */
+	////@begin MainWindow member initialisation
+	MainSplitter = NULL;
+	SelectAll = NULL;
+	RefreshButton = NULL;
+	Mods_CheckboxList = NULL;
+	titleText = NULL;
+	creatorText = NULL;
+	descriptionText = NULL;
+	StatusArea = NULL;
+	ProgressBar = NULL;
+	InstallButton = NULL;
+	OptionsPanel = NULL;
+	SepRadio = NULL;
+	NoSepRadio = NULL;
+	SeparatedRadio = NULL;
+	CompleteRadio = NULL;
+	ReglobalizeButton = NULL;
+	////@end MainWindow member initialisation
+
+}
+
+
+/*
+* Control creation for MainWindow
+*/
 wxStatusBar **TheStatusBar;
 wxButton* TheInstallButton;
@@ -1041,170 +923,170 @@
 void MainWindow::CreateControls()
 {    
-////@begin MainWindow content construction
-    // Generated by DialogBlocks, 31/05/2009 19:03:55 (unregistered)
-
-    MainWindow* itemFrame1 = this;
-
-    wxMenuBar* menuBar = new wxMenuBar;
-    wxMenu* itemMenu37 = new wxMenu;
-    {
-        wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_LOAD, _("&Load Configuration..."), wxEmptyString, wxITEM_NORMAL);
-        wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("fileopen.xpm")));
-        menuItem->SetBitmap(bitmap);
-        itemMenu37->Append(menuItem);
-    }
-    {
-        wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_SAVE, _("&Save Configuration..."), wxEmptyString, wxITEM_NORMAL);
-        wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("filesaveas.xpm")));
-        menuItem->SetBitmap(bitmap);
-        itemMenu37->Append(menuItem);
-    }
-    itemMenu37->AppendSeparator();
-    {
-        wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_EXIT, _("Exit"), wxEmptyString, wxITEM_NORMAL);
-        wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("quit.xpm")));
-        menuItem->SetBitmap(bitmap);
-        itemMenu37->Append(menuItem);
-    }
-    menuBar->Append(itemMenu37, _("&File"));
-    wxMenu* itemMenu42 = new wxMenu;
-    itemMenu42->Append(wxID_OPTIONS, _("Show Advanced Options..."), wxEmptyString, wxITEM_CHECK);
-    menuBar->Append(itemMenu42, _("Options"));
-    wxMenu* itemMenu44 = new wxMenu;
-    itemMenu44->Append(wxID_HELP, _("Help"), wxEmptyString, wxITEM_NORMAL);
-    itemMenu44->Append(wxID_ABOUT, _("About"), wxEmptyString, wxITEM_NORMAL);
-    menuBar->Append(itemMenu44, _("Help"));
-    itemFrame1->SetMenuBar(menuBar);
-
-    wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
-    itemFrame1->SetSizer(itemBoxSizer2);
-
-    MainSplitter = new wxSplitterWindow( itemFrame1, ID_SPLITTERWINDOW, wxDefaultPosition, wxSize(100, 100), wxSP_LIVE_UPDATE|wxNO_BORDER );
-    MainSplitter->SetMinimumPaneSize(150);
-    MainSplitter->SetName(_T("MainSplitter"));
-
-    wxPanel* itemPanel4 = new wxPanel( MainSplitter, ID_PANEL, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
-    wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
-    itemPanel4->SetSizer(itemBoxSizer5);
-
-    wxBoxSizer* itemBoxSizer6 = new wxBoxSizer(wxHORIZONTAL);
-    itemBoxSizer5->Add(itemBoxSizer6, 0, wxGROW|wxALL, 0);
-    SelectAll = new wxCheckBox( itemPanel4, SelectAll_Checkbox, _("Select All/None"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE );
-    SelectAll->SetValue(false);
-    SelectAll->SetName(_T("SelectAll_Checkbox"));
-    itemBoxSizer6->Add(SelectAll, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
-
-    RefreshButton = new wxBitmapButton( itemPanel4, Refresh_Button, itemFrame1->GetBitmapResource(wxT("redo.xpm")), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
-    RefreshButton->SetName(_T("RefreshButton"));
-    itemBoxSizer6->Add(RefreshButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
-
-    wxArrayString Mods_CheckboxListStrings;
-    Mods_CheckboxList = new wxCheckListBox( itemPanel4, Mods_CheckboxList1, wxDefaultPosition, wxDefaultSize, Mods_CheckboxListStrings, wxLB_HSCROLL );
-    Mods_CheckboxList->SetName(_T("Mods_CheckboxList"));
-    itemBoxSizer5->Add(Mods_CheckboxList, 1, wxGROW|wxALL, 0);
-
-    wxPanel* itemPanel10 = new wxPanel( MainSplitter, DescriptionHolder_Panel, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
-    itemPanel10->SetName(_T("DescriptionHolder_Panel"));
-    wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL);
-    itemPanel10->SetSizer(itemBoxSizer11);
-
-    wxBoxSizer* itemBoxSizer12 = new wxBoxSizer(wxHORIZONTAL);
-    itemBoxSizer11->Add(itemBoxSizer12, 0, wxGROW|wxALL, 0);
-    wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxVERTICAL);
-    itemBoxSizer12->Add(itemBoxSizer13, 1, wxALIGN_CENTER_VERTICAL|wxALL, 0);
-    titleText = new wxTextCtrl( itemPanel10, Title_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
-    titleText->SetName(_T("Title_Text"));
-    titleText->SetBackgroundColour(wxColour(240, 240, 240));
-    itemBoxSizer13->Add(titleText, 1, wxGROW|wxLEFT, 5);
-
-    wxBoxSizer* itemBoxSizer15 = new wxBoxSizer(wxVERTICAL);
-    itemBoxSizer12->Add(itemBoxSizer15, 1, wxGROW|wxALL, 0);
-    creatorText = new wxTextCtrl( itemPanel10, Author_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_RIGHT );
-    creatorText->SetName(_T("Author_Text"));
-    creatorText->SetBackgroundColour(wxColour(240, 240, 240));
-    itemBoxSizer15->Add(creatorText, 1, wxGROW|wxRIGHT, 5);
-
-    wxStaticLine* itemStaticLine17 = new wxStaticLine( itemPanel10, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
-    itemStaticLine17->Show(false);
-    itemBoxSizer11->Add(itemStaticLine17, 0, wxGROW|wxALL, 5);
-
-    descriptionText = new wxTextCtrl( itemPanel10, Description_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxTE_RICH|wxTE_AUTO_URL );
-    descriptionText->SetName(_T("DescriptionName"));
-    descriptionText->SetBackgroundColour(wxColour(240, 240, 240));
-    itemBoxSizer11->Add(descriptionText, 1, wxGROW|wxLEFT|wxRIGHT, 5);
-
-    MainSplitter->SplitVertically(itemPanel4, itemPanel10, 150);
-    itemBoxSizer2->Add(MainSplitter, 1, wxGROW|wxALL, 0);
-
-    StatusArea = new wxStatusBar( itemFrame1, ID_STATUSBAR, 0 );
-    StatusArea->SetName(_T("StatusArea"));
-    StatusArea->SetFieldsCount(1);
-    StatusArea->SetStatusText(_("Status Area"), 0);
-    itemBoxSizer2->Add(StatusArea, 0, wxGROW|wxALL, 0);
-
-    wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxHORIZONTAL);
-    itemBoxSizer2->Add(itemBoxSizer20, 0, wxGROW|wxALL, 0);
-
-    ProgressBar = new wxGauge( itemFrame1, ProgressBar_Gauge, 1000, wxDefaultPosition, wxSize(-1, 30), wxGA_SMOOTH );
-    ProgressBar->SetValue(0);
-    itemBoxSizer20->Add(ProgressBar, 1, wxGROW|wxALL, 0);
-
-    InstallButton = new wxButton( itemFrame1, Install_Button, _("Install!"), wxDefaultPosition, wxSize(-1, 30), 0 );
-    itemBoxSizer20->Add(InstallButton, 0, wxGROW|wxALL, 0);
-
-    wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxVERTICAL);
-    itemBoxSizer2->Add(itemBoxSizer23, 0, wxGROW|wxALL, 0);
-
-    OptionsPanel = new wxPanel( itemFrame1, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
-    itemBoxSizer2->Add(OptionsPanel, 0, wxGROW, 0);
-
-    wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxHORIZONTAL);
-    OptionsPanel->SetSizer(itemBoxSizer25);
-
-    wxBoxSizer* itemBoxSizer26 = new wxBoxSizer(wxVERTICAL);
-    itemBoxSizer25->Add(itemBoxSizer26, 0, wxGROW|wxALL, 5);
-
-    SepRadio = new wxRadioButton( OptionsPanel, Sep_RadioButton, _("Sep"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
-    SepRadio->SetValue(false);
-    if (MainWindow::ShowToolTips())
-        SepRadio->SetToolTip(_("For PC Demo and Mac"));
-    itemBoxSizer26->Add(SepRadio, 0, wxALIGN_LEFT|wxALL, 5);
-
-    NoSepRadio = new wxRadioButton( OptionsPanel, NoSep_RadioButton, _("NoSep"), wxDefaultPosition, wxDefaultSize, 0 );
-    NoSepRadio->SetValue(false);
-    if (MainWindow::ShowToolTips())
-        NoSepRadio->SetToolTip(_("For PC Retail"));
-    itemBoxSizer26->Add(NoSepRadio, 0, wxALIGN_LEFT|wxALL, 5);
-
-    wxStaticLine* itemStaticLine29 = new wxStaticLine( OptionsPanel, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
-    itemBoxSizer25->Add(itemStaticLine29, 0, wxGROW|wxALL, 5);
-
-    wxBoxSizer* itemBoxSizer30 = new wxBoxSizer(wxVERTICAL);
-    itemBoxSizer25->Add(itemBoxSizer30, 0, wxGROW|wxALL, 5);
-
-    SeparatedRadio = new wxRadioButton( OptionsPanel, Separated_RadioButton, _("Separated Level0"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
-    SeparatedRadio->SetValue(false);
-    SeparatedRadio->SetName(_T("Separated_RadioButton"));
-    itemBoxSizer30->Add(SeparatedRadio, 0, wxALIGN_LEFT|wxALL, 5);
-
-    CompleteRadio = new wxRadioButton( OptionsPanel, Complete_RadioButton, _("Complete Level0"), wxDefaultPosition, wxDefaultSize, 0 );
-    CompleteRadio->SetValue(false);
-    CompleteRadio->SetName(_T("Complete_RadioButton"));
-    itemBoxSizer30->Add(CompleteRadio, 0, wxALIGN_LEFT|wxALL, 5);
-
-    wxStaticLine* itemStaticLine33 = new wxStaticLine( OptionsPanel, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
-    itemBoxSizer25->Add(itemStaticLine33, 0, wxGROW|wxALL, 5);
-
-    wxBoxSizer* itemBoxSizer34 = new wxBoxSizer(wxVERTICAL);
-    itemBoxSizer25->Add(itemBoxSizer34, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
-
-    ReglobalizeButton = new wxButton( OptionsPanel, ReGlobalize_Button, _("Reglobalize"), wxDefaultPosition, wxDefaultSize, 0 );
-    ReglobalizeButton->SetName(_T("Reglobalize_Button"));
-    itemBoxSizer34->Add(ReglobalizeButton, 0, wxGROW|wxALL, 5);
-
-    // Connect events and objects
-    Mods_CheckboxList->Connect(Mods_CheckboxList1, wxEVT_CREATE, wxWindowCreateEventHandler(MainWindow::ModList_OnCreate), NULL, this);
-////@end MainWindow content construction
-	
+	////@begin MainWindow content construction
+	// Generated by DialogBlocks, 31/05/2009 19:03:55 (unregistered)
+
+	MainWindow* itemFrame1 = this;
+
+	wxMenuBar* menuBar = new wxMenuBar;
+	wxMenu* itemMenu37 = new wxMenu;
+	{
+		wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_LOAD, _("&Load Configuration..."), wxEmptyString, wxITEM_NORMAL);
+		wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("fileopen.xpm")));
+		menuItem->SetBitmap(bitmap);
+		itemMenu37->Append(menuItem);
+	}
+	{
+		wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_SAVE, _("&Save Configuration..."), wxEmptyString, wxITEM_NORMAL);
+		wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("filesaveas.xpm")));
+		menuItem->SetBitmap(bitmap);
+		itemMenu37->Append(menuItem);
+	}
+	itemMenu37->AppendSeparator();
+	{
+		wxMenuItem* menuItem = new wxMenuItem(itemMenu37, wxID_EXIT, _("Exit"), wxEmptyString, wxITEM_NORMAL);
+		wxBitmap bitmap(itemFrame1->GetBitmapResource(wxT("quit.xpm")));
+		menuItem->SetBitmap(bitmap);
+		itemMenu37->Append(menuItem);
+	}
+	menuBar->Append(itemMenu37, _("&File"));
+	wxMenu* itemMenu42 = new wxMenu;
+	itemMenu42->Append(wxID_OPTIONS, _("Show Advanced Options..."), wxEmptyString, wxITEM_CHECK);
+	menuBar->Append(itemMenu42, _("Options"));
+	wxMenu* itemMenu44 = new wxMenu;
+	itemMenu44->Append(wxID_HELP, _("Help"), wxEmptyString, wxITEM_NORMAL);
+	itemMenu44->Append(wxID_ABOUT, _("About"), wxEmptyString, wxITEM_NORMAL);
+	menuBar->Append(itemMenu44, _("Help"));
+	itemFrame1->SetMenuBar(menuBar);
+
+	wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
+	itemFrame1->SetSizer(itemBoxSizer2);
+
+	MainSplitter = new wxSplitterWindow( itemFrame1, ID_SPLITTERWINDOW, wxDefaultPosition, wxSize(100, 100), wxSP_LIVE_UPDATE|wxNO_BORDER );
+	MainSplitter->SetMinimumPaneSize(150);
+	MainSplitter->SetName(_T("MainSplitter"));
+
+	wxPanel* itemPanel4 = new wxPanel( MainSplitter, ID_PANEL, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
+	wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
+	itemPanel4->SetSizer(itemBoxSizer5);
+
+	wxBoxSizer* itemBoxSizer6 = new wxBoxSizer(wxHORIZONTAL);
+	itemBoxSizer5->Add(itemBoxSizer6, 0, wxGROW|wxALL, 0);
+	SelectAll = new wxCheckBox( itemPanel4, SelectAll_Checkbox, _("Select All/None"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE );
+	SelectAll->SetValue(false);
+	SelectAll->SetName(_T("SelectAll_Checkbox"));
+	itemBoxSizer6->Add(SelectAll, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+
+	RefreshButton = new wxBitmapButton( itemPanel4, Refresh_Button, itemFrame1->GetBitmapResource(wxT("redo.xpm")), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW );
+	RefreshButton->SetName(_T("RefreshButton"));
+	itemBoxSizer6->Add(RefreshButton, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxTOP|wxBOTTOM, 5);
+
+	wxArrayString Mods_CheckboxListStrings;
+	Mods_CheckboxList = new wxCheckListBox( itemPanel4, Mods_CheckboxList1, wxDefaultPosition, wxDefaultSize, Mods_CheckboxListStrings, wxLB_HSCROLL );
+	Mods_CheckboxList->SetName(_T("Mods_CheckboxList"));
+	itemBoxSizer5->Add(Mods_CheckboxList, 1, wxGROW|wxALL, 0);
+
+	wxPanel* itemPanel10 = new wxPanel( MainSplitter, DescriptionHolder_Panel, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
+	itemPanel10->SetName(_T("DescriptionHolder_Panel"));
+	wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL);
+	itemPanel10->SetSizer(itemBoxSizer11);
+
+	wxBoxSizer* itemBoxSizer12 = new wxBoxSizer(wxHORIZONTAL);
+	itemBoxSizer11->Add(itemBoxSizer12, 0, wxGROW|wxALL, 0);
+	wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxVERTICAL);
+	itemBoxSizer12->Add(itemBoxSizer13, 1, wxALIGN_CENTER_VERTICAL|wxALL, 0);
+	titleText = new wxTextCtrl( itemPanel10, Title_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY );
+	titleText->SetName(_T("Title_Text"));
+	titleText->SetBackgroundColour(wxColour(240, 240, 240));
+	itemBoxSizer13->Add(titleText, 1, wxGROW|wxLEFT, 5);
+
+	wxBoxSizer* itemBoxSizer15 = new wxBoxSizer(wxVERTICAL);
+	itemBoxSizer12->Add(itemBoxSizer15, 1, wxGROW|wxALL, 0);
+	creatorText = new wxTextCtrl( itemPanel10, Author_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_READONLY|wxTE_RIGHT );
+	creatorText->SetName(_T("Author_Text"));
+	creatorText->SetBackgroundColour(wxColour(240, 240, 240));
+	itemBoxSizer15->Add(creatorText, 1, wxGROW|wxRIGHT, 5);
+
+	wxStaticLine* itemStaticLine17 = new wxStaticLine( itemPanel10, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+	itemStaticLine17->Show(false);
+	itemBoxSizer11->Add(itemStaticLine17, 0, wxGROW|wxALL, 5);
+
+	descriptionText = new wxTextCtrl( itemPanel10, Description_Text, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY|wxTE_RICH|wxTE_AUTO_URL );
+	descriptionText->SetName(_T("DescriptionName"));
+	descriptionText->SetBackgroundColour(wxColour(240, 240, 240));
+	itemBoxSizer11->Add(descriptionText, 1, wxGROW|wxLEFT|wxRIGHT, 5);
+
+	MainSplitter->SplitVertically(itemPanel4, itemPanel10, 150);
+	itemBoxSizer2->Add(MainSplitter, 1, wxGROW|wxALL, 0);
+
+	StatusArea = new wxStatusBar( itemFrame1, ID_STATUSBAR, 0 );
+	StatusArea->SetName(_T("StatusArea"));
+	StatusArea->SetFieldsCount(1);
+	StatusArea->SetStatusText(_("Status Area"), 0);
+	itemBoxSizer2->Add(StatusArea, 0, wxGROW|wxALL, 0);
+
+	wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxHORIZONTAL);
+	itemBoxSizer2->Add(itemBoxSizer20, 0, wxGROW|wxALL, 0);
+
+	ProgressBar = new wxGauge( itemFrame1, ProgressBar_Gauge, 1000, wxDefaultPosition, wxSize(-1, 30), wxGA_SMOOTH );
+	ProgressBar->SetValue(0);
+	itemBoxSizer20->Add(ProgressBar, 1, wxGROW|wxALL, 0);
+
+	InstallButton = new wxButton( itemFrame1, Install_Button, _("Install!"), wxDefaultPosition, wxSize(-1, 30), 0 );
+	itemBoxSizer20->Add(InstallButton, 0, wxGROW|wxALL, 0);
+
+	wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxVERTICAL);
+	itemBoxSizer2->Add(itemBoxSizer23, 0, wxGROW|wxALL, 0);
+
+	OptionsPanel = new wxPanel( itemFrame1, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxSUNKEN_BORDER|wxTAB_TRAVERSAL );
+	itemBoxSizer2->Add(OptionsPanel, 0, wxGROW, 0);
+
+	wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxHORIZONTAL);
+	OptionsPanel->SetSizer(itemBoxSizer25);
+
+	wxBoxSizer* itemBoxSizer26 = new wxBoxSizer(wxVERTICAL);
+	itemBoxSizer25->Add(itemBoxSizer26, 0, wxGROW|wxALL, 5);
+
+	SepRadio = new wxRadioButton( OptionsPanel, Sep_RadioButton, _("Sep"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
+	SepRadio->SetValue(false);
+	if (MainWindow::ShowToolTips())
+		SepRadio->SetToolTip(_("For PC Demo and Mac"));
+	itemBoxSizer26->Add(SepRadio, 0, wxALIGN_LEFT|wxALL, 5);
+
+	NoSepRadio = new wxRadioButton( OptionsPanel, NoSep_RadioButton, _("NoSep"), wxDefaultPosition, wxDefaultSize, 0 );
+	NoSepRadio->SetValue(false);
+	if (MainWindow::ShowToolTips())
+		NoSepRadio->SetToolTip(_("For PC Retail"));
+	itemBoxSizer26->Add(NoSepRadio, 0, wxALIGN_LEFT|wxALL, 5);
+
+	wxStaticLine* itemStaticLine29 = new wxStaticLine( OptionsPanel, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
+	itemBoxSizer25->Add(itemStaticLine29, 0, wxGROW|wxALL, 5);
+
+	wxBoxSizer* itemBoxSizer30 = new wxBoxSizer(wxVERTICAL);
+	itemBoxSizer25->Add(itemBoxSizer30, 0, wxGROW|wxALL, 5);
+
+	SeparatedRadio = new wxRadioButton( OptionsPanel, Separated_RadioButton, _("Separated Level0"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
+	SeparatedRadio->SetValue(false);
+	SeparatedRadio->SetName(_T("Separated_RadioButton"));
+	itemBoxSizer30->Add(SeparatedRadio, 0, wxALIGN_LEFT|wxALL, 5);
+
+	CompleteRadio = new wxRadioButton( OptionsPanel, Complete_RadioButton, _("Complete Level0"), wxDefaultPosition, wxDefaultSize, 0 );
+	CompleteRadio->SetValue(false);
+	CompleteRadio->SetName(_T("Complete_RadioButton"));
+	itemBoxSizer30->Add(CompleteRadio, 0, wxALIGN_LEFT|wxALL, 5);
+
+	wxStaticLine* itemStaticLine33 = new wxStaticLine( OptionsPanel, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
+	itemBoxSizer25->Add(itemStaticLine33, 0, wxGROW|wxALL, 5);
+
+	wxBoxSizer* itemBoxSizer34 = new wxBoxSizer(wxVERTICAL);
+	itemBoxSizer25->Add(itemBoxSizer34, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+
+	ReglobalizeButton = new wxButton( OptionsPanel, ReGlobalize_Button, _("Reglobalize"), wxDefaultPosition, wxDefaultSize, 0 );
+	ReglobalizeButton->SetName(_T("Reglobalize_Button"));
+	itemBoxSizer34->Add(ReglobalizeButton, 0, wxGROW|wxALL, 5);
+
+	// Connect events and objects
+	Mods_CheckboxList->Connect(Mods_CheckboxList1, wxEVT_CREATE, wxWindowCreateEventHandler(MainWindow::ModList_OnCreate), NULL, this);
+	////@end MainWindow content construction
+
 	if ( exists( "../../GameDataFolder/level0_Final.sep" ) ) {
 		static_cast<string>("-import:sep");
@@ -1218,31 +1100,39 @@
 	globalPackages = getPackages();
 	globalInstalledMods = getInstallString();
-		for (int i = 0; i < globalPackages.size(); i++) {
-			Mods_CheckboxList->Append(globalPackages[i].name.c_str());
-			if( binary_search(globalInstalledMods.begin(), globalInstalledMods.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i);
-	}
-		TheStatusBar = &StatusArea;
-		TheInstallButton = InstallButton;
-		TheProgressBar = ProgressBar;
-		OptionsPanel->Hide();
-		if(splitInstances == SPLIT) SeparatedRadio->SetValue(true);
-		else CompleteRadio->SetValue(true);
-		
-		
-		
-		if(strImportOption == "-import:nosep") NoSepRadio->SetValue(true);
-		else SepRadio->SetValue(true);
-
-			//MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()-OptionsPanel->GetRect().GetHeight() );
-}
-
-		
-/*
- * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for SelectAll_Checkbox
- */
+	for (int i = 0; i < globalPackages.size(); i++) {
+		Mods_CheckboxList->Append(globalPackages[i].name.c_str());
+		if( binary_search(globalInstalledMods.begin(), globalInstalledMods.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i);
+	}
+
+	TheStatusBar = &StatusArea;
+	TheInstallButton = InstallButton;
+	TheProgressBar = ProgressBar;
+	OptionsPanel->Hide();
+	if(splitInstances == SPLIT) SeparatedRadio->SetValue(true);
+	else CompleteRadio->SetValue(true);
+
+
+
+	if(strImportOption == "-import:nosep") NoSepRadio->SetValue(true);
+	else SepRadio->SetValue(true);
+	
+	
+#ifdef WIN32
+	RedirectIOToConsole(); 
+	HWND hWnd = GetConsoleWindow(); 
+	ShowWindow( hWnd, SW_HIDE ); 
+#endif
+	
+		//MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()-OptionsPanel->GetRect().GetHeight() );
+}
+
+
+/*
+* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for SelectAll_Checkbox
+*/
 
 void MainWindow::OnSelectAllCheckboxClick( wxCommandEvent& event )
 {
-		switch(SelectAll->Get3StateValue()) {
+	switch(SelectAll->Get3StateValue()) {
 	case wxCHK_UNCHECKED:
 		for(int i = 0; i < globalPackages.size(); i++) Mods_CheckboxList->Check(i, false);
@@ -1259,11 +1149,11 @@
 
 	}
-	
-}
-
-
-/*
- * wxEVT_CREATE event handler for Mods_CheckboxList
- */
+
+}
+
+
+/*
+* wxEVT_CREATE event handler for Mods_CheckboxList
+*/
 
 void MainWindow::ModList_OnCreate( wxWindowCreateEvent& event )
@@ -1275,67 +1165,68 @@
 
 /*
- * Should we show tooltips?
- */
+* Should we show tooltips?
+*/
 
 bool MainWindow::ShowToolTips()
 {
-    return true;
-}
-
-/*
- * Get bitmap resources
- */
+	return true;
+}
+
+/*
+* Get bitmap resources
+*/
 
 wxBitmap MainWindow::GetBitmapResource( const wxString& name )
 {
-    // Bitmap retrieval
-////@begin MainWindow bitmap retrieval
-    wxUnusedVar(name);
-    if (name == _T("redo.xpm"))
-    {
-        wxBitmap bitmap(redo_xpm);
-        return bitmap;
-    }
-    else if (name == _T("fileopen.xpm"))
-    {
-        wxBitmap bitmap( fileopen_xpm);
-        return bitmap;
-    }
-    else if (name == _T("filesaveas.xpm"))
-    {
-        wxBitmap bitmap( filesaveas_xpm);
-        return bitmap;
-    }
-    else if (name == _T("quit.xpm"))
-    {
-        wxBitmap bitmap( quit_xpm);
-        return bitmap;
-    }
-    return wxNullBitmap;
-////@end MainWindow bitmap retrieval
-}
-
-/*
- * Get icon resources
- */
+	// Bitmap retrieval
+	////@begin MainWindow bitmap retrieval
+	wxUnusedVar(name);
+	if (name == _T("redo.xpm"))
+	{
+		wxBitmap bitmap(redo_xpm);
+		return bitmap;
+	}
+	else if (name == _T("fileopen.xpm"))
+	{
+		wxBitmap bitmap( fileopen_xpm);
+		return bitmap;
+	}
+	else if (name == _T("filesaveas.xpm"))
+	{
+		wxBitmap bitmap( filesaveas_xpm);
+		return bitmap;
+	}
+	else if (name == _T("quit.xpm"))
+	{
+		wxBitmap bitmap( quit_xpm);
+		return bitmap;
+	}
+	return wxNullBitmap;
+	////@end MainWindow bitmap retrieval
+}
+
+/*
+* Get icon resources
+*/
 
 wxIcon MainWindow::GetIconResource( const wxString& name )
 {
-    // Icon retrieval
-////@begin MainWindow icon retrieval
-    wxUnusedVar(name);
-    if (name == _T("oni_special.ico"))
-    {
-        wxIcon icon(_T("oni_special.ico"), wxBITMAP_TYPE_ICO);
-        return icon;
-    }
-    return wxNullIcon;
-////@end MainWindow icon retrieval
-}
-
-
-/*
- * wxEVT_COMMAND_LISTBOX_SELECTED event handler for Mods_CheckboxList1
- */
+
+	// Icon retrieval
+	////@begin MainWindow icon retrieval
+	wxUnusedVar(name);
+	if (name == _T("oni_special.ico"))
+	{
+	//	wxIcon icon(_T("oni_special.ico"), wxBITMAP_TYPE_ICO);
+	//	return icon;
+	}
+	return wxNullIcon;
+	////@end MainWindow icon retrieval
+}
+
+
+/*
+* wxEVT_COMMAND_LISTBOX_SELECTED event handler for Mods_CheckboxList1
+*/
 
 void MainWindow::OnModsCheckboxList1Selected( wxCommandEvent& event )
@@ -1351,6 +1242,6 @@
 
 /*
- * wxEVT_COMMAND_CHECKLISTBOX_TOGGLED event handler for Mods_CheckboxList1
- */
+* wxEVT_COMMAND_CHECKLISTBOX_TOGGLED event handler for Mods_CheckboxList1
+*/
 
 void MainWindow::OnModsCheckboxList1Toggled( wxCommandEvent& event )
@@ -1358,29 +1249,35 @@
 	SelectAll->Set3StateValue(wxCHK_UNDETERMINED);
 	if(event.GetInt()) {
-	/*
+		/*
 		switch(SelectAll->Get3StateValue()) {
-	case wxCHK_UNCHECKED:
+		case wxCHK_UNCHECKED:
 		break;
-	case wxCHK_CHECKED:
+		case wxCHK_CHECKED:
 		break;
-	case wxCHK_UNDETERMINED :
+		case wxCHK_UNDETERMINED :
 		break;
-	}
-	*/
-	}
-}
-
-
-/*
- * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_OPTIONS
- */
+		}
+		*/
+	}
+}
+
+
+/*
+* wxEVT_COMMAND_MENU_SELECTED event handler for wxID_OPTIONS
+*/
 
 void MainWindow::OnOptionsClick( wxCommandEvent& event )
 {
-	
+
+
+	
+
 	if (!event.GetInt() ) {
 		OptionsPanel->Hide(); 
 		MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()-OptionsPanel->GetRect().GetHeight());}
 	else {
+		//Uncomment this when we release, it gets annoying if you are testing globalization a lot ;)
+		//wxMessageDialog* YesNoDialog = new wxMessageDialog(this, 			"WARNING: These options are for advanced users only, use with caution.", "AE Installer Alert",  wxOK | wxICON_EXCLAMATION	, wxDefaultPosition);
+		//YesNoDialog->ShowModal();
 		OptionsPanel->Show();
 		MainWindow::SetSize(MainWindow::GetRect().GetWidth(), MainWindow::GetRect().GetHeight()+OptionsPanel->GetRect().GetHeight());
@@ -1390,41 +1287,41 @@
 
 /*
- * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_EXIT
- */
+* wxEVT_COMMAND_MENU_SELECTED event handler for wxID_EXIT
+*/
 
 void MainWindow::OnExitClick( wxCommandEvent& event )
 {
-exit(0);
-}
-
-
-/*
- * wxEVT_COMMAND_BUTTON_CLICKED event handler for Install_Button
- */
+	exit(0);
+}
+
+
+/*
+* wxEVT_COMMAND_BUTTON_CLICKED event handler for Install_Button
+*/
 
 
 struct recompile
 {
-    recompile(vector<string> localPackages) : thePackages(localPackages) { }
-    void operator()()
-    {
+	recompile(vector<string> localPackages) : thePackages(localPackages) { }
+	void operator()()
+	{
 		TheInstallButton->Disable();
-       recompileAll(thePackages);
-	   TheInstallButton->Enable();
-    }
-
-    vector<string> thePackages;
+		recompileAll(thePackages);
+		TheInstallButton->Enable();
+	}
+
+	vector<string> thePackages;
 };
 
 void MainWindow::OnInstallButtonClick( wxCommandEvent& event )
 {
-	
+
 	vector<string> localPackages;
 	localPackages.push_back("Globalize");
 	for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) localPackages.push_back( globalPackages[i].modStringName );
 	if ( !localPackages.empty() )	{
-		
+
 		//MainWindow::MainWindow().Hide();	
-	//	boost::thread thrd2(recompileAll(localPackages) );
+		//	boost::thread thrd2(recompileAll(localPackages) );
 		//MainWindow::MainWindow().Show();
 #ifdef WIN32
@@ -1438,22 +1335,22 @@
 
 	}
-	
-	
+
+
 }
 
 /*void setStatusArea( string s ) {
-	//TheStatusBar = MainWindow::StatusArea;
-	(**TheStatusBar).SetStatusText(_(s.c_str()), 0);
-	
-		//MainWindow::MainWindow().SetSize(MainWindow::MainWindow().GetRect().GetWidth(), MainWindow::MainWindow().GetRect().GetHeight()+1);
-						
-	//MainWindow::StatusBar->SetLabel("Importing Files...");
-	//StatusBar->SetLabel(s);
+//TheStatusBar = MainWindow::StatusArea;
+(**TheStatusBar).SetStatusText(_(s.c_str()), 0);
+
+//MainWindow::MainWindow().SetSize(MainWindow::MainWindow().GetRect().GetWidth(), MainWindow::MainWindow().GetRect().GetHeight()+1);
+
+//MainWindow::StatusBar->SetLabel("Importing Files...");
+//StatusBar->SetLabel(s);
 //->SetLabel(s);
-	
+
 }*/
 
 void setProgressBar( int i ) {
-//TheProgressBar->SetValue(
+	//TheProgressBar->SetValue(
 
 	TheProgressBar->SetValue(i);
@@ -1463,34 +1360,34 @@
 
 /*
- * wxEVT_UPDATE_UI event handler for ID_STATUSBAR
- */
+* wxEVT_UPDATE_UI event handler for ID_STATUSBAR
+*/
 
 void MainWindow::OnStatusbarUpdate( wxUpdateUIEvent& event )
 {
-////@begin wxEVT_UPDATE_UI event handler for ID_STATUSBAR in MainWindow.
-    // Before editing this code, remove the block markers.
-    event.Skip();
-////@end wxEVT_UPDATE_UI event handler for ID_STATUSBAR in MainWindow. 
-}
-
-
-/*
- * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT
- */
+	////@begin wxEVT_UPDATE_UI event handler for ID_STATUSBAR in MainWindow.
+	// Before editing this code, remove the block markers.
+	event.Skip();
+	////@end wxEVT_UPDATE_UI event handler for ID_STATUSBAR in MainWindow. 
+}
+
+
+/*
+* wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT
+*/
 
 void MainWindow::OnAboutClick( wxCommandEvent& event )
 {
-////@begin wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT in MainWindow.
-    // Before editing this code, remove the block markers.
-    About* window = new About(this);
-    int returnValue = window->ShowModal();
-    window->Destroy();
-////@end wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT in MainWindow. 
-}
-
-
-/*
- * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for NoSep_RadioButton
- */
+	////@begin wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT in MainWindow.
+	// Before editing this code, remove the block markers.
+	About* window = new About(this);
+	int returnValue = window->ShowModal();
+	window->Destroy();
+	////@end wxEVT_COMMAND_MENU_SELECTED event handler for wxID_ABOUT in MainWindow. 
+}
+
+
+/*
+* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for NoSep_RadioButton
+*/
 
 void MainWindow::OnNoSepRadioButtonSelected( wxCommandEvent& event )
@@ -1501,6 +1398,6 @@
 
 /*
- * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Sep_RadioButton
- */
+* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Sep_RadioButton
+*/
 
 void MainWindow::OnSepRadioButtonSelected( wxCommandEvent& event )
@@ -1511,28 +1408,28 @@
 
 /*
- * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton
- */
+* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton
+*/
 
 void MainWindow::OnSeparatedRadioButtonSelected( wxCommandEvent& event )
 {
-splitInstances = SPLIT;
-
-}
-
-
-/*
- * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Complete_RadioButton
- */
+	splitInstances = SPLIT;
+
+}
+
+
+/*
+* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Complete_RadioButton
+*/
 
 void MainWindow::OnCompleteRadioButtonSelected( wxCommandEvent& event )
 {
-splitInstances = NOT_SPLIT;
-
-}
-
-
-/*
- * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BITMAPBUTTON
- */
+	splitInstances = NOT_SPLIT;
+
+}
+
+
+/*
+* wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_BITMAPBUTTON
+*/
 
 void MainWindow::OnRefreshButtonClick( wxCommandEvent& event )
@@ -1543,6 +1440,6 @@
 
 /*
- * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_LOAD
- */
+* wxEVT_COMMAND_MENU_SELECTED event handler for wxID_LOAD
+*/
 
 
@@ -1550,13 +1447,13 @@
 
 void MainWindow::refreshMods (vector<string> s) {
-	
+
 	Mods_CheckboxList->Clear();
-					   //globalInstalledMods = getPackages();
-		for (int i = 0; i < globalPackages.size(); i++) {
-			Mods_CheckboxList->Append(globalPackages[i].name.c_str());
-			if( binary_search(s.begin(), s.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i);
-			//else Mods_CheckboxList->Check(i,0);
-		
-		}
+	//globalInstalledMods = getPackages();
+	for (int i = 0; i < globalPackages.size(); i++) {
+		Mods_CheckboxList->Append(globalPackages[i].name.c_str());
+		if( binary_search(s.begin(), s.end(), globalPackages[i].modStringName ) ) Mods_CheckboxList->Check(i);
+		//else Mods_CheckboxList->Check(i,0);
+
+	}
 }
 
@@ -1566,10 +1463,10 @@
 		"Mod Loadouts (*.cfg)|*.cfg|"
 		"All files (*.*)|*.*"
-	);
-	
+		);
+
 	wxFileDialog* openFileDialog =
 		new wxFileDialog( this, _("Open Mod Loadout"), "", "", FILETYPES,
-		                  wxOPEN, wxDefaultPosition);
- 
+		wxOPEN, wxDefaultPosition);
+
 	if ( openFileDialog->ShowModal() == wxID_OK )
 	{
@@ -1582,6 +1479,6 @@
 
 /*
- * wxEVT_COMMAND_MENU_SELECTED event handler for wxID_SAVE
- */
+* wxEVT_COMMAND_MENU_SELECTED event handler for wxID_SAVE
+*/
 
 void MainWindow::OnSaveClick( wxCommandEvent& event )
@@ -1590,7 +1487,7 @@
 		"Mod Loadouts (*.cfg)|*.cfg|"
 		"All files (*.*)|*.*"
-	);
-
-		wxFileDialog* openFileDialog =
+		);
+
+	wxFileDialog* openFileDialog =
 		new wxFileDialog( this, _("Open file"), "", "", FILETYPES,
 		wxSAVE, wxDefaultPosition);
@@ -1599,31 +1496,31 @@
 	{
 
-		
-			//Mods_CheckboxList->
+
+		//Mods_CheckboxList->
 
 
 
 		//
-		
+
 		if ( exists( openFileDialog->GetPath().c_str() ) )
-	{
-		remove( openFileDialog->GetPath().c_str() );
-	}
-
-	ofstream file(openFileDialog->GetPath().c_str());
-	
-	vector<string>list;
-	for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) list.push_back( globalPackages[i].modStringName );
-	vector<string>::iterator begin_iter = list.begin(); 
-	vector<string>::iterator end_iter = list.end();
-
-	sort( list.begin(), list.end() );
-
-	for( ; begin_iter != end_iter; ++begin_iter) {
-		file << *begin_iter << " ";
-	}
-	
-	file.close();
-	file.clear();
+		{
+			remove( openFileDialog->GetPath().c_str() );
+		}
+
+		ofstream file(openFileDialog->GetPath().c_str());
+
+		vector<string>list;
+		for(int i = 0; i < globalPackages.size(); i++) if(Mods_CheckboxList->IsChecked(i)) list.push_back( globalPackages[i].modStringName );
+		vector<string>::iterator begin_iter = list.begin(); 
+		vector<string>::iterator end_iter = list.end();
+
+		sort( list.begin(), list.end() );
+
+		for( ; begin_iter != end_iter; ++begin_iter) {
+			file << *begin_iter << " ";
+		}
+
+		file.close();
+		file.clear();
 
 		//SetCurrentFilename(openFileDialog->GetFilename());
@@ -1635,25 +1532,44 @@
 
 
-/*
- * wxEVT_COMMAND_BUTTON_CLICKED event handler for ReGlobalize_Button
- */
+
+/*
+* wxEVT_COMMAND_BUTTON_CLICKED event handler for ReGlobalize_Button
+*/
 
 void MainWindow::OnReGlobalizeButtonClick( wxCommandEvent& event )
 {
-globalizeData();
-		setProgressBar(1000);
-		setStatusArea("Done!");
-}
-
-
-/*
- * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton
- */
+	wxMessageDialog* YesNoDialog = new wxMessageDialog(this, 			"WARNING: This will DELETE the Edition's GameDataFolder and reglobalize all of your data. \n Are you SURE you want to do this? ", "AE Installer Alert",  wxYES_NO | wxICON_EXCLAMATION	, wxDefaultPosition);
+
+	if (YesNoDialog->ShowModal() == wxID_NO) { //if the user said no...
+		
+	}
+	else {
+		
+	
+
+#ifdef WIN32
+
+	boost::thread thrd2(globalizeData);
+	//globalizeData();
+	//boost::thread::create_thread(&globalizeData);
+	//	 boost::thread_group Tg;
+	// Tg.create_thread( &globalizeData(), this );
+#else
+	globalizeData();
+	setProgressBar(1000);
+	setStatusArea("Done!");
+#endif
+}
+
+}
+/*
+* wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton
+*/
 
 /*void MainWindow::OnSeparatedRadioButtonSelected( wxCommandEvent& event )
 {
 ////@begin wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton in MainWindow.
-    // Before editing this code, remove the block markers.
-    event.Skip();
+// Before editing this code, remove the block markers.
+event.Skip();
 ////@end wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for Separated_RadioButton in MainWindow. 
 }*/
Index: AE/Installer/trunk/source/main_window.h
===================================================================
--- AE/Installer/trunk/source/main_window.h	(revision 353)
+++ AE/Installer/trunk/source/main_window.h	(revision 355)
@@ -190,2 +190,3 @@
 #endif
     // _MAINWINDOW_H_
+void doglobalizeData(void);
