#include <iostream>
#include <fstream>
#include <sstream>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

#include "RecordNode.h"

using namespace std;


char libel[31];
void InputFileGenerator(string fname, int numRecord){

	
	fstream inWriter;
	inWriter.open(fname.c_str(), ios::out | ios::binary);
	libel[30]= (char)0;
	
	int * nums = new int[numRecord];
	for(int h=0;h<numRecord;h++) nums[h]=0;
			

	for(int i=0; i<numRecord; i++){
			if (rand()%15 == 0) inWriter<<'0';
			else
			inWriter<<'1';
	
			stringstream t;
			int coutNum = rand()%numRecord;
			while(nums[coutNum]) coutNum = (coutNum+1)%numRecord;
			nums[coutNum] = 1;
			t<<coutNum;
			string t2 = "";
			while (t2.size()<5-t.str().size())
				t2+="0";
			t2+=t.str();
			
			inWriter<<t2;
			
			
		
			//Date
			int Day = rand()%30 + 1;
			if (Day<=9)
				inWriter<<'0';
			inWriter<<Day;
				
			int Month = rand()%12 + 1;
			if (Month<=9)
				inWriter<<'0';
			inWriter<<Month;

			int year = rand()%13;
			year += 1990;
			inWriter<<year;

		
			int code = rand()%9;
			code += 100;
			inWriter<<code;	
			for(int j=0; j<30; j++)
				libel[j] = 48+rand()%32;
			inWriter<<libel;
		//	inWriter<<(char)13<<(char)10;
	}
	inWriter.close();
	delete nums;
}



int main(){


	RecordNode* First;
	RecordNode* Last;



	//InputFileGenerator("test.dat", 300);

	fstream file;
	file.open("test.dat", ios::in|ios::binary);

	if(file.fail()) cout<<"Ca Marche pas";
	
	First = Last = new RecordNode(file);
	First->next = NULL;

	RecordNode* it1;
	RecordNode* it2;

	while(!file.fail()){
		RecordNode* Temp = new RecordNode(file);
		it1 = it2 = First;
		if ((*Temp) < (*First)){
			Temp->next = First;
			First = Temp;
		}else{
			while(it1 && ((*it1)<(*Temp))){
					it2 = it1;
					it1 = it1->next;
			}
				Temp->next = it1;
				it2->next = Temp;
				if(!it1) Last = Temp;
		}
	}
	

	it1 = First;
	while(it1){
		it1->toString();
		it1 = it1->next;
		
	}


		
	return 1;

}









