
			var calendarIdPrefix = "k4tCalendar";

			// Inicio da "classe" do calendário
			function k4tCalendar() {
				this.ctor = function () { // Construtor do calendário
				
					document.onclick = function(evt) { // Insere função para esconder calendário no caso de existir um click fora da àrea do calendário...
						if (document.onclick != null)
							eval(document.onclick);
						chkCalendarVisibility(evt, myCalendar);
						//chkCalendarVisibility(myCalendar);
					}
					
				}
				this.ctor();

				this.Id = ''; // identificação do calendário (tem que ser única)
				this.containerId = ''; // identificação do controle que vai ter o calendário
				this.caller = ''; // controle que vai ter o calendário
				this.callerId = ''; // identificação do controle que vai ter o calendário
				
				this.dateSpliter = '/'; // Caracter que divide a data (06/04/2004)

				this.iDay = new Date().getDate(); // dia do calendário
				this.iMonth = new Date().getMonth() + 1; // mês do calendário
				this.iYear = new Date().getFullYear(); // ano do calendário

				this.minDate = null; // Minimo de data a ser escolhida pelo calendário
				this.maxDate = null; // Máximo da data a ser escolhida pelo calendário

				this.width = null;
				this.height = null;
			    this.CloseText = 'Fechar'; // Texto do butão de fechar
				
				this.ToolTipPreviousYearText = 'Ano anterior'; // Texto da tooltip do butão de ano anterior
				this.ToolTipPreviousMonthText = 'Mês anterior'; // Texto da tooltip do butão de mes anterior
				this.ToolTipNextYearText = 'Próximo Ano'; // Texto da tooltip do butão de próximo ano
				this.ToolTipNextMonthText = 'Próximo Mês'; // Texto da tooltip do butão de próximo mês
				this.ToolTipCloseText = 'Fechar calendário'; // Texto da tooltip do butão de fechar calendário

				this.CSSCalendarBackground = 'CSSCalendarBackground'; // CSS do fundo do calendário

				this.CSSCellSpacer = 'CSSCellSpacer';

				this.CSSRowStart = 'CSSRowStart';
				this.CSSYearPrevious = 'CSSYearPrevious';
				this.CSSMonthPrevious = 'CSSMonthPrevious';
				this.CSSMonthNext = 'CSSMonthNext';
				this.CSSYearNext = 'CSSYearNext';
				this.CSSRowEnd = 'CSSRowEnd';

				this.CSSHeader = 'CSSHeader';
				
				
				/*this.CSSWeekDaysHeader = 'CSSWeekDaysHeader';
				this.CSSWeekEndsHeader = 'CSSWeekEndsHeader';*/
                this.CSSWeekDaysHeader = 'header';
				this.CSSWeekEndsHeader = 'header';
				/*this.CSSWeekDays = 'CSSWeekDays';
				this.CSSWeekEnds = 'CSSWeekEnds';
				this.CSSCurrentDay = 'CSSCurrentDay';
				this.CSSSelectDay = 'CSSSelectDay';*/
				this.CSSWeekDays = '';
				this.CSSWeekEnds = '';
				this.CSSCurrentDay = 'day';
				this.CSSSelectDay = 'CSSSelectDay';
                this.OpacityCurrentDay = '60';
                this.Opacity = '30';
				this.CSSClose = 'cerrar';
				this.CSSCloseText = 'CSSCloseText';
				
				this.Visible = false; // Se o calendário está visivel
				this.MouseIsOver = false; // Se o mouse está por cima do calendário

				this.UseTooltipHeader = false; // Mostra tooltip no cabeçalho do calendário
				this.UseTooltipDays = false; // Mostra tooltip nos dias do calendário
				this.UseTooltipFooter = false; // Mostra tooltip no rodapé do calendário

				this.hiddenControls = new Array(); // Array de objs do tipo SELECT que foram escondidos porque interferiam com o calendário
				this.hiddenControls = null; 
				//Eventos
				this.onSelectDate = null; // Evento que é disparado quando uma data é seleccionada no calendário
				this.onYearPrevious = null; // Evento que é disparado quando se navega para o ano anterior
				this.onMonthPrevious = null; // Evento que é disparado quando se navega para o mês anterior
				this.onMonthNext = null; // Evento que é disparado quando se navega para o mês seguinte
				this.onYearNext = null; // Evento que é disparado quando se navega para o ano seguinte
				this.onShow = null; // Evento que é disparado quando se mostra o calendário
				this.onHide = null; // Evento que é disparado quando se esconde o calendário
				
				this.monthDesc = new Array(); // Array que possui a descrição textual dos meses
				this.monthDesc[1]  = "Jan";
				this.monthDesc[2]  = "Fev";
				this.monthDesc[3]  = "Mar";
				this.monthDesc[4]  = "Abr";
				this.monthDesc[5]  = "Mai";
				this.monthDesc[6]  = "Jun";
				this.monthDesc[7]  = "Jul";
				this.monthDesc[8]  = "Ago";
				this.monthDesc[9]  = "Set";
				this.monthDesc[10] = "Out";
				this.monthDesc[11] = "Nov";
				this.monthDesc[12] = "Dez";

				// Inicio de métodos comuns
				this.getMonth = function (monthIndex) {
					var returnValue = "";

					if (monthIndex > 0 && monthIndex < 13) {
						returnValue = this.monthDesc[monthIndex];
					}

					return returnValue;
				}

				this.weekDesc = new Array(); // Array que possui a descrição textual dos dias da semana
				this.weekDesc[0] = "D";
				this.weekDesc[1] = "S";
				this.weekDesc[2] = "T";
				this.weekDesc[3] = "Q";
				this.weekDesc[4] = "Q";
				this.weekDesc[5] = "S";
				this.weekDesc[6] = "S";
                    
                this.startingWeekDay = 0; // 0 para Domingo, 1 para Segunda, 2 para terça...
                this.specialDays = "0,6"; // Index correspondente ao Fim de Semana 0 Domingo , 6 Sábado
                    
				this.getWeekDays = function () {
					var weekDays=new Array(this.weekDesc);
					//weekDays=this.weekDesc;
					
					var maxIndex=(this.weekDesc.length+this.startingWeekDay)
					
					for (w=this.startingWeekDay;w<maxIndex;w++){
				         var index=w
					    if (index >= this.weekDesc.length) index=index-(this.weekDesc.length);
					   //alert ("index:"+index)
					  // alert ("w-this.startingWeekDay:"+(w-this.startingWeekDay).toString())
					   //alert ("this.weekDesc[index]:"+this.weekDesc[index])
					    weekDays[(w-this.startingWeekDay)]=this.weekDesc[index];
					    }
					/*for(i=0;i<weekDays.length;i++) {
					alert(weekDays[i]);
					alert(this.weekDesc[i]);
					}*/
					return weekDays;
				}
				
				

				function fGetDaysInMonth(iMonth, iYear) {
					var dPrevDate = new Date(iYear, iMonth + 1 , 0);

					return dPrevDate.getDate();
				}

				function isLeap(yyyy) {
					var returnValue = false;

					returnValue = (yyyy % 400 == 0) || ( (yyyy % 4 == 0) && (yyyy % 100 != 0) ); 

					return returnValue;
				}

				function isLeapYear(myYear) {
				
					//var returnValue = (new Date(myYear, 1, 29).getDate() == 29);
					var returnValue = isLeap(myYear);

					return returnValue;
				}
				
				function checkDate(myDayStr, myMonthStr, myYearStr) {
					/* Using form values, create a new date object
					which looks like "Wed Jan 1 00:00:00 EST 1975". */
					var myDate = new Date(myYearStr, (myMonthStr - 1), myDayStr);

					/* If we entered "Feb 31, 1975" in the form, the "new Date()" function
					converts the value to "Mar 3, 1975". Therefore, we compare the month
					in the array with the month we entered into the form. If they match,
					then the date is valid, otherwise, the date is NOT valid. */
					return !( myDate.getMonth() != (myMonthStr - 1) );
				}

				this.selectElement = function (dayElementId) {
					var dayElement = document.getElementById(dayElementId);

					if (dayElement != null) {
						dayElement.className = this.CSSSelectDay;
					}
				}

				// Fim de métodos comuns



				this.NextYear = function () { // Ano seguinte
					if (this.onYearNext != null) {
						this.onYearNext();
					}

					this.iDay = this.getMaxMonthDay();

					var dDataInc = new Date(this.iYear + 1, this.iMonth - 1, this.iDay);

					this.iYear = dDataInc.getFullYear(); // ano do calendário

					this.iDay = this.getMaxMonthDay(this.iMonth);

					this.Draw();


				}

				this.NextMonth = function () { // Mês seguinte
					if (this.onMonthNext != null) {
						this.onMonthNext();
					}

					var dDataInc = new Date(this.iYear, this.iMonth - 1, 1);

					if (dDataInc.getMonth() == 11) {
						dDataInc.setFullYear(dDataInc.getFullYear() + 1);
						dDataInc.setMonth(0);
					}
					else {
						dDataInc.setMonth(dDataInc.getMonth() + 1);
					}

					this.iMonth = dDataInc.getMonth() + 1; // mês do calendário
					this.iYear = dDataInc.getFullYear(); // ano do calendário

					this.iDay = this.getMaxMonthDay(this.iMonth);

					this.Draw();

				}

				this.PrevMonth = function () { // Mês anterior
					if (this.onMonthPrevious != null) {
						this.onMonthPrevious();
					}
					
					var dDataDec = new Date(this.iYear, this.iMonth - 1, 1);
					
					if (dDataDec.getMonth() == 0) {
						dDataDec.setFullYear(dDataDec.getFullYear() - 1);
						dDataDec.setMonth(11);
					}
					else {
						dDataDec.setMonth(dDataDec.getMonth() - 1);
					}

					this.iMonth = dDataDec.getMonth() + 1; // mês do calendário
					this.iYear = dDataDec.getFullYear(); // ano do calendário

					this.iDay = this.getMaxMonthDay(this.iMonth);

					this.Draw();

					
				}

				this.PrevYear = function () { // Ano anterior
				   
					if (this.onYearPrevious != null) {
	                    
	                   
						this.onYearPrevious();
					}
					
					this.iDay = this.getMaxMonthDay();

					var dDataDec = new Date(this.iYear - 1, this.iMonth - 1, this.iDay);
	               
					this.iYear = dDataDec.getFullYear(); // ano do calendário

					this.iDay = this.getMaxMonthDay(this.iMonth);
                 
					this.Draw();
					
				}

				this.getMaxMonthDay = function(checkMonth) {

					var myDate = new Date(this.iYear, checkMonth, 0);
					var maxDate = myDate.getDate();

					var returnDay = this.iDay;

					if (maxDate < returnDay) {
						returnDay = maxDate;
					}

					return returnDay;
				}

				this.SelectDay = function (iNewDay) {
					if (checkDate(iNewDay, this.iMonth, this.iYear)) {
						var dayElementId = calendarIdPrefix + "-Day-" + this.iDay + "-" + this.Id;
						var dayElement = document.getElementById(dayElementId);

						if (dayElement != null) {
							dayElement.className = this.CSSWeekDays;
						}						

						this.iDay = iNewDay;

						dayElementId = calendarIdPrefix + "-Day-" + this.iDay + "-" + this.Id;
						dayElement = document.getElementById(dayElementId);

						this.selectElement(dayElementId);

						this.Hide();
						
						if (this.onSelectDate != null) {
							this.onSelectDate();
						}
						
					}
				}

				this.SelectDate = function (newDate) {
					var myDay = newDate.getDate();
					var myMonth = newDate.getMonth();
					var myYear = newDate.getFullYear();

					this.iDay = myDay;
					this.iMonth = myMonth + 1;
					this.iYear = myYear;
					
					this.Draw();
				}

				this.SelectedDate = function () {
					return new Date(this.iYear, (this.iMonth - 1), this.iDay);
				}

				this.Show = function (caller, distX, distY) { // Método que mostra o calendário
					
					this.caller = caller;
					this.callerId = caller.id;

					if (this.onShow != null) {
						this.onShow();
					}
					
					var containerElement = document.getElementById(this.containerId);
					containerElement.style.display = 'block';
                         
					if (caller.value.length > 0) {
						this.SelectDate(getDateFromString(caller.value, this.dateSpliter));
					}
					else {
						this.Draw();
					}
					
					var posX = findPosX(caller) + caller.offsetWidth + distX;
					var posY = findPosY(caller) + distY;
					
					containerElement.style.left = posX + "px";
					containerElement.style.top = posY + "px";
					
					var foraEmX = ((posX + containerElement.offsetWidth) > document.body.clientWidth);
					var foraEmY = ((posY + containerElement.offsetHeight) > document.body.clientHeight);
					
					if (foraEmX) {
						posX -= (document.body.clientWidth - (posX + containerElement.offsetWidth));
						containerElement.style.left = posX + "px";
					}
					
					if (foraEmY) {
						posY += (document.body.clientHeight - (posY + containerElement.offsetHeight));
						containerElement.style.top = posY + "px";
					}
					
					
					this.Visible = true;
					
					this.hideControls();
 
					if (this.UseTooltipHeader || this.UseTooltipDays || this.UseTooltipFooter)
						startTooltip();

					
				} 

				this.Hide = function () { // Método que fecha o calendário
					if (this.onHide != null) {
						this.onHide();
					}
					
					this.showControls();

					var containerElement = document.getElementById(this.containerId);
					containerElement.style.display = 'none';
			
					this.Visible = false;
					document.onmousemove = null;

					
				} 

			    // Inicio - function Draw
				this.Draw = function () { // Método que desenha o calendário no elemento destino (containerId)

					var outputHtml = "";

					var CSSWidth = "";
					var CSSHeight = "";

					if (this.width != null) {
						CSSWidth = "width: " + this.width + ";";
					}
					
					if (this.height != null) {
						CSSHeight = "height: " + this.height + ";";
					}
					
						outputHtml += "<div class=\"ToolLeft\"><div class=\"toolArrow_left\"><img src=\"/images/toolArrow_left.gif\" alt=\"\" title=\"\" /></div><div class=\"toolFrame_left\">";
						outputHtml += "<table cellspacing=\"0\" cellpadding=\"0\" style=\"" + CSSWidth + CSSHeight +" \" onmouseover=\"" + this.Id + ".MouseIsOver = true;\" onmouseout=\"" + this.Id + ".MouseIsOver = false;\">";

                            
							outputHtml += "<tr>";
							outputHtml += "<td class=\"tableHeader\">";
							outputHtml += this.DrawHeader();
							
							
							outputHtml += "</td>";
							outputHtml += "</tr>";

							outputHtml += "<tr>";
								outputHtml += "<td align=\"center\">";
									outputHtml += "<table Class=\"CalendarContent\" width=\"100%\" cellspacing=\"2\" cellpadding=\"0\"  background-color: #ffffff;\">";
										outputHtml += this.DrawWheekDays();
										
										outputHtml += this.DrawDays();
										
									outputHtml += "</table>";
								outputHtml += "</td>";
							outputHtml += "</tr>";
							outputHtml +="<tr><td class=\"hr_double\"/></tr>";
							outputHtml += "<tr>";
								outputHtml += "<td align=\"center\">";
									outputHtml += this.DrawFooter();

								outputHtml += "</td>";
							outputHtml += "</tr>";

						outputHtml += "</table>";
						outputHtml += "</div></div>";
						
						//parte fa
						
						/*outputHtml += "<div class=\"ToolLeft\"><div class=\"toolArrow_left\"><img src=\"/images/toolArrow_left.gif\" alt=\"\" title=\"\" /></div><div class=\"toolFrame_left\">";
						outputHtml += "<table cellspacing=\"0\" cellpadding=\"0\" style=\"" + CSSWidth + CSSHeight +" \" onmouseover=\"" + this.Id + ".MouseIsOver = true;\" onmouseout=\"" + this.Id + ".MouseIsOver = false;\">";

							outputHtml += "<tr>";
							outputHtml += "<td class=\"tableHeader\">";
							outputHtml += this.DrawHeader1();
							outputHtml += "</td>";
							outputHtml += "</tr>";

							outputHtml += "<tr>";
								outputHtml += "<td align=\"center\">";
									outputHtml += "<table Class=\"CalendarContent\" width=\"100%\" cellspacing=\"2\" cellpadding=\"0\"  background-color: #ffffff;\">";
										outputHtml += this.DrawWheekDays1();
										outputHtml += this.DrawDays1();
									outputHtml += "</table>";
								outputHtml += "</td>";
							outputHtml += "</tr>";
							outputHtml +="<tr><td class=\"hr_double\"/></tr>";
							outputHtml += "<tr>";
								outputHtml += "<td align=\"center\">";
									outputHtml += this.DrawFooter1();
								outputHtml += "</td>";
							outputHtml += "</tr>";

						outputHtml += "</table>";
						outputHtml += "</div></div>";
						*/
						//fim da parte fa

					var containerElement = document.getElementById(this.containerId);

					containerElement.innerHTML = outputHtml;

					
					this.Visible = true;
					
				}
			// Fim - function Draw

			
			
			// Inicio - function DrawHeader
				this.DrawHeader = function () {  // Método que desenha o header do calendário com os controles NextMonth e PrevMonth
					var outputHtml = "";
/*
<table cellpadding="0" cellspacing="0" class="header Calendar">
									<tr>
										<td class="btn"><a href="#"><img src="img/arrow_back.gif" alt="Volver" title="Volver" /></a></td>
										<td>Enero</td>
										<td class="btn"><a href="#"><img src="img/arrow_fwd.gif" alt="Remite" title="Remite" /></a></td>
									</tr>
								</table>
*/
					outputHtml += "<table width=\"100%\"id=\"" + calendarIdPrefix + "Header-" + this.Id + "\" cellspacing=\"0\" cellpadding=\"2\" border=\"0\">";
						outputHtml += "<tr>";
						
							outputHtml += "<td class=\"" + this.CSSRowStart + "\"></td>";
							outputHtml += "<td><a";
							if (this.UseTooltipHeader) {
								outputHtml += " onMouseover=\"hilite(this);ddrivetip('" + this.ToolTipPreviousYearText + "');\" onMouseout=\"restore(this);hideddrivetip();\"";
							}
							else {
								outputHtml += " onMouseover=\"hilite(this);\" onMouseout=\"restore(this);\"";
							}

							outputHtml += " href=\"javascript:" + this.Id + ".PrevYear();\" class=\"" + this.CSSYearPrevious + "\" id=\"" + calendarIdPrefix + "-PrevYear-" + this.Id + "\" ><img src=\"/images/arrow_back.gif\" /><img src=\"/images/arrow_back.gif\" /></a></td>";

							outputHtml += "<td class=\"" + this.CSSCellSpacer + "\">&nbsp;</td>";

							outputHtml += "<td><a";
							if (this.UseTooltipHeader) {
								outputHtml += " onMouseover=\"hilite(this);ddrivetip('" + this.ToolTipPreviousMonthText + "');\" onMouseout=\"restore(this);hideddrivetip();\"";
							}
							else {
								outputHtml += " onMouseover=\"hilite(this);\" onMouseout=\"restore(this);\"";
							}
						
							outputHtml += "href=\"javascript:" + this.Id + ".PrevMonth();\" class=\"" + this.CSSMonthPrevious + "\" id=\"" + calendarIdPrefix + "-PrevMonth-" + this.Id + "\"><img src=\"/images/arrow_back.gif\"  /></a></td>";
							
							
							outputHtml += "<td class=\"" + this.CSSCellSpacer + "\">&nbsp;</td>";
							outputHtml += "<td class=\"" + this.CSSHeader + "\" nowrap>" + this.getMonth(this.iMonth) + " " + this.iYear + "</td>";
							outputHtml += "<td class=\"" + this.CSSCellSpacer + "\">&nbsp;</td>";

							outputHtml += "<td><a";
							if (this.UseTooltipHeader) {
								outputHtml += " onMouseover=\"hilite(this);ddrivetip('" + this.ToolTipNextMonthText + "');\"; onMouseout=\"restore(this);hideddrivetip();\"";
							}
							else {
								outputHtml += " onMouseover=\"hilite(this);\" onMouseout=\"restore(this);\"";
							}
							outputHtml += " href=\"javascript:"+this.Id+ ".NextMonth();\" class=\"" + this.CSSMonthNext + "\" id=\"" + calendarIdPrefix + "-NextMonth-" + this.Id + "\"><img src=\"/images/arrow_fwd.gif\"  /></a></td>";

							outputHtml += "<td class=\"" + this.CSSCellSpacer + "\">&nbsp;</td>";
							
							outputHtml += "<td><a";
							if (this.UseTooltipHeader) {
								outputHtml += " onMouseover=\"hilite(this);ddrivetip('" + this.ToolTipNextYearText + "');\"; onMouseout=\"restore(this);hideddrivetip();\"";
							}
							else {
								outputHtml += " onMouseover=\"hilite(this);\" onMouseout=\"restore(this);\"";
							}

							outputHtml += "href=\"javascript:" + this.Id + ".NextYear();\" class=\"" + this.CSSYearNext + "\" id=\"" + calendarIdPrefix + "-NextYear-" + this.Id + "\"><img src=\"/images/arrow_fwd.gif\"  /><img src=\"/images/arrow_fwd.gif\" /></a></td>";

							outputHtml += "<td class=\"" + this.CSSRowEnd + "\"></td>";
						outputHtml += "</tr>";
					outputHtml += "</table>";

					return outputHtml;
				}
				
					// Inicio - function DrawHeader
				this.DrawHeader1 = function () {  // Método que desenha o header do calendário com os controles NextMonth e PrevMonth
					var outputHtml = "";
/*
<table cellpadding="0" cellspacing="0" class="header Calendar">
									<tr>
										<td class="btn"><a href="#"><img src="img/arrow_back.gif" alt="Volver" title="Volver" /></a></td>
										<td>Enero</td>
										<td class="btn"><a href="#"><img src="img/arrow_fwd.gif" alt="Remite" title="Remite" /></a></td>
									</tr>
								</table>
*/
					outputHtml += "<table width=\"100%\"id=\"" + calendarIdPrefix + "Header-" + this.Id + "\" cellspacing=\"0\" cellpadding=\"2\" border=\"0\">";
						outputHtml += "<tr>";
						
							outputHtml += "<td class=\"" + this.CSSRowStart + "\"></td>";
							outputHtml += "<td";
							if (this.UseTooltipHeader) {
								outputHtml += " onMouseover=\"hilite(this);ddrivetip('" + this.ToolTipPreviousYearText + "');\" onMouseout=\"restore(this);hideddrivetip();\"";
							}
							else {
								outputHtml += " onMouseover=\"hilite(this);\" onMouseout=\"restore(this);\"";
							}
							//onclick=\"" + this.Id + ".Hide(); return false;\" nowrap"
							//
							outputHtml += "onclick=\"" + this.Id + ".PrevYear()\"  class=\"" + this.CSSYearPrevious + "\" id=\"" + calendarIdPrefix + "-PrevYear-" + this.Id + "\"><img src=\"/images/arrow_back.gif\" /><img src=\"/images/arrow_back.gif\" /></td>";
                       
							outputHtml += "<td class=\"" + this.CSSCellSpacer + "\">&nbsp;</td>";

							outputHtml += "<td";
							if (this.UseTooltipHeader) {
								outputHtml += " onMouseover=\"hilite(this);ddrivetip('" + this.ToolTipPreviousMonthText + "');\" onMouseout=\"restore(this);hideddrivetip();\"";
							}
							else {
								outputHtml += " onMouseover=\"hilite(this);\" onMouseout=\"restore(this);\"";
							}
							outputHtml += " onclick=\"" + this.Id + ".PrevMonth();\" class=\"" + this.CSSMonthPrevious + "\" id=\"" + calendarIdPrefix + "-PrevMonth-" + this.Id + "\"><img src=\"/images/arrow_back.gif\"  /></td>";

							outputHtml += "<td class=\"" + this.CSSCellSpacer + "\">&nbsp;</td>";
							outputHtml += "<td class=\"" + this.CSSHeader + "\" nowrap>" + this.getMonth(this.iMonth + 1) + " " + this.iYear + "</td>";
							outputHtml += "<td class=\"" + this.CSSCellSpacer + "\">&nbsp;</td>";

							outputHtml += "<td";
							if (this.UseTooltipHeader) {
								outputHtml += " onMouseover=\"hilite(this);ddrivetip('" + this.ToolTipNextMonthText + "');\"; onMouseout=\"restore(this);hideddrivetip();\"";
							}
							else {
								outputHtml += " onMouseover=\"hilite(this);\" onMouseout=\"restore(this);\"";
							}
							outputHtml += " onclick=\"" + this.Id + ".NextMonth();\" class=\"" + this.CSSMonthNext + "\" id=\"" + calendarIdPrefix + "-NextMonth-" + this.Id + "\"><img src=\"/images/arrow_fwd.gif\"  /></td>";

							outputHtml += "<td class=\"" + this.CSSCellSpacer + "\">&nbsp;</td>";
							
							outputHtml += "<td";
							if (this.UseTooltipHeader) {
								outputHtml += " onMouseover=\"hilite(this);ddrivetip('" + this.ToolTipNextYearText + "');\"; onMouseout=\"restore(this);hideddrivetip();\"";
							}
							else {
								outputHtml += " onMouseover=\"hilite(this);\" onMouseout=\"restore(this);\"";
							}
							outputHtml += " onclick=\"" + this.Id + ".NextYear();\" class=\"" + this.CSSYearNext + "\" id=\"" + calendarIdPrefix + "-NextYear-" + this.Id + "\"><img src=\"/images/arrow_fwd.gif\"  /><img src=\"/images/arrow_fwd.gif\" /></td>";

							outputHtml += "<td class=\"" + this.CSSRowEnd + "\"></td>";
						outputHtml += "</tr>";
					outputHtml += "</table>";

					return outputHtml;
				}
				
				
				
				
			// Fim - function DrawHeader

			// Inicio - function DrawWheekDays
				this.DrawWheekDays = function () { // Método que desenha os dias da semana, de dom a sab

					var aWeekd = this.getWeekDays();

					var outputHtml = "";

					outputHtml += "<tr>";

					for (var iWeek = 0; iWeek < aWeekd.length; iWeek++) {
						
						var className = this.CSSWeekDaysHeader;
                              //alert(this.specialDays.search(iWeek));
						if (this.specialDays.search(iWeek) != -1) { // Se for domingo ou sábado o CSS é diferente dos dias de semana
							className = this.CSSWeekEndsHeader;
						}

						outputHtml += "<td class=\"" + className + "\">" + aWeekd[iWeek] + "</td>";
					}
					outputHtml += "</tr>";

					return outputHtml;
				}
				
				this.DrawWheekDays1 = function () { // Método que desenha os dias da semana, de dom a sab

					var aWeekd = this.getWeekDays();

					var outputHtml = "";

					outputHtml += "<tr>";

					for (var iWeek = 0; iWeek < aWeekd.length; iWeek++) {
						
						var className = this.CSSWeekDaysHeader;
                              //alert(this.specialDays.search(iWeek));
						if (this.specialDays.search(iWeek) != -1) { // Se for domingo ou sábado o CSS é diferente dos dias de semana
							className = this.CSSWeekEndsHeader;
						}

						outputHtml += "<td class=\"" + className + "\">" + aWeekd[iWeek] + "</td>";
					}
					outputHtml += "</tr>";

					return outputHtml;
				}
			// Fim - function DrawWheekDays

				this.DrawDays = function () { // Método que desenha a tabela com os dias do mês

					var myMonth = new Array(); // Array com as semanas de cada mes, nunca que um mes vai ter mais que 5 semanas
					myMonth[0] = new Array(7);
					myMonth[1] = new Array(7);
					myMonth[2] = new Array(7);
					myMonth[3] = new Array(7);
					myMonth[4] = new Array(7);
					myMonth[5] = new Array(7);

					var dCalDate = new Date(this.iYear, this.iMonth - 1, 1);

					var iDayOfFirst = dCalDate.getDay()-this.startingWeekDay;
					if (iDayOfFirst<0) iDayOfFirst=6;
					var iDaysInMonth = fGetDaysInMonth(dCalDate.getMonth(), dCalDate.getFullYear());

					var iVarDate = 1;
					var i, d, w;
					
					for (d = iDayOfFirst; d < 7; d++) {
						myMonth[0][d] = iVarDate;
						iVarDate++;
					}

					for (w = 1; w < myMonth.length; w++) {
						for (d = 0; d < 7; d++) {
							if (iVarDate <= iDaysInMonth) {
								myMonth[w][d] = iVarDate;
								iVarDate++;
							}
							else {
								myMonth[w][d] = 0;
							}
						}
					}

					var outputHtml = "";

					var DayCount = 0;

					for (w = 0; w < myMonth.length; w++) {
						var newRow = "<tr height=\"20\">";
						var gotDays = false;
					
						for (d = 0; d < 7; d++) {

							if (myMonth[w][d] > 0) {
								DayCount++;
								
								gotDays = true;

								var className = this.CSSWeekDays;
								var DayOpacity = this.Opacity
								if (d == 0 || d == 6)
									className = this.CSSWeekEnds;

								if ((new Date().getDate() == myMonth[w][d]) && (new Date().getMonth() + 1 == this.iMonth) && (new Date().getFullYear() == this.iYear)) {
									className = this.CSSCurrentDay;
                                    DayOpacity=this.OpacityCurrentDay;
								}

								if (myMonth[w][d] == this.iDay) {
									className = this.CSSSelectDay;
								}

								var diaValido = false;

								var validoMin = false;

								if (this.minDate != null) 
								{
									if (new Date(this.iYear, this.iMonth - 1, myMonth[w][d]) >= this.minDate)
										validoMin = true;
									else
										validoMin = false;
								}
								else {
									validoMin = true;
								}

								
								var validoMax = false;

								if (this.maxDate != null) {

									if (new Date(this.iYear, this.iMonth - 1, myMonth[w][d]) <= this.maxDate)
										validoMax = true;
									else
										validoMax = false;
								}
								else {
									validoMax = true;
								}

								diaValido = validoMin && validoMax;

								var visibleDayText = addBeginZero(DayCount);

								var visibleMonthText = this.getMonth(this.iMonth);
									
								newRow += "<td id='" + calendarIdPrefix + "-Day-" + DayCount + "-" + this.Id + "' class='"+className+"'";

								if (this.UseTooltipDays) {
									newRow += " onMouseover=\"hilite(this);ddrivetip('" + visibleDayText + " de " + visibleMonthText + " de " + this.iYear + "');\"; onMouseout=\"restore(this);hideddrivetip();\"";
								}
								else {
									newRow += " onMouseover=\"hilite(this);\" onMouseout=\"restore(this);\"";
								
								}

								if (diaValido) {
									newRow += " onclick=\"" + this.Id + ".SelectDay("+DayCount+");\" style='cursor: pointer; text-align: center;'>";
									newRow +=  "<a href=\"#\">"
								}
								else {
									newRow += " style='text-align: center; filter: alpha(opacity="+DayOpacity+");-moz-opacity:."+DayOpacity+";opacity:."+DayOpacity+";cursor: no-drop;'>";
								}
								 
								newRow +=  myMonth[w][d];
								if (diaValido)
							    {
								    newRow +="</a>";
								}
								
							} else {
								newRow += "<td>";			
								newRow += "&nbsp;";
							}
							newRow += "</td>";
						}
						newRow += "</tr>";
						
						if (gotDays) {
							outputHtml += newRow;
						}
					}

					return outputHtml;
				}

this.DrawDays1 = function () { // Método que desenha a tabela com os dias do mês

					var myMonth = new Array(); // Array com as semanas de cada mes, nunca que um mes vai ter mais que 5 semanas
					myMonth[0] = new Array(7);
					myMonth[1] = new Array(7);
					myMonth[2] = new Array(7);
					myMonth[3] = new Array(7);
					myMonth[4] = new Array(7);
					myMonth[5] = new Array(7);

					var dCalDate = new Date(this.iYear, this.iMonth, 1);

					var iDayOfFirst = dCalDate.getDay()-this.startingWeekDay;
					if (iDayOfFirst<0) iDayOfFirst=6;
					var iDaysInMonth = fGetDaysInMonth(dCalDate.getMonth(), dCalDate.getFullYear());

					var iVarDate = 1;
					var i, d, w;
					
					for (d = iDayOfFirst; d < 7; d++) {
						myMonth[0][d] = iVarDate;
						iVarDate++;
					}

					for (w = 1; w < myMonth.length; w++) {
						for (d = 0; d < 7; d++) {
							if (iVarDate <= iDaysInMonth) {
								myMonth[w][d] = iVarDate;
								iVarDate++;
							}
							else {
								myMonth[w][d] = 0;
							}
						}
					}

					var outputHtml = "";

					var DayCount = 0;

					for (w = 0; w < myMonth.length; w++) {
						var newRow = "<tr height=\"20\">";
						var gotDays = false;
					
						for (d = 0; d < 7; d++) {

							if (myMonth[w][d] > 0) {
								DayCount++;
								
								gotDays = true;

								var className = this.CSSWeekDays;
								var DayOpacity = this.Opacity
								if (d == 0 || d == 6)
									className = this.CSSWeekEnds;

								if ((new Date().getDate() == myMonth[w][d]) && (new Date().getMonth() + 1 == this.iMonth) && (new Date().getFullYear() == this.iYear)) {
									className = this.CSSWeekDays;
                                    DayOpacity=this.CSSWeekDays;
								}

								if (myMonth[w][d] == this.iDay) {
									className = this.CSSWeekDays;
								}

								var diaValido = false;

								var validoMin = false;

								if (this.minDate != null) 
								{
									if (new Date(this.iYear, this.iMonth - 1, myMonth[w][d]) >= this.minDate)
										validoMin = true;
									else
										validoMin = false;
								}
								else {
									validoMin = true;
								}

								
								var validoMax = false;

								if (this.maxDate != null) {

									if (new Date(this.iYear, this.iMonth - 1, myMonth[w][d]) <= this.maxDate)
										validoMax = true;
									else
										validoMax = false;
								}
								else {
									validoMax = true;
								}

								diaValido = validoMin && validoMax;

								var visibleDayText = addBeginZero(DayCount);

								var visibleMonthText = this.getMonth(this.iMonth + 1);
									
								newRow += "<td id='" + calendarIdPrefix + "-Day-" + DayCount + "-" + this.Id + "' class='"+className+"'";

								if (this.UseTooltipDays) {
									newRow += " onMouseover=\"hilite(this);ddrivetip('" + visibleDayText + " de " + visibleMonthText + " de " + this.iYear + "');\"; onMouseout=\"restore(this);hideddrivetip();\"";
								}
								else {
									newRow += " onMouseover=\"hilite(this);\" onMouseout=\"restore(this);\"";
								
								}

								if (diaValido) {
									newRow += " onclick=\"" + this.Id + ".SelectDay("+DayCount+");\" style='cursor: pointer; text-align: center;'>";
									newRow +=  "<a href=\"#\">"
								}
								else {
									newRow += " onclick=\"" + this.Id + ".SelectDay("+DayCount+");\" style='cursor: pointer; text-align: center;'>";
									newRow +=  "<a href=\"#\">"
								}
								
								newRow +=  myMonth[w][d];
								if (diaValido)
							    {
								    newRow +="</a>";
								}
								
							} else {
								newRow += "<td>";			
								newRow += "&nbsp;";
							}
							newRow += "</td>";
						}
						newRow += "</tr>";
						
						if (gotDays) {
							outputHtml += newRow;
						}
					}

					return outputHtml;
				}
				this.DrawFooter = function () { // Método que desenha o Footer com o butão de fechar(hide) o calendário
					var outputHtml = "";
					outputHtml += "<table id=\"CalHeader-" + this.Id + "\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">";
						outputHtml += "<tr>";

							//outputHtml += "<td class=\"" + this.CSSRowStart + "\" width=\"30%\">&nbsp;</td>";

							outputHtml += "<td style=\"text-align:left;\" class=\"" + this.CSSClose + "\"  width=\"100%\" id=\"" + calendarIdPrefix + "-CloseButton-" + this.Id + "\" onclick=\"" + this.Id + ".Hide(); return false;\" nowrap";
							if (this.UseTooltipFooter) {
								outputHtml += " onMouseover=\"hilite(this);ddrivetip('" + this.ToolTipCloseText + "');\"; onMouseout=\"restore(this);hideddrivetip();\"";
							}
							else {
								outputHtml += " onMouseover=\"hilite(this);\" onMouseout=\"restore(this);\"";
							}
							outputHtml += "><img title=\"Cerrar\" alt=\"Cerrar\" src=\"/images/button_cerrar.gif\"/> <a href=\"#\">" + this.CloseText + "</a></td>";

							//outputHtml += "<td class=\"" + this.CSSRowEnd + "\" width=\"30%\">&nbsp;</td>";

						outputHtml += "</tr>";
					outputHtml += "</table>";

					return outputHtml;
				}
				
				this.DrawFooter1 = function () { // Método que desenha o Footer com o butão de fechar(hide) o calendário
					var outputHtml = "";
					outputHtml += "<table id=\"CalHeader-" + this.Id + "\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\">";
						outputHtml += "<tr>";

							//outputHtml += "<td class=\"" + this.CSSRowStart + "\" width=\"30%\">&nbsp;</td>";

							outputHtml += "<td style=\"text-align:left;\" class=\"" + this.CSSClose + "\"  width=\"100%\" id=\"" + calendarIdPrefix + "-CloseButton-" + this.Id + "\" onclick=\"" + this.Id + ".Hide(); return false;\" nowrap";
							if (this.UseTooltipFooter) {
								outputHtml += " onMouseover=\"hilite(this);ddrivetip('" + this.ToolTipCloseText + "');\"; onMouseout=\"restore(this);hideddrivetip();\"";
							}
							else {
								outputHtml += " onMouseover=\"hilite(this);\" onMouseout=\"restore(this);\"";
							}
							outputHtml += "><img title=\"Cerrar\" alt=\"Cerrar\" src=\"/images/button_cerrar.gif\"/> <a href=\"#\">" + this.CloseText + "</a></td>";

							//outputHtml += "<td class=\"" + this.CSSRowEnd + "\" width=\"30%\">&nbsp;</td>";

						outputHtml += "</tr>";
					outputHtml += "</table>";

					return outputHtml;
				}

				this.setElementUnder = function () {
					if (this.CSSCalendarBackground.length > 0) {
						var thisCalendar = document.getElementById(this.containerId);

						var posX = thisCalendar.offsetLeft;
						var posY = thisCalendar.offsetTop;
						var width = thisCalendar.offsetWidth;
						var height = thisCalendar.offsetHeight;


						var backgroundElementId = calendarIdPrefix + "-Background-" + this.Id;

						var targetElement = document.getElementById(backgroundElementId);

						if (targetElement == null) {

							var myElement = document.createElement("<span id=\"" + backgroundElementId + "\" class=\"" + this.CSSCalendarBackground + "\"></span>");
							document.getElementById("body").appendChild(myElement);

							targetElement = document.getElementById(backgroundElementId);
						}

						targetElement.style.left = posX;
						targetElement.style.top = posY;
						targetElement.style.width = width;
						targetElement.style.height = height;

						thisCalendar.style.zIndex = 10000;
						targetElement.style.zIndex = thisCalendar.style.zIndex - 1;

					}
				}

				this.hideControls = function () {
					if (this.hiddenControls == null) {this.hiddenControls = new Array();}

					var aboveElement = document.getElementById(this.containerId);

					var arrElements = document.getElementsByTagName('SELECT');

					for (var myIndex = 0; myIndex < arrElements.length; myIndex++) {
						var myElement = arrElements[myIndex];

						var elementInside = isInside(aboveElement, myElement);

						if (elementInside) {					
							myElement.style.visibility = 'hidden';
							this.hiddenControls[this.hiddenControls.length] = myElement;
						}
					}
				}

				this.showControls = function () {
					if (this.hiddenControls != null) {
						for (var myIndex = 0; myIndex < this.hiddenControls.length; myIndex++) {
							var myElement = this.hiddenControls[myIndex];

							myElement.style.visibility = 'visible';
						}

						this.hiddenControls = null;
					}
				}

			}
			// Fim da "classe" do calendário
			
			function addBeginZero(valor) {
				var returnValue = valor;
				if (valor < 10) {
					returnValue = "0" + valor;
				}

				return returnValue;
			}
			
			function isDate(value) {
				return !isNaN(new Date(value));
			}

			function chkDate(obj) {
				var returnValue = isDate(obj.value);
				if (!returnValue) {
					//alert('La fecha no es valida.');
					alert(document.getElementById("fechaNoValida").value);
					obj.focus();
				}
				
				return returnValue;
			}

			function getDateFromString(myValue, splitter) {
				var returnDate = new Date();

				if (isDate(myValue, 0)) {
				
					var dateArr = myValue.split(splitter);

					if (dateArr.length == 3) {
						var myYear = Number(dateArr[2]);
						var myMonth = Number(dateArr[1]);
						var myDay = Number(dateArr[0]);

						returnDate = new Date(myYear, myMonth - 1, myDay);
					}
				}

				//alert(Date.parse(returnDate)) ;

				return returnDate ;
			}
			
			function findPosX(obj) {
				var curleft = 0;
				if (obj.offsetParent)
				{
					while (obj.offsetParent)
					{
						curleft += obj.offsetLeft
						obj = obj.offsetParent;
					}
				}
				else if (obj.x)
					curleft += obj.x;
				return curleft;
			}

			function findPosY(obj) {
				var curtop = 0;
				if (obj.offsetParent)
				{
					while (obj.offsetParent)
					{
						curtop += obj.offsetTop
						obj = obj.offsetParent;
					}
				}
				else if (obj.y)
					curtop += obj.y;
				return curtop;
			}
			
			function isInside(containerElement, element) {
				var returnValue = false;

				var width = element.offsetWidth;
				var height = element.offsetHeight;

				var elementX1 = findPosX(element);
				var elementY1 = findPosY(element);

				var elementX2 = elementX1 + width;
				var elementY2 = elementY1;

				var elementX3 = elementX1;
				var elementY3 = elementY1 + height;

				var elementX4 = elementX1 + width;
				var elementY4 = elementY1 + height;

				if (!returnValue)
					returnValue = returnValue || isInsideArea(containerElement, elementX1, elementY1);

				if (!returnValue)
					returnValue = returnValue || isInsideArea(containerElement, elementX2, elementY2);

				if (!returnValue)
					returnValue = returnValue || isInsideArea(containerElement, elementX3, elementY3);

				if (!returnValue)
					returnValue = returnValue || isInsideArea(containerElement, elementX4, elementY4);

				if (!returnValue)
					returnValue = returnValue || intersectLines(containerElement, elementX1, elementY1, elementX2, elementY2);

				if (!returnValue)
					returnValue = returnValue || intersectLines(containerElement, elementX2, elementY2, elementX4, elementY4);

				if (!returnValue)
					returnValue = returnValue || intersectLines(containerElement, elementX4, elementY4, elementX3, elementY3);

				if (!returnValue)
					returnValue = returnValue || intersectLines(containerElement, elementX3, elementY3, elementX1, elementY1);

				return returnValue;
			}

			function isInsideArea(containerElement, myX, myY) {
				var returnValue = false;

				var width = containerElement.offsetWidth;
				var height = containerElement.offsetHeight;

				var containerX1 = findPosX(containerElement);
				var containerY1 = findPosY(containerElement);
				
				var containerX2 = containerX1 + width;
				var containerY2 = containerY1;

				var containerX3 = containerX1;
				var containerY3 = containerY1 + height;

				var containerX4 = containerX1 + width;
				var containerY4 = containerY1 + height;

				if ((containerX1 <= myX) && (containerX2 >= myX)) { // Está dentro do eixo X
					if ( (containerY1 <= myY) && (containerY3 >= myY)) { // Está dentro do eixo Y
						returnValue = true;
					}
				}

				return returnValue;
			}

			function intersectLines(containerElement, lineX1, lineY1, LineX2, LineY2) {
				var returnValue = false;

				var containerWidth = containerElement.offsetWidth;
				var containerHeight = containerElement.offsetHeight;

				var containerX1 = findPosX(containerElement);
				var containerY1 = findPosY(containerElement);
				
				var containerX2 = containerX1 + containerWidth;
				var containerY2 = containerY1;

				var containerX3 = containerX1;
				var containerY3 = containerY1 + containerHeight;

				var containerX4 = containerX1 + containerWidth;
				var containerY4 = containerY1 + containerHeight;

				if (!returnValue) // Recta de X1 para X2
					returnValue = returnValue || intersect(containerX1, containerY1, containerX2, containerY2, lineX1, lineY1, LineX2, LineY2);

				if (!returnValue) // Recta de X2 para X4
					returnValue = returnValue || intersect(containerX2, containerY2, containerX4, containerY4, lineX1, lineY1, LineX2, LineY2);

				if (!returnValue) // Recta de X4 para X3
					returnValue = returnValue || intersect(containerX4, containerY4, containerX3, containerY3, lineX1, lineY1, LineX2, LineY2);

				if (!returnValue) // Recta de X3 para X1
					returnValue = returnValue || intersect(containerX3, containerY3, containerX1, containerY1, lineX1, lineY1, LineX2, LineY2);

				return returnValue;
			}

			function intersect(line1X1, line1Y1, line1X2, line1Y2, line2X1, line2Y1, line2X2, line2Y2) {
				var returnValue = false;

				if ( (line1X1 <= line2X1) && (line2X1 <= line1X2) ) {
					if ( (line2Y1 <= line1Y1) && (line1Y1 <= line2Y2) ) {
						returnValue = true;
					}
				}

				return returnValue;
			}
			
			function getElementHeight(Elem) {
				if (ns4) {
					var elem = getObjNN4(document, Elem);
					return elem.clip.height;
				} else {
					if(document.getElementById) {
						var elem = document.getElementById(Elem);
					} else if (document.all){
						var elem = document.all[Elem];
					}
					if (op5) { 
						xPos = elem.style.pixelHeight;
					} else {
						xPos = elem.offsetHeight;
					}
					return xPos;
				} 
			}
			
			function getElementWidth(Elem) {
				if (ns4) {
					var elem = getObjNN4(document, Elem);
					return elem.clip.width;
				} else {
					if(document.getElementById) {
						var elem = document.getElementById(Elem);
					} else if (document.all){
						var elem = document.all[Elem];
					}
					if (op5) {
						xPos = elem.style.pixelWidth;
					} else {
						xPos = elem.offsetWidth;
					}
					return xPos;
				}
			}
			
			function getObjNN4(obj,name)
			{
				var x = obj.layers;
				var foundLayer;
				for (var i=0;i<x.length;i++)
				{
					if (x[i].id == name)
		 				foundLayer = x[i];
					else if (x[i].layers.length)
						var tmp = getObjNN4(x[i],name);
					if (tmp) foundLayer = tmp;
				}
				return foundLayer;
			}
			
			function chkDate(obj) {
				var returnValue = true;
				
				if (!isDate(obj.value, 0)) {
					//alert('La fecha no es valida.');
					alert(document.getElementById("fechaNoValida").value);
					obj.select();
					obj.focus();
					returnValue = false;
				}
				
				return returnValue;
			}
			
		/**********************************************************************/ 
		/*Function name :isDigit(theDigit) */ 
		/*Usage of this function :test for an digit */ 
		/*Input parameter required:thedata=string for test whether is digit */ 
		/*Return value :if is digit,return true */ 
		/* else return false */ 
		/**********************************************************************/ 
		function isDigit(theDigit) { 
			var digitArray = new Array('0','1','2','3','4','5','6','7','8','9'), j; 

			for (j = 0; j < digitArray.length; j++) {
				if (theDigit == digitArray[j]) {
					return true;
				}
			} 
			return false;
		}

		/*************************************************************************/ 
		/*Function name :isPositiveInteger(theString) */ 
		/*Usage of this function :test for an +ve integer */ 
		/*Input parameter required:thedata=string for test whether is +ve integer*/ 
		/*Return value :if is +ve integer,return true */ 
		/* else return false */ 
		/*function require :isDigit */ 
		/*************************************************************************/ 
		function isPositiveInteger(theString) { 
			var theData = new String(theString) 

			if (!isDigit(theData.charAt(0))) {
				if (!(theData.charAt(0)== '+')) {
					return false;
				}
			}

			for (var i = 1; i < theData.length; i++) {
				if (!isDigit(theData.charAt(i))) {
					return false;
				}
			}

			return true;
		} 

		/**********************************************************************/ 
		/*Function name :isDate(s,f) */ 
		/*Usage of this function :To check s is a valid format */ 
		/*Input parameter required:s=input string */ 
		/* f=input string format */ 
		/* =1,in mm/dd/yyyy format */ 
		/* else in dd/mm/yyyy */ 
		/*Return value :if is a valid date return 1 */ 
		/* else return 0 */ 
		/*Function required :isPositiveInteger() */ 
		/**********************************************************************/ 
		function isDate2(s, f) {
			var a1=s.split("/"); 
			var a2=s.split("-"); 
			var e=true; 
			if ((a1.length!=3) && (a2.length!=3)) { 
				e=false; 
			} 
			else {
				if (a1.length==3) 
					var na=a1; 
				if (a2.length==3) 
					var na=a2; 
		
				if (isPositiveInteger(na[0]) && isPositiveInteger(na[1]) && isPositiveInteger(na[2])) {
					if (f==1) {
						var d=na[1],m=na[0]; 
					} 
					else {
						var d=na[0],m=na[1]; 
					} 

					var y=na[2]; 

					if (((e) && (y<1000)||y.length>4)) {
						e = false 
					}
		
					if (e) { 
						v=new Date(m+"/"+d+"/"+y); 

						if (v.getMonth()!=m-1) {
							e = false; 
						}
					} 
				} 
				else { 
					e = false; 
				} 
			} 
			return e;
		} 
		
		function chkCalendarVisibility(evt, objCalendar) {
			if (window.event)
				evt = window.event; 
		
			if (objCalendar != null && evt != null) {
				var node;
				
				if(window.event){
				    node = evt.srcElement;
				} else {
				    node = evt.target;
				    while(node.nodeType != node.ELEMENT_NODE)
					    node = node.parentNode;
			    }
			
				if (node != null) {
					if (node.id != objCalendar.callerId) {
						if (objCalendar.Visible && !objCalendar.MouseIsOver) {
							objCalendar.Hide();
						}
					}
				}
			}
		}

    
         
         
        
         
         
		/*function chkCalendarVisibility(evt, objCalendar) {
			if (window.event) 
				evt = window.event; 
		
			if (objCalendar != null && evt != null) {
				var node = evt.target;
				while(node.nodeType != node.ELEMENT_NODE)
					node = node.parentNode;
			
				if (node != null) {
					if (node.id != objCalendar.callerId) {
						if (objCalendar.Visible && !objCalendar.MouseIsOver) {
							objCalendar.Hide();
						}
					}
				}
			}
			
		}*/

        /*function chkCalendarVisibility(objCalendar) {
			if (objCalendar != null && window.event != null) {
				if (window.event.srcElement != null) {
					if (window.event.srcElement.id != objCalendar.callerId) {
						if (objCalendar.Visible && !objCalendar.MouseIsOver) {
							objCalendar.Hide();
						}
					}
				}
			}
			
		}*/

