//Formats a Date into the specified format and returns as string
function datestring(date,string) {
	/* key for creating string
			%Y = 2008
			%y = 08
			%M = January
			%m = Jan
			%N = 01 (month)
			%n = 1 (month)
			%W = Monday
			%w = Mon
			%D = 05 (day of month)
			%d = 5 (day of month)
		*/
		var year=date.getFullYear();
		var month=date.getMonth();
		var realMonth=month+1;
        var fillMonth;
		if (realMonth<10) {fillMonth = '0' + realMonth;} 
		else { fillMonth = realMonth;}
		var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
		var monthName=months[month];
		var day=date.getDate();
        var fillDate;
		if (day<10) {fillDate='0' + day;} 
		else { fillDate=day;}
		var weekday=date.getDay();
		var weekdays = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
		var dayName=weekdays[weekday];
		
		//year
		string = string.replace(/%Y/g,year); // 2008
		string = string.replace(/%y/g,year.toString().slice(-2)); //08
		//month
		string = string.replace(/%M/g,monthName); //January
		string = string.replace(/%m/g,monthName.slice(0,3)); //Jan
		string = string.replace(/%N/g,fillMonth); // 01
		string = string.replace(/%n/g,realMonth); // 1
		//day of week
		string = string.replace(/%W/g,dayName); //Monday
		string = string.replace(/%w/g,dayName.slice(0,3)); //Mon
		//day of month
		string = string.replace(/%D/g,fillDate); //05
		string = string.replace(/%d/g,day); // 5
		return string;
     }
//Return a DatePeriod Object with startdate and enddate properties based on choice passed in
// choices are: currentweek, currentmonth, previousweek, previousmonth
function getDatePeriod(choice)
    {
            var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];
            var now = new Date();
            var nowMS = now.getTime();
            var week = 1000*60*60*24*7; //milliseconds in one week
            var day = 1000*60*60*24; //millisecondes in 1 day
            //Get Day of the week
             var dayOfWeekText = days[now.getDay()];
             var dayOfWeek = now.getDay();
             var diffInMSToStartOfWeek = dayOfWeek * day;
             //Get Start of Current Week Date
             var startOfCurrentWeekDate = nowMS - diffInMSToStartOfWeek;
             var endOfCurrentWeekDate = startOfCurrentWeekDate + (6 * day);
             
             //Previous Week
             var previousWeek = nowMS - (day * 7);
             var previousWeekDate = new Date(previousWeek);
             var prevdayOfWeek =  previousWeekDate.getDay();
             diffInMSToStartOfWeek = prevdayOfWeek * day;
             var startOfPreviousWeekDate = previousWeek - diffInMSToStartOfWeek;
             var endOfPreviousWeekDate = startOfPreviousWeekDate + (6 * day);                             
                                         
             //Current Month
             var year = now.getFullYear();
             var month = now.getMonth();
             var dayOfMonth = now.getDate();
             
             var startOfCurrentMonth = new Date(year,month,1);
             var EndOfCurrentMonth;
             if(month != 11)
             {EndOfCurrentMonth = new Date(year,month+1,1) - day;}
             else // we are in the month of Decemeber, need to add 1 to Year
             {EndOfCurrentMonth = new Date(year+1,1,1) - day;}
             //Previous Month
             var startOfPreviousMonth;
             if(month != 0) 
             {
              startOfPreviousMonth = new Date(year,month-1,1) ;
             }
             else //we are in January, need to subtract 1 Year to get start of Prev. Month
             {
               startOfPreviousMonth = new Date(year-1,11,1) ;
             }
             
             var endOfPreviousMonth;
             if(startOfPreviousMonth.getMonth() != 11){endOfPreviousMonth = new Date(startOfPreviousMonth.getFullYear(), startOfPreviousMonth.getMonth()+1,1) - day;}
             else // we are in the month of December, need to add 1 to Year
             {endOfPreviousMonth = new Date(startOfPreviousMonth.getFullYear()+1,0,1) - day;}
             
             //what is value of choice
             switch (choice) {
              case 'currentweek':
               calcStartDate = startOfCurrentWeekDate;
               calcEndDate = endOfCurrentWeekDate;
               break;
              case 'currentmonth':
                 calcStartDate = startOfCurrentMonth;
                 calcEndDate = EndOfCurrentMonth;
                 break;
              case 'previousweek':
                calcStartDate = startOfPreviousWeekDate;
                calcEndDate = endOfPreviousWeekDate;
                break;
              case 'previousmonth':
                calcStartDate = startOfPreviousMonth;
                calcEndDate = endOfPreviousMonth;
                break;
              default:
                calcStartDate = nowMS;
                calcEndDate = nowMS - (day * 7);
              }
            
             var startDateJS = new Date(calcStartDate);
             var endDateJS = new Date(calcEndDate);
             //datestring(date,string)
             var strStartDate = datestring(startDateJS,'%N/%D/%Y');
             var strEndDate = datestring(endDateJS,'%N/%D/%Y');
             var DatePeriod = { startdate: strStartDate, enddate: strEndDate};
             return DatePeriod;
    }

