function cal_showDivDate(objname, month, year)
{	
	// object name (user control prefix and name)
	var arrObjname = objname.split("_");
	var objDiv = document.getElementById(arrObjname[0] + "_" + arrObjname[1] + "_" + arrObjname[2] + "_" + arrObjname[3] + "_div_" + arrObjname[4]);
	var objTbl = document.getElementById(arrObjname[0] + "_" + arrObjname[1] + "_" + arrObjname[2] + "_" + arrObjname[3] + "_tbl_" + arrObjname[4])
	
	if (objDiv.style.display != 'block')
	{
		objDiv.style.display = 'block';
		objDiv.style.position = 'absolute';
		var sourceObj = document.getElementById(objname);
		var positionY = 0;
		var positionX = 0;
		if (navigator.appName == 'Microsoft Internet Explorer')
		{
		    positionX = window.event.x;
		    positionY = window.event.y;	
		    
		}
		else
		{
		    positionY = findPosY(sourceObj);
		    positionX = findPosX(sourceObj);		    
		}
				
		objDiv.style.left =positionX+1+'px'
		objDiv.style.top = positionY+16+'px';
	
	}
	
	// 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.getFullYear():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 = Math.round((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 = "<div class='float_inverse ar_side'><a class='cal-link-arrow' style='cursor:pointer;' onclick=javascript:cal_showDivDate('"+objname+"',"+parseInt(month+1)+","+year+")><img src='" + imgNext.src + "' class='cal-next'  title='Next'></a></div><div class='float_inverse event-calender-month-year'>" + arrMonthes[month] + "&nbsp;" + year + "</div><div class='float_inverse ar_inverse'><a class='cal-link-arrow' onclick=javascript:cal_showDivDate('"+objname+"',"+parseInt(month-1)+","+year+")><a class='cal-link-arrow' style='cursor:pointer;' onclick=javascript:cal_showDivDate('"+objname+"',"+parseInt(month-1)+","+year+")><img src='" + imgPrev.src + "' class='cal-prev' alt='prev'></a></div>";            
	
	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:pointer;' 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 = arrDays[i];
	}
	
	// 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-off";
		var linkClass = "cal-link-number";
		
		var currDate = new Date(year, month-1, day);
		
		var vCell = vRow.insertCell(0);
		if (today.toDateString() == currDate.toDateString())
		{
			cellClass = "cal-cell-today";
			linkClass = "cal-link-today";
		}else{
		    vCell.onmouseover = function(){this.className = 'cal-cell-day-number-on';}
		    vCell.onmouseout = function(){this.className = 'cal-cell-day-number-off';}
		}
		
		vCell.className = cellClass;
		vCell.innerHTML = "<a class=" + linkClass + " style='cursor:pointer;' 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-off";
			var linkClass = "cal-link-number";
			var currDate = new Date(year, month-1, day);
			var vCell = vRow.insertCell(0);
			if (today.toDateString() == currDate.toDateString())
			{
				cellClass = "cal-cell-today";
				linkClass = "cal-link-today";
			}else{
		        vCell.onmouseover = function(){this.className = 'cal-cell-day-number-on';}
		        vCell.onmouseout = function(){this.className = 'cal-cell-day-number-off';}
		    }	
			
			
			vCell.className = cellClass;
							
			vCell.innerHTML = "<a class=" + linkClass + " style='cursor:pointer;' 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.getElementById(arrObjname[0] + "_" + arrObjname[1] + "_" + arrObjname[2] + "_" + arrObjname[3] + "_div_" + arrObjname[4]);
	var objTbl = document.getElementById(arrObjname[0] + "_" + arrObjname[1] + "_" + arrObjname[2] + "_" + arrObjname[3] + "_tbl_" + arrObjname[4])
	
	document.getElementById(objname).value = selectedDate=="clr"?"":selectedDate!=""?selectedDate:document.getElementById(objname).value;
	objDiv.style.display = 'none';
	
}

function findPosX(obj)
{
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
}

function findPosY(obj)
{
   var curtop = 0;
   if(obj.offsetParent)
       while(1)
       {
         curtop += obj.offsetTop;
         if(!obj.offsetParent)
           break;
         obj = obj.offsetParent;
       }
   else if(obj.y)
       curtop += obj.y;
   return curtop;
}
function mouseX(evt) {
if (evt.pageX) return evt.pageX;
else if (evt.clientX)
   return evt.clientX + (document.documentElement.scrollLeft ?
   document.documentElement.scrollLeft :
   document.body.scrollLeft);
else return null;
}
function mouseY(evt) {
if (evt.pageY) return evt.pageY;
else if (evt.clientY)
   return evt.clientY + (document.documentElement.scrollTop ?
   document.documentElement.scrollTop :
   document.body.scrollTop);
else return null;
}