var d = new Date();
var napok = new Array(7);
var honapok = new Array(12);
var output;
napok[0] = "V";
napok[1] = "H";
napok[2] = "K";
napok[3] = "Sze";
napok[4] = "Cs";
napok[5] = "P";
napok[6] = "Szo";

honapok[0] = "Jan";
honapok[1] = "Feb";
honapok[2] = "Mar";
honapok[3] = "Apr";
honapok[4] = "Maj";
honapok[5] = "Jun";
honapok[6] = "Jul";
honapok[7] = "Aug";
honapok[8] = "Sze";
honapok[9] = "Okt";
honapok[10] = "Nov";
honapok[11] = "Dec";

function init(event,id){
	d = new Date();
	output = document.getElementById(id);
	naptar(event);
}

function naptar(event){
	var out; var nap = 1; var meddig = 5; var tmpNap;
	out = '<table class="naptar">';
	out += '<tr><td onclick="evetAllit(-1)" class="nyil" onmouseover="classChange(this,' + "'nyilKiemelt'";
	out += ')" onmouseout="classChange(this,' + "'nyil'" + ')"><<</td>';
	out += '<td onclick="honapotAllit(-1)" class="nyil" onmouseover="classChange(this,' + "'nyilKiemelt'";
	out += ')" onmouseout="classChange(this,' + "'nyil'" + ')"><</td><td colspan="3">';
	out += d.getFullYear() + " " + honapok[d.getMonth()] + ' </td>';
	out += '<td onclick="honapotAllit(1)" class="nyil" onmouseover="classChange(this,' + "'nyilKiemelt'";
	out += ')" onmouseout="classChange(this,' + "'nyil'" + ')">></td>';
	out += '<td onclick="evetAllit(1)" class="nyil" onmouseover="classChange(this,' + "'nyilKiemelt'";
	out += ')" onmouseout="classChange(this,' + "'nyil'" + ')">>></td></tr><tr>';
	for(var i = 0; i < 7; ++i){
		out += '<td>' + napok[i] + '</td>';
	}
	out += '</tr>';

	if(hoElsoNapja(d) == 6 && hoUtolsoNapja(d.getFullYear(), d.getMonth(), true) > 29){
		meddig = 6;
	}

	for(var i = 0; i < meddig; ++i){
		out += '<tr>';
		for(var j = 0; j < 7; ++j){
			if((i * 7) + j < hoElsoNapja(d)){
				tmpNap = Number(hoUtolsoNapja(d.getFullYear(), d.getMonth() - 1, true) - hoElsoNapja(d) + j + 1);
				out += '<td class="light" onmouseover="kiirat_on(';
				out += tmpNap + ',-1,this,' + "'lightKiemelt'";
				out += ')" onmouseout="kiirat_out(this,' + "'light'" + ')" onclick="kiirat(';
				out += tmpNap + ',-1)">' + tmpNap + '</td>';
			}else if(((i * 7) + j) > hoUtolsoNapja(d.getFullYear(), d.getMonth(), true) + hoElsoNapja(d) - 1){
				tmpNap = Number(nap - hoUtolsoNapja(d.getFullYear(), d.getMonth(), true));
				out += '<td class="light" onmouseover="kiirat_on(';
				out += tmpNap + ',1,this,' + "'lightKiemelt'";
				out += ')" onmouseout="kiirat_out(this,' + "'light'" + ')" onclick="kiirat(';
				out += tmpNap + ',1)">' + tmpNap + '</td>';
				++nap;
			}else{
				if(d.getFullYear() == ma(0) && d.getMonth() == ma(1) && nap == ma(2)){
					out +='<td class="ma" onmouseover="kiirat_on(' + nap + ',0,this,' + "'darkKiemelt'" + ')"';
					out += 'onmouseout="kiirat_out(this,' + "'ma'" + ')"';
					out += 'onclick="kiirat(' + nap + ',0)">' + nap + '</td>';
				}else{
					out += '<td class="dark" onmouseover="kiirat_on(' + nap + ',0,this,' + "'darkKiemelt'" + ')"';
					out += 'onmouseout="kiirat_out(this,' + "'dark'" + ')"';
					out += 'onclick="kiirat(' + nap + ',0)">' + nap + '</td>';
				}
				++nap;
			}
		}
		out += '</tr>';
	}
	out += '<tr><td onclick="maKiir()" class="nyil">Ma</td>';
	out += '<td colspan="5" id="calentxt">&nbsp;</td><td onclick="bezar()" class="nyil">X</td></tr>';
	out += '</table>';

	document.getElementById("calendar").innerHTML = out;
	if(event){
		document.getElementById("calendar").style.left = event.clientX + "px";
		document.getElementById("calendar").style.top = event.clientY + "px";
	}
}

function hoElsoNapja(date){
	var tmpDate = new Date(date.getFullYear(), date.getMonth(), 1);
	return tmpDate.getDay();
	/*var elsoNap = date.getDay() - (date.getDate() % 7) + 1;
	if(elsoNap < 0) return elsoNap + 7;
	else return elsoNap;*/
}

