//
// Funkcje związane z parsowaniem i formatowaniem daty.
//
var lockDateCheck = false;

//
// Dodaje dni do daty.
//
function addDaysToDate(date, numOfDays)
{
	return new Date(date.getFullYear(), date.getMonth(), date.getDate()+numOfDays);
}

//
// Zamienia string w formacie YYYY-MM-DD na obiekt typu Date.
//
function parseDate(dateString)
{
	var str = new String(dateString);
	var array = str.split('-');
	if (array.length!=3)
		return null;
	var year = array[0];
	var month = array[1].charAt(0)=='0' ? parseInt(array[1].substr(1, 1)) : parseInt(array[1]);
	var day = array[2].charAt(0)=='0' ? parseInt(array[2].substr(1, 1)) : parseInt(array[2]);
	var date = new Date(year, month-1, day);
	if (isNaN(date))
		return null;
	date.setHours(0);
	date.setMinutes(0);
	date.setSeconds(0);
	date.setMilliseconds(0);
	return date;
}

//
// Zamienia obiekt Date na string w formacie YYYY-MM-DD.
//
function formatDate(date)
{
	return date.getFullYear() + "-" + formatDatePart(date.getMonth()+1) +
		"-" + formatDatePart(date.getDate());
}

//
// Funkcja pomocnicza dla funckcji formatDate(). Dodaje znak '0' do czesci daty.
//
function formatDatePart(value)
{
	var v = String(value);
	return v.length==1 ? "0"+v : v;
}

function checkDate( date , name )
{
	var objDate = parseDate( date );
	if( objDate == null )
	{
		alert( 'Nieprawidłowa data w polu \''+name+'\'' );
		return false;
	}
}

function checkDateRange(fromId, toId)
{
	if (lockDateCheck) return;

	lockDateCheck = true;
	var datefrom = parseDate($('#' + fromId).val());
	var dateto = parseDate($('#' + toId).val());
	var curDate = new Date();

	if (datefrom != null) {
		if (parseInt(datefrom.getTime()) < parseInt(curDate.getTime())) {
			datefrom = curDate;
		}
	}

	if (dateto != null) {
		if (parseInt(dateto.getTime()) < parseInt(curDate.getTime())) {
			if (datefrom == null) datefrom = curDate;
			dateto = addDaysToDate(datefrom, 1);
		}
	}

	if (datefrom != null && dateto != null) {
		if (parseInt(datefrom.getTime()) > parseInt(dateto.getTime())) {
			var tmp = dateto;
			dateto = datefrom;
			datefrom = tmp;
		}
	}

	if (datefrom != null) $('#' + fromId).val(formatDate(datefrom));
	if (dateto != null) $('#' + toId).val(formatDate(dateto));

	lockDateCheck = false;

	return true;
}

