//========================= Begin Calendar Code ================================
/*
	 
 	The calendar is activated by clicking on a button.
	In order for this to work, a Text field must be associated to the calendar "control"
	by placing the button immediately after (to the right) of the text field.
	For example:
   
			<input type='text' value='3/12/2003'>
			<input type='button' value='...' onclick='cal_showCalendar(this,'EN');'>

	
*/

//===== Start of Global Values ========
var cal_dteToday = new Date();	//if blank, will show today's date
var cal_intDD = cal_dteToday.getDate();		//Integer day value
var cal_intMM = cal_dteToday.getMonth() + 1;	//Integer Month value
var cal_intYYYY = cal_dteToday.getYear();	//Integer Year value
if (cal_intYYYY < 2000)    //// Correct the year for Mozilla
{
    cal_intYYYY = cal_intYYYY +1900;
 }
var cal_intDDSelected;
var cal_intMMSelected;
var cal_intYYYYSelected;
var cal_nMaxYears =  4; // number of years to list in the dropdown
var nWeekDays = 7;
var cal_targetEl;						// our target textbox
var calendarUI;
var calendarIF;
var calendarUIArea;
var cal_arrYears;
var cal_LangId = "en";
var blnSelectPast = false;
var blnRollPast = true;
var blnRollFuture = false;
var cal_dayInitialBorder ="1px solid #f5f5f5";
var cal_dayMouseOverBorder = "1px solid gray";
var cal_dayMouseOutBorder = "1px solid whitesmoke";
var cal_weekendBGColor = "#ebebeb";
var cal_weekendSelectedBGColor = "#ffff00";
var cal_todayBorderColor = "#990033";
var cal_SelectMouseOutBorder = "1px solid white ";
var cal_monthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30,31, 30, 31);
var cal_monthNames = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
//var cal_monthNames_fr = new Array("Jan","Fév","Mar","Avr","Pou","Jui","Juil","Aoû","Sep","Oct","Nov","Déc");
var cal_monthNames_fr = new Array("Jan","F&eacute;v","Mar","Apr","May","Jun","Jul","Ao&ucirc;","Sep","Oct","Nov","D&eacute;c");
var cal_weekdayNames = new Array("S","M","T","W","T","F","S");
var cal_weekdayNames_fr =  new Array("D","L","M","M","J","V","S");
var calSelectList;
var cal_useCalSelect = false;	//either show in browser drop down, or in span tag mimicking drop down
var nyearsBack = cal_intYYYY - 2002; //the data collection started in 2002	
var blnShowDefaultEndDate = false; //show 9999 as the last year if true

//======= End of Global Values =============
function cal_genYearList(selYear)
{
	cal_arrYears = new Array();
	var intLength = 0;
	var current = new Date();
	var curYear = cal_getYear(current);
	if (selYear < curYear)
	{
		cal_arrYears[0] = selYear;
	}
	intLength = cal_arrYears.length;
	for (i=intLength;i<cal_nMaxYears;i++)
	{
	  cal_arrYears[i] = curYear;
	  curYear++;
	}
	if (blnShowDefaultEndDate == true)
	{
	  cal_arrYears[cal_arrYears.length] = 9999;
	}
}

function cal_getDateString(intMM, intDD, intYYYY)
{
	var strMonth = cal_monthNames[intMM-1];
	var strDateString = strMonth + " " + intDD + ", " + intYYYY;
	return (strDateString);
}

function cal_getTimeString(intHH, intMIN, strAMPM)
{
  var strTimeString;
	var strHourString;
	var strMinuteString;
	strHourString = "00" + intHH;
	strMinuteString = "00" + intMIN;
	strTimeString = strHourString.slice(-2) + ":" + strMinuteString.slice(-2) + " " + strAMPM;
	return (strTimeString);
}

function cal_getSelectList(y)
{
	var strTempString = "";
	var strSelected;
	var i;
	if (cal_useCalSelect == true)
	{
	  strTempString = strTempString + "<span id=\"cal_Select\" class=\"calselect2\" style=\"width:10px;\"><span id=\"cal_SelectValue\">" + y + "</span></span></TH><TH><img class='calimage' src=\"/images/cal_down.gif\" onclick=\"cal_showSelectlist()\"></TH>";
	  strTempString2 = "<table id=\"cal_SelectDropDown\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
	  var strSelected = "";
	  for(i=0;i < cal_arrYears.length; i++)
	  {
	    if(cal_arrYears[i] == y)
	    {
	      strSelected = " class=\"calselected\"";
	    }
	    else
	    {
	      strSelected = "";
	    }
	    strTempString2 = strTempString2 + "<tr><td" + strSelected + " onmouseover=\"cal_Selectmouseover(this);\" onmouseout=\"cal_Selectmouseout(this);\" onclick=\"cal_SelectValue(" + cal_arrYears[i] + ");\">" + cal_arrYears[i] + "</td></tr>";
    }
    strTempString2 = strTempString2 + "</table>";
   // calSelectList.innerHTML = strTempString2;
    return strTempString2;
  }
  else
  {
    strTempString = strTempString + "<select class='calselect' onchange='cal_refreshCal(this.options[this.selectedIndex].value);' id='CalYearSelect' name='CalYearSelect'>";
    var strSelected = "";
    for(i=0;i < cal_arrYears.length; i++)
    {
      if(cal_arrYears[i] == y)
      {
        strSelected = " selected";
      }
      else
      {
        strSelected = "";
      }
      strTempString = strTempString + "<option value='" + cal_arrYears[i] + "'" + strSelected + ">" + cal_arrYears[i] + "</option>";
    }
    strTempString = strTempString + "</select>";
    return strTempString;
  }
 
}

