function Calendar(month, year){this.month = month;this.year = year;this.months = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");this.days = new Array("Sunday", "Monday", "Tuesday", "Wedensday", "Thursday", "Friday", "Saturday");var minYear = 1990;var maxYear = 2020;this.id = "calendar";function isValidMonth(m){if(!isNaN(m)){if(m > 0 && m < 13){return true;}}return false;}function isValidYear(y){if(!isNaN(y)){if(y > minYear && y < maxYear){return true;}}return false;}function validateMonth(){ return isValidMonth(this.month); }function validateYear(){ return isValidYear(this.year); }function getYearSelectMenu(){var yearOpts = new Array();yearOpts[0] = ["0", "- Year -"];var i = 0;for(y=minYear; y<maxYear+1; y++){yearOpts[i+1] = [y, y];i++;}return new SelectMenu(yearOpts, "year");}function getMonthSelectMenu(months){var MonthOpts = new Array();MonthOpts[0] = ["0", "- Month -"];for(i=0; i<months.length; i++){MonthOpts[i+1] = [i+1, months[i]];}return new SelectMenu(MonthOpts, "month");}this.yearSelect = getYearSelectMenu();this.monthSelect = getMonthSelectMenu(this.months);this.selectButton = function(){var btn = new Image();btn.src = "calendar/gobtn.png";btn.alt = "Change calendar.";btn.className = "selectBtn";btn.calendar = this;btn.month = this.monthSelect;btn.year = this.yearSelect;btn.onclick = function() {if((isValidMonth(this.month.value) && isValidYear(this.year.value))){if(this.month.value*1 !== this.calendar.month || this.year.value*1 !== this.calendar.year){this.calendar.build(this.month.value,this.year.value);}}};btn.style.cursor = "pointer";return btn;};function getCalendarSelector(mSelect, ySelect, bSelect){var selectContainer = document.createElement("div");selectContainer.id = "CalendarSelect";selectContainer.className = "periodSelect";selectContainer.appendChild(mSelect);selectContainer.appendChild(ySelect);selectContainer.appendChild(bSelect);return selectContainer;}this.calendarSelect = getCalendarSelector(this.monthSelect, this.yearSelect, this.selectButton());this.disableSelects = function(){ if(document.getElementById("CalendarSelect")) this.container.removeChild(document.getElementById("CalendarSelect")); };this.enableSelects = function(){ if(!document.getElementById("CalendarSelect")) this.container.appendChild(this.calendarSelect); };this.showSelects = false;function getCalendarLoader(){var cLoader = null;if(document.createElement("div")){cLoader = document.createElement("div");cLoader.setAttribute("id", "cLoader");cLoader.className = "loader";var cLoaderImage = new Image();cLoaderImage.src = "calendar/ajax-loader.gif";cLoaderImage.alt = "Loading Calendar";cLoaderImage.setAttribute("title", "Loading Calendar");cLoader.appendChild(cLoaderImage);var cTxt = "Loading...";var cLoaderText = document.createElement("p");cLoaderText.appendChild(document.createTextNode(cTxt));cLoader.appendChild(cLoaderText);}return cLoader;}this.loader = getCalendarLoader();this.getXMLCalendar = function(){var xmlHttp = createHttpRequestObj();if (xmlHttp == null){alert ("Browser does not support HTTP Request");return null;}var qs = "month="+this.month;qs += "&year="+this.year;xmlHttp.open("POST", "calendar/CalendarXML.asp", false);xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");xmlHttp.send(qs);var xmlDocument = xmlHttp.responseXML;return xmlDocument;};this.getCalendar = function(xmlObj){var calendarBody = document.createElement("div");calendarBody.className = "table";calendarBody.id = "CalendarBody";if(xmlObj){var closeBtn = document.createElement("a");closeBtn.href = "javascript:;";closeBtn.calendar = this;closeBtn.onclick = this.hide;closeBtn.appendChild(document.createTextNode("x"));closeBtn.className = "closeBtn";closeBtn.setAttribute("title", "Close calendar");var curPeriodDIV = document.createElement("div");curPeriodDIV.className = "period";curPeriodDIV.appendChild(document.createTextNode(this.months[this.month-1]+" "+this.year));curPeriodDIV.appendChild(closeBtn);calendarBody.appendChild(curPeriodDIV);var daysOfWeekRow = document.createElement("div");daysOfWeekRow.className = "week_title";for(i=0; i<7; i++){var daysOfWeekCol = document.createElement("div");daysOfWeekCol.className = "day";daysOfWeekCol.appendChild(document.createTextNode(this.days[i].substring(0,1)));daysOfWeekRow.appendChild(daysOfWeekCol);}calendarBody.appendChild(daysOfWeekRow);var weeks = xmlObj.getElementsByTagName("week");for(row=0; row<weeks.length; row++){var days = weeks[row].getElementsByTagName("day");var weekRow = document.createElement("div");weekRow.className = "week";for(col=0; col<days.length; col++){var nDay = days[col].getAttribute("nValue");var sDay = days[col].getAttribute("sValue");var daySuffix = days[col].getAttribute("suffix");var dayStatus = days[col].getAttribute("status");if(row > 0 && (col == 0 && nDay == "0")){weekRow.style.display = "none";weekRow.style.visibility = "hidden";break;}var nDayClass = "day";if(dayStatus.toLowerCase() == "past"){}else if(dayStatus.toLowerCase() == "today"){}var dayCol = document.createElement("div");if(nDay == 0 || nDay == "0"){nDay = " ";nDayClass = "day_isEmpty";}else{var dateStr = sDay+" "+nDay+""+daySuffix+" "+this.months[this.month-1]+" "+this.year;dayCol.mouseOverClass = "day_over";dayCol.setAttribute("title", dateStr);dayCol.nDay = nDay;dayCol.sDay = sDay;dayCol.daySuffix = daySuffix;dayCol.nMonth = this.month;dayCol.sMonth = this.months[this.month-1];dayCol.nYear = this.year;dayCol.dateStr = dateStr;dayCol.calendar = this;if(nDayClass == "day"){dayCol.onmouseover = doMouseOver;dayCol.onmouseout = doMouseOut;dayCol.onclick = this.onDayClick;}}dayCol.className = nDayClass;dayCol.appendChild(document.createTextNode(nDay));weekRow.appendChild(dayCol);}calendarBody.appendChild(weekRow)}}return calendarBody;};function doMouseOver(){this.originalClassName = this.className; this.className = this.mouseOverClass; }function doMouseOut(){ this.className = this.originalClassName; }this.onDayClick = null;this.hide = function(){if(this.container){while(this.container.hasChildNodes()){ this.container.removeChild(this.container.lastChild); }this.container.className = "hide";}else if(this.calendar){if(this.calendar.container){while(this.calendar.container.hasChildNodes()){ this.calendar.container.removeChild(this.calendar.container.lastChild); }this.calendar.container.className = "hide";}else if(document.getElementById(this.calendar.id)){var container = document.getElementById(this.calendar.id);while(container.hasChildNodes()){ container.removeChild(container.lastChild); }container.className = "hide";}}};this.postionAtCursor = function(e){this.build();if(this.container){var coords = getCursorPosition(e);var xPos = coords[0];var yPos = coords[1];this.container.style.position = "absolute";this.container.style.top = yPos+"px";this.container.style.left = xPos+"px";}};this.build = function (m,y){if(isValidMonth(m) && isValidYear(y)) { this.month = m; this.year = y; }if(this.container){if(document.getElementById("CalendarBody")){ this.container.removeChild(document.getElementById("CalendarBody")); }}else{this.container = document.createElement("div");this.container.id = this.id;}var xmlHttp = createHttpRequestObj();if (xmlHttp == null){window.alert ("Browser does not support HTTP Request");return;}xmlHttp.calendar = this;xmlHttp.onreadystatechange = function() {if(xmlHttp.readyState == 4 && xmlHttp.status == 200){var xmlDoc = xmlHttp.responseXML;this.calendar.body = this.calendar.getCalendar(xmlDoc);this.calendar.hide();this.calendar.container.className = "calendar";this.calendar.container.appendChild(this.calendar.body);if(this.calendar.showSelects == true) this.calendar.container.appendChild(this.calendar.calendarSelect);this.calendar.object = this.calendar.container;if(document.getElementById(this.calendar.id)){document.body.removeChild(document.getElementById(this.calendar.id));document.body.appendChild(this.calendar.container);}}else{this.calendar.hide();this.calendar.container.className = "calendar";this.calendar.container.appendChild(this.calendar.loader);}};xmlHttp.open("POST", "calendar/CalendarXML.asp", true);xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");xmlHttp.send("month="+this.month+"&year="+this.year);};this.getCalendarObject = function(m,y){if(isValidMonth(m) && isValidYear(y)) { this.month = m; this.year = y; }var cObj = document.createElement("div");cObj.id = this.id;cObj.className = "calendar";cBody = this.getCalendar(this.getXMLCalendar());cObj.appendChild(cBody);if(this.showSelects == true) cObj.appendChild(this.calendarSelect);return cObj;};this.object = this.getCalendarObject();}function dumpDate_dayClick(){var calendar = this.calendar;var sDay = this.sDay;var nDay = this.nDay;var daySuffix = this.daySuffix;var sMonth = this.sMonth;var nMonth = this.nMonth;var nYear = this.nYear;var dateStr = this.dateStr;var dateFieldStr = nDay+"/"+nMonth+"/"+nYear;var selectedDate = new Date();selectedDate.setDate(nDay);selectedDate.setMonth(nMonth-1);selectedDate.setYear(nYear);if(document.getElementById(this.calendar.fieldId)) document.getElementById(this.calendar.fieldId).value = dateFieldStr;calendar.hide();return false;}
