//copyright © Keith Trotter.  All rights reserved

function writecal(target,restriction,instanceID,startYear)
{
	document.writeln("<input type='hidden' name='input_target' id='input_target"+instanceID+"' value='"+target+"'/><input type='hidden' name='date_restriction' id='date_restriction"+instanceID+"' value='"+restriction+"'/><input type='hidden' name='month_num' id='month_num"+instanceID+"' value=''/><span style='cursor: pointer;' onclick='javascript:showcal(event,\""+instanceID+"\",\""+startYear+"\")'><img height='16' width='16' src='tennistent/images/cal.ico' alt='Calendar' style='border-style: none; vertical-align: bottom;'/></span><span style='position: absolute; float: none;'><!--[if IE]> <iframe src='javascript:false' id='cal_iframe"+instanceID+"' style='z-index: 2; display: none; position: absolute; width: 179px; height: 149px;' frameborder='0'></iframe> <![endif]--><div id='cal_div"+instanceID+"' style='z-index: 3; display: none; position: absolute; background-color: white; border: thin solid black; width: 175px; height: 145px;'><table cellpadding='0' cellspacing='0' style='width: 100%; font-size: 11px; text-align: center;'><tr style='background-color: #FFEBCD;'><td rowspan='2' style='width: 16px; vertical-align: top;'><img src='tennistent/images/racquet16X32.ico' alt=''/></td><td style='text-align: center;'><span onclick='javascript:yeardown(10,\""+instanceID+"\")'><img src='tennistent/images/cal_minus_10.gif' alt='' style='border-style: none; cursor: pointer;'/></span>&nbsp;&nbsp;<span onclick='javascript:yeardown(1,\""+instanceID+"\")'><img src='tennistent/images/cal_minus_1.gif' alt='' style='border-style: none; cursor: pointer;'/></span>&nbsp;&nbsp;<span id='year_val"+instanceID+"'  style='font-family: monospace; vertical-align: top;'></span>&nbsp;&nbsp;<span onclick='javascript:yearup(1,\""+instanceID+"\")'><img src='tennistent/images/cal_plus_1.gif' alt='' style='border-style: none; cursor: pointer;'/></span>&nbsp;&nbsp;<span  onclick='javascript:yearup(10,\""+instanceID+"\")'><img src='tennistent/images/cal_plus_10.gif' alt='' style='border-style: none; cursor: pointer;'/></span></td><td style='width: 16px; vertical-align: top;'><span style='color: black; '  onclick='javascript:hidecal(\""+instanceID+"\")'><img src='tennistent/images/cal_ball_exit.ico' alt='' style='border-style: none; cursor: pointer;'/></span></td></tr><tr  style='background-color: #FFEBCD;'><td style='text-align: center;'><span onclick='javascript:monthdown(\""+instanceID+"\")'><img src='tennistent/images/cal_arrow_left.gif' alt='' style='border-style: none; cursor: pointer;'/></span>&nbsp;&nbsp;<span id='month_val"+instanceID+"' style='font-family: monospace; vertical-align: top;'></span>&nbsp;&nbsp;<span onclick='javascript:monthup(\""+instanceID+"\")'><img src='tennistent/images/cal_arrow_right.gif' alt='' style='border-style: none; cursor: pointer;'/></span></td><td></td></tr><tr><td colspan='3' style='text-align: center;'><table cellpadding='0' cellspacing='0' style='width: 100%;'><tr><td style='border-top: thin solid black; text-align: center; font-family: monospace;'>S</td><td style='border-top: thin solid black; text-align: center; font-family: monospace;'>M</td><td style='border-top: thin solid black; text-align: center; font-family: monospace;'>T</td><td style='border-top: thin solid black; text-align: center; font-family: monospace;'>W</td><td style='border-top: thin solid black; text-align: center; font-family: monospace;'>T</td><td style='border-top: thin solid black; text-align: center; font-family: monospace;'>F</td><td style='border-top: thin solid black; text-align: center; font-family: monospace;'>S</td></tr><tr><td id='cal_d1"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d2"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d3"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d4"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d5"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d6"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d7"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td></tr><tr><td id='cal_d8"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d9"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d10"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d11"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d12"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d13"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d14"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td></tr><tr><td id='cal_d15"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d16"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d17"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d18"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d19"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d20"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d21"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td></tr><tr><td id='cal_d22"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d23"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d24"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d25"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d26"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d27"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d28"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td></tr><tr><td id='cal_d29"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d30"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d31"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d32"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d33"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d34"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d35"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td></tr><tr><td id='cal_d36"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d37"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d38"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d39"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d40"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d41"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td><td id='cal_d42"+instanceID+"' style='text-align: center; font-family: monospace;'>&nbsp;</td></tr></table></td></tr></table></div></span>");
}
function showcal(cal_event,instanceID,startYear)
{
	var d = new Date();
	var months=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

	ev=cal_event;
	scrheight=window.innerHeight||document.body.offsetHeight;
	scrwidth=document.body.offsetWidth;

	if((Number(ev.clientX)+175)<=Number(scrwidth))
	{
		tmp="0px";
		document.getElementById('cal_div'+instanceID).style.left=tmp;
		if(document.getElementById('cal_iframe'+instanceID)!=null) document.getElementById('cal_iframe'+instanceID).style.left=tmp;
	}
	else
	{
		tmp="-191px";
		document.getElementById('cal_div'+instanceID).style.left=tmp;
		if(document.getElementById('cal_iframe'+instanceID)!=null) document.getElementById('cal_iframe'+instanceID).style.left=tmp;
	}

	if((Number(ev.clientY)+145)<=Number(scrheight))
	{
		tmp="16px";
		document.getElementById('cal_div'+instanceID).style.top=tmp;
		if(document.getElementById('cal_iframe'+instanceID)!=null) document.getElementById('cal_iframe'+instanceID).style.top=tmp;
	}
	else
	{
		tmp="-145px";
		document.getElementById('cal_div'+instanceID).style.top=tmp;
		if(document.getElementById('cal_iframe'+instanceID)!=null) document.getElementById('cal_iframe'+instanceID).style.top=tmp;
	}


	document.getElementById('cal_div'+instanceID).style.display='inline';
	if(document.getElementById('cal_iframe'+instanceID)!=null) document.getElementById('cal_iframe'+instanceID).style.display='inline';

	if(document.getElementById(document.getElementById('input_target'+instanceID).value).value.match(/^(0[1-9]|1[012])[/](0[1-9]|[12][0-9]|3[01])[/](18|19|20)[0-9]{2}$/))
	{
		date_parts=document.getElementById(document.getElementById('input_target'+instanceID).value).value.split("/",3);

		if(d.getMonth()<9) cm="0"+(d.getMonth()+1);
		else  cm=d.getMonth();
		var user_date=date_parts[2]+"-"+date_parts[0];
		var current=d.getFullYear()+"-"+cm;
		if(user_date<current && document.getElementById('date_restriction'+instanceID).value=='future')
		{
			document.getElementById('year_val'+instanceID).innerHTML=d.getFullYear();
			document.getElementById('month_val'+instanceID).innerHTML=months[d.getMonth()];
			document.getElementById('month_num'+instanceID).value=d.getMonth();
		}
		else if(user_date>current && document.getElementById('date_restriction'+instanceID).value=='past')
		{
			document.getElementById('year_val'+instanceID).innerHTML=d.getFullYear();
			document.getElementById('month_val'+instanceID).innerHTML=months[d.getMonth()];
			document.getElementById('month_num'+instanceID).value=d.getMonth();
		}
		else
		{
			document.getElementById('year_val'+instanceID).innerHTML=date_parts[2];
			document.getElementById('month_val'+instanceID).innerHTML=months[Number(date_parts[0])-1];
			document.getElementById('month_num'+instanceID).value=(Number(date_parts[0])-1);
		}
	}
	else if(startYear.length>0 && document.getElementById(startYear).value.match(/^(0[1-9]|1[012])[/](0[1-9]|[12][0-9]|3[01])[/](18|19|20)[0-9]{2}$/))
	{
		date_parts=document.getElementById(startYear).value.split("/",3);

		if(d.getMonth()<9) cm="0"+(d.getMonth()+1);
		else  cm=d.getMonth();
		var user_date=date_parts[2]+"-"+date_parts[0];
		var current=d.getFullYear()+"-"+cm;
		if(user_date<current && document.getElementById('date_restriction'+instanceID).value=='future')
		{
			document.getElementById('year_val'+instanceID).innerHTML=d.getFullYear();
			document.getElementById('month_val'+instanceID).innerHTML=months[d.getMonth()];
			document.getElementById('month_num'+instanceID).value=d.getMonth();
		}
		else if(user_date>current && document.getElementById('date_restriction'+instanceID).value=='past')
		{
			document.getElementById('year_val'+instanceID).innerHTML=d.getFullYear();
			document.getElementById('month_val'+instanceID).innerHTML=months[d.getMonth()];
			document.getElementById('month_num'+instanceID).value=d.getMonth();
		}
		else
		{
			document.getElementById('year_val'+instanceID).innerHTML=date_parts[2];
			document.getElementById('month_val'+instanceID).innerHTML=months[Number(date_parts[0])-1];
			document.getElementById('month_num'+instanceID).value=(Number(date_parts[0])-1);
		}
	}
	else
	{
		document.getElementById('year_val'+instanceID).innerHTML=d.getFullYear();
		document.getElementById('month_val'+instanceID).innerHTML=months[d.getMonth()];
		document.getElementById('month_num'+instanceID).value=d.getMonth();
	}

drawdays(document.getElementById('year_val'+instanceID).innerHTML,document.getElementById('month_val'+instanceID).innerHTML,instanceID);
}

function hidecal(instanceID)
{
	document.getElementById('cal_div'+instanceID).style.display='none';
	if(document.getElementById('cal_iframe'+instanceID)!=null) document.getElementById('cal_iframe'+instanceID).style.display='none';
}

function yeardown(num,instanceID)
{
	var d = new Date();
	var months=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

	cy=document.getElementById('year_val'+instanceID).innerHTML;

	if(document.getElementById('date_restriction'+instanceID).value=='future')
	{
		if(d.getFullYear()<=(Number(cy)-Number(num)))
			{
				document.getElementById('year_val'+instanceID).innerHTML=Number(cy)-Number(num);

				if(d.getFullYear()==(Number(cy)-Number(num)) && d.getMonth()>document.getElementById('month_num'+instanceID).value)
				{
					document.getElementById('month_num'+instanceID).value=d.getMonth();
					document.getElementById('month_val'+instanceID).innerHTML=months[Number(document.getElementById('month_num'+instanceID).value)];
				}
			}
	}
	else if((Number(cy)-Number(num))>=1800)
	{
		document.getElementById('year_val'+instanceID).innerHTML=Number(cy)-Number(num);
	}
	
	
	drawdays(document.getElementById('year_val'+instanceID).innerHTML,document.getElementById('month_val'+instanceID).innerHTML,instanceID);
}

function yearup(num,instanceID)
{
	var d = new Date();
	var months=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

	cy=document.getElementById('year_val'+instanceID).innerHTML;
	
	if(document.getElementById('date_restriction'+instanceID).value=='past')
	{
		if(d.getFullYear()>=(Number(cy)+Number(num)))
		{
			document.getElementById('year_val'+instanceID).innerHTML=Number(cy)+Number(num);

			if(d.getFullYear()==(Number(cy)+Number(num)) && d.getMonth()<document.getElementById('month_num'+instanceID).value)
			{
				document.getElementById('month_num'+instanceID).value=d.getMonth();
				document.getElementById('month_val'+instanceID).innerHTML=months[Number(document.getElementById('month_num'+instanceID).value)];
			}
		}
	}
	else if((Number(cy)+Number(num))<=2099)
	{
		 document.getElementById('year_val'+instanceID).innerHTML=Number(cy)+Number(num);
	}
	
	
	drawdays(document.getElementById('year_val'+instanceID).innerHTML,document.getElementById('month_val'+instanceID).innerHTML,instanceID);
}

function monthup(instanceID)
{
	var d = new Date();
	var months=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

	mn=document.getElementById('month_num'+instanceID).value;

	if(document.getElementById('date_restriction'+instanceID).value=='past' && d.getFullYear()==document.getElementById('year_val'+instanceID).innerHTML)
	{
		if((Number(document.getElementById('month_num'+instanceID).value)+1)<=d.getMonth())
		{
			document.getElementById('month_val'+instanceID).innerHTML=months[Number(mn)+1];
			document.getElementById('month_num'+instanceID).value=Number(mn)+Number(1);
		}
	}
	else if(Number(mn)==11 && Number(document.getElementById('year_val'+instanceID).innerHTML)<2099)
	{
		document.getElementById('month_val'+instanceID).innerHTML="Jan";
		document.getElementById('month_num'+instanceID).value="0";
		document.getElementById('year_val'+instanceID).innerHTML=Number(document.getElementById('year_val'+instanceID).innerHTML)+1;
	}
	else if(Number(mn)!=11)
	{
		document.getElementById('month_val'+instanceID).innerHTML=months[Number(mn)+1];
		document.getElementById('month_num'+instanceID).value=Number(mn)+Number(1);
	}

	drawdays(document.getElementById('year_val'+instanceID).innerHTML,document.getElementById('month_val'+instanceID).innerHTML,instanceID);
}

function monthdown(instanceID)
{
	var d = new Date();
	var months=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

	mn=document.getElementById('month_num'+instanceID).value;

	if(document.getElementById('date_restriction'+instanceID).value=='future' && d.getFullYear()==document.getElementById('year_val'+instanceID).innerHTML)
	{
		if((Number(document.getElementById('month_num'+instanceID).value)-1)>=d.getMonth())
		{
			document.getElementById('month_val'+instanceID).innerHTML=months[Number(mn)-1];
			document.getElementById('month_num'+instanceID).value=Number(mn)-Number(1);
		}
	}
	else if(Number(mn)==0 && Number(document.getElementById('year_val'+instanceID).innerHTML)>1800)
	{
		document.getElementById('month_val'+instanceID).innerHTML="Dec";
		document.getElementById('month_num'+instanceID).value="11";
		document.getElementById('year_val'+instanceID).innerHTML=Number(document.getElementById('year_val'+instanceID).innerHTML)-1;
	}
	else  if(Number(mn)!=0)
	{
		document.getElementById('month_val'+instanceID).innerHTML=months[Number(mn)-1];
		document.getElementById('month_num'+instanceID).value=Number(mn)-Number(1);
	}
	drawdays(document.getElementById('year_val'+instanceID).innerHTML,document.getElementById('month_val'+instanceID).innerHTML,instanceID);
}

function drawdays(year,month,instanceID)
{
	var months=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	var days_in_month=new Array("31","28","31","30","31","30","31","31","30","31","30","31");
	var d = new Date();

	mn=document.getElementById('month_num'+instanceID).value;
	d.setDate(1);
		
	d.setMonth(Number(mn));
	d.setFullYear(Number(year));

	if(Number(mn)==1)
	{
		if(Number(year)%4==0)
		{
			if(Number(year)%100==0 && Number(year)%400==0)
			{
				days=29;
			}
			else if(Number(year)%100==0)
			{
				days=28;
			}
			else days=29;
		}
		else
		{
			days=28;
		}
	}
	else
	{
		days=days_in_month[Number(mn)];
	}

	for(cell=1;cell<=42;cell++)
	{
		tmp="cal_d"+Number(cell)+instanceID;
		document.getElementById(tmp).innerHTML="";
	}

	var d2 = new Date();
	mn=Number(mn)+1;
	if(Number(mn)<10) mn="0"+mn;
	for(cell=1;cell<=Number(days);cell++)
	{
		day=cell;
		if(Number(day)<10) day="0"+day;
		tmp="cal_d"+Number(d.getDay()+cell)+instanceID;
		if(document.getElementById('date_restriction'+instanceID).value=='past' &&
			d2.getFullYear()==document.getElementById('year_val'+instanceID).innerHTML &&
			d2.getMonth()==document.getElementById('month_num'+instanceID).value &&
			d2.getDate()<cell)
		{
		document.getElementById(tmp).style.color='gray';
		document.getElementById(tmp).innerHTML=cell;
		}
		else if(document.getElementById('date_restriction'+instanceID).value=='future' &&
			d2.getFullYear()==document.getElementById('year_val'+instanceID).innerHTML &&
			d2.getMonth()==document.getElementById('month_num'+instanceID).value &&
			d2.getDate()>cell)
		{
		document.getElementById(tmp).style.color='gray';
		document.getElementById(tmp).innerHTML=cell;
		}
		else
		{
		if(Number(cell)<10) a_space='&nbsp;';
		else a_space='';
		document.getElementById(tmp).innerHTML="<span  onmouseout='javascript:cal_mouseout(this)' onmouseover='javascript:cal_mouseover(this)' style='color: blue; cursor: pointer;' onclick=\"javascript:populatedate('"+mn+"/"+day+"/"+year+"','"+instanceID+"')\">"+a_space+cell+"</span>";
		}
	}
}

function populatedate(date,instanceID)
{
	document.getElementById(document.getElementById('input_target'+instanceID).value).value=date;
	hidecal(instanceID);
}

function cal_mouseover(e)
{
	e.style.backgroundColor='#FFEBCD';
}

function cal_mouseout(e)
{
	e.style.backgroundColor='white';
}