// 000000000000000000000000000000000000000000000000000000000000000000000000000000000
// [k] DATETIMEPICKER
// 000000000000000000000000000000000000000000000000000000000000000000000000000000000
pickertoday = new Date();
dayNames = new Array('V','H','K','Sze','Cs','P','Szo');
monthNames = new Array(' ', 'Janu&aacute;r', 'Febru&aacute;r', 'M&aacute;rcius', '&Aacute;prilis', 'M&aacute;jus', 'J&uacute;nius', 'J&uacute;lius', 'Augusztus', 'Szeptember', 'Okt&oacute;ber', 'November', 'December');
todayStr = new String('mai nap');
actZIndex = 100;

function bool2str(isittrue) {
	ans = new String();
	if (isittrue) {
		ans = "true";
	} else {
		ans = "false";
	}
	return ans;
}

function padZeroes(num, totalLen) {
   var numStr = num.toString();
   var numZeros = totalLen - numStr.length;
   if (numZeros > 0) {
      for (var i = 1; i <= numZeros; i++) {
         numStr = "0" + numStr;
      }
   }
   return numStr
} 

function showHide(objname) {
	obj = document.getElementById(objname);
	if (obj.style.visibility == 'visible') {
		obj.style.visibility = 'hidden';
	} else {
		obj.style.visibility = 'visible';
	}
}

function getNumDays(month, year) {
  var ar = new Array(12);
  ar[0] = 31; 
  ar[1] = (year % 4 == 0) ? 29 : 28; 
  ar[2] = 31; 
  ar[3] = 30;
  ar[4] = 31;
  ar[5] = 30;
  ar[6] = 31;
  ar[7] = 31;
  ar[8] = 30;
  ar[9] = 31;
  ar[10] = 30;
  ar[11] = 31;
  return ar[month];
}

function mOn(obj) {
	obj.style.borderColor='#ff0000';
}

function mOff(obj) {
	obj.style.borderColor='#eeeeee';
}

function showDayCell(usetimeselector, celltype, cday, hilite, pickername) {
	retstr = "<td align=right><div class=datepicker_"+celltype+" ";
	if (hilite) {
		retstr += "onMouseOver=\"mOn(this);\" onMouseOut=\"mOff(this);\" onClick=\"document.getElementById('"+pickername+"datepicker_daybox').value="+cday+"; setPickerDate("+bool2str(usetimeselector)+", document.getElementById('"+pickername+"'), '"+pickername+"');renderCalendar("+bool2str(usetimeselector)+", document.getElementById('"+pickername+"datepicker_daybox').value, document.getElementById('"+pickername+"datepicker_monthbox').value, document.getElementById('"+pickername+"datepicker_yearbox').value, document.getElementById('"+pickername+"datepicker_calendar'), '"+pickername+"');showHide('"+pickername+"datepicker');\"";
	}
	retstr += "><table width=\"100%\"><tr><td class=datepicker_"+celltype+"_inner align=right>"+cday+"</td></tr></table></div></td>"
	return retstr;
}

function showWeekDayCell(usetimeselector, i, cday, day, month, year, pickername) {
	today = new Date();
	if ((cday==day)) {
		return showDayCell(usetimeselector, "selectedday", cday, true, pickername);
	} else if ((today.getFullYear()==year) && (today.getMonth()==month) && (cday==today.getDate())) {
		return showDayCell(usetimeselector, "today", cday, true, pickername);
	} else {
		if ((i==0) || (i==6)) {
			return showDayCell(usetimeselector, "weekend", cday, true, pickername);
		} else {
			return showDayCell(usetimeselector, "workday", cday, true, pickername);
		}
	}
}

function setPickerDate(usetimeselector, obj, pickername) {
	obj.value = document.getElementById(pickername+'datepicker_yearbox').value+'-'+padZeroes(document.getElementById(pickername+'datepicker_monthbox').selectedIndex+1,2)+'-'+padZeroes(document.getElementById(pickername+'datepicker_daybox').value,2);
	if (usetimeselector) {
		obj.value += ' '+padZeroes(document.getElementById(pickername+'datepicker_hourbox').value,2)+':'+padZeroes(document.getElementById(pickername+'datepicker_minutebox').value,2)+':00';
	}
}

