function initArray()
{
	this.length=initArray.arguments.length;
	for (var i=0;i<this.length;i++)
	{
		this[i]=initArray.arguments[i];
	}
}

var pocetDni=new initArray(31,28,31,30,31,30,31,31,30,31,30,31);

function Den(i)
{
	return( (i==0) ? 7 : i )
}

var opened_kal = false;
var target;
var hidden_target;
var aRok;
var aMesic;
var aInput='';
var visible;

function KalendarSetNull(input,str) {
    var targetInput = document.getElementById(input+'_view');
	var targetHiddenInput = document.getElementById(input);
    targetInput.value = str;
	targetHiddenInput.value = 'NULL';
	CloseKalendar();
}

function InitKalendar(input, top, left)
{
    if (opened_kal)
        opened_kal.innerHTML = '';
    var el = document.getElementById('kalendar_'+input);
    opened_kal = el;
    el.innerHTML = '';

    Kalendar(el);

	if ((visible == 1) && (aInput == input))
	{
		CloseKalendar();
		return;
	}
	if (document.all)
	{
		/*document.all.hour_from.style.visibility="hidden";
		document.all.hour_to.style.visibility="hidden";
		document.all.minute_from.style.visibility="hidden";
		document.all.minute_to.style.visibility="hidden";
		document.all.second_to.style.visibility="hidden";
		document.all.second_from.style.visibility="hidden";*/
	}
	
	aInput = input;
	targetInput=document.getElementById(input+'_view');
	targetHiddenInput=document.getElementById(input);
	rok=targetInput.value.split(".")[2];
	mesic=targetInput.value.split(".")[1];
	if (!(mesic >= 1 && mesic <= 12) || !(rok >= 1990 && rok <= 2030))
	{
		dnes = new Date();
		mesic = dnes.getMonth() + 1;
		rok = dnes.getFullYear();
	}
	target = targetInput;
	hidden_target = targetHiddenInput;
	RefreshKalendar(rok, mesic-1);
	
    document.getElementById('kalendar').style.top = 1.0*targetInput.offsetTop + top+'px';
    document.getElementById('kalendar').style.top = '-210px';
    //alert(targetInput.offsetTop);
	document.getElementById('kalendar').style.left = 1.0*targetInput.offsetLeft + 1.0*left+'px';
	if (IE)
	   document.getElementById('kalendar').style.left = '-205px';
	else
	   document.getElementById('kalendar').style.left = '0px';
	
	
	document.getElementById('kalendar').style.visibility='visible';
	visible=1;	
}

function CloseKalendar()
{
    var kalendar_el = document.getElementById('kalendar');
    if (kalendar_el) {
    	kalendar_el.style.visibility= 'hidden';
    	visible=0;
    	if (document.all)
    	{
    		/*document.all.hour_from.style.visibility="visible";
    		document.all.hour_to.style.visibility="visible";
    		document.all.minute_from.style.visibility="visible";
    		document.all.minute_to.style.visibility="visible";
    		document.all.second_to.style.visibility="visible";
    		document.all.second_from.style.visibility="visible";*/
    	}
    }

}

