var _intpl_cal_days = [ "niedziela", "poniedziałek", "wtorek", "środa", "czwartek", "piątek", "sobota"];
var _intpl_cal_days2 = ["Nd", "Pn", "Wt", "Śr", "Cz", "Pt", "Sb"];
var _intpl_cal_months = ["styczeń", "luty", "marzec", "kwiecień", "maj", "czerwiec", "lipiec", "sierpień", "wrzesień", "październik", "listopad", "grudzień"];
var _intpl_cal_month_zero_start = false; // miesiace od 0 czy 1 (od 0 jest w JS)
var _intpl_cal_first_day = 1; // pierwszy dzien tygodnia
var _intpl_cal_format = "y-m-d"; // format daty

function intpl_cal_showCalendarHere( inputId, year, month, day, format )
{
	var oI = document.getElementById( inputId );
	var oValue = oI.value;
	if(oValue) {
    oValueEl = oValue.split("-");
    year = parseInt(oValueEl[0]);
    month = parseInt(oValueEl[1]);
    day = parseInt(oValueEl[2]);
  }
	
	
	if ( oI )
	{
		var x = oI.offsetLeft || 0;
		var y = oI.offsetTop || 0;

		x += oI.offsetWidth+20;
		y += oI.offsetHeight;

		while ( oI.offsetParent )
		{
			x += oI.offsetParent.offsetLeft;
			y += oI.offsetParent.offsetTop;
			oI = oI.offsetParent;
		}
		intpl_cal_showCalendar( inputId, (!year?null:year), (!month?null:month), (!day?null:day), (!format?null:format), x, y );
	}
	else
	{
		intpl_cal_showCalendar( inputId, year, month, day );
	}
}

function intpl_cal_showCalendar( inputId, year, month, day, format, x, y )
{
	var _data, calendarHtml, lastDay, testDate, firstDayWeek, lastDayWeek, i, dayNumber, oD;
	_data = new Date();

	// sprawdzenie danych wejsciowych
	if ( !year )
	{
		year = _data.getFullYear();
	}
	else
	{
		year = parseInt( year );
		if ( !year || year<0 )
		{
			year = _data.getFullYear();
		}
	}
	if ( !month )
	{
		month = _data.getMonth();
	}
	else
	{
		month = parseInt( month );
		if ( !month )
		{
			month = _data.getMonth();
		}
		else
		{
			if ( !_intpl_cal_month_zero_start )
			{
				month--;
			}
			if ( month<0 || month>11 )
			{
				month = _data.getMonth();
			}
		}
	}
	if ( !day )
	{
		day = _data.getDate();
	}
	else
	{
		testDate = new Date( year, month, day );
		if ( testDate.getMonth() != month )
		{
			day = _data.getDate();
		}
	}
	if ( !format )
	{
		format = _intpl_cal_format;
	}
	calendarHtml = "";
	lastDay = intpl_cal_getLastDay( year, month );
	testDate = new Date(year, month, 1);
	firstDayWeek = testDate.getDay();
	lastDayWeek = 6 + _intpl_cal_first_day;
	if ( lastDayWeek > 6)
	{
		lastDayWeek -= 7;
	}

	calendarHtml += '<table border="0" cellpadding="0" cellspacing="0" id="intpl_cal_head"><tbody><tr>';
	calendarHtml += '<td id="intpl_cal_prevYear" title="poprzedni rok" onclick="intpl_cal_showCalendar(\'' + inputId + '\', ' + (year-1) + ', ' + (_intpl_cal_month_zero_start?month:(month+1)) + ', ' + day + ', \'' + format + '\')">&lt;&lt;</td>';
	calendarHtml += '<td id="intpl_cal_prevMonth" title="poprzedni miesi?c" onclick="intpl_cal_showCalendar(\'' + inputId + '\', ' + (month-1>=0?year:(year-1)) + ', ' + (month-1>=0?((_intpl_cal_month_zero_start?month:(month+1))-1):(_intpl_cal_month_zero_start?11:12)) + ', ' + day + ', \'' + format + '\')">&lt;</td>';
	calendarHtml += '<td id="intpl_cal_month">' + _intpl_cal_months[month] + " " + year + '</td>';
	calendarHtml += '<td title="kolejny miesi?c" id="intpl_cal_nextMonth" onclick="intpl_cal_showCalendar(\'' + inputId + '\', ' + (month+1<=11?year:(year+1)) + ', ' + (month+1<=11?((_intpl_cal_month_zero_start?month:(month+1))+1):(_intpl_cal_month_zero_start?0:1)) + ', ' + day + ', \'' + format + '\')">&gt;</td>';
	calendarHtml += '<td title="kolejny rok" id="intpl_cal_nextYear" onclick="intpl_cal_showCalendar(\'' + inputId + '\', ' + (year+1) + ', ' + (_intpl_cal_month_zero_start?month:(month+1)) + ', ' + day + ', \'' + format + '\')">&gt;&gt;</td>';
	calendarHtml += '</tr></tbody></table>';

	calendarHtml += '<table id="intpl_cal_table" border="0" cellspacing="0" cellpadding="0" align="center"><tbody>';
	calendarHtml += "<tr>";
	i = _intpl_cal_first_day;
	do
	{
		calendarHtml += "<th>" + _intpl_cal_days2[i] + "</th>";
		i++;
		if ( i == 7 )
		{
			i = 0;
		}
	} while ( i != _intpl_cal_first_day )
	calendarHtml += "<tr>";

	dayNumber = 0;
	if ( dayNumber != _intpl_cal_first_day )
	{
		calendarHtml += "<tr>";
		dayNumber=_intpl_cal_first_day
		while ( dayNumber!=firstDayWeek )
		{
			calendarHtml += "<td>&nbsp;</td>";
			dayNumber++;
			if ( dayNumber == 7 )
			{
				dayNumber = 0;
			}
		}
	}

	for (i=1; i<=lastDay; i++)
	{
		if ( dayNumber == _intpl_cal_first_day )
		{
			calendarHtml += "<tr>";
		}
		calendarHtml += '<td onmouseover="intpl_cal_tdOn(this)" onmouseout="intpl_cal_tdOff(this)" onclick="intpl_cal_setDate( \'' + inputId + '\', ' + year + ', ' + month + ', ' + i + ', \'' + format + '\')">' + i + '</td>';
		if ( dayNumber == lastDayWeek )
		{
			calendarHtml += "</tr>";
		}
		dayNumber++;
		if ( dayNumber == 7 )
		{
			dayNumber = 0;
		}
	}
	if ( (dayNumber-1) != lastDayWeek )
	{
		do
		{
			calendarHtml += "<td>&nbsp;</td>";
			dayNumber++;
			if ( dayNumber == 7 )
			{
				dayNumber = 0;
			}
		} while ( dayNumber != _intpl_cal_first_day );
		calendarHtml += "</tr>";
	}

	calendarHtml += "</tbody></table>";
	calendarHtml += '<div id="intpl_cal_close" onclick="intpl_cal_close()">zamknij</div>';

	oD = document.getElementById( "intpl_cal_div" );
	if ( oD )
	{
		oD.innerHTML = calendarHtml;
		if ( oD.style.display == "none" )
		{
			oD.style.display = "block";
			if ( !x )
			{
				x = Math.round( ( document.body.clientWidth - oD.offsetWidth ) / 2 );
			}
			else
			{
				if ( x + oD.offsetWidth > document.body.clientWidth )
				{
					x -= oD.offsetWidth;
				}
			}
			if ( !y )
			{
				y = Math.round( ( document.body.clientHeight - oD.offsetHeight ) / 2 );
			}
			else
			{
				if ( y + oD.offsetHeight > document.body.clientHeight )
				{
					y -= oD.offsetHeight;
				}
			}
			oD.style.position = 'absolute';
			oD.style.top = y + 'px';
			oD.style.left = x + 'px';
		}
	}
}

