//<!--

   cellWidth = 35
   cellHeight = 15
   normalBgColor = "#FFCCCC"
   normalFontColor = "#550055"
   selectedBgColor = "#FF0000"
   selectedFontColor = "#FF0000"
   datePickerColor = "#dddddd"
   var outputDateFormat;
   var outputDateField;
function DateSelection()
{
   setMouseTracker();
}
function showCalendar(pDate, pFormat, pField, pEvent)
{
   outputDateFormat=pFormat;
   outputDateField = pField;
   lDate = validateDate1 (pDate, false, pFormat, "yyyy-MM-dd", null)
   //If date is invalid assume a default date of 2000-01-01
   if (lDate == false)
   {
	lDate = new Date();
	var ldd = lDate.getDate() ;
	if(ldd.toString().length < 2) ldd = "0"+ldd;
	var lmm = lDate.getMonth() + 1;
	if(lmm.toString().length < 2) lmm = "0"+lmm;
	var lyy = lDate.getYear();
	var isNs = (navigator.appName == "Netscape");
	if(isNs)
	{
		lyy = lyy+1900;
	}	
	lDate = lyy+"-"+lmm+"-"+ldd;
   }

   lYear = lDate.substring(0,4);
   lMonth = lDate.substring(5, 7);
   lDay = lDate.substring(8);
   lIntYear = parseInt(lYear,10);
   lIntMonth = parseInt(lMonth,10);
   lIntDay = parseInt(lDay,10);
   lText = createCalendar(lIntYear,lIntMonth,lIntDay);

	if (document.all)
	{
	 pTop = window.pageY ;
	 pLeft = window.pageX ;
	}
	else if (document.layers)
	{
	 pTop = window.pageY;
	 pLeft = window.pageX;
	 if (pTop + (cellHeight * 10) > document.height) pTop = document.height - (cellHeight * 10) - 40;
	 if (pLeft + (cellWidth * 10) > document.width) pLeft = document.width - (cellWidth * 10) - 40;
	}

   tableWidth = (cellWidth * 7) + 16;
	if ((tableWidth + pLeft + 20) > screen.width)
		pLeft = pLeft-tableWidth;
//alert(pTop + " " +window.pageY + " " + document.body.scrollTop + " " +document.height + " " + screen.height);
   window2=open("","DatePicker",      "left="+pLeft+",top="+pTop+",scrollbars=no,dependent=yes,location=no,menubar=no,status=no,toolbar=no,titlebar=no,width="+tableWidth+",height=200");
   window2.document.open()  ;
   window2.document.writeln(lText);
   window2.document.close();
   window2.focus();

}

