function maxDays(mm, yyyy) 
{
	var mDay;
	if((mm == 3) || (mm == 5) || (mm == 8) || (mm == 10))
	{
		mDay = 30;
	}
	else
	{
  		mDay = 31;
  		if(mm == 1)
  		{
   			if (yyyy/4 - parseInt(yyyy/4) != 0)
   			{
   				mDay = 28;
   			}
		   	else
		   	{
   				mDay = 29;
  			}
		}
	}
	return mDay;
}

function changeBg(prefix,f,lblDate,id)
{
	var now = new Date;
	var dd = now.getDate();
	var mm = now.getMonth();
	var yyyy = now.getFullYear();
	var currM = parseInt(document.getElementById(prefix+"selMonth").value);
	var currStrM = document.getElementById(prefix+"selMonth").options[document.getElementById(prefix+"selMonth").selectedIndex].text;
	var currY = parseInt(document.getElementById(prefix+"selYear").value);
	var currD = parseInt(document.getElementById(id).innerHTML);
	var textLen = prefix.length + 2;
	var currID = parseInt(id.substring(textLen));
	var updateCal = 0;
	
	var tmpSelectedID = document.getElementById(prefix+"hidSelectedID").value;
	
	if ((currID<7)&&(currD>20))
	{
		if (currM==0)	// january
		{
			if (currY==2005)	// cannot be adjusted
				return;
			else
			{
				currM=11;	// december
				currY--;
				document.getElementById(prefix+"selYear").selectedIndex = currY;
			}
		}
		else
			currM--;
		
		document.getElementById(prefix+"selMonth").selectedIndex = currM;
		currStrM = document.getElementById(prefix+"selMonth").options[currM].text;
		updateCal = 1;
	}
	else if ((currID>27)&&(currD<20))
	{
		if (currM==11)	// december
		{
			if (currY==2006)	// cannot be adjusted
				return;
			else
			{
				currM=0;	// january
				currY++;
				document.getElementById(prefix+"selYear").selectedIndex = currY;
			}
		}
		else
			currM++;
		
		document.getElementById(prefix+"selMonth").selectedIndex = currM;
		currStrM = document.getElementById(prefix+"selMonth").options[currM].text;
		updateCal = 1;
	}
	
	if (updateCal == 0)
	{
		if (document.getElementById(prefix+"hidSelectedID").value != "-1")
		{
			document.getElementById("td" + tmpSelectedID).className = "dayNone";
		}
		if ((dd==currD)&&(mm==currM)&&(yyyy==currY)) {
			document.getElementById("td" + id).className = "dayToday";
		} else {
			document.getElementById("td" + id).className = "daySel";
		}
	}
	
	document.getElementById(prefix+"hidSelectedID").value = id;
	document.getElementById(prefix+"hidSelectedD").value = currD;
	document.getElementById(prefix+"hidSelectedM").value = currM;
	document.getElementById(prefix+"hidSelectedY").value = currY;	
	
	if ("" + document.getElementById(lblDate)=="undefined")
		document.getElementById(lblDate).innerHTML = "" + currD + " " + currStrM + " " + currY;
	else
		document.getElementById(lblDate).value = "" + currD + " " + currStrM + " " + currY;	
	
	if (updateCal == 1) changeCal(prefix,f,lblDate);

	/* update the combo box only if the calendar (this) is active */
	if ((document.getElementById('cal1').className == 'calOn') || (document.getElementById('cal1').className == 'calOn2')) {
		document.getElementById('bd1_days').selectedIndex = currD-1;
		document.getElementById('bd1_months').selectedIndex = currM;
		document.getElementById('bd1_years').selectedIndex = currY-document.getElementById('bd1_years').options[0].value;
	}
	

}

