// NAPTAR JS

function saveCron()
{
	// intime outtime parjanak beallitasa
	pref = new Array();	
	pref["datum"] = "datum";
	actpref = actPrefix.split("_");
	otherPrefix = actpref[0]+"_"+pref[actpref[1]]+"_"+actpref[2];
	postable = true;
	
	if(actChkDate)
	{	
			var okdate = actChkDate.getFullYear()+"."+(actChkDate.getMonth()+1)+"."+actChkDate.getDate()+" "+actChkDate.getHours()+":"+actChkDate.getMinutes();
			document.getElementById("naptar_"+otherPrefix).value = realDate(okdate);
		 fireCloseEvent();
	}
	else
	{
		alert("Nem adott meg dátumot!");
	}
}

function realDate(date)
{
	var date = date.split(" ");
	var i;
	date[0] = date[0].split(".");
	date[1] = date[1].split(":");
	for(i=0; i<date[0].length; i++)
	{
		date[0][i] = numberformat(date[0][i]);
	}
	for(i=0; i < date[1].length; i++)
	{
		date[1][i] = numberformat(date[1][i]);
	}
	return date[0][0]+"."+date[0][1]+"."+date[0][2]+" "+date[1][0]+":"+date[1][1];
}

function numberformat(n)
{
	return (n<10) ? "0"+n : n;	
}

function fireCloseEvent()
{
	var fireOnThis = document.body;
	if( document.createEvent )
	{
		var evObj = document.createEvent('MouseEvents');
		evObj.initEvent( 'click', true, false );
		fireOnThis.dispatchEvent(evObj);
	}
	else if( document.createEventObject )
	{
		fireOnThis.fireEvent('onclick');
	}	
}

var	honaptmb = new Array("Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December");
var actPrefix = null;
var actStepDate = null;
var actChkDate = null;
var openedDate = null;
var voltTimeUp = false;

function naptarOpen(prefix,naptarnev)
{
	// BODY CLICK ESEMENYEKEZELO
	document.body.onclick = allClose;
	
	// leptetes alaphelyzet
	actStepDate = null;
	actChkDate = null;
	voltTimeUp = false;
	document.getElementById("naptar_times").value = "00:00";
	
	// naptarforras kigyujtese
	if(Boolean(actPrefix))
	{
		forrasHelye = naptarnev+"_"+actPrefix;
		htmlSource = document.getElementById(forrasHelye).innerHTML;
		// eredetit torlom
		document.getElementById(forrasHelye).innerHTML = "";
		document.getElementById(forrasHelye).style.display = "none";
	}
	else
	{
		htmlSource = document.getElementById("naptar_HtmlCode").innerHTML;
		// eredetit torlom
		document.getElementById("naptar_HtmlCode").innerHTML = "";
	}
	
	// nyitas helyere teszem a naptarforrast
	naptarHelye = naptarnev+"_"+prefix;
	document.getElementById(naptarHelye).innerHTML = htmlSource;
	document.getElementById(naptarHelye).style.display = "";

	// naptarFeltoltese miutan egy peldany van mar csak
	getd = dateQuery(prefix);
	stmb = naptarFeltolt(prefix,getd);

	// esemenyek feltoltese miutan mar csak egy peldany van a naptarbol
	eventUpload(stmb);

	// aktualis nyitott naptar prefixet globalizalom
	actPrefix = prefix;	
}

function eventUpload(t)
{
	for(i=0;i<stmb.length;i++)
	{
		if(stmb[i])	
		{
			// esemenyek felhuzasa
			document.getElementById("naptar_napevent_"+i).onmouseover = esemenyOver;
			document.getElementById("naptar_napevent_"+i).onmouseout = esemenyOut;
			document.getElementById("naptar_napevent_"+i).onclick = esemenyClick;
			document.getElementById("naptar_napevent_"+i).style.cursor = "pointer";
		}
		else
		{
			// esemenyek leszedese a feher reszekrol
			document.getElementById("naptar_napevent_"+i).removeAttribute("onmouseover",true);
			document.getElementById("naptar_napevent_"+i).removeAttribute("onmouseout",true);
			document.getElementById("naptar_napevent_"+i).removeAttribute("onclick",true);
		
			document.getElementById("naptar_napevent_"+i).onmouseover = null;
			document.getElementById("naptar_napevent_"+i).onmouseout = null;			
			document.getElementById("naptar_napevent_"+i).onclick = null;
			document.getElementById("naptar_napevent_"+i).style.cursor = "default";
		}
	}
	document.getElementById("naptar_times").onkeydown = keyStroke;  // FF
	document.getElementById("naptar_times").onkeypress = keyStroke; // IE
	document.getElementById("naptar_times").onkeyup = keyRewrite; // IE
}

