var numDays = -1;

function customRange(input) 
{
	var retVal;
	
  if(input.className.indexOf('-start') > -1) 
  {
  	retVal = {minDate: '+0d', maxDate: '+2y'};
  } 
  else 
  {
    var temp = new Date($('.calendar-start').datepicker('getDate'));
        temp = temp.setDate(temp.getDate() + 1);
				temp = new Date(temp);
		retVal = {minDate: temp, maxDate: '+2y'};
	}
  
  // Figure out the base num days if it hasn't been calculated yet.
  if(numDays == -1)
  {
  	var startDate = new Date($('.calendar-start').datepicker('getDate'));
  	var endDate = new Date($('.calendar-end').datepicker('getDate'));
  	numDays = findDaysBetween(startDate, endDate);
  }
  
  return retVal;
}

function validDates(dateText) 
{
  var id = this.className;
	var modifiedDate = new Date(dateText);
	
	// If start, move end date out based on current number of days in the span.
	if(id.indexOf("-start") > -1) 
	{
    var endDateId = "." + id.substring(0, id.indexOf("-")) + "-end";
    var endDate = $(endDateId).datepicker("getDate");
		if(endDate != null && modifiedDate >= endDate) 
		{
      var movedEndDate = modifiedDate.setDate(modifiedDate.getDate() + numDays);
      $(endDateId).datepicker("setDate", new Date(movedEndDate));
		}
	}
	//Else calculate new date span based on the current start date and new end date.
	else
	{
		var startDate = new Date($('.calendar-start').datepicker('getDate'));
		numDays = findDaysBetween(startDate, modifiedDate);
	}
}

function findDaysBetween(date1, date2)
{
	//The number of milliseconds in one day
  var ONE_DAY = 1000 * 60 * 60 * 24;

  // Convert both dates to milliseconds
  var date1_ms = date1.getTime();
  var date2_ms = date2.getTime();

  // Calculate the difference in milliseconds
  var difference_ms = Math.abs(date1_ms - date2_ms);
  
  // Convert back to days and return
  return Math.round(difference_ms/ONE_DAY);
}