function renderCalendar(usetimeselector, day, month, year, obj, pickername) {
	maxday = getNumDays(month-1, year);
	firstday = new Date(year, month-1, 1);
	emptyfills = firstday.getDay();
	calsrc = new String();
	calsrc = "<table width=100%><tr>";
	for (i=0;i<7;i++) {
		if ((i==0) || (i==6)) {
			calsrc += "<td class=datepicker_weekend_header align=middle>"+dayNames[i]+"</td>";
		} else {
			calsrc += "<td class=datepicker_workday_header align=middle>"+dayNames[i]+"</td>";
		}
	}
	calsrc += "</tr><tr>";
	for (i=0;i<emptyfills;i++) {
		calsrc += showDayCell(usetimeselector, "emptyday", "&nbsp;", false, pickername);
	}
	for (i=emptyfills;i<7;i++) {
		cday = i-emptyfills+1;
		calsrc += showWeekDayCell(usetimeselector, i, cday, day, month-1, year, pickername);
	}
	daysToGo = maxday-(7-emptyfills);
	rows = Math.floor(daysToGo/7);
	rema = daysToGo % 7;
	emptytrailers = new Number;
	if (rema!=0) {
		emptytrailers = 7-rema;
	} else {
		emptytrailers = 0;
	}
	for (r=0;r<rows;r++) {
		calsrc += "</tr><tr>";
		for (c=0;c<7;c++) {
			cday++;
			calsrc += showWeekDayCell(usetimeselector, c, cday, day, month-1, year, pickername);
		}
	}
	if (emptytrailers!=0) {
		// meg egy sor kell
		calsrc += "</tr><tr>";
		for (c=0;c<rema;c++) {
			cday++;
			calsrc += showWeekDayCell(usetimeselector, c, cday, day, month-1, year, pickername);
		}
		for (c=0;c<emptytrailers;c++) {
			calsrc += showDayCell(usetimeselector, "emptyday", "&nbsp;", false, pickername);
		}
	}
	calsrc += "</tr></table>";
	obj.innerHTML = calsrc;
}

function checkPickerVal(usetimeselector, pickername) {
	if (document.getElementById(pickername).value=='') {
		initdate = new Date();
		document.getElementById(pickername+'datepicker_yearbox').value = initdate.getFullYear();
		document.getElementById(pickername+'datepicker_monthbox').selectedIndex = initdate.getMonth();
		document.getElementById(pickername+'datepicker_daybox').value = initdate.getDate();
		if (usetimeselector) {
			document.getElementById(pickername+'datepicker_hourbox').selectedIndex = 8; // 8 ora a default
			document.getElementById(pickername+'datepicker_minutebox').selectedIndex = 0; // 8 ora a default
		}
	}
}

// 000000000000000000000000000000000000000000000000000000000000000000000000000000000