function cal_calendar(mydate)
{
	var curYear = cal_getYear(cal_dteToday);
	var curDay = cal_dteToday.getDate();
	var curMonth = cal_dteToday.getMonth()+1;
	var strCalendarString = "";
	var today = mydate;
	var thisDay;
	var pastStartDay;
	var strCSSCLass = "";
	var i;
	year = cal_getYear(today);
	thisDay = today.getDate();
	cal_monthDays[1] = cal_getFebDays(year);
	nDays = cal_monthDays[today.getMonth()];
	firstDay = today;
	firstDay.setDate(1); 
	//testMe = firstDay.getDate();
	//if (testMe == 2)
	//	{ alert(mydate + " : " +mydate.getDay());
	//	firstDay.setDate(0);    
	//	}
	startDay = firstDay.getDay();
	if (today.getMonth() == 0)
	  pastStartDay = cal_monthDays[11] - startDay + 1;
	else
	  pastStartDay = cal_monthDays[today.getMonth() - 1] - startDay + 1;
	strCalendarString = strCalendarString + "<TABLE id='myTable' class='Calendar' border='0' cellspacing='0' width='169px'>";
	strCalendarString = strCalendarString + "<TR><TH><img src='/images/cal_left.gif' onclick='cal_back();' class='calimage'></TH>";
	if(cal_useCalSelect == true)
	  strCalendarString = strCalendarString + "<TH style=\"text-align: right\" nowrap COLSPAN='3'>";
	else
	  strCalendarString = strCalendarString + "<TH style=\"text-align: right\" nowrap COLSPAN='4'>";
	if (cal_LangId == "fr")
	  strCalendarString = strCalendarString + cal_monthNames_fr[today.getMonth()];
	else
	  strCalendarString = strCalendarString + cal_monthNames[today.getMonth()];
	strCalendarString = strCalendarString + " " + cal_getSelectList(year);
	strCalendarString = strCalendarString + "</TH><TH><img src='/images/cal_right.gif' onclick='cal_forward();' class='calimage'></TH><TH style=\"text-align:right; vertical-align:top\"><img src='/images/cal_close.gif' onclick='cal_close()' class='calimage'></TH></TR>";
	strCalendarString = strCalendarString + "<TR>";
	for (i=0;i<nWeekDays;i++)
	{
	  if (cal_LangId == "fr")
	    strCalendarString = strCalendarString + "<TH class=\"Calweekdayheader\" width='24px'>" + cal_weekdayNames_fr[i] + "</TH>";
	  else
	    strCalendarString = strCalendarString + "<TH class=\"Calweekdayheader\" width='24px'>" + cal_weekdayNames[i] + "</TH>";
	}
	strCalendarString = strCalendarString + "<TR>";
	column = 0;
	for (i=0; i<startDay; i++)
	{
	  if ((column == 0) || (column == 6))
	    strCalendarString = strCalendarString + "<TD style=\"background-color:" + cal_weekendBGColor + ";border:1px solid" + cal_weekendBGColor + "\" class=\"CalUnavailable\">" + (pastStartDay + i) + "</TD>";
	  else
	    strCalendarString = strCalendarString + "<TD class=\"CalUnavailable\">" + (pastStartDay + i) + "</TD>";
		column++;
	}

  for (i=1; i<=nDays; i++)
  {
    strCSSCLass = "CalSelectable";
    if (blnSelectPast == true)
    {
         if(document.all){
             strCalendarString = strCalendarString + "<TD style=\"width:22px; border:" + cal_dayInitialBorder+ "\" onclick=\"cal_updateDay(this.innerText);\" onmouseover=\"cal_mouseover(this);\" onmouseout=\"cal_mouseout(this);\"";
	    } else{
		    strCalendarString = strCalendarString + "<TD style=\"width:22px; border:" + cal_dayInitialBorder+ "\" onclick=\"cal_updateDay(this.textContent);\" onmouseover=\"cal_mouseover(this);\" onmouseout=\"cal_mouseout(this);\"";
	    }
    
      
      if (cal_isSelectedDate(cal_intDDSelected,cal_intMMSelected,cal_intYYYYSelected,i) == true)
      {
        if (cal_isToday(i,today.getMonth(),cal_getYear(today)) == true)
          strCSSCLass = "CalSelectedToday";
        else
          strCSSCLass = "CalSelectedday";
      }
      else
      {
        if (cal_isToday(i,today.getMonth(),cal_getYear(today)) == true) 
          strCSSCLass = "CalToday";
      }
    }
    else
    {
      if(cal_isPastDate(curDay,curMonth,curYear,i) == true)
      {
        strCalendarString = strCalendarString + "<TD";
        strCSSCLass = "CalInvalidday";
      }
      else
      {
        if(document.all){
             strCalendarString = strCalendarString + "<TD style=\"width:22px; border:" + cal_dayInitialBorder+ "\" onclick=\"cal_updateDay(this.innerText);\" onmouseover=\"cal_mouseover(this);\" onmouseout=\"cal_mouseout(this);\"";
	    } else{
		    strCalendarString = strCalendarString + "<TD style=\"width:22px; border:" + cal_dayInitialBorder+ "\" onclick=\"cal_updateDay(this.textContent);\" onmouseover=\"cal_mouseover(this);\" onmouseout=\"cal_mouseout(this);\"";
	    }

       
        if (cal_isSelectedDate(cal_intDDSelected,cal_intMMSelected,cal_intYYYYSelected,i) == true)
        {
          if (cal_isToday(i,today.getMonth(),cal_getYear(today)) == true) 
            strCSSCLass = "CalSelectedToday";
          else
            strCSSCLass = "CalSelectedday";
        }
        else
        {
          if (cal_isToday(i,today.getMonth(),cal_getYear(today)) == true)
            strCSSCLass = "CalToday";
        }  // thisDay
      }  // isPastDate
    }  //SelectPast
    if ((column == 0) || (column == 6))
    {
      switch (strCSSCLass)
      {
        case "CalSelectedToday" :
          strCalendarString = strCalendarString + " style=\"background-color:" + cal_weekendSelectedBGColor + ";border:  1px solid" + cal_weekendBGColor + "\" class=\"" + strCSSCLass + "\">" + i + "</TD>";
          break;
        case "CalSelectedday" :
          strCalendarString = strCalendarString + " style=\"background-color:" + cal_weekendSelectedBGColor + ";border:  1px solid" + cal_weekendBGColor + "\" class=\"" + strCSSCLass + "\">" + i + "</TD>";
          break;
        default:
          strCalendarString = strCalendarString + " style=\"background-color:" + cal_weekendBGColor + ";border: 1px solid" + cal_weekendBGColor + " \" class=\"" + strCSSCLass + "\">" + i + "</TD>";
          
      }
    }
    else
    {
      strCalendarString = strCalendarString + " class=\"" + strCSSCLass + "\">" + i + "</TD>";
    }
    column++;
  
		if (column == 7)
		{
		  strCalendarString = strCalendarString + "</TR><TR>"; 
		  column = 0;
		}
	}
	if ((column < 7) && (column > 0))
	{
	  for (i=1;i<=(7-column);i++)
	  {
	    if ((column + i) == 7)
	      strCalendarString = strCalendarString + "<TD style=\"background-color:" + cal_weekendBGColor + ";border: 1px solid" + cal_weekendBGColor + "\" class=\"CalUnavailable\">" + i + "</TD>";
	    else
	      strCalendarString = strCalendarString + "<TD class=\"CalUnavailable\">" + i + "</TD>";
	  }
	  strCalendarString = strCalendarString + "</TR><TR>"; 
	}
	if (cal_LangId == "fr") 
	  strCalendarString = strCalendarString + "</tr><tr><td class='Calgototoday' colspan='7' onclick=\"cal_setToday();\">(f)Go to today</td></tr>";
	else
	  strCalendarString = strCalendarString + "</tr><tr><td class='Calgototoday' colspan='7' onclick=\"cal_setToday();\">Go to today</td></tr>";
	strCalendarString = strCalendarString + "</TABLE>";
	calendarUI.innerHTML = strCalendarString;

	//cal_targetEl.value = cal_intMM + "/" + cal_intDD + "/" + cal_intYYYY;
	
	calendarIF.style.width=1;
	calendarIF.style.height=1;
	
//	calendarUIArea = calendarUI.getBoundingClientRect();

//	calendarIF.style.width=calendarUIArea.right - calendarUIArea.left;
//	calendarIF.style.height=calendarUIArea.bottom - calendarUIArea.top;
	
	calendarUI.focus();
}