function RefreshKalendar(rok, mesic)
{	
	
	aRok = rok;
	aMesic = mesic;
	sel_mesic = document.getElementById('kalendar_mesic');
	sel_mesic.options[mesic].selected = true;
	sel_rok = document.getElementById('kalendar_rok');
	sel_rok.options[rok-1990].selected = true;
	aktDen=new Date();
	aktDen.setMonth(mesic);
	aktDen.setFullYear(rok);
	aktDen.setDate(1);

	dnes = new Date();
	dnesDen = 0;
	if ((dnes.getFullYear() == rok) && (dnes.getMonth() == mesic))
		dnesDen = dnes.getDate();

	if (((rok % 4 == 0) && (rok % 100 != 0)) || (rok % 400 == 0)) pocetDni[1] = 29;
	else pocetDni[1] = 28;
	prvniDen=Den(aktDen.getDay());
	sloupec = 1;
	poradi = 1;
	for ( i = 1; i < prvniDen; i++)
	{
		document.getElementById('kalendar_okno_poradi_'+poradi).value = '';
		sloupec++;
		poradi++;
	}
	
	posledniDen=pocetDni[aktDen.getMonth()];
	for (i = 1; i <= posledniDen; i++)
	{
		
		document.getElementById('kalendar_okno_poradi_'+poradi).value = i;
		if (dnesDen == i)
		{
			document.getElementById('kalendar_okno_poradi_'+poradi).style.color = '#0000FF';
			document.getElementById('kalendar_okno_poradi_'+poradi).style.backgroundColor = '#EEEEEE';
			document.getElementById(poradi).style.backgroundColor = '#EEEEEE';
		}
		else
		{
			document.getElementById('kalendar_okno_poradi_'+poradi).style.color = '#000000';
			document.getElementById('kalendar_okno_poradi_'+poradi).style.backgroundColor = '#FFFFFF';
			document.getElementById(poradi).style.backgroundColor = '#FFFFFF';
		}
		poradi++;
		sloupec++;
		if (sloupec == 8)
		{
			sloupec = 1;
		}
	}
	for( ; poradi <= 42; poradi++) 
	{
		document.getElementById('kalendar_okno_poradi_'+poradi).value = '';
	}

}

function setTarget(poradi)
{
	aktDen=new Date();
	aktDen.setMonth(aMesic);
	aktDen.setFullYear(aRok);
	aktDen.setDate(1);
	if (((aRok % 4 == 0) && (aRok % 100 != 0)) || (aRok % 400 == 0)) pocetDni[1] = 29;
	posun=Den(aktDen.getDay());
	posledniDen=pocetDni[aktDen.getMonth()]+1;
	if ((poradi - posun + 1 < posledniDen) && (poradi - posun + 1 > 0)) 
	{
		target.value = poradi - posun + 1 + '.' + (aMesic + 1) + '.' + aRok;
		hidden_target.value = aRok + '-' + (aMesic + 1) + '-' + (poradi - posun + 1);
		CloseKalendar();
	}
}

function selectMonth(select)
{
	for (i=0; i<select.options.length; i++)
		if (select.options[i].selected)
			mesic = i;
	RefreshKalendar(aRok, mesic);	
}

function selectYear(select)
{
	for (i=0; i<select.options.length; i++)
		if (select.options[i].selected)
			aRok = 1990+i;
	RefreshKalendar(aRok, aMesic);
}

function shiftLeft()
{
	if (aMesic == 0)
		RefreshKalendar(aRok-1, 11);
	else
		RefreshKalendar(aRok, aMesic-1);
}

function shiftRight()
{
	if (aMesic == 11)
		RefreshKalendar(aRok+1, 0);
	else
		RefreshKalendar(aRok, aMesic+1);
}


