function getAnchorPosition(anchorname){var useWindow = false;var coordinates = new Object();var x=0;var y=0;var use_gebi = false;var use_css = false;var use_layers = false;if (document.getElementById){ use_gebi = true; }else if (document.all){ use_css = true; }else if (document.layers){ use_layers = true; }if (use_gebi && document.all){x = AnchorPosition_getPageOffsetLeft(document.all[anchorname]);y = AnchorPosition_getPageOffsetTop(document.all[anchorname]);}else if (use_gebi){var o = document.getElementById(anchorname);x = o.offsetLeft;y = o.offsetTop;}else if (use_css){x = AnchorPosition_getPageOffsetLeft(document.all[anchorname]);y = AnchorPosition_getPageOffsetTop(document.all[anchorname]);}else if (use_layers){var found=0;for (var i=0; i<document.anchors.length; i++){if (document.anchors[i].name == anchorname){found=1;break;}}if (found == 0){coordinates.x=0; coordinates.y=0; return coordinates;}x = document.anchors[i].x;y = document.anchors[i].y;}else{coordinates.x=0; coordinates.y=0; return coordinates;}coordinates.x = x;coordinates.y = y;return coordinates;}function getAnchorWindowPosition(anchorname){var coordinates = getAnchorPosition(anchorname);var x=0;var y=0;if (document.getElementById){if (isNaN(window.screenX)){x = coordinates.x - document.body.scrollLeft + window.screenLeft;y = coordinates.y - document.body.scrollTop + window.screenTop;}else{x = coordinates.x + window.screenX + (window.outerWidth-window.innerWidth) - window.pageXOffset;y = coordinates.y + window.screenY + (window.outerHeight-24-window.innerHeight) - window.pageYOffset;}}else if (document.all){x = coordinates.x - document.body.scrollLeft + window.screenLeft;y = coordinates.y - document.body.scrollTop + window.screenTop;}else if (document.layers){x = coordinates.x + window.screenX + (window.outerWidth-window.innerWidth) - window.pageXOffset;y = coordinates.y + window.screenY + (window.outerHeight-24-window.innerHeight) - window.pageYOffset;}coordinates.x = x;coordinates.y = y;return coordinates;}function AnchorPosition_getPageOffsetLeft (el){var ol = el.offsetLeft;while ((el = el.offsetParent) != null){ ol += el.offsetLeft; }return ol;}function AnchorPosition_getWindowOffsetLeft (el){var scrollamount = document.body.scrollLeft;return AnchorPosition_getPageOffsetLeft(el)-scrollamount;}function AnchorPosition_getPageOffsetTop (el){var ot = el.offsetTop;while((el = el.offsetParent) != null){ ot += el.offsetTop; }return ot;}function AnchorPosition_getWindowOffsetTop (el){var scrollamount = document.body.scrollTop;return AnchorPosition_getPageOffsetTop(el)-scrollamount;}function PopupWindow_getXYPosition(anchorname){var coordinates;if (this.type == "WINDOW"){coordinates = getAnchorWindowPosition(anchorname);}else{coordinates = getAnchorPosition(anchorname);}this.x = coordinates.x;this.y = coordinates.y;}function PopupWindow_setSize(width,height){this.width = width;this.height = height;}function PopupWindow_populate(contents){this.contents = contents;this.populated = false;}function PopupWindow_refresh(){if (this.divName != null){if (this.use_gebi){document.getElementById(this.divName).innerHTML = this.contents;}else if (this.use_css){ document.all[this.divName].innerHTML = this.contents;}else if (this.use_layers){ var d = document.layers[this.divName]; d.document.open();d.document.writeln(this.contents);d.document.close();}}else{if (this.popupWindow != null && !this.popupWindow.closed){this.popupWindow.document.open();this.popupWindow.document.writeln(this.contents);this.popupWindow.document.close();}}}function PopupWindow_showPopup(anchorname){this.getXYPosition(anchorname);this.x += this.offsetX;this.y += this.offsetY;if (!this.populated && (this.contents != "")){this.populated = true;this.refresh();}if (this.divName != null){if (this.use_gebi){document.getElementById(this.divName).style.left = this.x;document.getElementById(this.divName).style.top = this.y;document.getElementById(this.divName).style.visibility = "visible";}else if (this.use_css){document.all[this.divName].style.left = this.x;document.all[this.divName].style.top = this.y;document.all[this.divName].style.visibility = "visible";}else if (this.use_layers){document.layers[this.divName].left = this.x;document.layers[this.divName].top = this.y;document.layers[this.divName].visibility = "visible";}}else{if (this.popupWindow == null || this.popupWindow.closed){if (screen && screen.availHeight){if ((this.y + this.height) > screen.availHeight){this.y = screen.availHeight - this.height;}}if (screen && screen.availWidth){if ((this.x + this.width) > screen.availWidth){this.x = screen.availWidth - this.width;}}this.popupWindow = window.open("about:blank","window_"+anchorname,"toolbar=no,location=no,status=no,menubar=no,scrollbars=auto,resizable,alwaysRaised,dependent,titlebar=no,width="+this.width+",height="+this.height+",screenX="+this.x+",left="+this.x+",screenY="+this.y+",top="+this.y+"");}this.refresh();}}function PopupWindow_hidePopup(){if (this.divName != null){if (this.use_gebi){document.getElementById(this.divName).style.visibility = "hidden";}else if (this.use_css){document.all[this.divName].style.visibility = "hidden";}else if (this.use_layers){document.layers[this.divName].visibility = "hidden";}}else{if (this.popupWindow && !this.popupWindow.closed){this.popupWindow.close();this.popupWindow = null;}}}function PopupWindow_isClicked(e){if (this.divName != null){if (this.use_layers){var clickX = e.pageX;var clickY = e.pageY;var t = document.layers[this.divName];if ((clickX > t.left) && (clickX < t.left+t.clip.width) && (clickY > t.top) && (clickY < t.top+t.clip.height)){return true;}else{ return false; }}else if (document.all){var t = window.event.srcElement;while (t.parentElement != null){if (t.id==this.divName){return true;}t = t.parentElement;}return false;}else if (this.use_gebi){var t = e.originalTarget;while (t.parentNode != null){if (t.id==this.divName){return true;}t = t.parentNode;}return false;}return false;}return false;}function PopupWindow_hideIfNotClicked(e){if (this.autoHideEnabled && !this.isClicked(e)){this.hidePopup();}}function PopupWindow_autoHide(){this.autoHideEnabled = true;}function PopupWindow_hidePopupWindows(e){for (var i=0; i<popupWindowObjects.length; i++){if (popupWindowObjects[i] != null){var p = popupWindowObjects[i];p.hideIfNotClicked(e);}}}function PopupWindow_attachListener(){if (document.layers){document.captureEvents(Event.MOUSEUP);}window.popupWindowOldEventListener = document.onmouseup;if (window.popupWindowOldEventListener != null){document.onmouseup = new Function("window.popupWindowOldEventListener(); PopupWindow_hidePopupWindows();");}else{document.onmouseup = PopupWindow_hidePopupWindows;}}function PopupWindow(){if (!window.popupWindowIndex){ window.popupWindowIndex = 0; }if (!window.popupWindowObjects){ window.popupWindowObjects = new Array(); }if (!window.listenerAttached){window.listenerAttached = true;PopupWindow_attachListener();}this.index = popupWindowIndex++;popupWindowObjects[this.index] = this;this.divName = null;this.popupWindow = null;this.width=0;this.height=0;this.populated = false;this.visible = false;this.autoHideEnabled = false;this.contents = "";if (arguments.length>0){this.type="DIV";this.divName = arguments[0];}else{this.type="WINDOW";}this.use_gebi = false;this.use_css = false;this.use_layers = false;if (document.getElementById){ this.use_gebi = true; }else if (document.all){ this.use_css = true; }else if (document.layers){ this.use_layers = true; }else{ this.type = "WINDOW"; }this.offsetX = 0;this.offsetY = 0;this.getXYPosition = PopupWindow_getXYPosition;this.populate = PopupWindow_populate;this.refresh = PopupWindow_refresh;this.showPopup = PopupWindow_showPopup;this.hidePopup = PopupWindow_hidePopup;this.setSize = PopupWindow_setSize;this.isClicked = PopupWindow_isClicked;this.autoHide = PopupWindow_autoHide;this.hideIfNotClicked = PopupWindow_hideIfNotClicked;}function CalendarPopup(){var newCalendar;if (arguments.length>0){newCalendar = new PopupWindow(arguments[0]);}else{newCalendar = new PopupWindow();newCalendar.setSize(150,175);}newCalendar.offsetX = -152;newCalendar.offsetY = 25;newCalendar.autoHide();newCalendar.monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");newCalendar.dayHeaders = new Array("S","M","T","W","T","F","S");newCalendar.returnFunction = "tmpReturnFunction";newCalendar.todayLabel = "Today";newCalendar.weekStartDay = 0;newCalendar.setReturnFunction = CalendarPopup_setReturnFunction;newCalendar.setTodayLabel = CalendarPopup_setTodayLabel;newCalendar.setMonthNames = CalendarPopup_setMonthNames;newCalendar.setDayHeaders = CalendarPopup_setDayHeaders;newCalendar.setWeekStartDay = CalendarPopup_setWeekStartDay;newCalendar.showCalendar = CalendarPopup_showCalendar;newCalendar.hideCalendar = CalendarPopup_hideCalendar;newCalendar.getStyles = CalendarPopup_getStyles;newCalendar.refreshCalendar = CalendarPopup_refreshCalendar;newCalendar.getCalendar = CalendarPopup_getCalendar;return newCalendar;}function CalendarPopup_tmpReturnFunction(y,m,d){alert('Use setReturnFunction() to define which function will get the clicked results!');}function CalendarPopup_setReturnFunction(name){this.returnFunction = name;}function CalendarPopup_setTodayLabel(name){this.todayLabel = name;}function CalendarPopup_setMonthNames(){for (var i=0; i<arguments.length; i++){this.monthNames[i] = arguments[i];}}function CalendarPopup_setDayHeaders(){for (var i=0; i<arguments.length; i++){this.dayHeaders[i] = arguments[i];}}function CalendarPopup_setWeekStartDay(day){this.weekStartDay = day;}function CalendarPopup_hideCalendar(){if (arguments.length > 0){window.popupWindowObjects[arguments[0]].hidePopup();}else{this.hidePopup();}}function CalendarPopup_refreshCalendar(index){var calObject = window.popupWindowObjects[index];if (arguments.length>1){ calObject.populate(calObject.getCalendar(arguments[1],arguments[2]));}else{calObject.populate(calObject.getCalendar());}calObject.refresh();}function CalendarPopup_showCalendar(anchorname){this.populate(this.getCalendar());this.showPopup(anchorname);}
function CalendarPopup_getStyles() {
var result = "";
result += "<STYLE>\n";
result += "TD.cal { font-family:arial; font-size: 8pt; }\n";
result += "TD.calmonth { font-family:arial; font-size: 8pt; text-align: right;}\n";
result += "TD.caltoday { font-family:arial; font-size: 8pt; text-align: right; color: white; background-color:#C0C0C0; border-width:1; border-type:solid; border-color:#800000; }\n";
result += "A.todaylink { font-family:arial; font-size: 8pt; height: 20px; color: black; }\n";
result += "A.cal { text-decoration:none; color:#000000; }\n";
result += "A.calthismonth { text-decoration:none; color:#000000; }\n";
result += "A.calothermonth { text-decoration:none; color:#808080; }\n";
result += "</STYLE>\n";
return result;
}
function CalendarPopup_getCalendar() {
var now = new Date();
if (arguments.length > 0) { var month = arguments[0]; }
else { var month = now.getMonth()+1; }
if (arguments.length > 1) { var year = arguments[1]; }
else { var year = now.getFullYear(); }
var daysinmonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
if ( ( (year%4 == 0)&&(year%100 != 0) ) || (year%400 == 0) ) { 
daysinmonth[2] = 29;
}
var current_month = new Date(year,month-1,1);
var display_year = year;
var display_month = month;
var display_date = 1;
var weekday= current_month.getDay();
var offset = 0;
if (weekday >= this.weekStartDay) {
offset = weekday - this.weekStartDay;
}
else {
offset = 7-this.weekStartDay+weekday;
}
if (offset > 0) {
display_month--;
if (display_month < 1) { display_month = 12; display_year--; }
display_date = daysinmonth[display_month]-offset+1;
}
var next_month = month+1;
var next_month_year = year;
if (next_month > 12) { next_month=1; next_month_year++; }
var last_month = month-1;
var last_month_year = year;
if (last_month < 1) { last_month=12; last_month_year--; }
var date_class;
var result = "";
if (this.type == "WINDOW") {
var windowref = "window.opener.";
}
else {
var windowref = "";
}
if (this.type == "WINDOW") {
result += "<HTML><HEAD><TITLE>Calendar</TITLE>"+this.getStyles()+"</HEAD><BODY MARGINWIDTH=0 MARGINHEIGHT=0 TOPMARGIN=0 RIGHTMARGIN=0 LEFTMARGIN=0>\n";
result += '<CENTER><TABLE WIDTH=100% BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>\n';
}
else {
result += '<TABLE WIDTH=144 BORDER=1 BORDERWIDTH=1 BORDERCOLOR="#808080" CELLSPACING=0 CELLPADDING=1>\n';
result += '<TR><TD ALIGN=CENTER>\n';
result += '<CENTER>\n';
result += '<TABLE WIDTH=144 BORDER=0 BORDERWIDTH=0 CELLSPACING=0 CELLPADDING=0>\n';
}
result += '<TR BGCOLOR="#C0C0C0">\n';
result += '<TD BGCOLOR="#C0C0C0" CLASS="cal" WIDTH=22 ALIGN=CENTER VALIGN=MIDDLE><B><A CLASS="cal" HREF="javascript:'+windowref+'CalendarPopup_refreshCalendar('+this.index+','+last_month+','+last_month_year+');">&lt;&lt;</A></B></TD>\n';
result += '<TD BGCOLOR="#C0C0C0" CLASS="cal" WIDTH=100 ALIGN=CENTER>'+this.monthNames[month-1]+' '+year+'</TD>\n';
result += '<TD BGCOLOR="#C0C0C0" CLASS="cal" WIDTH=22 ALIGN=CENTER VALIGN=MIDDLE><B><A CLASS="cal" HREF="javascript:'+windowref+'CalendarPopup_refreshCalendar('+this.index+','+next_month+','+next_month_year+');">&gt;&gt;</A></B></TD>\n';
result += '</TR></TABLE>\n';
result += '<TABLE WIDTH=120 BORDER=0 CELLSPACING=1 CELLPADDING=0 ALIGN=CENTER>\n';
result += '<TR>\n';
result += '<TD CLASS="cal" ALIGN=RIGHT WIDTH=14%>'+this.dayHeaders[(this.weekStartDay)%7]+'</TD>\n';
result += '<TD CLASS="cal" ALIGN=RIGHT WIDTH=14%>'+this.dayHeaders[(this.weekStartDay+1)%7]+'</TD>\n';
result += '<TD CLASS="cal" ALIGN=RIGHT WIDTH=14%>'+this.dayHeaders[(this.weekStartDay+2)%7]+'</TD>\n';
result += '<TD CLASS="cal" ALIGN=RIGHT WIDTH=14%>'+this.dayHeaders[(this.weekStartDay+3)%7]+'</TD>\n';
result += '<TD CLASS="cal" ALIGN=RIGHT WIDTH=14%>'+this.dayHeaders[(this.weekStartDay+4)%7]+'</TD>\n';
result += '<TD CLASS="cal" ALIGN=RIGHT WIDTH=14%>'+this.dayHeaders[(this.weekStartDay+5)%7]+'</TD>\n';
result += '<TD CLASS="cal" ALIGN=RIGHT WIDTH=14%>'+this.dayHeaders[(this.weekStartDay+6)%7]+'</TD>\n';
result += '</TR>\n';
result += '<TR><TD COLSPAN=7 ALIGN=CENTER></TD></TR>\n';
for (var row=1; row<=6; row++) {
result += '<TR>\n';
for (var col=1; col<=7; col++) {
if (display_month == month) {
date_class = "calthismonth";
}else {
date_class = "calothermonth";
}
if ((display_month == now.getMonth()+1) && (display_date==now.getDate()) && (display_year==now.getFullYear())) {
td_class="caltoday";
}
else {
td_class="calmonth";
}
result += '<TD CLASS="'+td_class+'"><A HREF="javascript:'+windowref+this.returnFunction+'('+display_year+','+display_month+','+display_date+');'+windowref+'CalendarPopup_hideCalendar(\''+this.index+'\');" CLASS="'+date_class+'">'+display_date+'</A></TD>\n';
display_date++;
if (display_date > daysinmonth[display_month]) {
display_date=1;
display_month++;
}
if (display_month > 12) {
display_month=1;
display_year++;
}
}
result += '</TR>';
}
result += '<TR><TD COLSPAN=7 ALIGN=CENTER></TD></TR>\n';
result += '<TR>\n';
result += '<TD COLSPAN=7 ALIGN=CENTER>\n';
result += '<A CLASS="todaylink" HREF="javascript:'+windowref+this.returnFunction+'(\''+now.getFullYear()+'\',\''+(now.getMonth()+1)+'\',\''+now.getDate()+'\');'+windowref+'CalendarPopup_hideCalendar(\''+this.index+'\');">'+this.todayLabel+'</A>\n';
result += '<BR>\n';
result += '</TD></TR></TABLE></CENTER></TD></TR></TABLE>\n';
if (this.type == "WINDOW") {
result += "</BODY></HTML>\n";
}
return result;
}