function cal_calendarUpdate(mydate, futureDate)
{
  var curYear = cal_getYear(cal_dteToday);
  var curDay = cal_dteToday.getDate();
  var curMonth = cal_dteToday.getMonth()+1;
  var strCalendarString = "";
  var today = mydate;
  var thisDay;
  var pastStartDay;
  var strCSSCLass = "";
  var i;
  
  //alert(futureDate);
  futureObj = document.getElementById(futureDate);
  year = cal_getYear(today);
  thisDay = today.getDate();
  cal_monthDays[1] = cal_getFebDays(year);
  nDays = cal_monthDays[today.getMonth()];
  firstDay = today;
  firstDay.setDate(1); 
	//testMe = firstDay.getDate();
	//if (testMe == 2)
	//	{ alert(mydate + " : " +mydate.getDay());
	//	firstDay.setDate(0);    
	//	}
	startDay = firstDay.getDay();
	if (today.getMonth() == 0)
		pastStartDay = cal_monthDays[11] - startDay + 1;
	  else
		pastStartDay = cal_monthDays[today.getMonth() - 1] - startDay + 1;
	strCalendarString = strCalendarString + "<TABLE id='myTable' class='Calendar' border='0' cellspacing='0' width='168px'>";
	strCalendarString = strCalendarString + "<TR><TH><img src='/images/cal_left.gif' onclick=\"cal_backUpdate('"+futureObj.id+"')\" class='calimage' /></TH>";
	if(cal_useCalSelect == true)
		strCalendarString = strCalendarString + "<TH style=\"text-align: right\" nowrap COLSPAN='3'>";
	  else
		strCalendarString = strCalendarString + "<TH style=\"text-align: right\" nowrap COLSPAN='4'>";
	if (cal_LangId == "fr") 
		strCalendarString = strCalendarString + cal_monthNames_fr[today.getMonth()];
	   else
		strCalendarString = strCalendarString + cal_monthNames[today.getMonth()];
	strCalendarString = strCalendarString + " " + cal_getSelectList(year);
	strCalendarString = strCalendarString + "</TH><TH><img src='/images/cal_right.gif' onclick=\"cal_forwardUpdate('"+futureObj.id+"')\" class='calimage' /></TH><TH style=\"text-align:right; vertical-align:top\"><img src='/images/cal_close.gif' onclick='cal_close()' class='calimage'></TH></TR>";
	strCalendarString = strCalendarString + "<TR>";
	for (i=0;i<nWeekDays;i++) {
		if (cal_LangId == "fr") 
			strCalendarString = strCalendarString + "<TH class=\"Calweekdayheader\" width='24px'>" + cal_weekdayNames_fr[i] + "</TH>";
		else
			strCalendarString = strCalendarString + "<TH class=\"Calweekdayheader\" width='24px'>" + cal_weekdayNames[i] + "</TH>";
	}
	strCalendarString = strCalendarString + "<TR>";
	column = 0;
	for (i=0; i<startDay; i++) {
		if ((column == 0) || (column == 6))
			strCalendarString = strCalendarString + "<TD style=\"background-color:" + cal_weekendBGColor + ";border: 1px solid" + cal_weekendBGColor + " \" class=\"CalUnavailable\">" + (pastStartDay + i) + "</TD>";
		  else
			strCalendarString = strCalendarString + "<TD class=\"CalUnavailable\">" + (pastStartDay + i) + "</TD>";
		column++;
	}

	for (i=1; i<=nDays; i++) {
		strCSSCLass = "CalSelectable";
		if (blnSelectPast == true) {
		     if(document.all){
                strCalendarString = strCalendarString + "<TD style=\"width:22px; border:" + cal_dayInitialBorder+ "\" onclick=\"cal_updateDayFuture(this.innerText, '"+futureObj.id+"');\" onmouseover=\"cal_mouseover(this);\" onmouseout=\"cal_mouseout(this);\"";
            } else{
	           strCalendarString = strCalendarString + "<TD style=\"width:22px; border:" + cal_dayInitialBorder+ "\" onclick=\"cal_updateDayFuture(this.textContent, '"+futureObj.id+"');\" onmouseover=\"cal_mouseover(this);\" onmouseout=\"cal_mouseout(this);\"";
            }
				
				if (cal_isSelectedDate(cal_intDDSelected,cal_intMMSelected,cal_intYYYYSelected,i) == true) {
					if (cal_isToday(i,today.getMonth(),cal_getYear(today)) == true) 
							strCSSCLass = "CalSelectedToday";
						else
							strCSSCLass = "CalSelectedday";
				  } else {
						if (cal_isToday(i,today.getMonth(),cal_getYear(today)) == true) 
							strCSSCLass = "CalToday";
				}
		} else {
			if(cal_isPastDate(curDay,curMonth,curYear,i) == true) {
				strCalendarString = strCalendarString + "<TD";
				strCSSCLass = "CalInvalidday";
			} else {
			    
			     if(document.all){
               strCalendarString = strCalendarString + "<TD style=\"width:22px; border:" + cal_dayInitialBorder+ "\" onclick=\"cal_updateDayFuture(this.innerText, '"+futureObj.id+"');\" onmouseover=\"cal_mouseover(this);\" onmouseout=\"cal_mouseout(this);\"";
            } else{
	           strCalendarString = strCalendarString + "<TD style=\"width:22px; border:" + cal_dayInitialBorder+ "\" onclick=\"cal_updateDayFuture(this.textContent, '"+futureObj.id+"');\" onmouseover=\"cal_mouseover(this);\" onmouseout=\"cal_mouseout(this);\"";
            }
				
				if (cal_isSelectedDate(cal_intDDSelected,cal_intMMSelected,cal_intYYYYSelected,i) == true) {
					if (cal_isToday(i,today.getMonth(),cal_getYear(today)) == true) 
							strCSSCLass = "CalSelectedToday";
						else
							strCSSCLass = "CalSelectedday";
				  } else { 
						if (cal_isToday(i,today.getMonth(),cal_getYear(today)) == true) 
							strCSSCLass = "CalToday";
				}  // thisDay
			}  // isPastDate
		}  //SelectPast
		if ((column == 0) || (column == 6)) {
			switch (strCSSCLass){
				case "CalSelectedToday" :
					strCalendarString = strCalendarString + " style=\"background-color:" + cal_weekendSelectedBGColor + ";border: 1px solid" + cal_weekendBGColor + " \" class=\"" + strCSSCLass + "\">" + i + "</TD>";
					break;
				case "CalSelectedday" :
					strCalendarString = strCalendarString + " style=\"background-color:" + cal_weekendSelectedBGColor + ";border: 1px solid" + cal_weekendBGColor + " \" class=\"" + strCSSCLass + "\">" + i + "</TD>";
					break;
				default:
					strCalendarString = strCalendarString + " style=\"background-color:" + cal_weekendBGColor + ";border:1px solid" + cal_weekendBGColor + " \" class=\"" + strCSSCLass + "\">" + i + "</TD>";
			}
		  }	else
			strCalendarString = strCalendarString + " class=\"" + strCSSCLass + "\">" + i + "</TD>";
		column++;
		if (column == 7) {
			strCalendarString = strCalendarString + "</TR><TR>"; 
			column = 0;
		}
	}
	if ((column < 7) && (column > 0)) {
		for (i=1;i<=(7-column);i++) {
			if ((column + i) == 7) 
				strCalendarString = strCalendarString + "<TD style=\"background-color:" + cal_weekendBGColor + ";border:1px solid" + cal_weekendBGColor + " \" class=\"CalUnavailable\">" + i + "</TD>";
			  else
				strCalendarString = strCalendarString + "<TD class=\"CalUnavailable\">" + i + "</TD>";
		}
		strCalendarString = strCalendarString + "</TR><TR>"; 
	}
	if (cal_LangId == "fr") 
		strCalendarString = strCalendarString + "</tr><tr><td class='Calgototoday' colspan='7' onclick=\"cal_setToday();\">(f)Go to today</td></tr>";
      else
		strCalendarString = strCalendarString + "</tr><tr><td class='Calgototoday' colspan='7' onclick=\"cal_setToday();\">Go to today</td></tr>";
	strCalendarString = strCalendarString + "</TABLE>";
    calendarUI.innerHTML = strCalendarString;
	//cal_targetEl.value = cal_intMM + "/" + cal_intDD + "/" + cal_intYYYY;
	
	calendarIF.style.width= 1;
	calendarIF.style.height = 1;
	
	/////////the code below works for IE only.
//	calendarUIArea = calendarUI.getBoundingClientRect();
//	calendarIF.style.width=calendarUIArea.right - calendarUIArea.left;
//	
//	calendarIF.style.height=calendarUIArea.bottom - calendarUIArea.top;
	
    calendarUI.focus();
}


