diff --git a/presentation/lookAndFeel/knowledgeTree/js/datePicker.js b/presentation/lookAndFeel/knowledgeTree/js/datePicker.js new file mode 100644 index 0000000..ae10f23 --- /dev/null +++ b/presentation/lookAndFeel/knowledgeTree/js/datePicker.js @@ -0,0 +1,578 @@ + + + + + + +var weekend = [0,6]; +var weekendColor = "#e0e0e0"; +var fontface = "Verdana"; +var fontsize = 2; + +var gNow = new Date(); +var ggWinCal; +isNav = (navigator.appName.indexOf("Netscape") != -1) ? true : false; +isIE = (navigator.appName.indexOf("Microsoft") != -1) ? true : false; + +Calendar.Months = ["January", "February", "March", "April", "May", "June", +"July", "August", "September", "October", "November", "December"]; + +// Non-Leap year Month days.. +Calendar.DOMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; +// Leap year Month days.. +Calendar.lDOMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + +function Calendar(p_item, p_WinCal, p_month, p_year, p_format) { + if ((p_month == null) && (p_year == null)) return; + + if (p_WinCal == null) + this.gWinCal = ggWinCal; + else + this.gWinCal = p_WinCal; + + if (p_month == null) { + this.gMonthName = null; + this.gMonth = null; + this.gYearly = true; + } else { + this.gMonthName = Calendar.get_month(p_month); + this.gMonth = new Number(p_month); + this.gYearly = false; + } + + this.gYear = p_year; + this.gFormat = p_format; + this.gBGColor = "white"; + this.gFGColor = "black"; + this.gTextColor = "black"; + this.gHeaderColor = "black"; + this.gReturnItem = p_item; + this.gAfterToday = true; +} + +Calendar.get_month = Calendar_get_month; +Calendar.get_daysofmonth = Calendar_get_daysofmonth; +Calendar.calc_month_year = Calendar_calc_month_year; +Calendar.print = Calendar_print; + +function Calendar_get_month(monthNo) { + return Calendar.Months[monthNo]; +} + +function Calendar_get_daysofmonth(monthNo, p_year) { + /* + Check for leap year .. + 1.Years evenly divisible by four are normally leap years, except for... + 2.Years also evenly divisible by 100 are not leap years, except for... + 3.Years also evenly divisible by 400 are leap years. + */ + if ((p_year % 4) == 0) { + if ((p_year % 100) == 0 && (p_year % 400) != 0) + return Calendar.DOMonth[monthNo]; + + return Calendar.lDOMonth[monthNo]; + } else + return Calendar.DOMonth[monthNo]; +} + +function Calendar_calc_month_year(p_Month, p_Year, incr) { + /* + Will return an 1-D array with 1st element being the calculated month + and second being the calculated year + after applying the month increment/decrement as specified by 'incr' parameter. + 'incr' will normally have 1/-1 to navigate thru the months. + */ + var ret_arr = new Array(); + + if (incr == -1) { + // B A C K W A R D + if (p_Month == 0) { + ret_arr[0] = 11; + ret_arr[1] = parseInt(p_Year) - 1; + } + else { + ret_arr[0] = parseInt(p_Month) - 1; + ret_arr[1] = parseInt(p_Year); + } + } else if (incr == 1) { + // F O R W A R D + if (p_Month == 11) { + ret_arr[0] = 0; + ret_arr[1] = parseInt(p_Year) + 1; + } + else { + ret_arr[0] = parseInt(p_Month) + 1; + ret_arr[1] = parseInt(p_Year); + } + } + + return ret_arr; +} + +function Calendar_print() { + ggWinCal.print(); +} + +function Calendar_calc_month_year(p_Month, p_Year, incr) { + /* + Will return an 1-D array with 1st element being the calculated month + and second being the calculated year + after applying the month increment/decrement as specified by 'incr' parameter. + 'incr' will normally have 1/-1 to navigate thru the months. + */ + var ret_arr = new Array(); + + if (incr == -1) { + // B A C K W A R D + if (p_Month == 0) { + ret_arr[0] = 11; + ret_arr[1] = parseInt(p_Year) - 1; + } + else { + ret_arr[0] = parseInt(p_Month) - 1; + ret_arr[1] = parseInt(p_Year); + } + } else if (incr == 1) { + // F O R W A R D + if (p_Month == 11) { + ret_arr[0] = 0; + ret_arr[1] = parseInt(p_Year) + 1; + } + else { + ret_arr[0] = parseInt(p_Month) + 1; + ret_arr[1] = parseInt(p_Year); + } + } + + return ret_arr; +} + +// This is for compatibility with Navigator 3, we have to create and discard one object before the prototype object exists. +new Calendar(); + +Calendar.prototype.getMonthlyCalendarCode = function() { + var vCode = ""; + var vHeader_Code = ""; + var vData_Code = ""; + + // Begin Table Drawing code here.. + vCode = vCode + ""; + + vHeader_Code = this.cal_header(); + vData_Code = this.cal_data(); + vCode = vCode + vHeader_Code + vData_Code; + + vCode = vCode + "
"; + + return vCode; +} + +Calendar.prototype.show = function() { + var vCode = ""; + + this.gWinCal.document.open(); + + // Setup the page... + this.wwrite(""); + this.wwrite("Calendar"); + this.wwrite(""); + + this.wwrite(""); + this.wwriteA(""); + this.wwriteA(this.gMonthName + " " + this.gYear); + this.wwriteA("
"); + + // Show navigation buttons + var prevMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, -1); + var prevMM = prevMMYYYY[0]; + var prevYYYY = prevMMYYYY[1]; + + var nextMMYYYY = Calendar.calc_month_year(this.gMonth, this.gYear, 1); + var nextMM = nextMMYYYY[0]; + var nextYYYY = nextMMYYYY[1]; + + this.wwrite(""); + this.wwrite("
"); + this.wwrite("[<<<\/A>]"); + this.wwrite("[<<\/A>][><\/A>]"); + this.wwrite("[>><\/A>]