function intpl_cal_tdOn( oTd )
{
	oTd.className = "select";
}

function intpl_cal_tdOff( oTd )
{
	oTd.className = "";
}

function intpl_cal_setDate( inputId, year, month, day, format)
{

	if(inputId=='yearForm')
	{
		var yY = document.getElementById('yearForm');
		var yM = document.getElementById('monthForm');
		var yD = document.getElementById('dayForm');
		if ( yD )
		{
			if(day<10)
			{
				day='0'+day;
			}
			yD.value = day;
		}
		if(yM)
		{
			if((month+1)<10)
			{
				month='0'+(month+1);
			}
			yM.value = month;
		}
		if(yY)
		{
			yY.value = year;
		}
	}
	else if(inputId=='checkInDate')
	{
    var oD = document.getElementById( inputId );
    var dD = document.getElementById( 'departureDate' );
		if ( oD )
		{
			var result = format;
			result = result.replace("y", year );
			result = result.replace("m", (((month+1)<10?"0":"") + (month+1)) );
			result = result.replace("d", ((day<10?"0":"") + day));
			oD.value = result;
		}
		if ( dD )
		{
			var result = format;					
			var lastDay = intpl_cal_getLastDay(year, month);
			if(day != lastDay) {
        day = day + 1;
      } else {
        day = 1;
        month = month + 1;        
        if(month > 11) {
          year = year + 1;
          month = 0;
        }
      }
			
			result = result.replace("y", year );
			result = result.replace("m", (((month+1)<10?"0":"") + (month+1)) );
			result = result.replace("d", ((day<10?"0":"") + day));
			dD.value = result;
		}
		
  }
	else
	{
		var oD = document.getElementById( inputId );
		if ( oD )
		{
			var result = format;
			result = result.replace("y", year );
			result = result.replace("m", (((month+1)<10?"0":"") + (month+1)) );
			result = result.replace("d", ((day<10?"0":"") + day));
			oD.value = result;
		}
	}
	intpl_cal_close();
}

function intpl_cal_close()
{
	var oD = document.getElementById( "intpl_cal_div" );
	if ( oD )
	{
		oD.style.display = "none";
	}
}

function intpl_cal_getLastDay( year, month )
{
	var result = false;
	for (var i=31; i>=28; i--)
	{
		var testDate = new Date(year, month, i);
		if ( month == testDate.getMonth() )
		{
			result = i;
			break;
		}
	}
	return result;
}

document.write( '<div id="intpl_cal_div" style="display: none; position: absolute; top: 0px; left: 0px; z-index:10000;"></div>' );