function writeCalendar(prefix, f, lblDate)
{
	//var now = new Date;
	var now;
	if ("" + document.getElementById(lblDate)=="undefined")
		now = new Date(document.getElementById(lblDate).innerHTML);
	else
		now = new Date(document.getElementById(lblDate).value);
	var dd = now.getDate();
	var mm = now.getMonth();
	var dow = now.getDay();
	var yyyy = now.getFullYear();
	var arrM = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	var arrY = new Array();	
	
	for (ii=0;ii<=3;ii++)
	{
		arrY[ii] = yyyy + ii;
	}

	var arrD = new Array("Su","M","Tu","W","Th","F","Sa");

	var text = "";

	text += "<table border=0 cellSpacing=0 cellPadding=0 class=tblCal>";
	text += "<tr><td>";
	text += "<table width=100% cellSpacing=0 cellPadding=0><tr>";
	text += "<td align=left>";
	text += "<select id=" + prefix + "selMonth name=" + prefix + "selMonth onChange='changeCal(\"" + prefix + "\",document." + f.name + ",\"" + lblDate + "\")'>";

	for (ii=0;ii<=11;ii++)
	{
		if (ii==mm)
		{
			text += "<option value= " + ii + " Selected>" + arrM[ii] + "</option>";
		}
		else
		{
			text += "<option value= " + ii + ">" + arrM[ii] + "</option>";
		}
	}
	
	text += "</select>";
	text += "</td>";
	text += "<td align=right class=selCol>";
	text += "<select id=" + prefix + "selYear name=" + prefix + "selYear onChange='changeCal(\"" + prefix + "\",document." + f.name + ",\"" + lblDate + "\")'>";
	
	for (ii=0;ii<=3;ii++)
	{
		if (ii==0)
		{
			text += "<option value= " + arrY[ii] + " Selected>" + arrY[ii] + "</option>";
		}
		else
		{
			text += "<option value= " + arrY[ii] + ">" + arrY[ii] + "</option>";
		}
	}
	
	text += "</select>";
	text += "</td>";
	text += "</tr></table>";
	text += "</td></tr>";
	text += "<tr><td>";
	text += "<table border=0 cellspacing=0 cellpadding=0 class=tblCalDays>";
	text += "<tr class=dayRow>";
	
	for (ii=0;ii<=6;ii++)
	{
		text += "<td class=dayCol align=center><span>" + arrD[ii] + "</span></td>";
	}
	text += "</tr>";
	aa = 0;
	
	for (kk=0;kk<=5;kk++)
	{
		text += "<tr>";
		for (ii=0;ii<=6;ii++)
		{
			text += "<td class=dayNone id=td" + prefix + "sp" + aa + " align=center style='width:25px;height:20px;'><span id=" + prefix + "sp" + aa + " onClick='changeBg(\"" + prefix + "\",document." + f.name + ",\"" + lblDate + "\",this.id)'>1</span></td>";
			aa += 1;
		}
		text += "</tr>";
	}
	
	text += "</table>";
	
	text += "<INPUT type='hidden' id='" + prefix + "hidSelectedID' value='-1'>";
	text += "<INPUT type='hidden' id='" + prefix + "hidSelectedM' value='" + mm + "'>";
	text += "<INPUT type='hidden' id='" + prefix + "hidSelectedD' value='" + dd + "'>";
	text += "<INPUT type='hidden' id='" + prefix + "hidSelectedY' value='" + yyyy + "'>";
	
	text += "</td></tr>";
	text += "<tr><td align=center><a href='javascript:showDate()'>[ CLOSE ]</a></td></tr>";
	text += "</table>";
	document.write(text);
		
	changeCal(prefix,f,lblDate);
}

function changeCal(prefix,f,lblDate)
{
	var now = new Date;
	var dd = now.getDate();
	var mm = now.getMonth();
	var dow = now.getDay();
	var yyyy = now.getFullYear();
	var currM = parseInt(document.getElementById(prefix+"selMonth").value);
	var prevM;
	
	var tempSelectedD = parseInt(document.getElementById(prefix+"hidSelectedD").value);
	var tempSelectedM = parseInt(document.getElementById(prefix+"hidSelectedM").value);
	var tempSelectedY = parseInt(document.getElementById(prefix+"hidSelectedY").value);

	if (currM!=0)
	{
		prevM = currM - 1;
	}
	else
	{
		prevM = 11;
	}
	
	var currY = parseInt(document.getElementById(prefix+"selYear").value);
	var mmyyyy = new Date();
	mmyyyy.setFullYear(currY);
	mmyyyy.setMonth(currM);
	mmyyyy.setDate(1);
	var day1 = mmyyyy.getDay();
	
	if (day1 == 0)
	{
		day1 = 7;
	}
	
	var arrN = new Array(41);
	var aa;
	
	for (ii=0;ii<day1;ii++)
	{
		arrN[ii] = maxDays((prevM),currY) - day1 + ii + 1;
	}
	
	aa = 1;
	
	for (ii=day1;ii<=day1+maxDays(currM,currY)-1;ii++)
	{
		arrN[ii] = aa;
		aa += 1;
	}
	
	aa = 1;
	
	for (ii=day1+maxDays(currM,currY);ii<=41;ii++)
	{
		arrN[ii] = aa;
		aa += 1;
	}
	
	for (ii=0;ii<=41;ii++)
	{
		document.getElementById("td" + prefix+"sp"+ii).className = "dayNone";
	}

	var dCount = 0;
	
	for (ii=0;ii<=41;ii++)
	{
		if (((ii<7)&&(arrN[ii]>20))||((ii>27)&&(arrN[ii]<20)))
		{
			document.getElementById(prefix+"sp"+ii).innerHTML = arrN[ii];
			document.getElementById(prefix+"sp"+ii).className = "dayOther";
		}
		else
		{
			document.getElementById(prefix+"sp"+ii).innerHTML = arrN[ii];
			if ((dCount==0)||(dCount==6))
			{
				document.getElementById(prefix+"sp"+ii).className = "dayWeekend";
			}
			else
			{
				document.getElementById(prefix+"sp"+ii).className = "dayWeekday";
			}
			
			if (tempSelectedD==-1)
			{
				if ((arrN[ii]==dd)&&(mm==currM)&&(yyyy==currY))
				{
					changeBg(prefix,f,lblDate,prefix+"sp"+ii);
				}
			}
			else
			{
				if ((arrN[ii]==tempSelectedD)&&(currM==tempSelectedM)&&(currY==tempSelectedY))
				{
					changeBg(prefix,f,lblDate,prefix+"sp"+ii);
				}
			}
		}
		
		dCount += 1;
		
		if (dCount>6)
		{
			dCount=0;
		}
	}
}