function cal_isPastDate(d,m,y,n) {
	var arrDateParts = cal_getYesterday(d,m,y).split("/");

	//if (((n<d) && (cal_intMM <= m) && (cal_intYYYY <= y)) || ((cal_intMM < m) && (cal_intYYYY <= y))) 
	if (((n<arrDateParts[1]) && (cal_intMM <= arrDateParts[0]) && (cal_intYYYY <= arrDateParts[2])) || ((cal_intMM < arrDateParts[0]) && (cal_intYYYY <= arrDateParts[2]))) 
		return true;
	else
		return false;
 }

function cal_getYesterday(d,m,y) {
	cal_monthDays[1] = cal_getFebDays(y);
	var day = d;
	var month = m;
	var year = y;
	if (d>1) {
		day = day - 1;
		} else {
			if (month > 1) {
				month = month-1;
				day = cal_monthDays[month-1]
			} else {
				year=year-1;
				month=12;
				day=cal_monthDays[month-1];
			}

		}
		
	return (month + "/" + day + "/" + year);
 }

function cal_isSelectedDate(d,m,y,n) {
	if ((n==d) && (cal_intMM == m) && (cal_intYYYY == y)) 
	   return true;
	else
		return false;
 }

function cal_getYear(date) {
			if (date.getYear() < 2000)    // Netscape 7.1
				  return date.getYear() + 1900;
				else
				  return date.getYear();
  }
