|
|
- /////////////////////////////////////////////
- // Control: Dialog Box functionality
- /////////////////////////////////////////////
-
- qcodo.monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
- qcodo.monthNamesAbbreviated = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
- qcodo.dayNames = new Array("Su","Mo","Tu","We","Th","Fr","Sa");
-
- qcodo.registerCalendar = function(mixControl, strDtxControlId) {
- // Initialize the Event Handler
- qcodo.handleEvent();
-
- // Get Control/Wrapper
- var objControl; if (!(objControl = qcodo.getControl(mixControl))) return;
- var objWrapper = objControl.wrapper;
-
- // Get Linked DateTimeTextbox
- objControl.dateTimeTextBox = qcodo.getControl(strDtxControlId);
-
- // Get CalendarPane and Hide it
- objControl.calendarPane = document.getElementById(objControl.id + "_cal");
- objControl.calendarPane.style.display = "none";
-
- objControl.showCalendar = function() {
- var strPositionArray = this.wrapper.getAbsolutePosition();
- this.calendarPane.style.left = strPositionArray.x + "px";
- this.calendarPane.style.top = strPositionArray.y + "px";
- this.calendarPane.style.position = "absolute";
- this.calendarPane.style.zIndex = 10;
- this.calendarPane.style.display = "block";
- this.drawCalendar(0, 0);
- };
-
- objControl.setDate = function(intYear, intMonth, intDay) {
- this.dateTimeTextBox.value = qcodo.monthNamesAbbreviated[intMonth] + " " + intDay + " " + intYear;
- this.hideCalendar();
- };
-
- objControl.setToToday = function() {
- var dttToday = new Date();
- this.setDate(dttToday.getFullYear(), dttToday.getMonth(), dttToday.getDate())
- };
-
- objControl.drawCalendar = function(intYear, intMonth) {
- // Get the "selected" date and the "current" date
- var dttSelected;
- if (this.dateTimeTextBox.value)
- dttSelected = new Date(this.dateTimeTextBox.value);
- var dttToday = new Date();
-
- // Get the month to view
- var dttMonthToView;
- // If viewing a specific month/year, use it
- if (intYear)
- dttMonthToView = new Date(intYear, intMonth, 1);
- // If no "selected date" use "today"
- else if (!dttSelected || dttSelected == "Invalid Date")
- dttMonthToView = new Date();
- // Otherwise, use the "selected date"
- else
- dttMonthToView = new Date(dttSelected);
- dttMonthToView.setDate(1);
- var intViewMonth = dttMonthToView.getMonth();
- var intViewYear = dttMonthToView.getFullYear();
-
- // Render the month to view
- var strCalendar = '<table border="0" cellspacing="0"><thead><tr>';
- for (var intDay = 0; intDay < qcodo.dayNames.length; ++intDay) strCalendar += "<th>" + qcodo.dayNames[intDay] + "</th>";
- strCalendar += "</tr></thead>";
-
- for (var intDaysBack = dttMonthToView.getDay(); intDaysBack > 0; intDaysBack--)
- dttMonthToView.setDate(dttMonthToView.getDate() - 1);
-
- for (var intWeek = 0; intWeek < 6; intWeek++) {
- strCalendar += '<tr>';
- for (var intDay = 0; intDay < 7; intDay++) {
- var strStyle = (intWeek == 5) ? "lastRow " : "";
- if ((dttMonthToView.getDate() == dttToday.getDate()) && (dttMonthToView.getMonth() == dttToday.getMonth()) && (dttMonthToView.getFullYear() == dttToday.getFullYear()))
- strStyle += 'today ';
- if (dttSelected && (dttMonthToView.getDate() == dttSelected.getDate()) && (dttMonthToView.getMonth() == dttSelected.getMonth()) && (dttMonthToView.getFullYear() == dttSelected.getFullYear()))
- strStyle += 'selected ';
- if (dttMonthToView.getMonth() != intViewMonth)
- strStyle += 'nonMonth';
- if (strStyle)
- strStyle = ' class="' + strStyle + '"';
-
- strCalendar += '<td' + strStyle + '><a href="#" onclick="qc.getC(\'' + this.id + '\').setDate(' +
- dttMonthToView.getFullYear() + ',' + dttMonthToView.getMonth() + ',' + dttMonthToView.getDate() + ');return false;">' +
- dttMonthToView.getDate() + '</a></td>';
- dttMonthToView.setDate(dttMonthToView.getDate() + 1);
- };
- strCalendar += '</tr>';
- };
- strCalendar += '</table>';
-
- var intViewPreviousMonth = intViewMonth - 1;
- var intViewPreviousYear = intViewYear;
- if (intViewPreviousMonth == -1) {
- intViewPreviousMonth = 11;
- intViewPreviousYear--;
- };
- var strPreviousMonth = intViewPreviousYear + ',' + intViewPreviousMonth;
-
- var intViewNextMonth = intViewMonth + 1;
- var intViewNextYear = intViewYear;
- if (intViewNextMonth == 12) {
- intViewNextMonth = 0;
- intViewNextYear++;
- };
- var strNextMonth = intViewNextYear + ',' + intViewNextMonth;
-
- var strPreviousYear = (intViewYear - 1) + ',' + intViewMonth;
- var strNextYear = (intViewYear + 1) + ',' + intViewMonth;
-
- var strNavigator = '<div class="navigator">';
- strNavigator += '<div class="left"><a href="#" onclick="qc.getC(\'' + this.id + '\').drawCalendar(' + strPreviousMonth + ');return false;">«</a></div>';
- strNavigator += '<div class="month">' + qcodo.monthNames[intViewMonth] + '</div>';
- strNavigator += '<div class="left"><a href="#" onclick="qc.getC(\'' + this.id + '\').drawCalendar(' + strNextMonth + ');return false;">»</a></div>';
- strNavigator += '<div class="year"><a href="#" onclick="qc.getC(\'' + this.id + '\').drawCalendar(' + strPreviousYear + ');return false;">«</a>';
- strNavigator += '<span>' + intViewYear + '</span>';
- strNavigator += '<a href="#" onclick="qc.getC(\'' + this.id + '\').drawCalendar(' + strNextYear + ');return false;">»</a></div>';
- strNavigator += '</div>';
-
- var strOptions = '<div class="options">';
- strOptions += '<a href="#" onclick="qc.getC(\'' + this.id + '\').setToToday(); return false;">"Today"</a> ';
- strOptions += '<a href="#" onclick="qc.getC(\'' + this.id + '\').hideCalendar(); return false;">Cancel</a></div>';
-
- this.calendarPane.innerHTML = strNavigator + strCalendar + strOptions;
- };
-
- objControl.hideCalendar = function() {
- this.calendarPane.style.display = 'none';
- };
-
- objControl.onclick = objControl.showCalendar;
- };
-
- //////////////////
- // Qcodo Shortcuts
- //////////////////
-
- qc.regCAL = qcodo.registerCalendar;
|