function createCalendar(pYear, pMonth, pDay)
{
   var lMonth;
   var lString;
   var lColumnCount;
   var lRowCount;
   var lDate;
   var lMonth;
   var lLayerName;
   var lLayer;
   var lLayerName;

   if (document.all) lLayer = "div"
   if (document.layers) lLayer = "div"

   lMonth = buildCalendar(pYear, pMonth-1);

   var tableWidth = (cellWidth * 7) + 16;
   lString = "<html><head>";
   lString += "<title>Date Picker</title>";
   lString += getJavaScript();
   lString += "</head><body bgcolor='"+datePickerColor+"' topmargin='0' leftmargin='0' marginwidth='0' marginheight='0'> ";
   lString += getYearMonthDivision(pYear, pMonth);
   lString += "<table border=1 cellpadding=0 cellspacing=0 width="+tableWidth+">"
   

   for (lRowCount = 0; lRowCount < 7; lRowCount++)
   {
      lString = lString + "<tr align=center>"
	  lTop = lRowCount * cellHeight;
      for (lColumnCount = 0; lColumnCount < 7; lColumnCount++)
	  {
	     lLeft = lColumnCount * cellWidth;
	     if (lRowCount > 0 )
		 {
	        lDate = lMonth[lRowCount][lColumnCount]
			if (document.all)
			{ 
				if (parseInt(lDate) > 0)
				{
				   lLayerName = "d" + lDate;
				   lString = lString + "<td height=\"" + cellHeight + "\" width =\"" + cellWidth + "\"><div id=" + lLayerName + " onClick=\"setDate("+ pYear + ", " + pMonth + ", " + lDate + ")\"" +
						  " onMouseOver = select(\"" + lLayerName + "\") onMouseOut=deselect(\"" + lLayerName + "\") color=" + selectedFontColor + " z-index=\"100\" top=\"" + lTop + "\" left=\"" + lLeft + "\">"
						  + "<font size=\"2\" face=\"Arial, Helvetica, sans-serif\">" + lDate + "</font></div></td>\n";
				}
				else
				{
				   lString = lString + "<td align=center height=\"" + cellHeight + "\" width =\"" + cellWidth + "\">&nbsp;</td>\n";
				}
			}
			else if ( document.layers)
			{
               if (parseInt(lDate) > 0)
		       {
	              lString = lString + "<td height=\"" + cellHeight + "\" width =\"" + cellWidth + "\"><" + lLayer + " id=" + lLayerName + " onClick=\"setDate("+ pYear + ", " + pMonth + ", " + lDate + ")\"" +
			             " onMouseOver =select(\"" + lLayerName + "\") onMouseOut=deselect(\"" + lLayerName + "\") color=#FFFFFF top=\"" + lTop + "\" left=\"" + lLeft + "\">"
			             + "<font size=\"2\" face=\"Arial, Helvetica, sans-serif\"><a href=\"#\" onClick=\"setDate("+ pYear + ", " + pMonth + ", " + lDate + ");return false;\"" +
			             " onMouseOver =select(\"" + lLayerName + "\") onMouseOut=deselect(\"" + lLayerName + "\")>" + lDate + "</a></font></" + lLayer + "></td>\n"
		       }
   		       else
		       {
	              lString = lString + "<td height=\"" + cellHeight + "\" width =\"" + cellWidth + "\"><" + lLayer + " id=" + lLayerName + " onClick=\"setDate("+ pYear + ", " + pMonth + ", " + lDate + ")\"" +
			                " onMouseOver =select(\"" + lLayerName + "\") onMouseOut=deselect(\"" + lLayerName + "\") color=#FFFFFF top=\"" + lTop + "\" left=\"" + lLeft + "\">"
			                + "<font size=\"2\" face=\"Arial, Helvetica, sans-serif\">&nbsp;</font></" + lLayer + "></td>\n"
		       }
			}
	     }
		 else
		 {
		    if (document.all)
			{
				lString = lString + "<td height=\"" + cellHeight + "\" width =\"" + cellWidth + "\">"+
						  "<font size=\"2\" face=\"Arial, Helvetica, sans-serif\">" + lMonth[lRowCount][lColumnCount] + "</td>\n"
		    }
			else if (document.layers)
			{
	           lString = lString + "<td height=\"" + cellHeight + "\" width =\"" + cellWidth + "\"><" + lLayer + " id=" + lLayerName + " onClick=\"setDate("+ pYear + ", " + pMonth + ", " + lDate + ")\"" +
			             " onMouseOver =select(\"" + lLayerName + "\") onMouseOut=deselect(\"" + lLayerName + "\") color=#FFFFFF top=\"" + lTop + "\" left=\"" + lLeft + "\">"
			             + "<font size=\"2\" face=\"Arial, Helvetica, sans-serif\">" + lMonth[lRowCount][lColumnCount] + "</font></" + lLayer + "></td>\n"
			}
		 }
      }
      lString = lString + "</tr>\n"
   }
   lString = lString + "</table>\n"
   lString += "</body></html>";
   return lString;
}

function buildCalendar(pYear, pMonth)
{
   var lMonth = new Array(6);
   lMonth[0] = new Array(7);
   lMonth[1] = new Array(7);
   lMonth[2] = new Array(7);
   lMonth[3] = new Array(7);
   lMonth[4] = new Array(7);
   lMonth[5] = new Array(7);
   lMonth[6] = new Array(7);

   var calDate = new Date(pYear, pMonth, 1);
   var dayOfFirst = calDate.getDay();
   var daysInMonth = getNumberOfDaysInMonth(pYear, pMonth);
   var day = 1
   var columnCount = 1
   var rowCount
   lMonth[0][0] = "Sun";
   lMonth[0][1] = "Mon";
   lMonth[0][2] = "Tue";
   lMonth[0][3] = "Wed";
   lMonth[0][4] = "Thu";
   lMonth[0][5] = "Fri";
   lMonth[0][6] = "Sat";

   for (columnCount = 0; columnCount < dayOfFirst; columnCount++)
   {
      lMonth[1][columnCount] = 0; 
   }

   for (columnCount = dayOfFirst; columnCount < 7; columnCount++)
   {
      lMonth[1][columnCount] = day++; 
   }

   for (rowCount = 2; rowCount < 7; rowCount++)
   {
      for (columnCount = 0; columnCount < 7; columnCount++)
	  {
	     if (day <= daysInMonth)
		 {
		    lMonth[rowCount][columnCount] = day;
			day = day + 1;
		 }
		 else lMonth[rowCount][columnCount] = 0;
	  }
   }
   return lMonth;
}


