/*  Coolite Inc. 2004-2006. All rights are reserved. Unauthorized use prohibited. Visit http://www.basicdatepicker.com/ for more info. Version 1.2.2411    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED    WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A    PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR    ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS    INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR    TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF    ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*/if (typeof(window["BDP"]) == "undefined") { window["BDP"] = {}; }    BasicDatePicker = function(suppressInit){if(!suppressInit) this.init();var today = new Date();this.todayDate = today.getDate(), this.todayMonth = today.getMonth(), this.todayYear = today.getFullYear(),this.dateCounts = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31),this.viewingYear, this.viewingMonth, this.selectedYear,this.selectedMonth, this.selectedDay,this.buttonElement, this.valueElement, this.labelElement, this.yearInc, this.params, this.timeout, this.interval, this._isDate, this.popUp,this.popUpShim, this.monthSelectorShim, this.yearSelectorShim, this.monthSelector, this.yearSelector,this.stayOpen = false, this.cancelFocus = false, this.cancelTextBoxClick, this.isIE, this.isIEWin, this.isOpera, this.isSafari, this.isNS6, this.isIEMac;};BasicDatePicker.prototype.init = function(){var ua = navigator.userAgent.toLowerCase();var isMac = (ua.indexOf("mac") != -1);this.isIE = (ua.indexOf("ie") != -1);this.isOpera = (ua.indexOf("opera") != -1);this.isSafari = (ua.indexOf("safari") != -1);this.isNS6 = (ua.indexOf("netscape6/") != -1);this.isIEWin = (this.isIE && !isMac && !this.isOpera);this.isIEMac = (this.isIE && isMac && !this.isOpera);};BasicDatePicker.prototype.ehTextBoxClick = function(buttonElement, valueElement, labelElement, params){this.stayOpen = true;if(this.cancelTextBoxClick) { this.cancelTextBoxClick = false; return false; }else { this.showPopUp(buttonElement, valueElement, labelElement, params); }};BasicDatePicker.prototype.showPopUp = function(buttonElement, valueElement, labelElement, params){if(this.cancelFocus) { this.cancelFocus = false; return false; }this.inputFocusValue = valueElement.value;if(!params.enabled) { return false; }if(this.params != null && (this.params != params)) { this.hidePopUp(); }else if(this.params == params && this.buttonElement == buttonElement && this.valueElement == valueElement) { this.hidePopUp(); return false; }this.buttonElement = buttonElement;this.valueElement = valueElement;this.labelElement = labelElement;this.params = this.loadParams(params);if(!this.popUp){this.popUp = document.createElement("DIV");with(this.popUp){id = "basicDatePickerPopUp";style.position = "absolute";style.visibility = "hidden";style.zIndex = "1000";}this.popUp.onclick = this.ehPopUpClick;document.body.appendChild(this.popUp);}if(!this.wireUpCustomEvent("onClientBeforeCalendarOpen")) { this.hidePopUp();return; }this.parseDate(this.valueElement.value);this.buildCalendar();var buttonPosition = this.findPosition(this.buttonElement);var leftPosition = this.params.xOffset + buttonPosition.x;var topPosition = this.params.yOffset + buttonPosition.y;this.popUp.style.left = (leftPosition + this.buttonElement.offsetWidth - this.popUp.offsetWidth) + "px";this.popUp.style.top = (topPosition + this.buttonElement.offsetHeight) + "px";if(parseInt(this.popUp.style.left) < 0) { this.popUp.style.left = 0; }if(parseInt(this.popUp.style.top) < 0) { this.popUp.style.top = 0; }this.popUpShim = this.showShim(this.popUpShim, this.popUp);this.popUp.style.visibility = "visible";if(!this.wireUpCustomEvent("onClientAfterCalendarOpen")) { this.hidePopUp();return; }document.onclick = this.ehDocumentClick;document.onkeydown = this.ehKeyPress;};BasicDatePicker.prototype.showShim = function(v, o){if(this.isIEWin){if(!v){v = document.createElement("IFRAME");with(v){src = "javascript:false;";style.position = "absolute";style.visibility = "hidden";style.filter = "progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)";}  document.body.appendChild(v);}with(v){style.width = o.offsetWidth;style.height = o.offsetHeight;style.top = o.style.top;style.left = o.style.left;style.zIndex = o.style.zIndex - 1;style.visibility = "visible";}}return v;};BasicDatePicker.prototype.hideShim = function(v) { if(this.isIEWin) { if(v) { v.style.visibility = "hidden"; }}};BasicDatePicker.prototype.hidePopUp = function(){if(!this.wireUpCustomEvent("onClientBeforeCalendarClose")) { return; }if(this.popUp) { this.popUp.style.visibility = "hidden"; }this.clearTimers();this.hideShim(this.popUpShim);this.hideSelectors();this.reset();document.onclick = null;document.onkeydown = null;};BasicDatePicker.prototype.hideSelectors = function(){if(this.monthSelector) this.monthSelector.style.visibility = "hidden";if(this.yearSelector) this.yearSelector.style.visibility = "hidden";this.hideShim(this.monthSelectorShim);this.hideShim(this.yearSelectorShim);};BasicDatePicker.prototype.clearTimers = function() { if(this.timeout) { clearTimeout(this.timeout); } if(this.interval) { clearInterval(this.interval); }};BasicDatePicker.prototype.buildStyleAttributes = function(style, cssClass){var atts = "";if(style.length > 0 || cssClass.length > 0){if(style.length > 0) { atts += " style=\"" + style + "\""; }if(cssClass.length > 0) { atts += " class=\"" + cssClass + "\""; }}return atts;};BasicDatePicker.prototype.buildSingleCalendar = function(year, month, showPrevMonthArrow, showNextMonthArrow){this.hideSelectors();/* previous/next month */var viewingPrevMonth = month - 1;var viewingPrevMonthYear = year;if(viewingPrevMonth == -1){viewingPrevMonth = 11;viewingPrevMonthYear--;}var viewingNextMonth = month + 1;var viewingNextMonthYear = year;if(viewingNextMonth == 12){viewingNextMonth = 0;viewingNextMonthYear++;}var o = "";o += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"" + this.buildStyleAttributes(this.params.popUpStyle, this.params.popUpStyleCssClass) + ">";o += "<tr><td>";if(this.params.showTitle){o += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"" + this.buildStyleAttributes(this.params.titleStyle, this.params.titleStyleCssClass) + ">";o += "<tr>";var monthAndYear = "<th>";var monthName = this.params.culture.monthNames[month];if(this.params.monthSelectorEnabled) { monthAndYear += "<span onclick=\"basicDatePicker.ehMonthSelectorClick(this)\" style=\"cursor:pointer\">" + monthName + "</span>"; }else { monthAndYear += monthName; }monthAndYear += " ";if(this.params.yearSelectorEnabled) { monthAndYear += "<span onclick=\"basicDatePicker.ehYearSelectorClick(this)\" style=\"cursor:pointer\">" + year + "</span>"; }else { monthAndYear += year; }monthAndYear += "</th>";if(this.params.showNextPrevMonth){var prevMonth, nextMonth;switch(this.params.nextPrevFormat){case "ShortMonth": prevMonth = this.params.culture.monthNamesAbbr[viewingPrevMonth];nextMonth = this.params.culture.monthNamesAbbr[viewingNextMonth];break;case "FullMonth": prevMonth = this.params.culture.monthNames[viewingPrevMonth];nextMonth = this.params.culture.monthNames[viewingNextMonth];break;case "Image":prevMonth = "<img src=\"" + this.params.prevMonthImageUrl + "\""; var prevMonthWidthHeight = (this.params.nextPrevMonthImageWidth != "") ? "width:" + this.params.nextPrevMonthImageWidth + ";" : "";prevMonthWidthHeight += (this.params.nextPrevMonthImageHeight != "") ? "height:" + this.params.nextPrevMonthImageHeight + ";" : "";if(prevMonthWidthHeight != "") prevMonth += " style=\"" + prevMonthWidthHeight + "\"";prevMonth += " border=\"0\" alt=\"\"/>";nextMonth = "<img src=\"" + this.params.nextMonthImageUrl + "\"";var nextMonthWidthHeight = (this.params.nextPrevMonthImageWidth != "") ? "width:" + this.params.nextPrevMonthImageWidth + ";" : "";nextMonthWidthHeight += (this.params.nextPrevMonthImageHeight != "") ? "height:" + this.params.nextPrevMonthImageHeight + ";" : "";if(nextMonthWidthHeight != "") nextMonth += " style=\"" + nextMonthWidthHeight + "\"";nextMonth += " border=\"0\" alt=\"\"/>";break;case "CustomText":default:prevMonth = this.params.prevMonthText;nextMonth = this.params.nextMonthText;break;}if(showPrevMonthArrow){o += "<td onclick=\"basicDatePicker.viewPrevMonth()\" onmousedown=\"basicDatePicker.clearTimers();basicDatePicker.timeout=setTimeout('basicDatePicker.ehPrevMonthMouseDown()', 400);\" onmouseup=\"basicDatePicker.clearTimers();\" onmouseout=\"basicDatePicker.clearTimers();\"" + this.buildStyleAttributes(this.params.nextPrevStyle, this.params.nextPrevStyleCssClass) + ">";o += prevMonth;o += "</td>";}else { o += "<td></td>"; }o += monthAndYear;if(showNextMonthArrow){o += "<td onclick=\"basicDatePicker.viewNextMonth()\" onmousedown=\"basicDatePicker.clearTimers();basicDatePicker.timeout=setTimeout('basicDatePicker.ehNextMonthMouseDown()', 400);\" onmouseup=\"basicDatePicker.clearTimers();\" onmouseout=\"basicDatePicker.clearTimers();\"" + this.buildStyleAttributes(this.params.nextPrevStyle, this.params.nextPrevStyleCssClass) + ">";o += nextMonth;o += "</td>";}else { o += "<td></td>"; }}else { o += monthAndYear; }o += "</tr>";o += "</table>";}/* leap year check */if(((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { this.dateCounts[1] = 29; }else { this.dateCounts[1] = 28; }/* calendar table */o += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"" + this.buildStyleAttributes(this.params.calendarStyle, this.params.calendarStyleCssClass) + ">";/* week number header */if(this.params.showDayHeader){o += "<thead><tr>";if(this.params.showWeekNumbers && this.params.firstDayOfWeek == 0) { o += "<th" + this.buildStyleAttributes(this.params.dayHeaderStyle, this.params.dayHeaderStyleCssClass) + ">&nbsp;</th>"; }/* day of week headers */var dayPointer = this.params.firstDayOfWeek;for(var i=0; i<7; i++, dayPointer++){if(dayPointer == 7) { dayPointer = 0; }o += "<th" + this.buildStyleAttributes(this.params.dayHeaderStyle, this.params.dayHeaderStyleCssClass) + ">";switch(this.params.dayNameFormat){case "Short":o += this.params.culture.dayNamesAbbr[dayPointer];break;case "Full":o += this.params.culture.dayNames[dayPointer];break;case "FirstTwoLetters":o += this.params.culture.dayNames[dayPointer].substring(0,2);break;case "FirstLetter":default:o += this.params.culture.dayNames[dayPointer].substring(0,1);break;}o += "</th>";}o += "</tr></thead>";}o += "<tbody><tr>";var column = 0;var startOfMonth = new Date(year,month,1).getDay();startOfMonth = startOfMonth - this.params.firstDayOfWeek;if(startOfMonth < 0) { startOfMonth = 7 + startOfMonth; }/* prev month days */for(var i=0; i<startOfMonth; i++, column++) { o += this.buildDayCell(viewingPrevMonthYear, viewingPrevMonth, this.dateCounts[viewingPrevMonth] - startOfMonth + i + 1, "prev"); }var row = 0;/* month days */for(var i=1; i<=this.dateCounts[month]; i++, column++){o += this.buildDayCell(year, month, i, "current");if(column == 6) { if(i < this.dateCounts[month]){ o += "</tr><tr>"; row++; column = -1; }}}/* next month days */if (column > 0) { for (var i=1; column<7; i++, column++) { o += this.buildDayCell(viewingNextMonthYear, viewingNextMonth, i, "next"); }}/* 6th row */if(this.params.forceSixRows){for(var y = row; y < 5; y++){o += "</tr><tr>";for(var x=0; x < 7; x++, i++) { o += this.buildDayCell(viewingNextMonthYear, viewingNextMonth, i, "next"); }}}o += "</tr></tbody>";o += "</table>";o += "</td></tr>";o += "</table>";/* Fill TextArea var textArea = document.getElementById("TextArea1");textArea.value = o;*/return o;};BasicDatePicker.prototype.buildCalendar = function(){if(this.viewingMonth == null || this.viewingYear == null){(this.params.visibleDate) ? this.viewingMonth = this.params.visibleDate.getMonth() : this.viewingMonth = this.todayMonth;(this.params.visibleDate) ? this.viewingYear = this.params.visibleDate.getFullYear() : this.viewingYear = this.todayYear;}var viewingDate = new Date(this.viewingYear, this.viewingMonth, 1);var o = "<table cellpadding=\"0\" cellspacing=\"0\" class=\"bdpWrapper\">";for(var y=0; y<this.params.rows; y++){o += "<tr>";for(var x=0; x<this.params.columns; x++){var showPrevMonth = (y == 0 && x == 0);var showNextMonth = (y == 0 && x == this.params.columns-1);o += "<td>";o += this.buildSingleCalendar(viewingDate.getFullYear(), viewingDate.getMonth(), showPrevMonth, showNextMonth);o += "</td>";viewingDate = viewingDate.addMonths(1);}o += "</tr>";}o += "<tr><td colspan=\"" + this.params.columns + "\">";var showFooter = (this.params.showTodayButton || this.params.showNoneButton);if(showFooter){o += "<div" + this.buildStyleAttributes(this.params.footerStyle, this.params.footerStyleCssClass) + ">";if(this.params.showTodayButton) { o += "<input type=\"button\" onClick=\"basicDatePicker.selectDate(basicDatePicker.todayYear,basicDatePicker.todayMonth,basicDatePicker.todayDate,true);\" value=\"" + this.params.todayButtonText + "\"" + this.buildStyleAttributes(this.params.todayButtonStyle, this.params.todayButtonStyleCssClass) + " title=\"\"/>"; }if(this.params.showNoneButton) { o += "<input type=\"button\" onClick=\"basicDatePicker.clearSelectedDate();\" value=\"" + this.params.noneButtonText + "\"" + this.buildStyleAttributes(this.params.noneButtonStyle, this.params.noneButtonStyleCssClass) + " title=\"\"/>"; }o += "</div>";}if(this.params.footNoteText != '') { o += "<div" + this.buildStyleAttributes(this.params.footNoteStyle, this.params.footNoteStyleCssClass) + ">" + this.params.footNoteText + "</div>"; }o += "</td></tr>";o += "</table>";this.popUp.innerHTML = o;};BasicDatePicker.prototype.buildDayCell = function(y, m, d, type){var curDate = new Date(y, m, d);var arrSpecialDates = null;var dayOfWeek = curDate.getDay(), dayClassName = "";var isWeekDay = (dayOfWeek != 0 && dayOfWeek != 6);var styleToUse = null;var styleCssClassToUse = null;var specialDateSelectable = true;var specialDateOnClick = "";var specialDateText = "";switch(type){case "current":var isSelectedDay = (this.selectedYear == y && this.selectedMonth == m && this.selectedDay == d);var isTodayDay = (y == this.todayYear && m == this.todayMonth && this.todayDate == d);if(isSelectedDay && isTodayDay){if(isWeekDay) { styleToUse = this.params.selectedDayTodayDayStyle; styleCssClassToUse = this.params.selectedDayTodayDayStyleCssClass; }else { styleToUse = this.params.selectedDayWeekendDayStyle; styleCssClassToUse = this.params.selectedDayWeekendDayStyleCssClass; }}else if(isSelectedDay){if(isWeekDay) { styleToUse = this.params.selectedDayStyle; styleCssClassToUse = this.params.selectedDayStyleCssClass; }else { styleToUse = this.params.selectedDayWeekendDayStyle; styleCssClassToUse = this.params.selectedDayWeekendDayStyleCssClass; }}else if(isTodayDay){if(isWeekDay) { styleToUse = this.params.todayDayStyle; styleCssClassToUse = this.params.todayDayStyleCssClass; }else { styleToUse = this.params.todayDayWeekendDayStyle; styleCssClassToUse = this.params.todayDayWeekendDayStyleCssClass; }}else{if(isWeekDay) { styleToUse = this.params.dayStyle; styleCssClassToUse = this.params.dayStyleCssClass; }else { styleToUse = this.params.weekendDayStyle; styleCssClassToUse = this.params.weekendDayStyleCssClass; }}break;case "prev":case "next":if(isWeekDay) { styleToUse = this.params.otherMonthDayStyle; styleCssClassToUse = this.params.otherMonthDayStyleCssClass; }else { styleToUse = this.params.otherMonthDayWeekendDayStyle; styleCssClassToUse = this.params.otherMonthDayWeekendDayStyleCssClass; }break;}if(this.getSpecialDates() != null){arrSpecialDates = this.getSpecialDates().getByDate(curDate);for(var i=0; i<arrSpecialDates.length; i++){styleToUse += arrSpecialDates[i].style;styleCssClassToUse += " " + arrSpecialDates[i].styleCssClass;specialDateSelectable = arrSpecialDates[i].selectable;if(arrSpecialDates[i].text.length > 0){if(i != 0) { if(this.isIE || this.isOpera || this.isSafari) { specialDateText += "\n"; } else { specialDateText += ", "; }}specialDateText += arrSpecialDates[i].text;}if(arrSpecialDates[i].clientSpecialDateClickFunction.length > 0) { specialDateOnClick += "eval(" + arrSpecialDates[i].clientSpecialDateClickFunction + "(new Date(" + y + "," + m + "," + d + ")));"; }}if(arrSpecialDates.length > 0){specialDateSelectable = false;}for(var i=0; i<arrSpecialDates.length; i++) { if(arrSpecialDates[i].selectable == true) { specialDateSelectable = true; break; }}}var o = "";if(this.params.showWeekNumbers && dayOfWeek == this.params.firstDayOfWeek &&  this.params.firstDayOfWeek == 0){var when = new Date(y,m,d);var newYear = new Date(y,0,1);var offset = 7 + 1 - newYear.getDay();if (offset == 8) offset = 1;var daynum = ((Date.UTC(y,m,d,0,0,0) - Date.UTC(y,0,1,0,0,0)) /1000/60/60/24) + 1;var weeknum = Math.floor((daynum-offset+7)/7);if (weeknum == this.params.firstDayOfWeek){y--;var prevNewYear = new Date(y,0,1);var prevOffset = 7 + 1 - prevNewYear.getDay();if (prevOffset == 2 || prevOffset == 8) weeknum = 53; else weeknum = 52;}o += "<td" + this.buildStyleAttributes(this.params.weekNumberStyle, this.params.weekNumberStyleCssClass) + ">" + weeknum + "</td>";}o += "<td" + this.buildStyleAttributes(styleToUse, styleCssClassToUse);o += " title=\"" +  specialDateText + "\"";if(this.params.dayStatusBarText.length > 0){var statusText = this.params.dayStatusBarText;if(statusText.indexOf("{0}") != -1) { var dateText = this.formatDate(curDate); statusText = statusText.replace("{0}", dateText); }o += " onmouseover=\"window.status = '" + statusText + "';return true;\"";o += " onmouseout=\"window.status = '';return true;\"";}o += ">";var onClick = "basicDatePicker.selectDate(" + y + "," + m + "," + d + ", true);" + specialDateOnClick;if(type == "current" || type == "prev" && this.params.showDaysInPrevMonth || type == "next" && this.params.showDaysInNextMonth){if(specialDateSelectable == true&& ((isWeekDay && this.params.selectableWeekDays || !isWeekDay && this.params.selectableWeekendDays)&& (type == "current" || type == "prev" && this.params.selectablePrevMonthDays || type == "next" && this.params.selectableNextMonthDays)&& (!this.params.maximumDate || this.params.maximumDate >= curDate) && (!this.params.minimumDate || this.params.minimumDate <= curDate))){ o += "<a href=\"javascript:void(0);" + onClick.replace("{0}",d) + "\" title=\"" + specialDateText + "\">" + d + "</a>"; }else { o += d; }}else { o += "&nbsp;"; }o += "</td>";if(!this.isNS6 && this.params.onClientDayRender.length > 0 && eval("window." + this.params.onClientDayRender)){var objectConverterDIV = document.createElement("DIV");objectConverterDIV.innerHTML = "<table><tr>" + o + "</tr></table>";var newTD = eval(this.params.onClientDayRender + "(this, curDate , objectConverterDIV.firstChild.firstChild.firstChild.firstChild )");if(newTD != null && newTD.tagName && newTD.tagName == "TD"){var objectConverterTR = document.createElement("TR");objectConverterTR.appendChild(newTD);return objectConverterTR.innerHTML;}}return o;};/* The following getStyle() and findPosition() functions were based off functions provided in the Yahoo! User Interface Library.  See http://developer.yahoo.com/yui/ Copyright (c) 2006, Yahoo! Inc. All rights reserved. */BasicDatePicker.prototype.getStyle = function(el, property){    var value = null;    var dv = document.defaultView;    if (el.style[property]) { value = el.style[property]; }    else if (el.currentStyle && el.currentStyle[property]) { value = el.currentStyle[property]; }    else if ( dv && dv.getComputedStyle )    {         var converted = "";       for(var i = 0, len = property.length;i < len; ++i) { converted = (property.charAt(i) == property.charAt(i).toUpperCase()) ? converted + '-' + property.charAt(i).toLowerCase() : converted + property.charAt(i); }       if (dv.getComputedStyle(el, "") && dv.getComputedStyle(el, "").getPropertyValue(converted)) { value = dv.getComputedStyle(el, "").getPropertyValue(converted); }    }    return value; };BasicDatePicker.prototype.findPosition = function(el){if (el.parentNode === null) { return null; }var parent = null, box, pos = { x: 0, y: 0 };if (el.getBoundingClientRect) {box = el.getBoundingClientRect();var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);pos.x = box.left + scrollLeft;pos.y = box.top + scrollTop;return pos;}else if (document.getBoxObjectFor){box = document.getBoxObjectFor(el);var borderLeft = parseInt(this.getStyle(el, "borderLeftWidth"));var borderTop = parseInt(this.getStyle(el, "borderTopWidth"));pos.x = box.x - borderLeft;pos.y = box.y - borderTop;}else{pos.x = el.offsetLeft;pos.y = el.offsetTop;parent = el.offsetParent;if (parent != el){while (parent){pos.x += parent.offsetLeft;pos.y += parent.offsetTop;parent = parent.offsetParent;}}if (this.isOpera || this.isSafari && this.getStyle(el, "position") == "absolute" ) { pos.x -= document.body.offsetLeft; pos.y -= document.body.offsetTop; }}parent = (el.parentNode) ? el.parentNode : null;while (parent && parent.tagName.toLowerCase() != "body" && parent.tagName.toLowerCase() != "html"){pos.x -= parent.scrollLeft;if(!this.isOpera) { pos.y -= parent.scrollTop; }parent = (parent.parentNode) ? parent.parentNode : null;}return pos;};BasicDatePicker.prototype.viewNextMonth = function(){var nextMonth = this.viewingMonth + 1;var nextMonthYear = this.viewingYear;if (nextMonth > 11) { nextMonth = 0; nextMonthYear++; }if(!this.wireUpCustomEvent("onClientBeforeVisibleMonthChanged",new Date(nextMonthYear, nextMonth, 1))) { return; }this.viewingMonth = nextMonth;this.viewingYear = nextMonthYear;this.buildCalendar();if(!this.wireUpCustomEvent("onClientAfterVisibleMonthChanged")) { return; }};BasicDatePicker.prototype.viewPrevMonth = function(){var prevMonth = this.viewingMonth - 1;var prevMonthYear = this.viewingYear;if (prevMonth < 0) { prevMonth = 11; prevMonthYear--; }if(!this.wireUpCustomEvent("onClientBeforeVisibleMonthChanged",new Date(prevMonthYear, prevMonth, 1))) { return; }this.viewingMonth = prevMonth;this.viewingYear = prevMonthYear;this.buildCalendar();if(!this.wireUpCustomEvent("onClientAfterVisibleMonthChanged")) { return; }};BasicDatePicker.prototype.wireUpCustomEvent = function(arg1, arg2){var r, f = this.params[arg1];if(f != null && f.length > 0 && window[f]) { r = window[f](this, arg2); };return (r == false) ? false : true;};BasicDatePicker.prototype.clearSelectedDate = function(){this.clear();if(this.valueElement.style.display != "none" && !this.valueElement.disabled) { this.valueElement.focus(); }this.hidePopUp();};BasicDatePicker.prototype.selectDate = function(y, m, d, hide){    if((d) == null || (d) == 0) return;this.selectedYear = y, this.selectedMonth = m, this.selectedDay = d;this.viewingYear = y, this.viewingMonth = m;var prevFormattedDate = this.valueElement.value; var newDate = new Date(this.selectedYear, this.selectedMonth, this.selectedDay,0,0,0);if(newDate.getTime() == this.params.nullDate.getTime()) { newDate = null; }var formattedDate = this.formatDate(newDate);if(prevFormattedDate != formattedDate){if(!this.wireUpCustomEvent("onClientBeforeSelectionChanged",new Date(this.selectedYear, this.selectedMonth, this.selectedDay))) { return; }if(this.params.displayType == "Button") { this.buttonElement.value = formattedDate; }else if(this.params.displayType == "HyperLink") { this.buttonElement.innerHTML = formattedDate; }else if(this.labelElement) { this.labelElement.innerHTML = formattedDate; }this.valueElement.value = formattedDate;this.clearTimers();if(!this.wireUpCustomEvent("onClientAfterSelectionChanged")) { return; }if(this.params.autoPostBack && hide) { eval(this.params.postBackFunction); }if(this.params.displayType == "TextBox" || this.params.displayType.indexOf("TextBox") != -1 && this.params.openCalendarOnTextBoxFocus) { this.cancelFocus = true; }if(this.valueElement.style.display != "none" && this.cancelFocus) { this.valueElement.focus(); }}if(hide) { this.hidePopUp(); }};BasicDatePicker.prototype.padWithZero = function(num) { return (num< 10) ? "0" + num : num; };BasicDatePicker.prototype.formatDate = function(date){if(date){var y = date.getFullYear(), m = date.getMonth(), d = date.getDate(), dow = date.getDay();var finalDate = this.params.dateFormat;finalDate = finalDate.replace("yyyy",y);finalDate = finalDate.replace("yy",this.padWithZero(y%100));finalDate = finalDate.replace("dddd","{0}");finalDate = finalDate.replace("ddd","{1}");finalDate = finalDate.replace("dd","{2}");finalDate = finalDate.replace("d","{3}");finalDate = finalDate.replace("MMMM","{4}");finalDate = finalDate.replace("MMM","{5}");finalDate = finalDate.replace("MM","{6}");finalDate = finalDate.replace("M","{7}");finalDate = finalDate.replace("{0}",this.params.culture.dayNames[dow]);finalDate = finalDate.replace("{1}",this.params.culture.dayNamesAbbr[dow]);finalDate = finalDate.replace("{2}",this.padWithZero(d));finalDate = finalDate.replace("{3}",d);finalDate = finalDate.replace("{4}",this.params.culture.monthNames[m]);finalDate = finalDate.replace("{5}",this.params.culture.monthNamesAbbr[m]);finalDate = finalDate.replace("{6}",this.padWithZero(m+1));finalDate = finalDate.replace("{7}",m+1);return finalDate;}else { return null; }};BasicDatePicker.prototype.parseDate = function(valueString){this._isDate = false;if(valueString && valueString != null && valueString.length > 0 && valueString != this.params.nullDateText){var format = this.params.dateFormat;var i_value = 0, i_format = 0;var c, token;var x,y;var year = null, month = null, date = null;while(i_format < format.length){c = format.charAt(i_format);token = "";while((format.charAt(i_format) == c) && (i_format < format.length)) { token += format.charAt(i_format++); }switch(token){case "d" :case "dd" :date = this.getInt(valueString, i_value, 1, 2);if(!date) { return null };i_value += date.length;date = parseInt(date, 10);break;case "ddd" :for(var i=0; i<this.params.culture.dayNamesAbbr.length; i++){var dayName = this.params.culture.dayNamesAbbr[i];if(valueString.substring(i_value,i_value+dayName.length).toLowerCase() == dayName.toLowerCase()) { i_value += dayName.length; break; }}break;case "dddd" :for(var i=0; i<this.params.culture.dayNames.length; i++){var dayName = this.params.culture.dayNames[i];if(valueString.substring(i_value,i_value+dayName.length).toLowerCase() == dayName.toLowerCase()) { i_value += dayName.length; break; }}break; case "M" :case "MM":month = this.getInt(valueString,i_value,1,2);if(!month) { return null };i_value += month.length;month = parseInt(month, 10)-1;break;case "MMM" :for(var i=0; i<this.params.culture.monthNamesAbbr.length; i++){var monthName = this.params.culture.monthNamesAbbr[i];if(valueString.substring(i_value,i_value+monthName.length).toLowerCase() == monthName.toLowerCase()){month = i;i_value += monthName.length;break;}}break;case "MMMM" :for(var i=0; i<this.params.culture.monthNames.length; i++){var monthName = this.params.culture.monthNames[i];if(valueString.substring(i_value,i_value+monthName.length).toLowerCase() == monthName.toLowerCase()){month = i;i_value += monthName.length;break;}}break;case "yy" :case "yyyy" :if(token == "yyyy") {x = 1;y = 4;}if(token == "yy") {x = 1;y = 2;}var valuePart = valueString.substring(i_value, i_value + y);if(valuePart != null && token == "yyyy" && valuePart.length <= 4 && !this.isNumeric(valuePart) && valuePart.indexOf("/") < 1 && valuePart.indexOf("-") < 1 && valuePart.indexOf(" ") < 1) { break; }year = this.getInt(valueString, i_value, x, y);if(year != null) { i_value += year.length; if (year.length <= 2) { year = this.getFullYear(year); } }    break;default :i_value += token.length;}}if(year == null || isNaN(year)) { year = this.todayYear; }if(date == null || month == null || isNaN(date) || isNaN(month) || date == 0 || month < 0){    var tempDate = this.tryParseDate(valueString, this.params.dateOrder);    if(tempDate == null) { return null; }    else    {        this._isDate = true;        this.selectDate(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate());        return new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate());    }}else{    if(date > this.dateCounts[month] || month > 11 || new Date(year, month, date) == this.params.nullDate) { return null; }this._isDate = true;this.selectDate(year, month, date);return new Date(year, month, date);}}else { if(valueString != null) { this.clear(); this._isDate = true; } return null; }};BasicDatePicker.prototype.getFullYear = function(year) { if (year > this.params.twoDigitYearBreak) { year = 1900+(year-0); return year; } else { year = 2000+(year-0); return year; }};BasicDatePicker.prototype.tryParseDate = function(val, dateOrder){    /* Logic based on Microsoft(c) Validator ValidatorConvert() function */    /* in order to provide consistent results between Microsoft and BasicDatePicker Date validation routines. */    var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([,.-/ ]|\\. ?)(\\d{1,2})\\4(\\d{1,2})\\s*$");    m = val.match(yearFirstExp);    var d1, m1, y1;    if (m != null && m[2] && (m[2].length == 4 || dateOrder == "ymd"))    {       d1 = m[6];       m1 = m[5];       y1 = (m[2].length == 4) ? m[2] : this.getFullYear(parseInt(m[3], 10))    }    else     {        if (dateOrder == "ymd") { return null; }        var yearLastExp = new RegExp("^\\s*(\\d{1,2})([,.-/ ]|\\. ?)(\\d{1,2})\\2((\\d{4})|(\\d{2}))\\s*$");        m = val.match(yearLastExp);        if (m == null) { return null; }        if (dateOrder == "mdy")         {            if(this.isNumeric(m[1]) && m[1] < 12) { d1 = m[3]; m1 = m[1]; }            else { return this.tryParseDate(val, "dmy"); }        }        else { d1 = m[1];  m1 = m[3]; }        y1 = (m[5] && m[5].length == 4) ? m[5] : this.getFullYear(parseInt(m[6], 10))    }    m1 -= 1;    var date = new Date(y1, m1, d1);    if (y1 < 100) { date.setFullYear(y1); }    return (date != null) ? date : null;};BasicDatePicker.prototype.getInt = function(str,i,minlength,maxlength){for(var x=maxlength; x>=minlength; x--){var valuePart = str.substring(i, i + x);if(valuePart.length < minlength) { return null; }if(this.isNumeric(valuePart)) {  return valuePart; }}return null;};/* Event Handlers */BasicDatePicker.prototype.ehKeyPress = function(e) { if(!e) e = window.event; if(e.keyCode == 9) basicDatePicker.hidePopUp(); };BasicDatePicker.prototype.ehPopUpClick = function(e) { basicDatePicker.stayOpen = true; };BasicDatePicker.prototype.ehDocumentClick = function() { (!basicDatePicker.stayOpen) ? basicDatePicker.hidePopUp() : basicDatePicker.stayOpen = false; };BasicDatePicker.prototype.ehPrevMonthMouseDown = function() { basicDatePicker.interval = setInterval("basicDatePicker.viewPrevMonth()",200); };BasicDatePicker.prototype.ehNextMonthMouseDown = function() { basicDatePicker.interval = setInterval("basicDatePicker.viewNextMonth()",200); };BasicDatePicker.prototype.ehUpYearMouseDown = function(baseYear) { basicDatePicker.interval = setInterval("basicDatePicker.buildYearSelectorLinks(" + (baseYear-1) + ", -1)",90); };BasicDatePicker.prototype.ehDownYearMouseDown = function(baseYear) { basicDatePicker.interval = setInterval("basicDatePicker.buildYearSelectorLinks(" + (baseYear-1) + ", 1)",90); };BasicDatePicker.prototype.ehMonthSelectorClick = function(oSpan){this.hideSelectors();if(!this.monthSelector){this.monthSelector = document.createElement("DIV");with(this.monthSelector){id = "basicDatePickerMonthSelector";className = "bdpMonthSelector";style.position = "absolute";style.zIndex = "1001";}document.body.appendChild(this.monthSelector);}this.monthSelector.innerHTML = "";var o = "";var monthNames = this.params.culture.monthNames;for(var i=0; i < monthNames.length; i++){var className = (i == this.viewingMonth) ? "bdpMonthSelectorSelectedItem" : "bdpMonthSelectorItem";o += "<a href=\"javascript:void(0);\" onclick=\"basicDatePicker.ehMonthSelectorMonthClick(" + i + ");\" class=\"" + className + "\">" + monthNames[i] + "</a>";}this.monthSelector.innerHTML = o;var pos = this.findPosition(oSpan);    this.monthSelector.style.top = (parseInt(pos.y + oSpan.offsetHeight + this.params.monthSelectorYOffset)) + "px";this.monthSelector.style.left = (parseInt(pos.x + this.params.monthSelectorXOffset)) + "px";this.monthSelectorShim = this.showShim(this.monthSelectorShim, this.monthSelector);this.monthSelector.style.visibility = "visible";};BasicDatePicker.prototype.ehMonthSelectorMonthClick = function(newViewingMonth){if(!this.wireUpCustomEvent("onClientBeforeVisibleMonthChanged",new Date(this.viewingYear, newViewingMonth, 1))) { return; }this.viewingMonth = newViewingMonth;this.buildCalendar();this.ehPopUpClick();if(!this.wireUpCustomEvent("onClientAfterVisibleMonthChanged")) { return; }};BasicDatePicker.prototype.ehYearSelectorClick = function(oSpan){this.hideSelectors();if(!this.yearSelector){this.yearSelector = document.createElement("DIV");with(this.yearSelector){id = "basicDatePickerYearSelector";className = "bdpYearSelector";style.position = "absolute";style.zIndex = "1001";}document.body.appendChild(this.yearSelector);}this.buildYearSelectorLinks(this.viewingYear);var pos = this.findPosition(oSpan);this.yearSelector.style.top = (parseInt(pos.y + oSpan.offsetHeight + this.params.monthSelectorYOffset)) + "px";this.yearSelector.style.left = (parseInt(pos.x + this.params.monthSelectorXOffset)) + "px";this.yearSelectorShim = this.showShim(this.yearSelectorShim, this.yearSelector);this.yearSelector.style.visibility = "visible";};BasicDatePicker.prototype.ehYearSelectorYearClick = function(newViewingYear){if(!this.wireUpCustomEvent("onClientBeforeVisibleMonthChanged",new Date(newViewingYear, this.viewingMonth, 1))) { return; }this.viewingYear = newViewingYear;this.buildCalendar();this.ehPopUpClick();if(!this.wireUpCustomEvent("onClientAfterVisibleMonthChanged")) { return; }};BasicDatePicker.prototype.buildYearSelectorLinks = function(baseYear, optTimeoutChange){var p, m, o = "";this.yearSelector.innerHTML = "";switch(this.params.upDownYearSelectorFormat){case "Image":p = "<img src=\"" + this.params.upYearSelectorImageUrl + "\""; var pWidthHeight = (this.params.upDownYearSelectorImageWidth != "") ? "width:" + this.params.upDownYearSelectorImageWidth + ";" : "";pWidthHeight += (this.params.upDownYearSelectorImageHeight != "") ? "height:" + this.params.upDownYearSelectorImageHeight + ";" : "";if(pWidthHeight != "") p += " style=\"" + pWidthHeight + "\"";p += " border=\"0\" />";m = "<img src=\"" + this.params.downYearSelectorImageUrl + "\"";var mWidthHeight = (this.params.upDownYearSelectorImageWidth != "") ? "width:" + this.params.upDownYearSelectorImageWidth + ";" : "";mWidthHeight += (this.params.upDownYearSelectorImageHeight != "") ? "height:" + this.params.upDownYearSelectorImageHeight + ";" : "";if(mWidthHeight != "") m += " style=\"" + mWidthHeight + "\"";m += " border=\"0\" />";break;case "CustomText":default:p = this.params.downYearSelectorText;m = this.params.upYearSelectorText;break;}baseYear = (optTimeoutChange != null) ? (this.yearInc + optTimeoutChange) : parseInt(baseYear);o = "<a href=\"javascript:void(0);\" onclick=\"basicDatePicker.buildYearSelectorLinks(" + (baseYear-1) + ");\" onmousedown=\"basicDatePicker.clearTimers();basicDatePicker.timeout = setTimeout('basicDatePicker.ehUpYearMouseDown(" + baseYear + ")', 300);if(basicDatePicker.isOpera || basicDatePicker.isSafari)basicDatePicker.ehPopUpClick();\" onmouseup=\"basicDatePicker.clearTimers();\" onmouseout=\"basicDatePicker.clearTimers();\" class=\"bdpYearSelectorImg\">" + p + "</a>";for(var i=(baseYear-4); i <= (baseYear+4); i++){var className = (i == this.viewingYear) ? "bdpYearSelectorSelectedItem" : "bdpYearSelectorItem";o += "<a href=\"javascript:void(0);\" onclick=\"basicDatePicker.ehYearSelectorYearClick(" + i + ");\" class=\"" + className + "\">" + i + "</a>";}o += "<a href=\"javascript:void(0);\" onclick=\"basicDatePicker.buildYearSelectorLinks(" + (baseYear+1) + ");\" onmousedown=\"basicDatePicker.clearTimers();basicDatePicker.timeout = setTimeout('basicDatePicker.ehDownYearMouseDown(" + baseYear + ")', 300);if(basicDatePicker.isOpera || basicDatePicker.isSafari)basicDatePicker.ehPopUpClick();\" onmouseup=\"basicDatePicker.clearTimers();\" onmouseout=\"basicDatePicker.clearTimers();\" class=\"bdpYearSelectorImg\">" + m + "</a>";var children = this.yearSelector.childNodes;if(children) { for(var i=0;i<children.length;i++) { this.yearSelector.removeChild(children[i]); }}    this.yearSelector.innerHTML = o;this.yearInc = baseYear;};BasicDatePicker.prototype.ehFocus = function(valueElement) { this.inputFocusValue = valueElement.value; };BasicDatePicker.prototype.tokenizeFormat = function(format){var self = this;var formatCondition = function(i_format, format, c){return ((i_format < format.length) && (format.charAt(i_format) == c));};return basicDatePicker.tokenize(format, formatCondition);};BasicDatePicker.prototype.tokenizeSpeedDate = function(text){var self = this;var formatCondition = function(i_format, format, c){return (((i_format < format.length) && (format.charAt(i_format) == c)) || ((i_format < format.length) && self.isNumeric(format.charAt(i_format))));};return basicDatePicker.tokenize(text, formatCondition);};BasicDatePicker.prototype.tokenize = function(format, formatCondition){if(format != null && format.length > 0){var tokens = new Array();var i_format = 0,c,token;while(i_format < format.length){c = format.charAt(i_format);token = "";while(formatCondition(i_format, format, c)) { token += format.charAt(i_format++); };tokens[tokens.length] = token;};};return tokens;};BasicDatePicker.prototype.selectRange = function(e, start, length) {var s = (!start || start < 1) ? 0 : start;var l = (isNaN(length) || length < 0) ? 1 : length;if(e.createTextRange) {var r = e.createTextRange();r.moveStart("character",s);r.moveEnd("character",s + l - e.value.length);r.select();}else if(e.setSelectionRange) { e.setSelectionRange(s, s + l); }e.focus();};BasicDatePicker.prototype.getPositionStart = function(e) {if(e.createTextRange){var c = document.selection.createRange().duplicate();c.moveEnd("character",e.value.length);var s = e.value.lastIndexOf(c.text);if(c.text.trim().lenth < 1) { s = e.value.length; }return s;}else { return e.selectionStart; }};BasicDatePicker.prototype.keyPress = function(event, e, bdpId) {    var bdp = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this;    var c = this.getKeyCode(event);    var s = this.getPositionStart(e);    if(c == (8 || 9)) { return; }if((c == 33 || c == 34 || c == 38 || c == 40) && !bdp.getIsNull()){    switch(c)     {    case 38 :        if(event.ctrlKey) bdp.setSelectedDate(bdp.getSelectedDate().addYears(1));        else if (event.altKey) bdp.setSelectedDate(bdp.getSelectedDate().addMonths(1));        else bdp.setSelectedDate(bdp.getSelectedDate().addDays(1));         this.selectRange(e, s, 1);    break;    case 40 :        if(event.ctrlKey) bdp.setSelectedDate(bdp.getSelectedDate().addYears(-1));        else if (event.altKey) bdp.setSelectedDate(bdp.getSelectedDate().addMonths(-1));        else bdp.setSelectedDate(bdp.getSelectedDate().addDays(-1));         this.selectRange(e, s, 1);    break;    };}};BasicDatePicker.prototype.getKeyCode = function(e) { return e.keyCode ? e.keyCode : e.which ? e.which : e.charCode; };BasicDatePicker.prototype.speedDate = function(){var text = this.phraseChecks(this.valueElement.value.toLowerCase().trim()), date = null;var tryDate = this.parseDate(text);    if(text.length < 1 || this._isDate) { return; }var firstChar = text.charAt(0);var firstTwoChar = text.substring(0,2);var t = (text == "t" || firstTwoChar == "t+" || firstTwoChar == "t-");var hasOperator = (firstChar == "+" || firstChar == "-" || firstTwoChar.indexOf("+") != -1 || firstTwoChar.indexOf("-") != -1);var isNumber = (this.isNumeric(text) && text <= this.dateCounts[new Date().getMonth()]);if(!t && !isNumber && !hasOperator && (this.params.dateFormat.indexOf("-") != -1)) { return; }    if((t || hasOperator || isNumber)){    if(this.inputFocusValue && this.inputFocusValue.trim().length > 0) { date = this.parseDate(this.inputFocusValue); }        var tokens = this.tokenizeSpeedDate(text);    if(date == null || isNumber) { date = new Date(this.todayYear, this.todayMonth, this.todayDate,0,0,0) };if(this.hasTimePicker()){            var time = window[this.params.timePicker].getSelectedTime();            if(time != null) { date.setHours(time.getHours()), date.setMinutes(time.getMinutes()), date.setSeconds(time.getSeconds()); }}if(isNumber) { date.setDate(text); }if(t) { date.setDate(this.todayDate); }if(hasOperator){      var increment = (t) ? parseInt(tokens[1], 10) : parseInt(tokens[0], 10);    var datePart = (t) ? tokens[2] : tokens[1];    date = (text == "+" || text == "t+") ? date.addDays(1) : date;    date = (text == "-" || text == "t-") ? date.addDays(-1) : date;    if(datePart && increment)    {    switch(datePart)    {    case "d" :    date = date.addDays(increment);    break;    case "m" :    date = date.addMonths(increment);    break;    case "y" :    date = date.addYears(increment);    break;    };    }    else if(increment) { date = date.addDays(increment); };};    };    if(date != null) { this.setSelectedDate(date); this.inputFocusValue = this.getSelectedDateFormatted(); }    else {  this.inputFocusValue = this.valueElement.value; }};BasicDatePicker.prototype.ehBlur = function(buttonElement, valueElement, params){    this.buttonElement = buttonElement;this.valueElement = valueElement;this.params = this.loadParams(params);if(this.valueElement.value != this.inputFocusValue){if(!this.wireUpCustomEvent("onClientBeforeSelectionChanged",this.getSelectedDate())) { return; };this.speedDate();if(!this.wireUpCustomEvent("onClientAfterSelectionChanged")) { return; };if(this.params.autoPostBack) { eval(basicDatePicker.params.postBackFunction); };};if(this.params.displayType != "TextBox" && !this.params.openCalendarOnTextBoxFocus) { this.reset(); };};BasicDatePicker.prototype.reset = function() { this.selectedMonth = null; this.selectedDay = null; this.selectedYear = null; this.viewingMonth = null; this.viewingYear = null; this.params = null; };BasicDatePicker.prototype.loadParams = function(params){params.culture = eval(params.culture);if(params.firstDayOfWeek == 7) { params.firstDayOfWeek = params.culture.firstDayOfWeek; }return params;};/* (Public) Helper Methods */function BasicDatePickerLoadControl(bdpId){var bdp = new BasicDatePicker(true);bdp.params = bdp.loadParams(eval(bdpId + "Params"));bdp.valueElement = document.getElementById(bdpId + "_textBox");bdp.labelElement = null;switch(bdp.params.displayType){case "TextBoxAndButton":bdp.buttonElement =  document.getElementById(bdpId + "_button");break;case "TextBoxAndHyperLink":bdp.buttonElement =  document.getElementById(bdpId + "_hyperLink");break;case "TextBoxAndImage":bdp.buttonElement =  document.getElementById(bdpId + "_image");break;case "TextBox":bdp.buttonElement =  document.getElementById(bdpId + "_textBox");break;case "LabelAndButton":bdp.buttonElement =  document.getElementById(bdpId + "_button");bdp.labelElement = document.getElementById(bdpId + "_label");break;case "LabelAndHyperLink":bdp.buttonElement =  document.getElementById(bdpId + "_hyperLink");bdp.labelElement = document.getElementById(bdpId + "_label");break;case "LabelAndImage":bdp.buttonElement =  document.getElementById(bdpId + "_image");bdp.labelElement = document.getElementById(bdpId + "_label");break;case "Label":bdp.buttonElement =  document.getElementById(bdpId + "_label");bdp.labelElement = document.getElementById(bdpId + "_label");break;        case "Button":bdp.buttonElement =  document.getElementById(bdpId + "_button");break;case "HyperLink":bdp.buttonElement =  document.getElementById(bdpId + "_hyperLink");break;case "Image":bdp.buttonElement =  document.getElementById(bdpId + "_image");break;}return bdp;};/* Public Methods */BasicDatePicker.prototype.getControlId = function() { return this.valueElement.parentNode.id; };BasicDatePicker.prototype.getMaximumDate = function(bdpId) { var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this; return self.params.maximumDate; };BasicDatePicker.prototype.setMaximumDate = function(date, bdpId) { var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this; self.params.maximumDate = date; };BasicDatePicker.prototype.getMinimumDate = function(bdpId) { var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this; return self.params.minimumDate; };BasicDatePicker.prototype.setMinimumDate = function(date, bdpId) { var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this; self.params.minimumDate = date; };BasicDatePicker.prototype.hasTimePicker = function() { return (this.params.timePicker != null && this.params.timePicker.length > 0); };BasicDatePicker.prototype.setSelectedDate = function(date, bdpId){var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this;if(!self.getEnabled()) { return; }if(date == null || date.getTime() == self.params.nullDate.getTime()) { self.clear(); }else{self.selectedYear = date.getFullYear();self.selectedMonth = date.getMonth();self.selectedDay = date.getDate();var formattedDate = self.formatDate(date);if(formattedDate == null) { formattedDate = ""; }if(self.params.displayType == "Button") { self.buttonElement.value = formattedDate; }else if(self.params.displayType == "HyperLink") { self.buttonElement.innerHTML = formattedDate; }else if(self.labelElement) { self.labelElement.innerHTML = formattedDate; }self.valueElement.value = formattedDate;}if(self.hasTimePicker()){    var time = (date != null) ? new BDP.TimeSpan(null, date.getHours(), date.getMinutes(), date.getSeconds()) : (window[self.params.timePicker].isNull()) ? null : window[self.params.timePicker].getSelectedTime();        window[self.params.timePicker].setSelectedTime(time);}};BasicDatePicker.prototype.getSelectedDate = function(bdpId){var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this;self.speedDate();var date = self.parseDate(self.valueElement.value);if(self.hasTimePicker()){var time = window[self.params.timePicker].getSelectedTime();if(time != null) { if(date == null) date = new Date(); return date.addHours(time.getHours()).addMinutes(time.getMinutes()).addSeconds(time.getSeconds()); }}return date;};BasicDatePicker.prototype.getSelectedDateFormatted = function(bdpId){var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this;var text = self.valueElement.value.trim();return (text == "" || text == self.params.nullDateText) ? "" : text;};BasicDatePicker.prototype.getSelectedDateTimeFormatted = function(bdpId){var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this;var text = self.valueElement.value.trim();var formattedDate = (text == "" || text == self.params.nullDateText) ? "" : text;if(self.hasTimePicker()) { formattedDate += " " + window[self.params.timePicker].getSelectedTimeFormatted(); }return formattedDate.trim();};BasicDatePicker.prototype.getSpecialDates = function(bdpId) { var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this; return (window[self.params.specialDates] && window[self.params.specialDates].dates.length > 0) ? window[self.params.specialDates] : null; };BasicDatePicker.prototype.getEnabled = function(bdpId) { var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this; return self.params.enabled; };BasicDatePicker.prototype.setEnabled = function(eVal, bdpId){var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this;self.valueElement.disabled = !eVal;if(self.valueElement.parentElement) { self.valueElement.parentElement.disabled = !eVal; }if(self.buttonElement) self.buttonElement.disabled = !eVal;self.params.enabled = eVal;};BasicDatePicker.prototype.getIsDate = function(bdpId) { var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this; self.getSelectedDate(); return self._isDate; };BasicDatePicker.prototype.getIsNull = function(bdpId) { var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this; return (self.getSelectedDate() == null); };BasicDatePicker.prototype.clear = function(bdpId){var self = (bdpId) ? BasicDatePickerLoadControl(bdpId) : this;var prevFormattedDate = self.valueElement.value;if(prevFormattedDate !=  self.params.nullDateText){if(!self.wireUpCustomEvent("onClientBeforeSelectionChanged",null)) { return; }self.valueElement.value = self.params.nullDateText;self.clearDate = false;if(self.params.displayType == "Button") { self.buttonElement.value = self.params.buttonText; }else if(self.params.displayType == "HyperLink") { self.buttonElement.innerHTML = self.params.buttonText; }else if(self.labelElement) { self.labelElement.innerHTML = self.params.buttonText; }if(!self.wireUpCustomEvent("onClientAfterSelectionChanged")) { return; }if(self.params.autoPostBack) { eval(self.params.postBackFunction); }}if(self.params.displayType == "TextBox" || self.params.displayType.indexOf("TextBox") != -1 && self.params.openCalendarOnTextBoxFocus) { self.cancelFocus = true; }    if(self.hasTimePicker()) { window[self.params.timePicker].clear(); }};/* Date, String and Object Helpers */Date.prototype.addYears = function(number) { return new Date(this.getFullYear() + parseInt(number), this.getMonth(), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()); };Date.prototype.addMonths = function(number) { return new Date(this.getFullYear(), this.getMonth() + parseInt(number), this.getDate(), this.getHours(), this.getMinutes(), this.getSeconds()); };Date.prototype.addDays = function(number) { return (new Date(this.getTime() + (parseInt(number) * 24 * 60 * 60 * 1000))); };String.prototype.trim = function(){var text = this.toString();while ((text.substring(0,1) == ' ') || (text.substring(0,1) == '\n') || (text.substring(0,1) == '\r')) { text = text.substring(1,text.length); }while ((text.substring(text.length-1,text.length) == ' ') || (text.substring(text.length-1,text.length) == '\n') || (text.substring(text.length-1,text.length) == '\r')) { text = text.substring(0,text.length-1); }return text;};BasicDatePicker.prototype.stripAndClean = function(value){    var temp = "";    for (i = 0; i < value.length; i++) { if(value.charAt(i) != " ") { temp += value.charAt(i); }} return temp.toLowerCase();};BasicDatePicker.prototype.isNumeric = function(value){var digits="1234567890";for (var i=0; i < value.length; i++) { if (digits.indexOf(value.charAt(i))==-1) { return false; }}return true;};BasicDatePicker.prototype.isDate = function(value) {     return (value.constructor.toString().match(/Date/i) == "Date"); };/* Phrase Checking for Date Parsing */BasicDatePicker.prototype.phraseChecks = function(t){var r, n = this.stripAndClean(t), f = this.params["onClientPreParse"]; d = new Date();    if(f != null && f.length > 0 && window[f]) { r = window[f](this, t); if(r != null) { t = (this.isDate(r)) ? this.formatDate(r) : r; }};    if(t.indexOf("today") != -1) { t = t.replace("today","t"); };if(t == "tomorrow") { t = "t+1"; };if(t == "yesterday") { t = "t-1"; };    if(n == "nextmonth") { d = d.addMonths(1); d.setDate(1); t = this.formatDate(d); };    if(n == "lastmonth") { d = d.addMonths(-1); d.setDate(1); t = this.formatDate(d); };if(t.indexOf("day") != -1) { t = t.replace("days","d").replace("day","d"); };if(t.indexOf("month") != -1) { t = t.replace("months","m").replace("month","m"); };if(t.indexOf("year") != -1) { t = t.replace("years","y").replace("year","y"); };return t;};if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