function cal_isToday(d,m,y) {
	 if ((d== cal_dteToday.getDate()) && (m== cal_dteToday.getMonth()) && (y== cal_getYear(cal_dteToday)) ) {
	    return true;
	 } else {
	    return false;
	 }
  }

function cal_setToday()
 {
	cal_intDD = cal_dteToday.getDate();
	cal_intMM = cal_dteToday.getMonth() + 1;
	cal_intYYYY = cal_dteToday.getYear();
	if (cal_intYYYY < 2000) 
    {
	    cal_intYYYY = cal_intYYYY +1900;
	 }
	var currentDate = new Date(cal_getDateString(cal_intMM,cal_intDD,cal_intYYYY));
	cal_calendar(currentDate);
 }

function cal_updateDay(intDay)
 {
    cal_intDD = intDay;
	var currentDate = new Date(cal_getDateString(cal_intMM,cal_intDD,cal_intYYYY));
	cal_targetEl.value = cal_intMM + "/" + cal_intDD + "/" + cal_intYYYY;
	cal_close();
 }
 
 function cal_updateDayFuture(intDay, futureobj)
 {
 var futureText = document.getElementById(futureobj);
    cal_intDD = intDay;
	var currentDate = new Date(cal_getDateString(cal_intMM,cal_intDD,cal_intYYYY));
	cal_targetEl.value = cal_intMM + "/" + cal_intDD + "/" + cal_intYYYY;
	//alert("current " + currentDate);
	if(futureText.value != ''){
	    var futureArrDateParts = futureText.value.split("/");
        var futureDateVal = new Date(cal_getDateString(futureArrDateParts[0], futureArrDateParts[1], futureArrDateParts[2]));
   
	    if(currentDate > futureDateVal)
	    {
	   
	      var changeDate = new Date();
	      cal_intMM--;
	      changeDate.setFullYear(cal_intYYYY,cal_intMM,cal_intDD);
	    //   alert("also current " + changeDate);
	       changeDate.setDate(currentDate.getDate()+7);
	      
	    //   alert("full " + changeDate);
	       
	       futureText.value = changeDate.getMonth()+1 + "/" + changeDate.getDate() +"/" + changeDate.getFullYear();
    	  
	    }
	 }
	cal_close();
 }

function cal_getFebDays(y) {
	if (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0))
		return 29;
	else
		return 28;
 }
 