function dateQuery(prefix)
{
	// megnezem van-e beallitott datum ************************
	checkDate = document.getElementById("naptar_"+prefix).value;
	if(Boolean(checkDate))
	{
		chk = true;
		d = dateSpliter(checkDate);
	}
	else
	{
		chk = false;
		d = new Date();
	}

	return new Array(d,chk);
}

function naptarFeltolt(prefix,darg)
{
	d = darg[0];
	chk = darg[1];
	mainap = new Date();
	openedDate = d;
	
	// a het melyik napjara esik elseje *****************
	df = new Date(d.getFullYear(),d.getMonth(),1,0,0,0,0);

	firstDay = df.getDay();
	if(firstDay==0) firstDay +=7;
	// ****************************************** 
	
	// naptar felso es also resz
	document.getElementById("naptar_npStep").innerHTML = d.getFullYear()+" "+honaptmb[d.getMonth()];	
	document.getElementById("naptar_actDateText").innerHTML = "";
	// *****************
	
	n = 0;
	settmb = new Array();
	for(i = 0; i<42; i++)
	{
		bgclr = "#f6f4f4";
		betuszin = "#333333";
		settmb[i] = false;
		document.getElementById("naptar_napevent_"+i).innerHTML = "";
		if(i+1>=firstDay && monthDays(d)>n)
		{
			n++;
			bgclr = "#dcd2bd";
			if(i%7 == 5) bgclr = "#e1e1e1";
			if(i%7 == 6) bgclr = "#c0b9b6";
			if(mainap.getDate() == n && mainap.getMonth() == d.getMonth() && mainap.getFullYear() == d.getFullYear()) bgclr = "#fff000";
			if(d.getDate()==n && chk)
			{
				bgclr = "#ff5a00";
				betuszin = "#FFFFFF";
				c = d.toString();
				actChkDate = new Date(c);
				cev = actChkDate.getFullYear();
				cho = actChkDate.getMonth()+1;
				if(cho<10) cho = "0"+cho;
				cnap = actChkDate.getDate();
				if(cnap<10) cnap = "0"+cnap;
				cora = actChkDate.getHours();
				if(cora<10) cora = "0"+cora;
				cmin = actChkDate.getMinutes();
				if(cmin<10) cmin = "0"+cmin;
				
				document.getElementById("naptar_actDateText").innerHTML = cev+"."+cho+"."+cnap+".";
				dtm = cora+":"+cmin;
			
				if(!voltTimeUp) { document.getElementById("naptar_times").value = dtm; }
			}
			document.getElementById("naptar_napevent_"+i).innerHTML = n;
			settmb[i] = true;
		}
		// aktualis cella szineit mentem
		document.getElementById("naptar_statszin_"+i).innerHTML = bgclr;
		document.getElementById("naptar_statbetu_"+i).innerHTML = betuszin;
		atszinez(document.getElementById("naptar_dnap_"+i),bgclr,betuszin);
	}
	return settmb;
}

function dateSpliter(str)
{
	splitted = str.split(" ");
	dd = splitted[0].split(".");
	dt = splitted[1].split(":");
	return new Date(dd[0],Number(dd[1])-1,dd[2],dt[0],dt[1],0,0);	
}

function leptet(step)
{
	// mar volt leptetes
	if(Boolean(actStepDate))
	{
		// adott datumot leptetem
		actStepDate.setMonth(actStepDate.getMonth()+step);

		// ha volt bejelolve
		if(Boolean(actChkDate))
		{
			// ha bejelolt ev,ho = leptetett ev,ho akkor becsekkolom
			if((actChkDate.getFullYear()==actStepDate.getFullYear()) && (actChkDate.getMonth()==actStepDate.getMonth()) ){ chk = true }else{ chk = false }
		}
		else
		{
			chk = false;
		}
		d = actStepDate;
	}
	else
	{
		if(Boolean(actChkDate))
		{
			a = actChkDate.toString();
			actStepDate = new Date(a);
			actStepDate.setMonth(actStepDate.getMonth()+step);
			d = actStepDate;
		}
		else
		{
			d = new Date();
			d.setMonth(d.getMonth()+step)
			actStepDate = d;
		}
		chk = false;
	}

	// naptar, esemeny ujratoltese
	stmb = naptarFeltolt(actPrefix,new Array(d,chk));
	eventUpload(stmb);
}

