function cCalendar(uid)
{

var id = uid;
var dte = new Date();
var day = dte.getDate();
var mth = dte.getMonth();
var yr = dte.getFullYear();

var calendarClass="";
var calendarHeaderClass="";
var calendarDayClass="";
var calendarTodayClass="";

var width = '600';
var height = '500';

var dayNames = new Array();
var monthNames = new Array();
var appointments = new Array();

dayNames[0] = 'Monday';
dayNames[1] = 'Tuesday';
dayNames[2] = 'Wednesday';
dayNames[3] = 'Thursday';
dayNames[4] = 'Friday';
dayNames[5] = 'Saturday';
dayNames[6] = 'Sunday';

monthNames[0] = 'January';
monthNames[1] = 'February';
monthNames[2] = 'March';
monthNames[3] = 'April';
monthNames[4] = 'May';
monthNames[5] = 'June';
monthNames[6] = 'July';
monthNames[7] = 'August';
monthNames[8] = 'September';
monthNames[9] = 'October';
monthNames[10] = 'November';
monthNames[11] = 'December';

this.className=fnClass;
this.headerClass=fnHeaderClass;
this.dayClass=fnDayClass;
this.todayClass=fnTodayClass;

this.width=fnWidth;
this.height=fnHeight;

this.Days = dayNames;
this.create = fnCreate;
this.buildCalendar = fnBuildCalendar;
this.months = fnMonths;

var dates = Array();

this.setDates = function(dtes)
{dates = dtes;}

function fnClass(cls)
{calendarClass=cls;}

function fnHeaderClass(cls)
{calendarHeaderClass=cls;}

function fnDayClass(cls)
{calendarDayClass=cls;}

function fnTodayClass(cls)
{calendarTodayClass=cls;}

function fnHeight(h)
{height = h;}

function fnWidth(w)
{width = w;}

function fnMonths(mths)
{dte = new Date(dte.getFullYear(),dte.getMonth()+mths,dte.getDate());
day = dte.getDate();
mth = dte.getMonth();
yr = dte.getFullYear();
fnBuildCalendar();
}

function setBooked()
{
for(var i=0;i<dates.length;i++)
{if(document.getElementById(dates[i]))
{document.getElementById(dates[i]).className='booked';}}
}

function fnCreate()
{document.write('<table style="width:' + width + 'px;height:' + height + 'px;">');
document.write('<tr>');
document.write('<td style="width:20px;height:20px;background-image:url(buttleft.gif);background-repeat:no-repeat;" onclick="'+id+'.months(-1);">&nbsp;</td>');
document.write('<td id="' + id + '_Date" align="center" style="width:' + (width - 40) + 'px;height:20px"></td>');
document.write('<td style="width:20px;height:20px;background-image:url(buttright.gif);background-repeat:no-repeat;" onclick="'+id+'.months(1)">&nbsp;</td>');
document.write('</tr>');
document.write('<tr>');
document.write('<td id="' + id + '_Calendar" colspan="3" style="height:' + (height - 20) + 'px"></td>');
document.write('</tr>');
document.write('</table>');
fnBuildCalendar();
}

function fnBuildCalendar()
{var cdr_cell = document.getElementById(id + '_Calendar');
var dte_cell = document.getElementById(id + '_Date');
dte_cell.innerHTML = monthNames[mth] + ' ' + yr;
if (!(cdr_cell.childNodes.length==0))
{cdr_cell.removeChild(cdr_cell.childNodes[0]);}

var tbl = document.createElement('table');
var tbod = document.createElement('tbody');

tbl.style.width= width + 'px';
tbl.style.height= (height - 20) + 'px';
tbl.width='500';
tbl.height='500';
tbl.className = calendarClass;
tbl.border='0';
tbl.cellSpacing='0';
tbl.cellPadding='0';

var showDate = false;
var dno = 1;
var hdr = document.createElement('tr');
for(var d = 0;d<7;d++)
	{var td = document.createElement('td');
	td.style.height = "20px";
	td.className=calendarHeaderClass;
	td.innerHTML = dayNames[d];
	hdr.appendChild(td);
	}

tbod.appendChild(hdr);

for (var w = 0;w<6;w++)
{var tr = document.createElement('tr');

	for(var d = 0;d<7;d++)
	{var td = document.createElement('td');
	td.className=calendarDayClass
	td.vAlign='top';
	td.style.height = (height/6) + 'px';
	td.style.width = (width/7) + 'px';
	if (firstDay(mth,yr)==d)
	{showDate=true;}
	if (showDate==true)
	{if (!(dno==daysInMonth(mth,yr)+1))
	{var dv = document.createElement('div');
	td.id = dno + "_" + mth + "_" + yr;
	dv.innerHTML = dno;
	//dv.style.position = 'relative';
	dv.style.left = '0px';
	dv.style.top = '0px';
	if(window.attachEvent)
	{td.attachEvent('onclick',function(e){var src;if(e.srcElement.tagName.toUpperCase()=='DIV'){src=e.srcElement.parentNode}else{src = e.srcElement;};setDate(src.id)});}
	else
	{td.addEventListener('click',function(e){var src;if(e.target.tagName.toUpperCase()=='DIV'){src=e.target.parentNode}else{src = e.target;};setDate(src.id)},false);}
	td.appendChild(dv);
	dno=dno+1;}}
	
	var dt = new Date();
	if (dt.getDate()+1==dno && dt.getMonth()==mth && dt.getFullYear()==yr)
	{td.className=calendarTodayClass;}
	tr.appendChild(td);
	}
tbod.appendChild(tr);
}

tbl.appendChild(tbod);

cdr_cell.appendChild(tbl);
setBooked();}


function daysInMonth(month,year) {
var dd = new Date(year, month+1, 0);
return dd.getDate();
} 

function firstDay(month,year)
{var dd = new Date(year, month, 0);
return dd.getDay();}

}
