var mstrTriggerKey = "+";
var placeHolder = "!!Calendar";

function buildCalendarDiv(strHoldingDiv, strPostfixDescriptor)
{
	var strContents ="";
	var intStartPos=-1;
	var strDivContent = document.all(strHoldingDiv).innerHTML;
	strContents+="<input type='text' class='dateInput'  name='txt" + strPostfixDescriptor + "' id='txt" + strPostfixDescriptor + "' size='20'      onkeypress=keyPressed('div" + strPostfixDescriptor + "');>";
	strContents+="<img class='calLink' name='img" + strPostfixDescriptor + "' id='img" + strPostfixDescriptor + "' src='/img/cal.gif' onclick=toggleCal('div" + strPostfixDescriptor + "');>";
	strContents+="<div style='display:none' id='div" + strPostfixDescriptor + "' name='div" + strPostfixDescriptor + "'></div>";

	intStartPos = strDivContent.indexOf(placeHolder); 
	if (intStartPos != -1)
	{
		strContents = strDivContent.substring(0, intStartPos) + strContents + strDivContent.substring(intStartPos + placeHolder.length, strDivContent.length);
		document.all(strHoldingDiv).innerHTML=strContents;
	}
	else
		document.all(strHoldingDiv).innerHTML+=strContents;

	document.all("div" + strPostfixDescriptor).style.position="absolute";
}

function keyPressed(strDivName)
{
	if (isTriggerKey())
		triggerKeyPressed(strDivName);
}

function triggerKeyPressed(divName)
{
	var strCtrlPostfix = divName.substring(3, divName.length);
	if (document.all("div" + strCtrlPostfix).style.display=="")
	{
		document.all("div" + strCtrlPostfix).style.display="none";
	}
	else
	{
		document.all("div" + strCtrlPostfix).style.display="";
		buildCalendar(event.srcElement.name, strCtrlPostfix);
	}
}

function toggleCal(divName)
{
	var strCtrlPostfix = divName.substring(3, divName.length);
	if (document.all("div" + strCtrlPostfix).style.display=="")
	{
		document.all("div" + strCtrlPostfix).style.display="none";
	}
	else
	{
		document.all("div" + strCtrlPostfix).style.display="";
		buildCalendar(event.srcElement.name, strCtrlPostfix);
	}
}

function toggleCaller()
{
	strCaller = event.srcElement.id;
	if(strCaller!="")
		if (document.all(strCaller).style.display=="")
			document.all(strCaller).style.display="none";
		else
			document.all(strCaller).style.display="";
}

function isTriggerKey()
{
	if (String.fromCharCode(event.keyCode) == mstrTriggerKey)
	{	
		event.keyCode=0;
		return true;
	}
	else
		return false;
}

function positionCalendar(strCtrlPostfix)
{

}

function buildCalendar(title, strCtrlPostfix)
{
	var strDateVal = "";
	getDate(document.all("txt" + strCtrlPostfix));
	strDateVal=document.all("txt" + strCtrlPostfix).value;
	document.all["div" + strCtrlPostfix].innerHTML="";
	document.all["div" + strCtrlPostfix].innerHTML=buildTable(title, strDateVal.substring(0, 2), strCtrlPostfix);
	positionCalendar(strCtrlPostfix);
	document.all["monthName" + strCtrlPostfix].innerText=getMonthDesc(document.all("txt" + strCtrlPostfix));
	document.all["year" + strCtrlPostfix].innerText=document.all("txt" + strCtrlPostfix).value.substring(6, 11);
}

function buildTable(title, strSelectedDay, strPostfix)
{
	var strTable="<table class='calTable' id='tbl" + strPostfix + "' name='tbl" + strPostfix + "'>";
	var intDays=0;
	var intWeeks=0;
	var strCellStyle="";
	var strDayNo="";
	var intFirstDay = getFirstDayOfMonth(document.all("txt" + strPostfix));
	var intLastDay = getLastDayOfMonth(document.all("txt" + strPostfix));	

	if (intFirstDay==-1) intFirstDay=0;

	strTable+=buildHeaderCells(strPostfix);

	if (strSelectedDay.charAt(0)=='0')
		strSelectedDay=strSelectedDay.substring(1,2);
	
	for (intWeeks=0;intWeeks<6;intWeeks++)
	{
		strTable+='<tr>';
		for (intDays=0;intDays<7;intDays++)
		{
			if (intDays>4)
				strCellStyle="'weekendCell'";
			else
				strCellStyle="'weekdayCell'";
	
			intDayNo=(intWeeks*7+intDays+1)-intFirstDay;
			strDayNo="" + intDayNo;
			if (strDayNo==strSelectedDay)
				strCellStyle="'selectedCell'";
			if (intDayNo>0 && intDayNo<=intLastDay)
			{
				strTable+="<td id='cel" + strPostfix + "' name='cel" + strPostfix + "' class=" + strCellStyle + " onclick='daySelected(" + strDayNo + ")'>";
				strTable+=strDayNo;
				strTable+="</td>";
			}
			else
				strTable+="<td class=" + strCellStyle + ">";	
		}
		strTable+='</tr>';
	}
	strTable+='</table>';
	return strTable;
}

function buildHeaderCells(strPostfix)
{
	var strHeader="";
	strHeader+="<tr class='yearCell'><td align='center'><img src='/img/prev_year.gif' onclick=subYear('" + strPostfix + "');></td><td colspan='5' align='center' id='year" + strPostfix + "' name='year" + strPostfix + "'></td><td align='center'><img src='/img/next_year.gif' onclick=addYear('" + strPostfix + "');></td></tr>";
	strHeader+="<tr class='monthCell'><td align='center'><img src='/img/prev.gif' onclick=subMonth('" + strPostfix + "');></td><td colspan='5'  align='center' id='monthName" + strPostfix + "' name='monthName" + strPostfix + "'></td><td align='center'><img src='/img/next.gif' onclick=addMonth('" + strPostfix + "');></td></tr>";
	strHeader+="<tr><td class='weekdayCell'>Mon</td><td class='weekdayCell'>Tue</td><td class='weekdayCell'>Wed</td><td class='weekdayCell'>Ths</td><td class='weekdayCell'>Fri</td><td class='weekendCell'>Sat</td><td class='weekendCell'>Sun</td></tr>";	
	return strHeader;
}

function daySelected(strDayNo)
{
	strPostfix = event.srcElement.id.substring(3, event.srcElement.id.length);
	document.all("div" + strPostfix).style.display="none";
	document.all("img" + strPostfix).style.display="";
	setDay(document.all("txt" + strPostfix), strDayNo);
	checkDate(document.all("txt" + strPostfix));
}

function rebuildTable(strPostfix)
{
	var ctrl = document.all("txt" + strPostfix);
	buildCalendar(ctrl.name,
			strPostfix);

}

function addYear(strPostfix)
{
	document.all("year" + strPostfix).innerText = nextYear(document.all("txt" + strPostfix))
	rebuildTable(strPostfix);
}

function subYear(strPostfix)
{
	document.all("year" + strPostfix).innerText = prevYear(document.all("txt" + strPostfix))
	rebuildTable(strPostfix);
}

function addMonth(strPostfix)
{
	document.all("monthName" + strPostfix).innerText = nextMonth(document.all("txt" + strPostfix))
	rebuildTable(strPostfix);
}

function subMonth(strPostfix)
{
	document.all("monthName" + strPostfix).innerText = prevMonth(document.all("txt" + strPostfix))
	rebuildTable(strPostfix);
}