function atszinez(obj,szin,betuszin)
{
	obj.style.backgroundColor = szin;
	obj.style.color = betuszin;
}

function timeSet(c)
{
	node = document.getElementById("naptar_times");
	nv = node.value.split(":");
	r = new RegExp(":");
	// IE selection
	if(document.selection)
	{
		node.focus();
		sel = document.selection.createRange();
		len = sel.text.length;
		startPos = -1-sel.moveStart("character",-node.value.length-1)+1;
		endPos = sel.text.length;
	
		side = "jobb";
		if( (startPos<3 && nv[0].length == 2) || (startPos<2 && nv[0].length == 1) || (startPos<1 && nv[0].length == 0) ) { side = "bal"; }
		sel = document.selection.createRange();

		if(!r.test(sel.text))
		{
			if(side == "jobb")
			{
				upt = Number(nv[1])+c;
				if(Number(upt)>59) upt = "00";
				if(Number(upt)<0) upt = "59";
				if(upt<10) upt = "0"+Number(upt);
				node.value = nv[0]+":"+upt;
				range = node.createTextRange();
				range.collapse(true);
				range.moveStart('character',nv[0].length+1);
				range.moveEnd('character',node.value.length);
				range.select();
			}
			else
			{
				upt = Number(nv[0])+c;
				if(upt>23) upt = "00";
				if(upt<0) upt = "23";
				if(upt<10) upt = "0"+Number(upt);
				node.value = upt+":"+nv[1];				
				range = node.createTextRange();
				range.collapse(true);
				range.moveStart('character',0);
				range.moveEnd('character',2);
				range.select();
			}
		}
	}
	// FF selection
	else if(node.selectionStart || node.selectionStart == '0')
	{
		startPos = node.selectionStart;
		endPos = node.selectionEnd;
		if(startPos==node.value.length && endPos == node.value.length && !voltTimeUp) startPos = 0; endPos = 0;
		voltTimeUp = true;
		sel = new Object();
		sel.text = node.value.substr(startPos,(endPos-startPos));
		len = sel.text.length;
		//if(len==0) { node.selectionStart = 0; node.selectionEnd = 0 };
		side = "jobb";
		if( (startPos<3 && nv[0].length == 2) || (startPos<2 && nv[0].length == 1) || (startPos<1 && nv[0].length == 0) ) { side = "bal"; }

		if(!r.test(sel.text))
		{
			node.focus();
			if(side == "jobb")
			{
				upt = Number(nv[1])+c;
				if(Number(upt)>59) upt = "00";
				if(Number(upt)<0) upt = "59";
				if(upt<10) upt = "0"+Number(upt);
				node.value = nv[0]+":"+upt;				
				node.selectionStart = nv[0].length+1;
				node.selectionEnd = node.value.length;
			}
			else
			{
				upt = Number(nv[0])+c;
				if(upt>23) upt = "00";
				if(upt<0) upt = "23";
				if(upt<10) upt = "0"+Number(upt);
				node.value = upt+":"+nv[1];								
				node.selectionStart = 0;
				node.selectionEnd = 2;
			}
		}
	}
	if(actChkDate)
	{
		nnv = node.value.split(":");
		actChkDate.setHours(Number(nnv[0]));
		actChkDate.setMinutes(Number(nnv[1]));
	}
}

function settimeup()
{
	voltTimeUp = true;	
}

// ESEMENYKEZELO FUGGVENYEK //
function esemenyOver(e)
{
	if(!e) e = window.event;
	if(e.target) node = e.target; else node = e.srcElement;
	id = node.id.split("_");
	obj = document.getElementById("naptar_dnap_"+id[2]);
	atszinez(obj,'#ff5a00','#FFFFFF');
}

function esemenyOut(e)
{
	if(!e) e = window.event;
	if(e.target) node = e.target; else node = e.srcElement;
	id = node.id.split("_");
	obj = document.getElementById("naptar_dnap_"+id[2]);
	bgc = document.getElementById("naptar_statszin_"+id[2]).innerHTML;
	btc = document.getElementById("naptar_statbetu_"+id[2]).innerHTML;
	atszinez(obj,bgc,btc);
}

