function open_calendar(p_box,p_box2,p_y,p_m){

	var vcode;
	var vwincal;
	var ggwincal;
	var Calendar = new Array();
	var i;
	var dat = new Date();
	var nowdat = new Date();

	Calendar.Months = ["January","February","March","April","May","June","July","August","September","October","November","December"];
	Calendar.Weeks = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
	Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

	vwincal = window.open(" ", "calendar", "width=350,height=250,status=no,resizable=no,top=200,left=200");
	vwincal.focus();
	ggwincal = vwincal.opener;

	dat.setYear(p_y);
	dat.setMonth(p_m);
	dat.setDate('1');

	if (dat.getMonth() < nowdat.getMonth()){
		dat.setYear(dat.getFullYear()+1);
	}

	nowdat.setYear(dat.getFullYear());
	nowdat.setMonth(p_m);
	nowdat.setDate('1');

	if ((dat.getMonth() == 1) && (dat.getDate() % 4 == 0)){
		Calendar.DOMonth[1] = 29;
		if (dat.getDate() % 100 == 0){
			Calendar.DOMonth[1] = 28;
			if (dat.getDate() % 400 == 0){
				Calendar.DOMonth[1] = 29;
			}
		}
	}

	vcode = "<html><head><title>Calendar</title></head>";
	vcode = vcode + "<script type=\"text/javascript\" language=\"javascript\">";
	vcode = vcode + "function day_check(p_box,p_box2,p_d){";
	vcode = vcode + "window.opener.document.calform[p_box+'_day'].options[p_d - 1].selected = true;";
	if( p_box2 != '' )
	{
		vcode = vcode + "if( eval(p_d)+1>"+Calendar.DOMonth[dat.getMonth()]+" ){";
		vcode = vcode + "if(window.opener.document.calform[p_box +'_month'].selectedIndex==11){";
		vcode = vcode + "window.opener.document.calform[p_box2 +'_month'].selectedIndex=0;";
		vcode = vcode + "}else{";
		vcode = vcode + "window.opener.document.calform[p_box2 +'_month'].selectedIndex=window.opener.document.calform[p_box +'_month'].selectedIndex+1;";
		vcode = vcode + "}";
		vcode = vcode + "window.opener.document.calform[p_box2 +'_day'].options[0].selected = true;";
		vcode = vcode + "}else{";
		vcode = vcode + "window.opener.document.calform[p_box2 +'_month'].selectedIndex=window.opener.document.calform[p_box +'_month'].selectedIndex;";
		vcode = vcode + "window.opener.document.calform[p_box2 +'_day'].options[p_d].selected = true;";
		vcode = vcode + "}";
	}
	vcode = vcode + "window.close()";
	vcode = vcode + "}";
	vcode = vcode + "</script>";
	vcode = vcode + "<body><center><table border=\"0\" bgcolor=\"#EEE8AA\"><tr><td align=\"center\" colspan=\"7\" bgcolor=\"#FAFAD2\">" + Calendar.Months[dat.getMonth()] + "&nbsp;" + dat.getFullYear() + "</td></tr>";
	vcode = vcode + "<tr>";
	for(i in Calendar.Weeks)
	{
		vcode = vcode + "<td align=\"center\" width=\"190\">" + Calendar.Weeks[i] + "</td>";
	}
	vcode = vcode + "</tr>";

	if (dat.getDay() != 0) {
		vcode = vcode + "<tr>";
	}
	for (i=0;i<dat.getDay();i++){
		vcode = vcode + "<td align=\"center\" bgcolor=\"#FFFFFF\">&nbsp;</TD>";
	}
	for(i=1;i<=Calendar.DOMonth[dat.getMonth()];i++)
	{
		nowdat.setDate(i);
		if (nowdat.getDay() == 0) {
			vcode = vcode + "<tr>";
		}
		vcode = vcode + "<td align=\"center\" bgcolor=\"#FFFFFF\"><a href=\"javascript:day_check('"+p_box+"','"+p_box2+"','" + i + "');\">" + i + "</td>";
		if (nowdat.getDay() == 6) {
			vcode = vcode + "</tr>";
		}
	}
	for (i = nowdat.getDay();i < 6;i++){
		vcode = vcode + "<td align=\"center\" bgcolor=\"#FFFFFF\">&nbsp;</TD>";
	}
	if (nowdat.getDay() != 6) {
		vcode = vcode + "</tr>";
	}

	vcode = vcode + "</table>";
	vcode = vcode + "<a href=\"javascript:void(self.close());\">Close</a>";
	vcode = vcode + "</center>";
	vcode = vcode + "</body></html>";
	vwincal.document.write(vcode);
	vwincal.document.close();
}

