// months as they appear in the calendar's title var ARR_MONTHS = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; // week day titles as they appear on the calendar var ARR_WEEKDAYS = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]; // day week starts from (normally 0-Su or 1-Mo) var NUM_WEEKSTART = 1; // path to the directory where calendar images are stored. trailing slash req. var STR_ICONPATH = '/swi/www_SWI_fr.nsf/img/'; var dt_active=new Array(); var re_url = new RegExp('datetime=(\\-?\\d+)'); var dt_current = (re_url.exec(String(window.location)) ? new Date(new Number(RegExp.$1)) : new Date()); var loc=document.location.href; if (loc.toLowerCase().indexOf("&day")) { var pos=loc.toLowerCase().indexOf("&day=")+5; var dtim=loc.substring(pos, pos+13); var dt_selected=new Date(parseInt(dtim)); if (loc.toLowerCase().indexOf("date")!=-1) { pos=loc.toLowerCase().indexOf("&date=")+6; } dt_current=dt_selected; } if (isNaN(dt_current)) { dt_current=new Date(); } var re_id = new RegExp('id=(\\d+)'); var num_id = (re_id.exec(String(window.location)) ? new Number(RegExp.$1) : 0); var obj_caller=null; try { obj_caller = (window.opener ? window.opener.calendars[num_id] : null); } catch (e) { obj_caller=null; } var dt_prev_year=null; var dt_next_year=null; var dt_prev_month=null; var dt_next_month=null; var dt_firstday=null; function setAllDates() { // get same date in the previous year dt_prev_year = new Date(dt_current); dt_prev_year.setFullYear(dt_prev_year.getFullYear() - 1); if (dt_prev_year.getDate() != dt_current.getDate()) dt_prev_year.setDate(0); // get same date in the next year dt_next_year = new Date(dt_current); dt_next_year.setFullYear(dt_next_year.getFullYear() + 1); if (dt_next_year.getDate() != dt_current.getDate()) dt_next_year.setDate(0); // get same date in the previous month dt_prev_month = new Date(dt_current); dt_prev_month.setMonth(dt_prev_month.getMonth() - 1); if (dt_prev_month.getDate() != dt_current.getDate()) dt_prev_month.setDate(0); // get same date in the next month dt_next_month = new Date(dt_current); dt_next_month.setMonth(dt_next_month.getMonth() + 1); if (dt_next_month.getDate() != dt_current.getDate()) dt_next_month.setDate(0); // get first day to display in the grid for current month dt_firstday = new Date(dt_current); dt_firstday.setDate(1); dt_firstday.setDate(1 - (7 + dt_firstday.getDay() - NUM_WEEKSTART) % 7); } setAllDates(); function Trim(s) { // Remove leading spaces and carriage returns while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r')) { s = s.substring(1,s.length); } // Remove trailing spaces and carriage returns while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r')) { s = s.substring(0,s.length-1); } return s; } function set_datetime(parm1, parm2) { // parm1 is the date time, parm2 is true/false var dtTime=new Date(parm1); dt_current=new Date(parm1); setAllDates(); var cal=document.getElementById("calendar"); if (cal!=null) { var qs = new Querystring() var vw=qs.get("view",""); cal.innerHTML=getCalendarHeader()+getCalendarContent(); var loc=document.location.href.toLowerCase(); if (loc.indexOf("?openform") !=-1) { loc=loc.substring(0, loc.indexOf("?"))+"?openform"; } else { loc=loc+"?openform"; } if (loc.toLowerCase().indexOf(".nsf/admin")==-1) { // If not an admin page then fix it var pos=loc.toLowerCase().indexOf(".nsf"); loc=loc.substring(0,pos+4)+"/diary/eventsDiary.html?openform"; // User displayed form } var dd=dt_current.getDate(); var mm=dt_current.getMonth()+1; var yy=dt_current.getFullYear(); if (Trim(dd.toString()).length==1) {dd="0"+dd} if (Trim(mm.toString()).length==1) {mm="0"+(mm)} if (parm2) { loc=loc+"&day="+dt_current.valueOf()+"&date="+dd+"/"+mm+"/"+yy; } else { loc=loc+"&day="+dt_current.valueOf()+"&date="+dd+"/"+mm+"/"+yy+"&view="+vw; } document.location.href=loc; // Load URL } } function Querystring() { // get the query string, ignore the ? at the front. var querystring=location.search.substring(1,location.search.length); // parse out name/value pairs separated via & var args = querystring.split('&'); // split out each name = value pair for (var i=0;i'+(obj_caller&&obj_caller.year_scroll?'previous year ':'')+'previous month'+ ''+ARR_MONTHS[dt_current.getMonth()]+' '+dt_current.getFullYear() + ''+ 'next month'+(obj_caller && obj_caller.year_scroll?' next year':'')+''; strResult+=""; return strResult; } function compareActive(dt) { try { for (var i=0; i < dt_active.length; i++) { if (dt_active[i]!="") { dateSelected=dt.getDate(); mnthSelected=dt.getMonth(); yearSelected=dt.getFullYear(); dateActive=dt_active[i].getDate(); mnthActive=dt_active[i].getMonth(); yearActive=dt_active[i].getFullYear(); if (dateSelected==dateActive & mnthSelected==mnthActive && yearSelected==yearActive) { return true; } } } } catch (e) { alert("Error comparing active dates: "+e); } return false; } function getCalendarContent(obj) { if (obj!=null) { if (dt_active.length==0) { var splitchr=';'; if (obj.value.indexOf(",") !=-1) { splitchr=','; } var aryObj=obj.value.split(splitchr); var aryDay=document.getElementById("eventDayList").value.split(splitchr); var aryMonth=document.getElementById("eventMonthList").value.split(splitchr); var aryYear=document.getElementById("eventYearList").value.split(splitchr); for (var i=0; i <= aryObj.length; i++) { if (aryObj[i] !='' && aryObj[i]!='undefined' && aryObj[i]!=null && isNaN(aryObj[i])) { // Need to somehow convert aryObj to date format //dt_active[i]=new Date(Trim(aryYear[i]),parseInt(Trim(aryMonth[i]))-1,Trim(aryDay[i])); //dt_active[i]=new Date(2004,7,6); if (Trim(aryMonth[i]).substring(0,1)=="0") { aryMonth[i]=Trim(aryMonth[i]).replace("0",""); } var yr=parseInt(Trim(aryYear[i])); var mn=parseInt(Trim(aryMonth[i])); var dy=parseInt(Trim(aryDay[i])); //alert(yr+" "+(parseInt(aryMonth[i])-1)+" "+ dy); // alert("setting dt_active to "+dt_active[i]+" from construct of dd/mm/yyyy = "+aryDay[i]+"/"+aryMonth[i]+"/"+aryYear[i]); dt_active[i]=new Date(yr,mn-1,dy); } } } } var strResult=""; // print weekdays titles for (var n=0; n<7; n++) strResult+=''+ARR_WEEKDAYS[(NUM_WEEKSTART+n)%7]+''; strResult+=''; // print calendar table var dt_current_day = new Date(dt_firstday); var evActiveBG=""; // Active Cell BG Colour var evCellBG=""; // Normal Cell BG Colour var evWkndBG=""; // Wknd Cell BG Colour if (evActiveBG=="") { evActiveBG="#ff0000"; } if (evCellBG=="") { evCellBG="#ffffff"; } if (evWkndBG=="") { evWkndBG="#dbeaf5"; } var blMatch=false; while (dt_current_day.getMonth() == dt_current.getMonth() || dt_current_day.getMonth() == dt_firstday.getMonth()) { // print row heder strResult+=''; for (var n_current_wday=0; n_current_wday<7; n_current_wday++) { if (compareActive(dt_current_day)) { blMatch=true; } else { blMatch=false; } if (dt_current_day.getDate() == dt_current.getDate() && dt_current_day.getMonth() == dt_current.getMonth()) // print current date strResult+=''; else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6) // weekend days { if (blMatch==true) { strResult+=''; //strResult+=''; } else { strResult+=''; //strResult+=''; } } else { // print working days of current month if (blMatch==true) { strResult+=''; } else { strResult+=''; } } strResult+=''; if (dt_current_day.getMonth() == dt_current.getMonth()) // print days of current month strResult+=''; else // print days of other months strResult+=''; strResult+=dt_current_day.getDate()+''; dt_current_day.setDate(dt_current_day.getDate()+1); } // print row footer strResult+=''; } if (obj_caller && obj_caller.time_comp) strResult+='
Time:
'; strResult+=""; return strResult; }