function getYearMonthDivision(pYear, pMonth)
{
   var lString;
   var tableWidth = (cellWidth * 7) + 16;

   lString = "<form name=\"yearMonth\" id=\"yearMonth\">\n"
   lString = lString + "<table border=1 width=" + tableWidth + " cellspacing=0 cellpadding=0>\n"
   lString = lString + "<tr height=15>\n<td width=50% align=center>\n"   
   lString = lString + "<input type=button value=&lt; onClick=decrease(document.yearMonth.year);create()>\n"
   lString = lString + "<input type=text name=\"year\" value=\""+pYear+"\" size=5 maxlength=4 onBlur=validateYearAndCreate()>\n"
   lString = lString + "<input type=button value=&gt; onClick=increase(document.yearMonth.year);create()>\n"
   lString = lString + "</td>\n<td width=50% align=center>\n"
   lString = lString + "<select name=\"month\" onChange=create()>\n"
   if (pMonth==1) selected=" selected"; else selected ="";
   lString = lString + "<option value=\"1\" label=\"January\" " + selected + ">January</option>\n"
   if (pMonth==2) selected=" selected"; else selected ="";
   lString = lString + "<option value=\"2\" label=\"February\"" + selected + ">February</option>\n"
   if (pMonth==3) selected=" selected"; else selected ="";
   lString = lString + "<option value=\"3\" label=\"March\"" + selected + ">March</option>\n"
   if (pMonth==4) selected=" selected"; else selected ="";
   lString = lString + "<option value=\"4\" label=\"April\"" + selected + ">April</option>\n"
   if (pMonth==5) selected=" selected"; else selected ="";
   lString = lString + "<option value=\"5\" label=\"May\"" + selected + ">May</option>\n"
   if (pMonth==6) selected=" selected"; else selected ="";
   lString = lString + "<option value=\"6\" label=\"June\"" + selected + ">June</option>\n"
   if (pMonth==7) selected=" selected"; else selected ="";
   lString = lString + "<option value=\"7\" label=\"July\"" + selected + ">July</option>\n"
   if (pMonth==8) selected=" selected"; else selected ="";
   lString = lString + "<option value=\"8\" label=\"August\"" + selected + ">August</option>\n"
   if (pMonth==9) selected=" selected"; else selected ="";
   lString = lString + "<option value=\"9\" label=\"September\"" + selected + ">September</option>\n"
   if (pMonth==10) selected=" selected"; else selected ="";
   lString = lString + "<option value=\"10\" label=\"October\"" + selected + ">October</option>\n"
   if (pMonth==11) selected=" selected"; else selected ="";
   lString = lString + "<option value=\"11\" label=\"November\"" + selected + ">November</option>\n"
   if (pMonth==12) selected=" selected"; else selected ="";
   lString = lString + "<option value=\"12\" label=\"December\"" + selected + ">December</option>\n"
   lString = lString + "</select>\n</td>\n</tr>\n</table>\n</form>\n"
   return lString;
}

function getJavaScript()
{
	lString = "\n<script language=javascript>";
	lString += "\nselectedBgColor = \""+selectedBgColor+"\"";
	lString += "\nselectedFontColor = \""+selectedFontColor+"\"";
	lString += "\nnormalBgColor = \""+normalBgColor+"\"";
	lString += "\nnormalFontColor = \""+normalFontColor+"\"";
	lString += "\nfunction decrease(pField){   pField.value = parseInt(pField.value) - 1; }";
	lString += "\nfunction increase(pField){   pField.value = parseInt(pField.value) + 1; }";
	lString += "\nfunction select(pLayer){     if (document.all)      eval(pLayer + \".style.color = '\" + selectedFontColor + \"'\"); }";
	lString += "\nfunction deselect(pLayer){   if (document.all)      eval(pLayer + \".style.color = '\" + normalFontColor + \"'\"); }";
	lString += "\nfunction create(){   lText=window.opener.createCalendar(document.yearMonth.year.value,document.yearMonth.month.selectedIndex+1); document.writeln(lText); document.close();}";
	lString += "\nfunction setDate(pYear, pMonth, pDay){   window.opener.setDate(pYear, pMonth, pDay); window.close();}";
	lString += "\nfunction validateYearAndCreate(){   lYear = window.opener.getYear(document.yearMonth.year.value);   if (lYear < 0) lYear = 2000;   document.yearMonth.year.value = lYear;   create();}";
	lString += "\n</script>";
	return lString;
}
function setDate(pYear, pMonth, pDay)
{
   outputDateField.value = formatDate(pYear, pMonth-1, pDay, 0, 0, 0, 0, "AM", outputDateFormat);
}

function setMouseTracker() {
    if (document.captureEvents) {
        document.captureEvents(Event.MOUSEMOVE);
    }
    document.onmousemove = mouseTracker;
}

function mouseTracker(e) {
    e = e || window.Event || window.event;
    window.pageX = e.pageX || e.clientX;
    window.pageY = e.pageY || e.clientY;
}
