function cal_showDivDate(objname,month,year)
{
	
	// object name (user control prefix and name)
	var arrObjname = objname.split("_");
	var objDiv = document.all(arrObjname[0] + "_" + arrObjname[1] + "_div_" + arrObjname[2]);
	var objTbl = document.all(arrObjname[0] + "_" + arrObjname[1] + "_tbl_" + arrObjname[2])
	
	// show div (if the div isn't already opened)
	
	if (objDiv.style.display != 'block')
	{
		objDiv.style.display = 'block';
		objDiv.style.position = 'absolute';
		objDiv.style.left = event.x+8;
		objDiv.style.top = event.y+8;
	}

	// choose language
	var arrDays;
	var arrMonthes;
	var clear;
	var closeAlt;
	var strLang = CAL.LANG;
	var strCss	= CAL.CSS;
	
	arrDays = new Array(CAL.DAY_1,CAL.DAY_2,CAL.DAY_3,CAL.DAY_4,CAL.DAY_5,CAL.DAY_6,CAL.DAY_7);
	arrMonthes = new Array(CAL.MONTH_1,CAL.MONTH_2,CAL.MONTH_3,CAL.MONTH_4,CAL.MONTH_5,CAL.MONTH_6,CAL.MONTH_7,CAL.MONTH_8,CAL.MONTH_9,CAL.MONTH_10,CAL.MONTH_11,CAL.MONTH_12);
	clear = CAL.CLEAR;
	closeAlt = CAL.CLOSE_ALT;
	
	// number of table rows
	var linenumber = 0;
	
	// fix today date (when the user click on arrow and the month or the year is out of range)
	var today = new Date();
	month  = isNaN(month)?today.getMonth():month;
	year  = isNaN(year)?today.getYear():year;
			
	if (month == 12)
	{
		month = 0;
		year++;
	}
	else
	{
		if (month == -1)
		{
			month = 11;
			year--;
		}
	}
	
	var date1 = new Date(month+1 + "/1/" + year);
	var date2 = new Date(parseInt(month+2) + "/1/" + year)
	var dayInMonth = (date2-date1)/86400000;

	// delete old table
	while (objTbl.rows.length > 0)
	{
		objTbl.deleteRow(0); 
	}	
	
	// arrows
	var vRow = objTbl.insertRow(linenumber++);
	vRow.className = "cal-rows";
	
	var imgPrev = new Image();
	imgPrev.src = "../../Images/" + strCss + "." + strLang + "/calendar/prev.gif";
	imgPrev.alt="Prev";
	var imgNext = new Image();
	imgNext.src = "../../Images/" + strCss + "." + strLang + "/calendar/next.gif";
	imgNext.alt="Next";
	
	
	
	var vCell = vRow.insertCell(0);
	
	vCell.colSpan = 6;
	vCell.align = "center";
	vCell.className = "cal-cell-arrows";
	vCell.innerHTML = "<a class=cal-link-arrow style='cursor:hand;' onclick=javascript:cal_showDivDate('"+objname+"',"+parseInt(month-1)+","+year+")><img src='" + imgPrev.src + "' class='cal-prev' alt='prev'></a>&nbsp;" + arrMonthes[month] + " " + year + "&nbsp;<a class=cal-link-arrow href=# onclick=javascript:cal_showDivDate('"+objname+"',"+parseInt(month+1)+","+year+")><img src='" + imgNext.src + "' class='cal-next' alt='Next'></a>";
	vRow.className = "cal-rows";
	
	// clear
	/*var vCell = vRow.insertCell();
	vCell.align = "center";
	vCell.className = "cal-cell-clear";
	vCell.innerHTML = "<a class=cal-link-clear style='cursor:hand;' onclick=cal_selected('"+objname+"','clr')>" + clear + "</a>";*/

	// close
	var imgClose = new Image();
	imgClose.src = "../../Images/" + strCss + "." + strLang + "/calendar/close.gif";
	
	var vCell = vRow.insertCell(0);
	vCell.align = "center";
	vCell.className = "cal-cell-close";
	vCell.innerHTML = "<a class=cal-link-close style='cursor:hand;' title='" + closeAlt + "' onclick=javascript:cal_selected('"+objname+"','')><img src='" + imgClose.src + "' class='cal-close'></a>";
	
	// days name
	var vRow = objTbl.insertRow(linenumber++);
	vRow.className = "cal-rows";
	for (var i=0 ; i<7 ; i++)
	{
		var vCell = vRow.insertCell(0);
		vCell.className = "cal-cell-day-name";
		vCell.innerHTML = "<tt>"+arrDays[i]+"</tt>";
	}
	
	// first line
	month++;
	if (parseInt(month) < 10) 
	{
		var month = new String("0" + month);
	}	
	
	var vRow = objTbl.insertRow(linenumber++);
	vRow.className = "cal-rows";
	for (var i=0 ; i<date1.getDay() ; i++)
	{
		var vCell = vRow.insertCell(0);
		vCell.className = "cal-cell-empty";
		vCell.innerHTML = "&nbsp;";
	}
	
	for (var i=1 ; i<=parseInt(7-date1.getDay()) ; i++)
	{
		day = parseInt(i)<10?"0"+i:i; 
		
		// choose today
		var cellClass = "cal-cell-day-number";
		var linkClass = "cal-link-number";
		var currDate = new Date(year, month-1, day);
		if (today.toDateString() == currDate.toDateString())
		{
			cellClass = "cal-cell-today";
			linkClass = "cal-link-today";
		}
			
		var vCell = vRow.insertCell(0);
		vCell.className = cellClass;
		vCell.innerHTML = "<a class=" + linkClass + " style='cursor:hand;' onclick=javascript:cal_selected('"+objname+"','"+day+"/"+month+"/"+year+"')>"+i+"</a>";
	}
	
	// other lines
	while (i <= dayInMonth)
	{
		var vRow = objTbl.insertRow(linenumber++);
		vRow.className = "cal-rows";
		for (var j=0 ; j<7 ; j++)
		{
			day = parseInt(i)<10?"0"+i:i; 
			
			// choose today
			var cellClass = "cal-cell-day-number";
			var linkClass = "cal-link-number";
			var currDate = new Date(year, month-1, day);
			if (today.toDateString() == currDate.toDateString())
			{
				cellClass = "cal-cell-today";
				linkClass = "cal-link-today";
			}	
			
			var vCell = vRow.insertCell(0);
			vCell.className = cellClass;
							
			vCell.innerHTML = "<a class=" + linkClass + " style='cursor:hand;' onclick=javascript:cal_selected('"+objname+"','"+day+"/"+month+"/"+year+"')>"+i+"</a>";
			if (i++ == dayInMonth) break;
		}
	}
	
	for (j++ ; j<7 ; j++)
	{
		var vCell = vRow.insertCell(0);
		vCell.className = "cal-cell-empty";
		vCell.innerHTML = "&nbsp;";
	}
}	

function cal_selected(objname,selectedDate)
{
	// object name (user control prefix and name)
	var arrObjname = objname.split("_");
	var objDiv = document.all(arrObjname[0] + "_" + arrObjname[1] + "_div_" + arrObjname[2]);
	var objTbl = document.all(arrObjname[0] + "_" + arrObjname[1] + "_tbl_" + arrObjname[2])
	
	document.all[objname].value = selectedDate=="clr"?"":selectedDate!=""?selectedDate:document.all[objname].value;
	objDiv.style.display = 'none';
	
}

