#include "dates.h"


uint32_t months2(uint32_t monthnumber)
{
	uint32_t days = 0;
	if(monthnumber == 1){
		days = 31;
	}else if(monthnumber == 2){
		days = 1;
	}else if(monthnumber == 3){
		days = 31;
	}else if(monthnumber == 4){
		days = 30;
	}else if(monthnumber == 5){
		days = 31;
	}else if(monthnumber == 6){
		days = 30;
	}else if(monthnumber == 7){
		days = 31;
	}else if(monthnumber == 8){
		days = 31;
	}else if(monthnumber == 9){
		days = 30;
	}else if(monthnumber == 10){
		days = 31;
	}else if(monthnumber == 11){
		days = 30;
	}else if(monthnumber == 12){
		days = 31;
	}else{
		printf("Invalid Month Number!\n");
		exit(1);
	}
    return days;
}

uint32_t getdaynum(char *date){
	char tmp[3];
	tmp[0] = date[8];
	tmp[1] = date[9];
	tmp[3] = '\0';
	return((uint32_t)atoi((const char*)tmp));
}

uint32_t getmonthnum(char *date){
	char tmp[3];
	tmp[0] = date[5];
	tmp[1] = date[6];
	tmp[3] = '\0';
	return((uint32_t)atoi((const char*)tmp));
}

uint32_t getyearnum(char *date){
	char tmp[5];
	tmp[0] = date[0];
	tmp[0] = date[1];
	tmp[0] = date[2];
	tmp[0] = date[3];
	tmp[0] = '\0';
	return((uint32_t)atoi((const char*)tmp));
}

//2013-11-29
uint32_t days_in_month(char *date){
	uint32_t year = 0;
	uint32_t month = 0;
	uint32_t day = 0;
	uint32_t daysinmonth = 0;
	uint32_t isleap = 100;
	uint32_t modulo1 = 0;
	uint32_t modulo2 = 0;
	uint32_t modulo3 = 0;
	//uint32_t num1 = 0;
	//uint32_t num2 = 0;
	//char tmp[6];

/*
	(void)memset((char *)tmp, '\0', 6);
	while(date[num1] != '-'){
		tmp[num2] = date[num1];
		num2++;
		num1++;
	}
	year = atoi((const char*)tmp);
	(void)memset((char *)tmp, '\0', 6);
	num1++;
	num2 = 0;
	while(date[num1] != '-'){
		tmp[num2] = date[num1];
		num2++;
		num1++;
	}
	month = atoi((const char*)tmp);
	(void)memset((char *)tmp, '\0', 6);
	num1++;
	num2 = 0;
	while(date[num1] != '\0'){
		tmp[num2] = date[num1];
		num2++;
		num1++;
	}
	day = atoi((const char*)tmp);
*/
	year = getyearnum(date);
	month = getmonthnum(date);
	day = getdaynum(date);

	modulo1 = year % 4;
	modulo2 = year % 100;
	modulo3 = year % 400;

	if(modulo1 == 0){
		isleap = 1;
		if(modulo2 == 0){
			isleap = 0;
			if(modulo3 == 0){
				isleap = 1;
			}
		}
	}else{
		isleap = 0;
	}

	if(isleap == 1 && month == 2){
		daysinmonth = 29;
	}else if (isleap == 0 && month == 2){
		daysinmonth = 28;
	}else{
		daysinmonth = months2(month);
	}

	return daysinmonth;
}

int days_since(char *olddate, char *newdate){
	uint32_t days[3];
	uint32_t months[3];
	uint32_t years[3];
	uint32_t num1 = 0;
	uint32_t num2 = 0;
	uint32_t num3 = 0;
	uint32_t dayssince = 0;

	days[0] = getdaynum(olddate);
	months[0] = getmonthnum(olddate);
	years[0] = getyearnum(olddate);

	days[1] = getdaynum(newdate);
	months[1] = getmonthnum(newdate);
	years[1] = getyearnum(newdate);

	//calc years since
	years[3] = years[1] - years[0];
	//calc months since
	for(num1=0; num1<years[3]; num1++){
		//days in old month - 
		
		for(num2=months[0]; num2<13; num2++){
			for(num3=
		}
	}


	if(years[3] == 0){
		months[3] = months[1] - months[0];
	}else{

	}
	//calc days since
	days[3] = days[1] - days[0];
	//sum total days


	for(num1=years[0]; num1<years[1]; num1++){
		daysinmonth = months2(month);

		for(num2=months[0]; num2<=months[1]; num2++){

			for(num3=days[0]; num3<days[1]; num3++){
				dayssince++;
			}
		}
	}
	return dayssince;
}