function cal_forward()
 {
    //// Section: Deciding Forward
    ////Tis section is to check the forward date is valid within the selectable date range and decide if it should move forward.
    var yearOnCalIndex =document.getElementById("CalYearSelect").selectedIndex;
    var yearOnCalValue =document.getElementById("CalYearSelect")[yearOnCalIndex].value;
    
    if (( yearOnCalValue ==(cal_getYear(cal_dteToday)+ cal_nMaxYears - 1)) && (cal_intMM ==12))
    {
       return 0;
    }
      
    //////Section End: Deciding Forward
    
    
	//if (cal_intYYYY <  cal_getYear(cal_dteToday)-nyearsBack-1) return 0;

    cal_intMM++;
    if (cal_intMM > 12)
     {
        cal_intMM = 1;
        cal_intYYYY++;
     }
	//if (cal_intYYYY > cal_arrYears[cal_arrYears.length - 1])
	//	cal_intYYYY = cal_arrYears[0];
	
	cal_monthDays[1] = cal_getFebDays(cal_intYYYY);
	if (cal_intDD > cal_monthDays[cal_intMM-1]) intDD = cal_monthDays[cal_intMM-1];
	var currentDate = new Date(cal_getDateString(cal_intMM,cal_intDD,cal_intYYYY));
	cal_calendar(currentDate);
    
 }
 
 function cal_forwardUpdate(futureObjId)
 {
    
	//// Section: Deciding Forward
    ////Tis section is to check the forward date is valid within the selectable date range and decide if it should move forward.
    var yearOnCalIndex =document.getElementById("CalYearSelect").selectedIndex;
    var yearOnCalValue =document.getElementById("CalYearSelect")[yearOnCalIndex].value;
    
    if (( yearOnCalValue ==(cal_getYear(cal_dteToday)+ cal_nMaxYears - 1)) && (cal_intMM ==12))
    {
       return 0;
    }
      
    //////Section End: Deciding Forward
	
    var findObj = document.getElementById(futureObjId.toString());
   
    cal_intMM++;
    if (cal_intMM > 12)
     {
        cal_intMM = 1;
        cal_intYYYY++;
     }
	//if (cal_intYYYY > cal_arrYears[cal_arrYears.length - 1])
	//	cal_intYYYY = cal_arrYears[0];
	
	cal_monthDays[1] = cal_getFebDays(cal_intYYYY);
	if (cal_intDD > cal_monthDays[cal_intMM-1]) 
	    intDD = cal_monthDays[cal_intMM-1];
	var currentDate = new Date(cal_getDateString(cal_intMM,cal_intDD,cal_intYYYY));
	cal_calendarUpdate(currentDate, findObj.id.toString());
    
 }

function cal_back()
 {
    //// Section: Deciding go back
    ////Tis section is to check the rollback date is valid within the selectable date range and decide if it should go back.
    var yearOnCalIndex =document.getElementById("CalYearSelect").selectedIndex;
    var yearOnCalValue =document.getElementById("CalYearSelect")[yearOnCalIndex].value;
    var prevMonth = cal_intMM - 1;
    
    if (prevMonth <1)
    {
        prevMonth = 12;
    }
    
    if (yearOnCalValue<  cal_getYear(cal_dteToday))
    {
       return 0;
    }
    else
     {
            if ((yearOnCalValue == cal_getYear(cal_dteToday)) && (prevMonth < cal_dteToday.getMonth()+1))
           { 

            return 0;
           }

      }
      
    //////Section End: Deciding go back

	if (blnRollPast == true) {
		cal_intMM--;
	} else {
		if((cal_intMM > (cal_dteToday.getMonth() +1)) && (cal_intYYYY >= cal_getYear(cal_dteToday)) || (cal_intYYYY > cal_getYear(cal_dteToday))) {
			cal_intMM--;
		}
	}  //RollPast

    if (cal_intMM < 1)
     {
        cal_intMM = 12;
        cal_intYYYY--;
     }
	if (cal_intYYYY < cal_arrYears[0])
		cal_intYYYY = cal_arrYears[cal_arrYears.length - 1];

	cal_monthDays[1] = cal_getFebDays(cal_intYYYY);
	if (cal_intDD > cal_monthDays[cal_intMM-1]) cal_intDD = cal_monthDays[cal_intMM-1];
	var currentDate = new Date(cal_getDateString(cal_intMM,cal_intDD,cal_intYYYY));
	cal_calendar(currentDate);
    
 }
 
 function cal_backUpdate(futureObjId)
 {
    //// Section: Deciding go back
    ////Tis section is to check the rollback date is valid within the selectable date range and decide if it should go back.
    var yearOnCalIndex =document.getElementById("CalYearSelect").selectedIndex;
    var yearOnCalValue =document.getElementById("CalYearSelect")[yearOnCalIndex].value;
    var prevMonth = cal_intMM - 1;
    
    if (prevMonth <1)
    {
        prevMonth = 12;
    }
    
    if (yearOnCalValue<  cal_getYear(cal_dteToday))
    {
       return 0;
    }
    else
     {
            if ((yearOnCalValue == cal_getYear(cal_dteToday)) && (prevMonth < cal_dteToday.getMonth()+1))
           { 

            return 0;
           }

      }
      
    //////Section End: Deciding go back
    
  var findObj = document.getElementById(futureObjId);
   var futM = cal_intMM;
   if(futM < 10){
     futM = "" + 0 + futM;
   }
   var moveDate = "" + cal_intYYYY + futM; 
   
   var curY = cal_dteToday.getYear();
   if (curY< 2000)
   {
       curY = curY +1900;
   }
   var curM = cal_dteToday.getMonth()+1;
   if(curM < 10 ){
     curM = "" + 0 + curM;
   }   
   var curDate ="" + curY + curM ;
   //alert("changeing "+ moveDate +" "+curDate);
   if(moveDate <= curDate){
   
    return 0;
   }
	

	if (blnRollPast == true) {
		cal_intMM--;
	} else {
		if((cal_intMM > (cal_dteToday.getMonth() +1)) && (cal_intYYYY >= cal_getYear(cal_dteToday)) || (cal_intYYYY > cal_getYear(cal_dteToday))) {
			cal_intMM--;
		}
	}  //RollPast

    if (cal_intMM < 1)
     {
        cal_intMM = 12;
        cal_intYYYY--;
     }
	if (cal_intYYYY < cal_arrYears[0])
		cal_intYYYY = cal_arrYears[cal_arrYears.length - 1];

	cal_monthDays[1] = cal_getFebDays(cal_intYYYY);
	if (cal_intDD > cal_monthDays[cal_intMM-1]) cal_intDD = cal_monthDays[cal_intMM-1];
	var currentDate = new Date(cal_getDateString(cal_intMM,cal_intDD,cal_intYYYY));
	cal_calendarUpdate(currentDate, findObj.id.toString());
    
 }