function esemenyClick(e)
{
	if(!e) e = window.event;
	if(e.target) node = e.target; else node = e.srcElement;
	id = node.id.split("_");
 	obj = document.getElementById("naptar_napevent_"+id[2]);
	// adott nap bejelolese

	nv = document.getElementById("naptar_times").value.split(":");
	openedDate.setHours(Number(nv[0]));
	openedDate.setMinutes(Number(nv[1]));	
	openedDate.setDate(Number(obj.innerHTML));	
	naptarFeltolt(actPrefix,new Array(openedDate,true));
	setDisplayDate(openedDate);
}

function setDisplayDate(d)
{
	ho = d.getMonth()+1;
	na = d.getDate();
	if(ho<10) ho = "0"+ho;
	if(na<10) na = "0"+na;
	
	dstr = d.getFullYear()+"."+ho+"."+na+".";
	document.getElementById("naptar_actDateText").innerHTML = dstr;
}

// FF miatt ESC utani torles visszairasa
var tmptime = null;
function keyRewrite(e)
{
	if(!e) e = window.event;
	if(e.target) node = e.target; else node = e.srcElement;
	kc = e.keyCode||e.which;
	if(kc==27)
	{
		document.getElementById("naptar_times").value = tmptime;
		tmptime = null;
	}
	nnv = node.value.split(":");
	actChkDate.setHours(Number(nnv[0]));
	actChkDate.setMinutes(Number(nnv[1]));
}

function keyStroke(e)
{
	if(!e) e = window.event;
	if(e.target) node = e.target; else node = e.srcElement;
	nv = node.value.split(":");
	kc = e.keyCode||e.which;
	rtn = true;
	// nem torolheti ki a :-ot (backspace, delete gomb figyeles)
	if(kc == 8 || kc == 46) 
	{
		cpos = getCursorPos(node,kc,e);		
		rtn = cpos;
	}
	else
	{
		// esc billhez aktualis tartalom
		tmptime = document.getElementById("naptar_times").value;
		// ha nem szamot irt be
		if(kc<48 || kc>57)
		{
			rtn = false;
			// cursor mozgato nyilak
			if(kc>34 && kc<41) rtn = true;
			// numpad
			if(kc>95 && kc<106) rtn = true;
		}
	}

	if(rtn)
	{
		// csak szamok eseten
		if((kc>47 && kc<58) || (kc>95 && kc<106))
		{
			npos = getCursorPos(node,kc,e);
			if(!npos) { return false }
		}
	}
	else
	{
		return false;
	}
}

