/*****************************
*
*  DATE UTILS v2.0
*
*
*
/****************************/

function getDateFromTimestamp(timestamp)
{
  var len = timestamp.length;
  timestamp = timestamp.substring(0, timestamp.indexOf("."));
  var pattern = /-/g;
  var newTimestamp = timestamp.replace(pattern, "/");
  var result = new Date(Date.parse(newTimestamp));
  
  return result;
}

function addHour(date, hour)
{
	//this.getTime() + (h*60*60*1000)); 
	return new Date(date.getTime() + (hour*60*60*1000));
	/*
  date.setHours(date.getHours() + hour);
  return date;
	*/
}

function addDay(date, day)
{
  return new Date(date.getFullYear(), date.getMonth(), date.getDate() + day);
}

function addMonth(date, month)
{
  return new Date(date.getFullYear(), date.getMonth() + month, date.getDate());
}

function addYear(date, year)
{
  return new Date(date.getFullYear() + year, date.getMonth(), date.getDate());
}

function setElementsDate(date, dayElement, monthElement, yearElement)
{  
  dayElement.value = date.getDate();
  monthElement.value = date.getMonth()+1;
  yearElement.value = date.getFullYear();
}

function setToday(dayElement, monthElement, yearElement)
{
  var todayDate = new Date();
  
  setElementsDate(todayDate, dayElement, monthElement, yearElement);
}

function setPastWeek(dayElement, monthElement, yearElement)
{
  var date = addDay(new Date(), -7);
  setElementsDate(date, dayElement, monthElement, yearElement);
}

function setPastMonth(dayElement, monthElement, yearElement)
{
  var date = addMonth(new Date(), -1);
  setElementsDate(date, dayElement, monthElement, yearElement);
}

function getFromDateString(date)
{
  var result = "";
  result += "&fromDate:year=" + date.getFullYear();
  result += "&fromDate:month=" + (date.getMonth()+1);
  result += "&fromDate:day=" + date.getDate();
  result += "&fromDate:hour=" + date.getHours();
  result += "&fromDate:minute=" + date.getMinutes();
  result += "&fromDate:sec=" + date.getSeconds();
  
  return result
}

function getToDateString(date)
{
  var result = "";
  result += "&toDate:year=" + date.getFullYear();
  result += "&toDate:month=" + (date.getMonth()+1);
  result += "&toDate:day=" + date.getDate();
  result += "&toDate:hour=" + date.getHours();
  result += "&toDate:minute=" + date.getMinutes();
  result += "&toDate:sec=" + date.getSeconds();
  
  return result
}

function getFirstMondayOfMonth(date)
{
  var srcDate = new Date(date.getFullYear(), date.getMonth(), 1);
  while(srcDate.getDay() != 1)
    srcDate = addDay(srcDate, 1);
  
  return srcDate;
}

function getCurrentWeek(date)
{
	var resultDate = new Date(date);
	var currentWeekDay = date.getDay();
	var daysToSunday = (currentWeekDay == 0) ? 0 : 7 - currentWeekDay;
	var resultDate = addDay(date, daysToSunday);
	
	resultDate.setHours(23);
	resultDate.setMinutes(59);
	resultDate.setSeconds(59);
	
	return resultDate;
}






	function getNext3HourString(date)
	{
		// 3 ore
		var next3Hour = addHour(date, 3);
		return getFromDateString(date) + getToDateString(next3Hour);
	}
	
	function getNext12HourString(date)
	{
		// 12 ore
	  var next12Hour = addHour(date, 12);
		return getFromDateString(date) + getToDateString(next12Hour);
	}
	
	function getNext24HourString(date)
	{
		// 24 ore
	  var next24Hour = addHour(date, 24);
		return getFromDateString(date) + getToDateString(next24Hour);
	}
	
	function getCurrentWeekString(date)
	{
		// settimana corrente
	  var currentWeek = getCurrentWeek(date);
		return getFromDateString(date) + getToDateString(currentWeek);
	}
	
	
	
	
function getToday(date)
{
	
	var resultDate = new Date(date);
	resultDate.setHours(23);
	resultDate.setMinutes(59);
	resultDate.setSeconds(59);
	return resultDate;
}

function getTo(date,days)
{
	var resultDate = new Date(date);
	resultDate = resultDate.getDay();
	resultDate = addDay(date, days);
	resultDate.setHours(23);
	resultDate.setMinutes(59);
	resultDate.setSeconds(59);
	return resultDate;
}

function getNext3Hour(date)
	{
		// 3 ore
		var next3Hour = addHour(date, 3);
		return next3Hour;
	}