function cal_refreshCal(intYear)
 {
	
	//// When year is selected back to current year, check if the month is valid. If yes, set the caledar to today
	var CalSelectedYear = intYear;
	if ((CalSelectedYear == cal_getYear(cal_dteToday) ) &&  (cal_intMM < cal_dteToday.getMonth()+1))
    {
       cal_setToday();
       return 0;
    }
	////////
	
	cal_intYYYY = intYear;
	cal_monthDays[1] = cal_getFebDays(cal_intYYYY);
	if (cal_intDD > cal_monthDays[cal_intMM-1]) cal_intDD = cal_monthDays[cal_intMM-1];
	var currentDate = new Date(cal_getDateString(cal_intMM,cal_intDD,cal_intYYYY));
	cal_calendar(currentDate);
    
 }
 
 function cal_showFutureCalendar(elThisElement, langid, calid)
 {
 // 
 var arrDateParts = document.getElementById(calid).value.split("/");
  cal_dteToday = new Date(cal_getDateString(arrDateParts[0], arrDateParts[1], arrDateParts[2]));
  //alert("here " +cal_dteToday);
  cal_showCalendarNoUpdate(elThisElement,langid);
 }
 
 function cal_showCalendarNoUpdate(elThisElement,langid)
{
    // the element passed is the button that was clicked
	// set the UI

    if (calendarIF == null) {
        calendarIF = document.createElement("iframe");
		calendarIF.style.position = "absolute";
 		calendarIF.style.visibility="hidden";
		calendarIF.disabled=true;
		calendarIF.style.zIndex=0;
		document.body.appendChild(calendarIF);
		}
    if (calendarUI == null) {
     
		calendarUI = document.createElement("DIV");
		calendarUI.style.position = "absolute";
 		calendarUI.style.visibility="hidden";
		calendarUI.style.zIndex=999;
		document.body.appendChild(calendarUI);
		}
    if ((calSelectList == null) && (cal_useCalSelect == true)) {
      	calSelectList = document.createElement("DIV");
		calSelectList.style.position = "absolute";
 		calSelectList.style.visibility="hidden";
 		calSelectList.style.height="120";
 		calSelectList.style.overflow="auto";
 		calSelectList.id="cal_SelectList";
		calSelectList.style.zIndex=9999;
		document.body.appendChild(calSelectList);
		}
	
	cal_LangId = langid.toLowerCase();
	
    var calendarImgObj = document.getElementById(elThisElement);
	cal_targetEl = calendarImgObj.previousSibling;
	//alert("here " + cal_targetEl.value);
	
	if(cal_targetEl.value == "") {
		var arrDateParts = new Array(cal_intMM, cal_intDD, cal_intYYYY);
		
	}
	else {
		var arrDateParts = cal_targetEl.value.split("/");
	}
	//var calendarTargerArea = cal_targetEl.getBoundingClientRect();
    

    cal_intMM = arrDateParts[0]; 
    cal_intDD = arrDateParts[1]; 
    cal_intYYYY = arrDateParts[2];
    cal_intMMSelected = arrDateParts[0]; 
    cal_intDDSelected = arrDateParts[1]; 
    cal_intYYYYSelected = arrDateParts[2];
    cal_genYearList(cal_intYYYY); 
	
	
	calendarUI.x=cal_getposOffset(calendarImgObj, "left");
    calendarUI.y=cal_getposOffset(calendarImgObj, "top");
	calendarUI.style.left=calendarUI.x+"px";
    calendarUI.style.top=calendarUI.y+"px";
    calendarUI.style.visibility="visible";
//	calendarUI.style.left=calendarTargerArea.right - 2;
//  
//    calendarUI.style.top= calendarTargerArea.top +document.body.scrollTop -2;

	
	calendarIF.style.left=calendarUI.style.left;
	calendarIF.style.top=calendarUI.style.top;
	calendarIF.style.border = 0;	
    calendarIF.style.visibility="visible";
    
	var currentDate = new Date(cal_getDateString(cal_intMM,cal_intDD,cal_intYYYY));
	
	cal_calendar(currentDate);
}

