// 000000000000000000000000000000000000000000000000000000000000000000000000000000000
// [k] DATETIMEPICKER
// 000000000000000000000000000000000000000000000000000000000000000000000000000000000
pickertoday = new Date();
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='#f60';
}

function mOff(obj) {
	obj.style.borderColor='#eee';
}

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) {
	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 matchArray1 = 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));
			}
		}
	}
	dpsource+="<input class=\"date\" style=\"position: absolute; color: #525E64; margin-left: 3px; width:105px;\" type=\"text\" "+disabled+" name=\""+fieldname+"\" id=\""+fieldname+"\" size=\""+maxlength+"\" value=\""+fieldvalue+"\" onFocus=\"b(this);\" onBlur=\"k(this);\">";
	dpsource+="<img src='"+openImg+"' style=\"position: relative; left: 112px; top: -1px; cursor: pointer;\" class=\"button_picker\" 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+="<img src='"+clearImg+"' style=\"position: relative; left: 112px; top: -1px; cursor: pointer;\" onclick=\"document.getElementById('"+fieldname+"').value='"+dtDefaultValue+"';\">";
	dpsource+="<div>"+fielderror+"</div>\n";
	dpsource+="<div class=\"datepickertrans\" style=\"z-index:"+actZIndex+"\" name=\""+fieldname+"datepicker\" id=\""+fieldname+"datepicker\">\n";
	dpsource+="<table class=\"datepickercol\" ><tr><td valign=\"top\">\n";
	dpsource+="<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" height=\"100%\">\n";
	dpsource+="<tr><td><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">\n";
		dpsource+="<td><table border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"100%\"><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=\"&#9664\"></td>\n";
			dpsource+="<td>&nbsp;</td>\n";
			dpsource+="<td><input type=\"text\" style=\"width:50px;text-align:center;\" onfocus=\"return false;\" 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 yearright\" 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=\"&#9654\"></td>\n";
		dpsource+="</tr></table></td>\n";
		dpsource+="<!-- DATE SELECTOR -->\n";
		dpsource+="<td align=\"right\"><select class=\"datepicker_monthbox\" id=\""+fieldname+"datepicker_monthbox\" name=\""+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\"><input type=\"button\" class=\"datepicker_todaybutton\" style=\"margin-top: 6px;\" 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\" class=\"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\" class=\"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);
}