"); + + // Get the complete calendar code for the month.. + vCode = this.getMonthlyCalendarCode(); + this.wwrite(vCode); + + this.wwrite("
"); + this.gWinCal.document.close(); +} + +Calendar.prototype.showY = function() { + var vCode = ""; + var i; + var vr, vc, vx, vy; // Row, Column, X-coord, Y-coord + var vxf = 285; // X-Factor + var vyf = 200; // Y-Factor + var vxm = 10; // X-margin + var vym; // Y-margin + if (isIE) vym = 75; + else if (isNav) vym = 25; + + this.gWinCal.document.open(); + + this.wwrite(""); + this.wwrite("Calendar"); + this.wwrite(""); + this.wwrite(""); + + this.wwrite(""); + this.wwrite(""); + this.wwrite("Year : " + this.gYear); + this.wwrite("
"); + + // Show navigation buttons + var prevYYYY = parseInt(this.gYear) - 1; + var nextYYYY = parseInt(this.gYear) + 1; + + this.wwrite("
"); + this.wwrite("[<<<\/A>]"); + this.wwrite("[Print]"); + this.wwrite("[>><\/A>]

"); + + // Get the complete calendar code for each month.. + var j; + for (i=11; i>=0; i--) { + if (isIE) + this.wwrite("
"); + else if (isNav) + this.wwrite(""); + + this.gMonth = i; + this.gMonthName = Calendar.get_month(this.gMonth); + vCode = this.getMonthlyCalendarCode(); + this.wwrite(this.gMonthName + "/" + this.gYear + "
"); + this.wwrite(vCode); + + if (isIE) + this.wwrite("
"); + else if (isNav) + this.wwrite(""); + } + + this.wwrite("

"); + this.gWinCal.document.close(); +} + +Calendar.prototype.wwrite = function(wtext) { + this.gWinCal.document.writeln(wtext); +} + +Calendar.prototype.wwriteA = function(wtext) { + this.gWinCal.document.write(wtext); +} + +Calendar.prototype.cal_header = function() { + var vCode = ""; + + vCode = vCode + ""; + vCode = vCode + "Sun"; + vCode = vCode + "Mon"; + vCode = vCode + "Tue"; + vCode = vCode + "Wed"; + vCode = vCode + "Thu"; + vCode = vCode + "Fri"; + vCode = vCode + "Sat"; + vCode = vCode + ""; + + return vCode; +} + +Calendar.prototype.cal_data = function() { + var vDate = new Date(); + vDate.setDate(1); + vDate.setMonth(this.gMonth); + vDate.setFullYear(this.gYear); + + var vFirstDay=vDate.getDay(); + var vDay=1; + var vLastDay=Calendar.get_daysofmonth(this.gMonth, this.gYear); + var vOnLastDay=0; + var vCode = ""; + + /* + Get day for the 1st of the requested month/year.. + Place as many blank cells before the 1st day of the month as necessary. + */ + + vCode = vCode + ""; + for (i=0; i "; + } + + // Write rest of the 1st week + for (j=vFirstDay; j<7; j++) { + vCode = vCode + "" + + this.format_link(vDay) + + ""; + vDay=vDay + 1; + } + vCode = vCode + ""; + + // Write the rest of the weeks + for (k=2; k<7; k++) { + vCode = vCode + ""; + + for (j=0; j<7; j++) { + vCode = vCode + "" + + this.format_link(vDay) + + ""; + vDay=vDay + 1; + + if (vDay > vLastDay) { + vOnLastDay = 1; + break; + } + } + + if (j == 6) + vCode = vCode + ""; + if (vOnLastDay == 1) + break; + } + + // Fill up the rest of last week with proper blanks, so that we get proper square blocks + for (m=1; m<(7-j); m++) { + if (this.gYearly) + vCode = vCode + " "; + else + vCode = vCode + "" + m + ""; + } + + return vCode; +} + +Calendar.prototype.format_link = function(vDay) { + var vNowDay = gNow.getDate(); + var vNowMonth = gNow.getMonth(); + var vNowYear = gNow.getFullYear(); + + if (this.gAfterToday && + // also, all the days in years < this year + ( (this.gYear < vNowYear) || + // handles all the days before today in the current month and year + ( vDay <= vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear) || + // also, all the rest of the months < than this month in the current year + (this.gMonth < vNowMonth && this.gYear == vNowYear) + ) + ) { + return (this.format_day(vDay)); + } else { + return ("" + + this.format_day(vDay) + + ""); + } +} + +Calendar.prototype.format_day = function(vday) { + var vNowDay = gNow.getDate(); + var vNowMonth = gNow.getMonth(); + var vNowYear = gNow.getFullYear(); + + if (vday == vNowDay && this.gMonth == vNowMonth && this.gYear == vNowYear) + return ("" + vday + ""); + else + return (vday); +} + +Calendar.prototype.write_weekend_string = function(vday) { + var i; + + // Return special formatting for the weekend day. + for (i=0; i