var nabMYprev = new Array();

function form2( n )
{
	var s = '00';
	s += n;
	return s.substr( s.length - 2, 2 );
}

function calend0( n )
{
	var f = document.getElementById( 'search' );
	var inidat = new Date();
	var sd = 'f_day', sm = 'f_month', sy = 'f_year';
	var a = 'f.' + sd + n + '.value == \'\' && f.' + sm + n + '.value == \'\' && f.'  + sy + n + '.value == \'\'';
	var b;

	if( eval( a ) )
	{
		if( n == 'to' ) inidat.setDate( inidat.getDate() + 1 );
	}
	else
	{
		a = 'f.' + sd + n + '.value'; b = a + ' != \'\'';
		if( eval( b ) ) inidat.setDate( eval( a ) );
		a = 'f.' + sm + n + '.value'; b = a + ' != \'\'';
		if( eval( b ) ) inidat.setMonth( eval( a ) - 1 );
		a = 'f.' + sy + n + '.value'; b = a + ' != \'\'';
		if( eval( b ) ) inidat.setYear( eval( a ) );
	}
	calend( n, inidat );
}

function calend1( n, obd )
{
	var akt = new Date();
	obdMY = nabMYprev[obd].split(',');
	akt.setMonth( obdMY[0] );
	akt.setYear( obdMY[1] );
	calend( n, akt );
}

function calend( n, inidat )
{
	var f = document.getElementById( 'search' );
	var nabMY = new Array();
	var nabMYout = new Array();
	var dnes = new Date();
	var months = new Array( 'January', 'February', 'March', 'April', 'May', 'June',
			'July', 'August', 'September', 'October', 'November', 'December' );
	var inimy = inidat.getFullYear() * 12 + inidat.getMonth();
	var inimy1;

	if( nabMYprev.length > 0 ) nabMYprev.splice( 0, nabMYprev.length );
	for( var i = dnes.getMonth() + 12 * dnes.getFullYear(); i < 12 * ( dnes.getFullYear() + 2 ); i++ )
	{
		nabMY.push( months[ i % 12 ] + ' ' + Math.floor( i / 12 ) );
		nabMYprev.push( ( i % 12 ) + ',' + Math.floor( i / 12 ) );
		nabMYout.push( i );
		if( i == inimy ) inimy1 = nabMY.length - 1;
	}
	var cal = document.getElementById( 'calendar' );	
	var lenday = 3600000 * 24;
	var month, prim, last, year, lengthMonth, adding;
	var week = new Array( 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun' );
	var strop, a;
	month = inidat.getMonth();
	prim = new Date( inidat.getFullYear(), inidat.getMonth(), 1 );
	a = new Date( inidat.getFullYear(), inidat.getMonth() + 1, 1 ); //pomocny - prvni den nasl.mesice
	last = new Date( a.getTime() - lenday );			//a 1 den odecist
	lengthMonth = Math.round( ( ( last.getTime() - prim.getTime() ) / lenday ) ) + 1;
	adding = ( prim.getDay() + 6 ) % 7;

	a = '<form>\n<table>\n';
	a += ' <tr>\n  <td></td>\n';
	a += '  <td colspan="5">\n   <select style="width: 10em;" name="my" onchange="calend1( \'' + n + '\', this.value );">';
	for( i = 0; i < nabMY.length; i++ )
	{
		a += ' <option value="' + i + '"' + ( i == inimy1 ? ' selected="selected"' : '' );
		a += '>' + nabMY[i] + '</option>\n';
	}
	a += '   </select></td>\n';
	a += '  <td></td>\n </tr>\n';
	a += ' <tr>\n';
	for( i = 0; i < 7; i++ )
	{
		a += '  <th>' + week[i] + '</th>\n';
	}
	a += ' </tr>\n <tr>\n';
	i = 0 - adding;
	strop = lengthMonth + 6 - adding;
	while( i < strop )
	{
		i++;
		if( i % 7 == ( 8 - adding ) % 7 ) a += ' </tr>\n <tr>\n';
		a += '  <td>' + ( i > 0 && i <= lengthMonth ? '<button name="day" value="' + i + '">' + i + '</button>' : '' ) + '</td>\n';
	}
	a += ' </tr>\n';
	a += '</table>\n</form>';
	cal.innerHTML = a;
	var polebut = cal.getElementsByTagName( 'button' );
	for( i = 0; i < polebut.length; i++ )
	{
		polebut[i].onclick = function ()
		{
			eval( 'f.f_day' + n + '.value = \'' + form2( this.value ) + '\'' );
			eval( 'f.f_month' + n + '.value = \'' + form2( nabMYout[ this.form.my.value ] % 12 + 1 ) + '\'' );
			eval( 'f.f_year' + n + '.value = ' + ( Math.floor( nabMYout[ this.form.my.value ] / 12 ) ) );
			cal.style.display = 'none';
			return false;
		};
	}

	if( n == 'f' ) cal.style.top = '320px';
	else cal.style.top = '360px';
	cal.style.display = 'block';
}

