#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
//#include "read_file.h"
#include <unistd.h>

struct day_str 
{
	//int offday; //1 for closed(weekend/holiday/etc.), 0 for open
	int day;
	int month;
	int year;
	double open;
	double high;
	double low;
	double close;
	double volume;
};


/*
struct month_str {
	int month;
	struct day_str day[31];
};

struct year_str {
	int year;
	struct month_str month[12];
};

// 0=2009
struct year_str year[30];
*/


//number of days in 30yrs
//10950


struct day_str days[12000];


#include "read_file.h"
#include "politicians.h"

int main( int argc, char** argv )
{  
	int i;

	for(i=0; i<12000; i++) {
		days[i].year = 2010;
		//days[i].offday = 1;
	}


	//printf("about to read file\n");
	read_file();
	//printf("done writing to structs\n");
	int month;
	int day;
	int year;
	int ycount;
	int element;
	int counter1=1;
	int counter2=1;
	double open, high, low, close, pchange, totalvolume, highvolume, lowvolume, avgvolume;

	double averagepchange = 0;
	double avg_10yr_pchange = 0;
	double avg_4yr_pchange = 0;
	double total_4yr_pchange = 0;

	for(year=1979; year < 2010; year++) {
        	open = 1;
        	high = 1;
        	low = 1000000;

		for(element=0; element<12000; element++) {

			if(days[element].year == year) {
				//counter1 = 1;
                                if(open == 1) {
					//while(days[element-counter1].offday == 1 ) {
					//	counter1++;
					//}
					if(year != 1979 && days[element+1].year < days[element].year ) {
                                        	open=days[element].open;
					}
					//if(year == 1979 & ) {
					//	open=days[element].open;
					//}

                                }
				//counter1 = 1;
                                //while(days[element+counter1].offday == 1 ) {
                                //        counter1++;
                                //}
                                if(year != 2009 && days[element-1].year > days[element].year) {
                                        close = days[element].close;
                                }
				//if(year == 2009){
				//	close=0;
				//}
                                if(high < days[element].high) {
                                        high = days[element].high;
                                }
                                if(low > days[element].low) {
                                        low = days[element].low;
                                }
			}
		}


		if(year==2009) {
			close=0;
		}

        	if(year==1979) {
                	open=96.11;
        	}



		if(open<close && year != 2009) {
        		//if it was a up year
                	pchange=(close-open)/open * 100;
			averagepchange+=pchange;
			if(counter2 == 1) {
				total_4yr_pchange=open;
			}
                        if(counter2 == 4) {
                                total_4yr_pchange=(close-total_4yr_pchange)/total_4yr_pchange * 100;
                        }

			if(counter2 < 5) {
				avg_4yr_pchange+=pchange;
			}
			if(counter1 < 11) {
				avg_10yr_pchange+=pchange;
			}
		}else if(open>close && year != 2009) {
        		//if it was a down year
                	pchange=(open-close)/close * -100;
			averagepchange+=pchange;
                        if(counter2 == 1) {
                                total_4yr_pchange=open;
                        }
                        if(counter2 == 4) {
                                total_4yr_pchange=(total_4yr_pchange-close )/close  * -100; 
                        }

                        if(counter2 < 5) {
                                avg_4yr_pchange+=pchange;
                        }
                        if(counter1 < 11) {
                                avg_10yr_pchange+=pchange;
                        }
		} else {
                	pchange=0;
        	}
	


		//printf("Year: %d\tOpen: %.02lf\tHigh: %.02lf\tLow: %.02lf\tClose: %.02lf\t%%change: %.02lf\t President: %s\n", year, open, high, low, close, pchange);

		if(counter2 == 1) {
			//96th Congress (1979-1981)
			//printf("new congress\n");
			politicians(year);
		} else if(counter2 == 3){
			//printf("new congress\n");
			politicians(year);
		}

		president_func(year);
		printf("Year: %d\tOpen: %.02lf\tHigh: %.02lf\tLow: %.02lf\tClose: %.02lf\t%%change: %.02lf\t President: %s\n",
                    year, open, high, low, close, pchange, president_array);

		if(counter1 == 10) {
			avg_10yr_pchange=avg_10yr_pchange/10;
			//printf("10yr Average yearly %% change: %.02lf\n", avg_10yr_pchange); 
			counter1=0;
			avg_10yr_pchange=0;
		}
		counter1++;

                if(counter2 == 4) {
                        avg_4yr_pchange=avg_4yr_pchange/4;
                        printf("4yr Avg yearly %%change: %.02lf\tTotal %%change: %.02lf\n\n", avg_4yr_pchange, total_4yr_pchange);
                        counter2=0;
                        avg_4yr_pchange=0;
			total_4yr_pchange=0;
                }
                counter2++;



	}



	printf("\n\nTotal average yearly %% change: %.02lf\n", averagepchange/29);

return 0;

}