// az l azt mondja meg, hogy hónap sorszáma szerint, vagy a hét sorszáma szerint adjam vissza az eredményt

function hoUtolsoNapja(ev,ho,l){
	var tmpDate = new Date(ev, ho + 1, 0);
	if(l) return tmpDate.getDate();
	return tmpDate.getDay();
}

function honapotAllit(i){
	d.setMonth(d.getMonth() + i);
	naptar();
}

function evetAllit(i){
	d.setFullYear(d.getFullYear() + i);
	naptar();
}

// az i mondja meg, hogy melyik napról van szó, a mod azt, hogy az aktuális, az előző, vagy a következő hónapról van -e szó, az obj a fv -t hívó objektum, a style meg a stílusosztály

function kiirat_on(i,mod,obj,style){
	var kiiras;
	var tmpDate = new Date(d.getFullYear(), d.getMonth() + mod, i);
	kiiras = honapok[tmpDate.getMonth()] + " " + i + " " + napok[tmpDate.getDay()];
	document.getElementById("calentxt").innerHTML = kiiras;
	classChange(obj,style);
}

function kiiratElozo_on(i,obj,style){
	var kiiras;
	var tmpDate = new Date(d.getFullYear(), d.getMonth()-1, i);
	kiiras = honapok[d.getMonth()-1] + " " + i + " " + napok[tmpDate.getDay()];
	document.getElementById("calentxt").innerHTML = kiiras;
	classChange(obj,style);
}

function kiirat_out(obj,style){
	classChange(obj,style);
}

// az i megadja a napot, a mod pedig azt, hogy az adott hónapot megelőző, vagy utána levő hónapról van szó

function kiirat(i,mod){
	var kiiras;
	var tmpDate = new Date(d.getFullYear(), d.getMonth() + mod, i);
	kiiras = tmpDate.getFullYear() + "-" + vezetoNulla(Number(tmpDate.getMonth() + 1)) + "-" + vezetoNulla(i);
	//document.getElementById("datum").value = kiiras;
	output.value = kiiras;
	document.getElementById("calendar").innerHTML = "";
}

function kiiratElozo(i){
	var kiiras;
	var tmpDate = new Date(d.getFullYear(), d.getMonth() - 1, i);
	kiiras = tmpDate.getFullYear() + "-" + vezetoNulla(Number(tmpDate.getMonth() + 1)) + "-" + vezetoNulla(i);
	//document.getElementById("datum").value = kiiras;
	output.value = kiiras;
	document.getElementById("calendar").innerHTML = "";
}

function maKiir(){
	d = new Date();
	kiirat(d.getDate(), 0);
}

// mit = 0 visszaaja a mai dátum évét, mit = 1 a hónapját, mit = 2 a napját

function ma(mit){
	var tmpDate = new Date();
	if(mit === 0){
		return tmpDate.getFullYear();
	}else if(mit == 1){
		return tmpDate.getMonth();
	}else if(mit == 2){
		return tmpDate.getDate();
	}else{
		return -1;
	}
}

function bezar(){
	document.getElementById("calendar").innerHTML = "";
}

function classChange(obj,className){
	obj.className = className;
}

function vezetoNulla(i){
	var vissza = i;
	if(i < 10){
		vissza = "0" + i;
	}
	return vissza;
}

function check(id){
	var o = document.getElementById(id);
	var str = o.value;
	var tomb = str.split("-",3);
	if(tomb.length != 3){
		alert("Rossz dátumformátum!\nHelyesen: 'éééé-hh-nn'");
		return false;
	}else if(isNaN(tomb[0]) || isNaN(tomb[1]) || isNaN(tomb[2])){
		alert("Egyik paraméternek nem számot adott meg!");
		return false;
	}else if( tomb[0].length != 4){
		alert("Az évet: 'éééé' formátumban add meg");
		return false;
	}else if(tomb[1].length != 2){
		if(tomb[1].length == 1){
			tomb[1] = vezetoNulla(tomb[1]);
		}else if(tomb[1].length > 2){
			alert("Rossz dátumformátum!\nHelyesen: 'éééé-hh-nn'");
			return false;
		}else{
			alert("A hónap nem lehet 12 -nél nagyobb!");
			return false;
		}
	}else if(tomb[2].length < 2){
		if(Number(tomb[2]) <= 10){
			tomb[2] = vezetoNulla(tomb[2]);
		}
	}else if(tomb[1].length >= 2 || tomb[2].length >= 2){
		if(Number(tomb[2]) > hoUtolsoNapja(Number(tomb[0]),Number(tomb[1]) - 1,true)){
			alert("A nap nem lehet " + hoUtolsoNapja(Number(tomb[0]),Number(tomb[1]) - 1,true) + "-nél nagyobb!");
			return false;
		}else if(tomb[2].length == 2 && Number(tomb[1]) <= 12){
			return true;
		}
		alert("Rossz dátumformátum!\nHelyesen: 'éééé-hh-nn'");
		return false;
	}
	o.value = tomb.join("-");
	return true;
}
