

var beginEndSeperator=",";

var allowUpToNow=true;
var allowBeforeNow=true;

function defaultEndDate()
{
	if(allowUpToNow)
	{
		return new Date();
	}
	else
	{
		return new Date("12/30/2069");
	}
}


function processDate(elem)
{

	var startString = document.getElementById("narrowFrom").value;
	var endString = document.getElementById("narrowTo").value;
	var todayDateParam = parseDate(new Date());

	if(startString == "mm/dd/yyyy") startString="";
	if(endString == "mm/dd/yyyy") endString="";
	
	if((startString.length > 0) || (endString.length > 0))
	{
		if(startString.length == 0) startString = "01/01/1979";

		var startDate = new Date(startString);

		startDate.setYear(twoDigitDateAssumption(startDate.getYear()));
		
		var ez_today = new Date();
		var ez_yesterday = new Date();
		ez_yesterday.setDate(ez_yesterday.getDate() -1);

		var endDate = (endString.length > 0) ? new Date(endString) : new Date("12/30/2069");
		endDate.setYear(twoDigitDateAssumption(endDate.getYear()));
		
		endDate.setDate(endDate.getDate() + 1);
				
		var correctStart = parseDate(startDate);
		var correctEnd = parseDate(endDate);
		var returnVal = true;
		
		
		if(correctStart == null)
		{
			alert("Date from was not properly formatted");
			returnVal = false;
		}
		else if(correctEnd == null)
		{	
			alert("Date to was not properly formatted");
			returnVal = false;
		}
		else if(allowUpToNow && (startDate > ez_today))
		{
			alert("'From' date cannot be in the future");
			returnVal = false;
		}
		else if (!allowBeforeNow && (startDate < ez_yesterday))
		{
			alert("'From' date cannot be in the past");
			returnVal = false;
		}
		else if(!validRange(correctStart,correctEnd))
		{
			alert("'From' date must be before 'to' date");
			returnVal = false;
		}
		else
		{
			if (correctStart == "1979-01-01")
			{
				correctStart = todayDateParam;	
			}
			eventDate = document.getElementById("eventDate");
			if (eventDate != null)
			{
				if (startDate < ez_today) 
				{
					eventDate.value = getTodayDateParam() + beginEndSeperator + correctEnd;
				}
				else
				{
					eventDate.value = correctStart + beginEndSeperator + correctEnd;	
				}
			}
			document.getElementById("fullDate").value = correctStart + beginEndSeperator + correctEnd ;
			elem.form.submit();
		}
	}
	else
	{
		document.getElementById("fullDate").value = todayDateParam + beginEndSeperator + "2069-12-31";
		elem.form.submit();
	}
		
	return returnVal;
}

function cleardateIfSample(datebox)
{
	if(datebox.value == "mm/dd/yyyy")
	   datebox.value = "";

}


function dateChange(combo)
{
   var endTime = new Date();
   var startTime = new Date();

   if(combo.value > 0)
   {
	   if(combo.value == 365)
	      startTime.setMonth(endTime.getMonth() - 12);
	   else
	      startTime.setDate(endTime.getDate() - combo.value);

	   endTime.setDate(endTime.getDate()+1);
	   document.getElementById("fullDate").value = parseDate(startTime) + beginEndSeperator + parseDate(endTime);

	}
	else
	   document.getElementById("fullDate").value = "";

}

var seperator = "-";

function parseDate(d)
{	
   var year = twoDigitDateAssumption(d.getYear());
  
   if(year > 1970 )
   {
      var month = d.getMonth() + 1;
      var day = d.getDate();

      month = (month < 10) ? ("0" + month) : ("" + month);
      day = (day < 10) ? ("0" + day) : ("" + day);
        
      return (year + seperator + month + seperator + day);
    
   }
   else
   {
      return null;
     
   }
}

function userFriendlyDate(d)
{
  
   var year = twoDigitDateAssumption(d.getYear());
  
   if(year > 1970 )
   {
           
      var month = d.getMonth() + 1;
      var day = d.getDate();

      month = (month < 10) ? ("0" + month) : ("" + month);
      day = (day < 10) ? ("0" + day) : ("" + day);
        
      return (month + "/" + day + "/" + year);
    
   }
   else
   {
      return null;
     
   }
}

// 19xx if >= 70
// 20xx if < 70
// will give invalid result after 2100 on FFox
// will show < 1969 as 2069 on FFox
// will not adequately capture 100-199 as invalid years.
function twoDigitDateAssumption(year)
{
   return (year < 200) ?
     ((year < 70) ? (2000 + year) : (1900 + year)) :
     year;
    
}

var date1Start=0;
var date1End=8;
var date2Start=9;
var date2End=17;
var standardStart = "19790101";
var standardEnd = "20691231";

function fillFormValues(fullDate)
{  
    if(fullDate.length > 0)
    {
		var startDate = fullDate.substring(date1Start,date1End);
		var endDate = fullDate.substring(date2Start,date2End);
		var todayDate = getTodayDateParam();
		
		
		var from = (startDate == standardStart || (startDate == todayDate && endDate == standardEnd)) ? "mm/dd/yyyy" : readableDateFromParam(startDate,false);
		var to = endDate == standardEnd ? "mm/dd/yyyy" : readableDateFromParam(endDate,true);
		
		document.getElementById("narrowFrom").value = from;
		document.getElementById("narrowTo").value = to;
	}
}

function getTodayDateParam()
{
	var now = new Date();
	var month = ("0" + (now.getMonth() + 1));
	month = month.substr(month.length - 2, 2);
	
	var day = ("0" + now.getDate());
	day = day.substr(day.length - 2, 2);
	
	var todayDate = (now.getYear()+ 1900) + seperator + month + seperator + day;
	
	return todayDate;
}

var startYear=0;
var endYear=4;
var startMonth=5;
var endMonth=7;
var startDay=8;
var endDay=10;

function readableDateFromParam(paramDate,isDestinationDate)
{
	var year = paramDate.substring(startYear,endYear);
	var month = paramDate.substring(startMonth,endMonth);
	var day = paramDate.substring(startDay,endDay);
	var selectedDate = new Date(month + "/" + day + "/" + year);
	if(isDestinationDate)
		selectedDate.setDate(selectedDate.getDate() - 1);
	return userFriendlyDate(selectedDate);
	

}

function validRange(date1,date2)
{
	var year1 = date1.substring(startYear,endYear) - 0;
	var year2 = date2.substring(startYear,endYear) - 0;

	if(year2 < year1) return false;
	if(year2 == year1)
	{
		var month1 = date1.substring(startMonth,endMonth) - 0;
		var month2 = date2.substring(startMonth,endMonth) - 0;

		if(month2 < month1) return false;
		if(month1 == month2)
		{
			var day1 = date1.substring(startDay,endDay) - 0;
			var day2 = date2.substring(startDay,endDay) - 0;
			return day2 > day1;
		}
	}

	return true;
}

function fastReadyDates()
{
	startYear=0;
	endYear=4;
	startMonth=5;
	endMonth=7;
	startDay=8;
	endDay=10;
	date1Start=0;
	date1End=10;
	date2Start=11;
	date2End=21;
	standardStart = "1979-01-01";
	standardEnd = "2069-12-31";
	beginEndSeperator=",";
	seperator="-";
	
}