function getCursorPos(node,kc,e)
{
	rtn = true;
	r = new RegExp(":","g");
	// IE cursor pos
	if (document.selection)
	{			
		node.focus();
		sel = document.selection.createRange();
		len = sel.text.length;
		startPos = -1-sel.moveStart("character",-node.value.length-1)+1;
		endPos = sel.text.length;
		//nem lehet hosszabb 2-nel a kijeloles
		if(len < 3)
		{
			sel = document.selection.createRange();
			st = true;
			// melyik billentyut nyomta meg
			if(kc==8){ i = -1; n = 0 }else if(kc == 46){ i = 0; n = 1}else{ st = false}
			if(len == 0)

			{
				sel.moveStart("character",i);
				sel.moveEnd("character",n);
				if(st){	dt = sel.text; } else { dt = "" }

				nv = node.value.split(":");
				// bal oldal (ora)
				if(((startPos>1 && nv[0].length<2) || (startPos==1 && nv[0].length==0)) && nv[1].length>1 && !st) { dt = ":"; }
				// jobb oldal (perc)
				if(startPos<3 && nv[1].length<2 && nv[0].length>1 && !st) { dt = ":"; }
			}
			else
			{
				dt = sel.text;
			}
			if(r.test(dt)) rtn = false;
			
			if(len<2 && rtn && !st)
			{
				nv = node.value.split(":");
				side = "jobb";
				if( (startPos<3 && nv[0].length == 2) || (startPos<2 && nv[0].length == 1) || (startPos<1 && nv[0].length == 0) ) { side = "bal"; }
				if(side=="bal")
				{
					if(startPos==0 && len==0){ dr = String.fromCharCode(kc)+""+nv[0] } 
					else if(startPos==0 && len==1) {dr = String.fromCharCode(kc)+""+nv[0].substring(1,2)}
					else if(startPos==1) { dr = nv[0].substring(0,1)+""+String.fromCharCode(kc)}
					if(Number(dr)>23) rtn = false;
				}
				else
				{
					fullPos = startPos-nv[0].length;
					if(fullPos==1 && len==0) {dr = String.fromCharCode(kc)+""+nv[1]}
					else if(fullPos == 2 && len==0) {dr = nv[1]+""+String.fromCharCode(kc)}
					else if(fullPos == 1 && len==1) {dr = String.fromCharCode(kc)+""+nv[1].substr(1,1)}
					else if(fullPos == 2 && len==1) {dr = nv[1].substr(0,1)+""+String.fromCharCode(kc)}
					if(Number(dr)>59) rtn = false;
				}
			}
		}
		else
		{
			rtn = false;
		}
	}// FF cursor pos	
	else if(node.selectionStart || node.selectionStart == '0')
	{
		startPos = node.selectionStart;
		endPos = node.selectionEnd;
		sPos = startPos;
		ePos = endPos;
		len = ePos-sPos;
		// nem lehet 2-nel hosszabb kijeloles
		if(len < 3)
		{
			st = true;
			if( kc==8 ) { i = -1; n = 0; } else if(kc == 46) { i = 0; n = 1; } else { i = startPos; n = endPos; st = false;}
			if(startPos==endPos) { startPos += i; endPos+=n};
			dt = node.value.substr(startPos,(endPos-startPos));
			
			if(len==0)
			{
				// ora es perc csak 2 karakter lehet
				nv = node.value.split(":");
				// bal oldal (ora)
				if(((sPos>1 && nv[0].length<2) || (sPos==1 && nv[0].length==0)) && nv[1].length>1 && !st) { dt = ":"; }
				// jobb oldal (perc)
				if(sPos<3 && nv[1].length<2 && nv[0].length>1 && !st) { dt = ":"; }				
			}			
			if(r.test(dt)) rtn = false;
			
			if(len<2 && rtn && !st)
			{
				nv = node.value.split(":");
				side = "jobb";
				if( (sPos<3 && nv[0].length == 2) || (sPos<2 && nv[0].length == 1) || (sPos<1 && nv[0].length == 0) ) { side = "bal"; }
				if(side=="bal")
				{
					if(sPos==0 && len==0){ dr = String.fromCharCode(kc)+""+nv[0] } 
					else if(sPos==0 && len==1) {dr = String.fromCharCode(kc)+""+nv[0].substring(1,2)}
					else if(sPos==1) { dr = nv[0].substring(0,1)+""+String.fromCharCode(kc)}
					if(Number(dr)>23) rtn = false;
				}
				else
				{
					fullPos = sPos-nv[0].length;
					if(fullPos==1 && len==0) {dr = String.fromCharCode(kc)+""+nv[1]}
					else if(fullPos == 2 && len==0) {dr = nv[1]+""+String.fromCharCode(kc)}
					else if(fullPos == 1 && len==1) {dr = String.fromCharCode(kc)+""+nv[1].substr(1,1)}
					else if(fullPos == 2 && len==1) {dr = nv[1].substr(0,1)+""+String.fromCharCode(kc)}
					if(Number(dr)>59) rtn = false;
				}
			}
		}
		else
		{
			rtn = false;	
		}
	}
	return rtn;
}

function allClose(e)
{
	if(!e) e = window.event;
	if(e.target) node = e.target; else node = e.srcElement;
	r = RegExp("^naptar_");
	if(!r.test(node.id) && Boolean(actPrefix))
	{
		nv = document.getElementById("naptar_neve").innerHTML+"_"+actPrefix;
		document.getElementById(nv).style.display = "none";
		// leptetes reset
		actStepDate = null;
		voltTimeUp = false;
	}
}
// ******************* //

// DATUMKEZELO FUGIK 
function monthDays(d)
{	
	month = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	if (isLeapYear(d))
	{
		month[1]=29;
	}	
	return month[d.getMonth()];	
}


function isLeapYear(d)
{
	if ((d.getYear()%4)==0)
	{
		if ((d.getYear()%100==0) && (d.getYear()%400)!=0)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else
	{	
		return false;
	}
}

// ************************ //