function cal_showCalendar(elThisElement,langid, futureDate)
{
    // the element passed is the button that was clicked
	// set the UI
	
	var futureDateObj = futureDate.toString();
    if (calendarIF == null) {
		calendarIF = document.createElement("iframe");
		calendarIF.style.position = "absolute";
 		calendarIF.style.visibility="hidden";
		calendarIF.disabled=true;
		calendarIF.style.zIndex=0;
		document.body.appendChild(calendarIF);
		}
    if (calendarUI == null) {
     
		calendarUI = document.createElement("DIV");
		calendarUI.style.position = "absolute";
 		calendarUI.style.visibility="hidden";
		calendarUI.style.zIndex=999;
		document.body.appendChild(calendarUI);
		}
    if ((calSelectList == null) && (cal_useCalSelect == true)) {
      	calSelectList = document.createElement("DIV");
		calSelectList.style.position = "absolute";
 		calSelectList.style.visibility="hidden";
 		calSelectList.style.height="120";
 		calSelectList.style.overflow="auto";
 		calSelectList.id="cal_SelectList";
		calSelectList.style.zIndex=9999;
		document.body.appendChild(calSelectList);
		}
		
	cal_LangId = langid.toLowerCase();
	
    var calendarImageObj = document.getElementById(elThisElement);
	cal_targetEl = calendarImageObj.previousSibling;
	
  //  cal_targetEl? alert("Yes") : alert("No");
    
	if(cal_targetEl.value == "") {
		var arrDateParts = new Array(cal_intMM, cal_intDD, cal_intYYYY);
		
	}
	else {
		var arrDateParts = cal_targetEl.value.split("/");
	}
	
    

//    var calendarTargerArea = cal_targetEl.getBoundingClientRect();
 
  
    cal_intMM = arrDateParts[0]; 
    cal_intDD = arrDateParts[1]; 
    cal_intYYYY = arrDateParts[2];
    cal_intMMSelected = arrDateParts[0]; 
    cal_intDDSelected = arrDateParts[1]; 
    cal_intYYYYSelected = arrDateParts[2];
    cal_genYearList(cal_intYYYY); 
	
	
	calendarUI.x=cal_getposOffset(calendarImageObj, "left");
    calendarUI.y=cal_getposOffset(calendarImageObj, "top");
    calendarUI.style.left=calendarUI.x+"px";
    calendarUI.style.top=calendarUI.y+"px";
    calendarUI.style.visibility="visible";
	
//	calendarUI.style.left=calendarTargetLeft- 2;
//  
//    calendarUI.style.top= calendarTargetTop -2;
//	calendarUI.style.left=calendarTargerArea.right - 2;
//  
//    calendarUI.style.top= calendarTargerArea.top +document.body.scrollTop -2;

	
	calendarIF.style.left=calendarUI.style.left;
	calendarIF.style.top=calendarUI.style.top;
	calendarIF.style.border = 0;
	calendarIF.style.visibility="visible";

    
	var currentDate = new Date(cal_getDateString(cal_intMM,cal_intDD,cal_intYYYY));

	cal_calendarUpdate(currentDate, futureDateObj);
}

function cal_SelectValue(v) {
	var calSelectValue = document.getElementById("cal_SelectValue");
	calSelectList.style.visibility="hidden";
	  if(document.all){
              calSelectValue.innerText = v;
            } else{
	           calSelectValue.textContent = v;
            }
	
	cal_refreshCal(v);
}
function cal_showSelectlist() {
	if (calSelectList.style.visibility =="visible") {
		calSelectList.style.visibility="hidden";
		return 0;
    }
	var calSelectValue = document.getElementById("cal_SelectValue");
	var calSelectDropDown = document.getElementById("cal_SelectDropDown");
	var calDropListArea = calSelectDropDown.getBoundingClientRect();
	if (parseInt(calSelectList.scrollHeight) > parseInt(calSelectList.style.height)) {
		calSelectList.style.width = 18 + calDropListArea.right - calDropListArea.left;
	  } else {
		calSelectList.style.width = 2 + calDropListArea.right - calDropListArea.left;
		calSelectList.style.height = 2 + calDropListArea.bottom - calDropListArea.top;
	}
	calSelectList.style.left = calSelectValue.getBoundingClientRect().left - 2;
	calSelectList.style.top = calSelectValue.getBoundingClientRect().bottom - 2;
	calSelectList.style.visibility="visible";
	
}

function cal_close()
{
	cal_hideElement(calendarUI);
	cal_hideElement(calendarIF);
}

function cal_hideElement(elElement)
{
	elElement.style.visibility="hidden";
}

function cal_mouseover(el) {
 el.style.border = cal_dayMouseOverBorder;
 el.style.width = 22;
}
function cal_mouseout(el) {
	if(el.style.backgroundColor == cal_weekendBGColor)
	{
		el.style.border = "1px solid " +cal_weekendBGColor ;
		el.style.width = 22;
		}
	  else
	  {
		el.style.border = cal_dayMouseOutBorder;
		el.style.width = 22;
	 }
}

function cal_Selectmouseover(el) {
 el.style.border = cal_dayMouseOverBorder;
 el.style.width = 22;
}
function cal_Selectmouseout(el) {
 el.style.border = cal_SelectMouseOutBorder;
 el.style.width = 22;
}

function cal_getposOffset(what, offsettype)
{
  
  var totaloffset = (offsettype == "left") ? what.offsetLeft : what.offsetTop;
  var parentEl = what.offsetParent;
  while (parentEl != null)
  {
    totaloffset = (offsettype == "left") ? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
    parentEl = parentEl.offsetParent;
  }
  return totaloffset;
}

//========================= End Calendar Code ================================