function Kalendar(el)
{
	s="<div align=\"center\" id=\"kalendar\" style=\"visibility: hidden; z-index: 999; position: absolute; left: 250px; top: 0px; width: 235px; height: 285px;\">";
    //s+="<form>";
    s+="<table class=\"form\" bgcolor=\"#FFFFFF\" border=\"1\" cellpadding=\"0\">";
    s+="<thead><tr><th colspan=\"7\">";
	
	//s+=Dny[Den(aktDen.getDay())-1]+" "+aktDen.getDate()+". "+Mesice[aktDen.getMonth()]+" ";
	//s+=(aktDen.getYear()>=2000) ? aktDen.getYear() : 1900+aktDen.getYear();
	s+="<input type=\"button\" value=\"<<\" name=\"shift_left\" onClick=\"shiftLeft()\" />";
	s+="<select id=\"kalendar_mesic\" size=\"1\" value=\"5\" onChange=\"selectMonth(this.form['kalendar_mesic'])\">";
	s+="<option value=\"0\">januar</option>";
	s+="<option value=\"1\">februar</option>";
	s+="<option value=\"2\">marec</option>";
	s+="<option value=\"3\">april</option>";
	s+="<option value=\"4\">maj</option>";
	s+="<option value=\"5\">jun</option>";
	s+="<option value=\"6\">july</option>";
	s+="<option value=\"7\">august</option>";
	s+="<option value=\"8\">september</option>";
	s+="<option value=\"9\">october</option>";
	s+="<option value=\"10\">november</option>";
	s+="<option value=\"11\">december</option>";
	s+="</select>";
	
	s+="<select id=\"kalendar_rok\" size=\"1\" onChange=\"selectYear(this.form['kalendar_rok'])\">";
	s+="<option value=\"1990\">1990</option>";
	s+="<option value=\"1991\">1991</option>";
	s+="<option value=\"1992\">1992</option>";
	s+="<option value=\"1993\">1993</option>";
	s+="<option value=\"1994\">1994</option>";
	s+="<option value=\"1995\">1995</option>";
	s+="<option value=\"1996\">1996</option>";
	s+="<option value=\"1997\">1997</option>";
	s+="<option value=\"1998\">1998</option>";
	s+="<option value=\"1999\">1999</option>";
	s+="<option value=\"2000\">2000</option>";
	s+="<option value=\"2001\">2001</option>";
	s+="<option value=\"2002\">2002</option>";
	s+="<option value=\"2003\">2003</option>";
	s+="<option value=\"2004\">2004</option>";
	s+="<option value=\"2005\">2005</option>";
	s+="<option value=\"2006\">2006</option>";
	s+="<option value=\"2007\">2007</option>";
	s+="<option value=\"2008\">2008</option>";
	s+="<option value=\"2009\">2009</option>";
	s+="<option value=\"2010\">2010</option>";
	s+="<option value=\"2011\">2011</option>";
	s+="<option value=\"2012\">2012</option>";
	s+="<option value=\"2013\">2013</option>";
	s+="<option value=\"2014\">2014</option>";
	s+="<option value=\"2015\">2015</option>";
	s+="<option value=\"2016\">2016</option>";
	s+="<option value=\"2017\">2017</option>";
	s+="<option value=\"2018\">2018</option>";
	s+="<option value=\"2019\">2019</option>";
	s+="<option value=\"2020\">2020</option>";
	s+="<option value=\"2021\">2021</option>";
	s+="<option value=\"2022\">2022</option>";
	s+="<option value=\"2023\">2023</option>";
	s+="<option value=\"2024\">2024</option>";
	s+="<option value=\"2025\">2025</option>";
	s+="<option value=\"2026\">2026</option>";
	s+="<option value=\"2027\">2027</option>";
	s+="<option value=\"2028\">2028</option>";
	s+="<option value=\"2029\">2029</option>";
	s+="<option value=\"2030\">2030</option>";
	s+="</select>";
	s+="<input type=\"button\" value=\">>\" name=\"shift_right\" onClick=\"shiftRight()\"/>";
	
	s+="</th></tr></thead>";
    s+="<tbody><tr><td>Po</td><td>Út</td><td>St</td><td>Čt</td><td>Pá</td><td>So</td><td>Ne</td><tr>";
	
	sloupec=1;
	poradi=1;

	for(i=1;i<=42;i++)
	{
		s+="<td id=\""+i+"\" onClick=\"setTarget("+i+")\">";
		s+="<center><input id=\"kalendar_okno_poradi_"+poradi+"\" type=\"button\" value=\"\" style=\"background-color:#FFFFFF; font-weight:bold; border:0px;\"  /></center>";
	
		poradi++;
		if (i % 7 == 0)
		{
			s+="<tr>";
		}
	}
	s+="</tbody></table>";
    //s+="</form>";
    s+="</div>";
	//document.write(s);
	
	//alert(el.tagName);
	el.innerHTML = s;
	//alert(s);
}

//Kalendar();

