var calLoaded = 0;

var monthArray = new Array(12);
monthArray[0]="JAN";
monthArray[1]="FEB";
monthArray[2]="MAR";
monthArray[3]="APR";
monthArray[4]="MAY";
monthArray[5]="JUN";
monthArray[6]="JUL";
monthArray[7]="AUG";
monthArray[8]="SEP";
monthArray[9]="OCT";
monthArray[10]="NOV";
monthArray[11]="DEC";

var daysArray = new Array(12);
daysArray[0]=31;
daysArray[1]=28;
daysArray[2]=31;
daysArray[3]=30;
daysArray[4]=31;
daysArray[5]=30;
daysArray[6]=31;
daysArray[7]=31;
daysArray[8]=30;
daysArray[9]=31;
daysArray[10]=30;
daysArray[11]=31;

var selMonth;
var selYear;
var selDay;
var selCell = 0;
var selObject;

function initCal()
{
	var selDate = new Date();
	selMonth = selDate.getMonth();
	selYear = selDate.getFullYear();
	selDay = selDate.getDate();
	createCal(selDay,selMonth,selYear);
}

function isLeapYear(year)
{
	return( 0==year%4 && ((year%100!=0)||(year%400==0)) );
}

function createCal(day,month,year)
{
	selMonth = month;
	selYear = year;
	selDay = day;
	var iDate = 1;
	var cell = 1;
	document.getElementById("monthName").innerHTML = monthArray[month];
	document.getElementById("yearName").innerHTML = year;
	var actualDays = daysArray[month];
	if(isLeapYear(year))
	{
		if(month==1)
		{
			actualDays++;
		}
	}
	if(selCell > 0)
	{
		document.getElementById("date"+selCell).style.backgroundColor="#FFFFFF";
		selDay=day;
	}
	for(var i=1;i<=6;i++)
	{
		for(var j=1;j<=7;j++)
		{
			if(i==1)
			{
				var iCal = new Date(year,month,iDate);
				if(iCal.getDay()==(j-1))
				{
					document.getElementById("date"+cell).innerHTML = iDate;
					document.getElementById("date"+cell).className = "dt";
					document.getElementById("date"+cell).onmouseover = mouseToPointer;
					document.getElementById("date"+cell).onmouseout = mouseToDefault;
					document.getElementById("date"+cell).onclick=selectDate;
					if(iDate == day)
					{
						document.getElementById("date"+cell).style.backgroundColor="#E4C133";
						selCell = cell;
					}
					iDate++;
				}
				else
				{
					document.getElementById("date"+cell).innerHTML = "<img src=\"calendar/blank.gif\" width=20 height=20>";
					document.getElementById("date"+cell).className = "ndt";
				}
			}
			else
			{
				if(iDate > actualDays)
				{
					document.getElementById("date"+cell).innerHTML = "<img src=\"calendar/blank.gif\" width=20 height=20>";
					document.getElementById("date"+cell).className = "ndt";
				}
				else
				{
					document.getElementById("date"+cell).innerHTML = iDate;
					document.getElementById("date"+cell).className = "dt";
					document.getElementById("date"+cell).onmouseover = mouseToPointer;
					document.getElementById("date"+cell).onmouseout = mouseToDefault;
					document.getElementById("date"+cell).onclick=selectDate;
					if(iDate == day)
					{
						document.getElementById("date"+cell).style.backgroundColor="#E4C133";
						selCell = cell;
					}
					iDate++;
				}
			}
			cell++;
		}
	}
}

function mouseToPointer()
{
	this.style.cursor = "pointer";
}
function mouseToDefault()
{
	this.style.cursor = "default";
}

function selectDate()
{
	selObject.value = ((selMonth+1)+"/"+this.innerHTML+"/"+selYear);
	parent.document.getElementById("CalFrame").style.display="none";
	parent.calLoaded = 0;
	
	var formCol = document.getElementsByTagName("select");
		
	for(var formIter = 0; formIter < formCol.length; formIter++)
	{
		formCol[formIter].style.visibility = "visible";
	}
}

function changeMonth(diff)
{
	selMonth+=diff;
	if(selMonth == -1)
	{
		selMonth = 11;
		selYear-=1;
	}
	else if(selMonth == 12)
	{
		selMonth = 0;
		selYear+=1;
	}
	createCal(selDay,selMonth,selYear);
}
		
function showHideCal(dateObj)
{
	var formCol = document.getElementsByTagName("select");
	if(!calLoaded)
	{
		var curDate = new Date(dateObj.value);
		if(isNaN(curDate))
			curDate = new Date();
		
		var selDay = curDate.getDate();
		var selMonth = curDate.getMonth();
		var selYear = curDate.getFullYear();
		
		var elemLeft=0;
		var elemTop=0;
		for(var p=dateObj; p&&p.tagName!='BODY'; p=p.offsetParent){
			elemLeft+=p.offsetLeft;
			elemTop+=p.offsetTop;
		}
		var elemHeight = dateObj.offsetHeight;
		var docHeight = document.getElementById("CalFrame").style.pixelHeight;
		var scrollTopDiff=document.body.scrollTop;
		document.getElementById("CalFrame").style.left = elemLeft + "px";
		if(elemTop-docHeight >= scrollTopDiff && elemTop+elemHeight+docHeight > document.body.clientHeight+scrollTopDiff)
			document.getElementById("CalFrame").style.top = (elemTop-docHeight)  + "px";
		else
			document.getElementById("CalFrame").style.top = (elemTop+elemHeight)  + "px";
		
		createCal(selDay,selMonth,selYear);
		
		document.getElementById("CalFrame").style.display="block";
		selObject = new Object(dateObj);
		calLoaded = 1;
		
		for(var formIter = 0; formIter < formCol.length; formIter++)
		{
			formCol[formIter].style.visibility = "hidden";
		}
	}
	else
	{
		document.getElementById("CalFrame").style.display="none";
		calLoaded = 0;
		
		for(var formIter = 0; formIter < formCol.length; formIter++)
		{
			formCol[formIter].style.visibility = "visible";
		}
	}
}