function showDatePicker(fieldname, fieldvalue, maxlength, disabled, fielderror, usetimeselector, actZIndex, fieldclass) {
	initdate = new Date();
	dpsource = new String();
	if ((fieldvalue=='') || (fieldvalue=='0000-00-00 00:00:00') || (fieldvalue=='0000-00-00')) {
		/*
		if (usetimeselector) {
			fieldvalue=initdate.getFullYear()+'-'+padZeroes(initdate.getMonth()+1,2)+'-'+padZeroes(initdate.getDate(),2)+' '+padZeroes(initdate.getHours(),2)+':'+padZeroes(initdate.getMinutes()+':'+padZeroes(initdate.getSeconds(),2)+':',2);
		} else {
			fieldvalue=initdate.getFullYear()+'-'+padZeroes(initdate.getMonth()+1,2)+'-'+padZeroes(initdate.getDate(),2);
		}
		*/
		fieldvalue='';
	} else {
		if (usetimeselector) {
			var datetimePat = /^(\d{4})(\/|-)(\d{2})(\/|-)(\d{2})\ (\d{2})(\:)(\d{2})(\:)(\d{2})$/;
			var matchArray = fieldvalue.match(datetimePat); 
			if (matchArray == null) {
				fieldvalue=initdate.getFullYear()+'-'+padZeroes(initdate.getMonth()+1,2)+'-'+padZeroes(initdate.getDate(),2)+' '+padZeroes(initdate.getHours(),2)+':'+padZeroes(initdate.getMinutes()+':'+padZeroes(initdate.getSeconds(),2)+':',2);
			} else {
				initdate = new Date(fieldvalue.substr(0,4), fieldvalue.substr(5,2).valueOf()-1, fieldvalue.substr(8,2), fieldvalue.substr(11,2), fieldvalue.substr(14,2), fieldvalue.substr(17,2));
			}
		} else {
			var datetimePat1 = /^(\d{4})(\/|-)(\d{2})(\/|-)(\d{2})$/;
			var datetimePat2 = /^(\d{4})(\/|-)(\d{2})(\/|-)(\d{2})\ (\d{2})(\:)(\d{2})(\:)(\d{2})$/;
			var matchArray1 = fieldvalue.match(datetimePat1); 
			var matchArray2 = fieldvalue.match(datetimePat2); 
			if ((matchArray1 == null) && (matchArray2 == null)) {
				fieldvalue=initdate.getFullYear()+'-'+padZeroes(initdate.getMonth()+1,2)+'-'+padZeroes(initdate.getDate(),2);
			} else {
				initdate = new Date(fieldvalue.substr(0,4), fieldvalue.substr(5,2).valueOf()-1, fieldvalue.substr(8,2));
			}
		}
	}
    fclass = fieldclass ? fieldclass : "date";   
	dpsource+="<input class=\""+fclass+"\" style=\"position: absolute;\" type=\"text\" "+disabled+" name=\""+fieldname+"\" id=\""+fieldname+"\" size=\""+maxlength+"\" value=\""+fieldvalue+"\">";
    if (fieldclass == 'short')
    {	
        dpsource+="<input type=button style=\"position: relative; left: 90px\" class=\"button_picker\" value=\"&#9660\" onclick=\"checkPickerVal("+bool2str(usetimeselector)+", '"+fieldname+"');setPickerDate("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"'), '"+fieldname+"');renderCalendar("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"datepicker_daybox').value, document.getElementById('"+fieldname+"datepicker_monthbox').value, document.getElementById('"+fieldname+"datepicker_yearbox').value, document.getElementById('"+fieldname+"datepicker_calendar'), '"+fieldname+"'); showHide('"+fieldname+"datepicker');\">";
        dpsource+="<input type=button style=\"position: relative; left: 96px; font-weight: bold;\" class=\"button_picker\" value=\"X\" onclick=\"document.getElementById('"+fieldname+"').value='';\">";
	}
    else
    {
        dpsource+="<input type=button style=\"position: relative; left: 60px\" class=\"button_picker\" value=\"&#9660\" onclick=\"checkPickerVal("+bool2str(usetimeselector)+", '"+fieldname+"');setPickerDate("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"'), '"+fieldname+"');renderCalendar("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"datepicker_daybox').value, document.getElementById('"+fieldname+"datepicker_monthbox').value, document.getElementById('"+fieldname+"datepicker_yearbox').value, document.getElementById('"+fieldname+"datepicker_calendar'), '"+fieldname+"'); showHide('"+fieldname+"datepicker');\">";
        dpsource+="<input type=button style=\"visibility:hidden; position: relative; left: 79px; font-weight: bold;\" class=\"button_picker\" value=\"X\" onclick=\"document.getElementById('"+fieldname+"').value='';\">";
    }   
    dpsource+="<div>"+fielderror+"</div>\n";
	dpsource+="<div class=\"datepickertrans\" style=\"z-index:"+actZIndex+"\" name=\""+fieldname+"datepicker\" id=\""+fieldname+"datepicker\">\n";
	dpsource+="<table class=\"datepickercol\" cellpadding=0 cellspacing=0 border=0><tr><td valign=top>\n";
	dpsource+="<table border=0 cellpadding=0 cellspacing=0 width=\"100%\" height=\"100%\">\n";
	dpsource+="<tr><td height=\"10\"><table width=\"100%\">\n";
	dpsource+="<td><table><tr>\n";
	dpsource+="<td><input type=button class=\"datepicker_yearstep\" onclick=\"document.getElementById('"+fieldname+"datepicker_yearbox').value--; setPickerDate("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"'), '"+fieldname+"');renderCalendar("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"datepicker_daybox').value, document.getElementById('"+fieldname+"datepicker_monthbox').value, document.getElementById('"+fieldname+"datepicker_yearbox').value, document.getElementById('"+fieldname+"datepicker_calendar'), '"+fieldname+"');\" value=\"&lt;\"></td>\n";
	dpsource+="<td>&nbsp;</td>\n";
	dpsource+="<td><input type=text disabled name=\""+fieldname+"datepicker_yearbox\" id=\""+fieldname+"datepicker_yearbox\" class=\"datepicker_yearbox\" value=\"\"></td>\n";
	dpsource+="<td>&nbsp;</td>\n";
	dpsource+="<td><input type=button class=\"datepicker_yearstep\" onclick=\"document.getElementById('"+fieldname+"datepicker_yearbox').value++; setPickerDate("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"'), '"+fieldname+"');renderCalendar("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"datepicker_daybox').value, document.getElementById('"+fieldname+"datepicker_monthbox').value, document.getElementById('"+fieldname+"datepicker_yearbox').value, document.getElementById('"+fieldname+"datepicker_calendar'), '"+fieldname+"');\" value=\"&gt;\"></td>\n";
	dpsource+="</tr></table></td>\n";
	dpsource+="<!-- DATE SELECTOR -->\n";
	dpsource+="<td align=right><select name="+fieldname+"datepicker_monthbox id="+fieldname+"datepicker_monthbox onchange=\"setPickerDate("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"'), '"+fieldname+"');renderCalendar("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"datepicker_daybox').value, document.getElementById('"+fieldname+"datepicker_monthbox').value, document.getElementById('"+fieldname+"datepicker_yearbox').value, document.getElementById('"+fieldname+"datepicker_calendar'), '"+fieldname+"');\">\n";
	for (i=1;i<13;i++) {
		dpsource+="<option value="+i+">"+monthNames[i]+"</option>\n";
	}
	dpsource+="</select></td>\n";
	dpsource+="</table><input type=hidden name=\""+fieldname+"datepicker_daybox\" id=\""+fieldname+"datepicker_daybox\" value=\"\"></td></tr>\n";
	dpsource+="<tr><td valign=top><div class=\"s\"></div></td></tr>\n";
	dpsource+="<tr><td valign=top bgcolor=\"black\"><div class=\"s\"></div></td></tr>\n";
	dpsource+="<tr><td valign=top><div class=\"s\"></div></td></tr>\n";
	dpsource+="<tr><td valign=top>\n";
	dpsource+="<!-- MONTH CALENDAR -->\n";
	dpsource+="<table width=\"100%\">\n";
	dpsource+="<tr><td valign=top><div name=\""+fieldname+"datepicker_calendar\" id=\""+fieldname+"datepicker_calendar\"></div></td></tr>\n";
	dpsource+="</table>\n";
	dpsource+="</td></tr>\n";
	dpsource+="<tr><td valign=top><div class=\"s\"></div></td></tr>\n";
	dpsource+="<tr><td valign=top bgcolor=\"black\"><div class=\"s\"></div></td></tr>\n";
	dpsource+="<tr><td valign=top><div class=\"s\"></div></td></tr>\n";
	dpsource+="<tr><td valign=top>\n";
	dpsource+="<table width=\"100%\">\n";
	dpsource+="<tr>\n";
	dpsource+="<td valign=top>&nbsp;<input type=button class=\"datepicker_todaybutton\" name=\""+fieldname+"datepicker_todaybutton\" id=\""+fieldname+"datepicker_todaybutton\" value=\""+todayStr+"\" onclick=\"document.getElementById('"+fieldname+"datepicker_daybox').value=pickertoday.getDate();document.getElementById('"+fieldname+"datepicker_monthbox').selectedIndex=pickertoday.getMonth();document.getElementById('"+fieldname+"datepicker_yearbox').value=pickertoday.getFullYear();setPickerDate("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"'), '"+fieldname+"');renderCalendar("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"datepicker_daybox').value, document.getElementById('"+fieldname+"datepicker_monthbox').value, document.getElementById('"+fieldname+"datepicker_yearbox').value, document.getElementById('"+fieldname+"datepicker_calendar'), '"+fieldname+"');showHide('"+fieldname+"datepicker');\"></td>\n";
	dpsource+="<td valign=top align=right>\n";
	if (usetimeselector) {
		dpsource+="<table><tr>\n";
		dpsource+="<td><select name="+fieldname+"datepicker_hourbox id="+fieldname+"datepicker_hourbox onchange=\"setPickerDate("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"'), '"+fieldname+"');\">\n";
		for (i=0;i<24;i++) {
			if (i==8) {
				dpsource+="<option selected value="+i+">"+padZeroes(i,2)+"</option>\n";
			} else {
				dpsource+="<option value="+i+">"+padZeroes(i,2)+"</option>\n";
			}
		}
		dpsource+="</select></td>\n";
		dpsource+="<td>:</td>\n";
		dpsource+="<td><select name="+fieldname+"datepicker_minutebox id="+fieldname+"datepicker_minutebox onchange=\"setPickerDate("+bool2str(usetimeselector)+", document.getElementById('"+fieldname+"'), '"+fieldname+"');\">\n";
		for (i=0;i<60;i=i+5) {
			dpsource+="<option value="+i+">"+padZeroes(i,2)+"</option>\n";
		}
		dpsource+="</select></td>\n";
		dpsource+="</tr></table>\n";
	} else {
		dpsource+=" ";
	}
	dpsource+="</td>\n";
	dpsource+="</tr>\n";
	dpsource+="</table>\n";
	dpsource+="</td></tr>\n";
	dpsource+="</table>\n";
	dpsource+="</td></tr></table>\n";
	dpsource+="</div>\n";

	document.write(dpsource);

	if (fieldvalue!='')	{
		document.getElementById(fieldname+'datepicker_yearbox').value = initdate.getFullYear();
		document.getElementById(fieldname+'datepicker_monthbox').selectedIndex = initdate.getMonth();
		document.getElementById(fieldname+'datepicker_daybox').value = initdate.getDate();
		setPickerDate(usetimeselector, document.getElementById(fieldname), fieldname);
		renderCalendar(usetimeselector, document.getElementById(fieldname+'datepicker_daybox').value, document.getElementById(fieldname+'datepicker_monthbox').value, document.getElementById(fieldname+'datepicker_yearbox').value, document.getElementById(fieldname+'datepicker_calendar'), fieldname);
	}
	return (actZIndex-1);
}
