/********************************************************************************* class:	Khronos Calendar Class* author:	Christopher Sheldon [MicroAge Solutions e-Business Developer]* notes:	Do not remove, reproduce or use this code without express written permission.*			Copyright \u00A9 2004 MicroAge Solutions. *			www.microagesolutions.com*****/function CreateKhronos(){this.version='2.0.090804';this.views=new Array();this.createDatePicker=function(){};this.createMonthView=function(sName,sData,sDivider,iTop,iLeft,sPrint,sClose,sHome,sPrevious,sNext,sDetailsPrint,sDetailsClose){asViews[asViews.length]=sName;this.views[sName]=new View('month',sData,sDivider,iTop,iLeft,sPrint,sClose,sHome,sPrevious,sNext,sDetailsPrint,sDetailsClose);};this.createWeekView=function(sName,sData,sDivider,iTop,iLeft,sPrint,sClose){asViews[asViews.length]=sName;this.views[sName]=new View('week',sData,sDivider,iTop,iLeft,sPrint,sClose);};this.createDayView=function(){};this.createMinimizedView=function(sName,sData,sDivider,iTop,iLeft,sPrint,sClose,sHome,sPrevious,sNext,sDetailsPrint,sDetailsClose,sMinimized){asViews[asViews.length]=sName;this.views[sName]=new View('minimized',sData,sDivider,iTop,iLeft,sPrint,sClose,sHome,sPrevious,sNext,sDetailsPrint,sDetailsClose,sMinimized);};function fPrintData(){this.year=0;this.month=0;this.name='';this.index=0;}this.printData=new fPrintData();this.printPage='';this.closeView=fCloseView;this.createView=fCreateView;this.printView=fPrintView;this.refreshView=fRefreshView;this.load=fLoad;var aiDaysPerMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);var abEmbedded=new Array();var asViews=new Array();var dToday=new Date();var iCurrentDay=dToday.getDate();var iCurrentMonth=dToday.getMonth();var iCurrentYear=dToday.getFullYear();function View(sType,sData,sDivider,iTop,iLeft,sPrint,sClose,sHome,sPrevious,sNext,sDetailsPrint,sDetailsClose,sMinimized){this.type=sType;this.data=sData;this.divider=sDivider;this.top=iTop;this.left=iLeft;this.days=new Array('S','M','T','W','R','F','S');this.months=new Array('January','February','March','April','May','June','July','August','September','October','November','December');this.currentStyle='font-weight: bold; text-decoration: underline;';if(sType=='week'){this.detailPrint=sPrint;}else{this.detailPrint=sDetailsPrint;}this.holiday=fHoliday;this.print=sPrint;this.close=sClose;this.dataIndex=0;this.home=sHome;this.previous=sPrevious;this.next=sNext;this.day=iCurrentDay;this.month=iCurrentMonth;this.year=iCurrentYear;this.detailClose=sDetailsClose;if(sType=='minimized'){this.minimized=sMinimized?sMinimized:'^';}}function fHoliday(iYear,iMonth,iDay){var sEvent='';var a=iYear%19;var b=Math.floor(iYear/100);var c=(b-Math.floor(b/4)-Math.floor((8*b+13)/25)+19*a+15)%30;var d=(c-Math.floor(c/28)*(1-Math.floor(c/28)*Math.floor(29/(c+1)*Math.floor((21-a)/11))));var e=(iYear+Math.floor(iYear/4)+d+2-b+Math.floor(b/4))%7;var f=d-e+28;var iEasterDay=f;var iEasterMonth=3;if(f>31){iEasterDay=f-31;}else{iEasterMonth=2;}if(iMonth==0&&iDay==1){sEvent='New Year\'s Day';}if(iMonth==1&&iDay==14){sEvent='St. Valentine\'s Day';}if(iMonth==4){var iThisDate=new Date(iYear,4,25);var iWeekday=iThisDate.getDay();var iThisDay=(iWeekday==0?19:25-iWeekday+1);if(iDay==iThisDay){sEvent='Victoria Day';}}if(iMonth==iEasterMonth&&iDay==iEasterDay-2){sEvent='Good Friday';}if(iMonth==iEasterMonth&&iDay==iEasterDay){sEvent='Easter Sunday';}if(iMonth==6&&iDay==1){sEvent='Canada Day';}if(iMonth==7){var iThisDate=new Date(iYear,7,1);var iWeekday=iThisDate.getDay();var iThisDay=(iWeekday==1?1:(iWeekday>1?9-iWeekday:2));if(iDay==iThisDay){sEvent='Civic Holiday';}}if(iMonth==8){var iThisDate=new Date(iYear,8,1);var iWeekday=iThisDate.getDay();var iThisDay=(iWeekday==1?1:(iWeekday>1?9-iWeekday:2));if(iDay==iThisDay){sEvent='Labour Holiday';}}if(iMonth==9){var iThisDate=new Date(iYear,8,1);var iWeekday=iThisDate.getDay();var iThisDay=(iWeekday==1?8:(iWeekday>1?14-iWeekday:9));if(iDay==iThisDay){sEvent='Thanksgiving';}}if(iMonth==10&&iDay==11){sEvent='Rememberance Day';}if(iMonth==11&&iDay==25){sEvent='Christmas Day';}if(iMonth==11&&iDay==26){sEvent='Boxing Day';}return sEvent;}function fCreateViews(){for(var iCounter=0;iCounter<asViews.length;iCounter++){var elDiv=document.getElementById(asViews[iCounter]);if(elDiv){elDiv.style.position='relative';abEmbedded[asViews[iCounter]]=true;}else{var elBody=document.body;elDiv=document.createElement('div');elBody.appendChild(elDiv);elDiv.style.position='absolute';elDiv.style.visibility='hidden';abEmbedded[asViews[iCounter]]=false;}switch(khronos.views[asViews[iCounter]].type){case 'month':elDiv.id=asViews[iCounter]+'1';elDiv.className=asViews[iCounter]+'Month';elDiv.innerHTML=fCreateMonthView(asViews[iCounter],iCurrentMonth,iCurrentYear);break;case 'week':elDiv.id=asViews[iCounter]+'2';elDiv.className=asViews[iCounter]+'Details';elDiv.innerHTML=fCreateDetailView(asViews[iCounter],iCurrentDay,iCurrentMonth,iCurrentYear);break;case 'minimized':elDiv.id=asViews[iCounter];elDiv.className=asViews[iCounter]+'Minimized';elDiv.innerHTML=fCreateMinimizedView(asViews[iCounter]);elDiv.style.cursor='pointer';elDiv.onclick=fCreateView;break;default:break;}if(!abEmbedded[asViews[iCounter]]){gsl.positionElement(elDiv,khronos.views[asViews[iCounter]].top,khronos.views[asViews[iCounter]].left);elDiv.style.visibility='visible';}}}function fCreateMinimizedView(sName){var sHtml=khronos.views[sName].minimized;return sHtml;}function fCreateView(sName,iDay,iMonth,iYear,iView){if(iView!=2){sName=this.id;var elParent=document.getElementById(sName);var elDiv=document.getElementById(sName+'1');if(elDiv){}else{var elBody=document.body;elDiv=document.createElement('div');elBody.appendChild(elDiv);elDiv.id=sName+'1';elDiv.className=sName+'Month';}elDiv.style.visibility='hidden';var iLeft=(gsl.documentWidth-elParent.offsetLeft<elDiv.offsetWidth+5?elParent.offsetLeft-elDiv.offsetWidth:elParent.offsetLeft);gsl.positionElement(elDiv,elParent.offsetTop,iLeft);if(elDiv.filters){if(elDiv.filters[0]){elDiv.filters[0].enabled=true;elDiv.filters[0].apply();}}elDiv.innerHTML=fCreateMonthView(sName,iCurrentMonth,iCurrentYear);elDiv.style.visibility='visible';if(elDiv.filters){if(elDiv.filters[0]){elDiv.filters[0].play();}}}else{var elParent=document.getElementById(sName+'1');var elDiv=document.getElementById(sName+'2');if(elDiv){}else{var elBody=document.body;elDiv=document.createElement('div');elBody.appendChild(elDiv);elDiv.id=sName+'2';elDiv.className=sName+'Details';}elDiv.style.visibility='hidden';var iLeft=(gsl.documentWidth-elParent.offsetLeft-elParent.offsetWidth>elDiv.offsetWidth+5?elParent.offsetLeft+elParent.offsetWidth+5:elParent.offsetLeft-elDiv.offsetWidth-5);gsl.positionElement(elDiv,elParent.offsetTop,iLeft,true);elDiv.style.visibility='visible';if(elDiv.filters){if(elDiv.filters[0]){elDiv.filters[0].enabled=true;elDiv.filters[0].apply();}}elDiv.innerHTML=fCreateDetailView(sName,iDay,iMonth,iYear);if(elDiv.filters){if(elDiv.filters[0]){elDiv.filters[0].play();}}}}function fCreateMonthView(sName,iMonth,iYear){var iDaysThisMonth=(iYear%4==0&&iMonth==1?29:aiDaysPerMonth[iMonth]);var dThisMonth=new Date(iYear,iMonth,1);var iFirstDOM=dThisMonth.getDay();var iDayCounter=-iFirstDOM;var iIndex=khronos.views[sName].dataIndex;var sHtml='<table class="Month" style="width: 100%;" cellpadding="0" cellspacing="0" border="0">';sHtml+='<tr><td>';sHtml+='<table class="Category" style="width: 100%;" cellpadding="0" cellspacing="0" border="0"><tr>';if(khronos.views[sName].data.length>1){sHtml+='<td><select onchange="khronos.views[\''+sName+'\'].dataIndex = this.value; khronos.refreshView(\''+sName+'\', '+iCurrentMonth+', '+iCurrentYear+');">';for(var iCounter=0;iCounter<khronos.views[sName].data.length;iCounter++){if(khronos.views[sName].dataIndex==iCounter){sHtml+='<option value="'+iCounter+'" selected>'+khronos.views[sName].data[iCounter].name+'</option>';}else{sHtml+='<option value="'+iCounter+'">'+khronos.views[sName].data[iCounter].name+'</option>';}}sHtml+='</select></td>';}sHtml+='<td align="right">';sHtml+='<table class="Buttons" cellpadding="0" cellspacing="0" border="0"><tr>';if(khronos.views[sName].print&&khronos.printPage){sHtml+='<td class="Print" style="cursor: pointer;" onclick="khronos.printView(\''+sName+'\', '+(iMonth+1)+', '+iYear+');" align="center">'+khronos.views[sName].print+'</td>';}if(khronos.views[sName].close&&khronos.views[sName].type=='minimized'){sHtml+='<td class="Close" style="cursor: pointer;" onclick="khronos.closeView(\''+sName+'\', 1);" align="center">'+khronos.views[sName].close+'</td>';}sHtml+='</tr></table>';sHtml+='</td></tr></table>';sHtml+='</td></tr>';sHtml+='<tr><td>';sHtml+='<table class="Title" style="width: 100%; height: 100%;" cellpadding="0" cellspacing="0" border="0"><tr>';sHtml+='<td>'+khronos.views[sName].months[iMonth]+' '+iYear+'</td><td align="right">';sHtml+='<table class="Buttons" style="cursor: pointer;" cellpadding="0" cellspacing="0" border="0">';if(khronos.views[sName].home){sHtml+='<td class="Home" style="cursor: pointer;" onclick="khronos.refreshView(\''+sName+'\', '+iCurrentMonth+', '+iCurrentYear+');" align="center">'+khronos.views[sName].home+'</td>';}if(khronos.views[sName].previous){sHtml+='<td class="Previous" style="cursor: pointer;" onclick="khronos.refreshView(\''+sName+'\', '+(iMonth-1)+', '+iYear+');" align="center">'+khronos.views[sName].previous+'</td>';}if(khronos.views[sName].next){sHtml+='<td class="Next" style="cursor: pointer;" onclick="khronos.refreshView(\''+sName+'\', '+(iMonth+1)+', '+iYear+');" align="center">'+khronos.views[sName].next+'</td>';}sHtml+='</table>';sHtml+='</td></tr></table>';sHtml+='</td></tr>';sHtml+='<tr><td style="height: 100%;">';sHtml+='<table style="width: 100%; height: 100%; cursor: default;" cellpadding="0" cellspacing="'+(khronos.views[sName].divider?khronos.views[sName].divider:'0')+'" border="0">';sHtml+='<tr>';for(var iCounter=0;iCounter<7;iCounter++){sHtml+='<td class="WeekDay">'+khronos.views[sName].days[iCounter]+'</td>';}sHtml+='</tr>';for(var iCounter=0;iCounter<6;iCounter++){sHtml+='<tr>';for(var iCounter2=0;iCounter2<7;iCounter2++){iDayCounter++;if(iDayCounter>0&&iDayCounter<=iDaysThisMonth){if(khronos.views[sName].data[iIndex].data[iYear]&&khronos.views[sName].data[iIndex].data[iYear][iMonth]&&khronos.views[sName].data[iIndex].data[iYear][iMonth][iDayCounter]){sHtml+='<td class="EventDay" style="'+(iYear==iCurrentYear&&iMonth==iCurrentMonth&&iDayCounter==iCurrentDay?khronos.views[sName].currentStyle:'')+' cursor: pointer;" onclick="khronos.createView(\''+sName+'\', '+iDayCounter+', '+iMonth+', '+iYear+', 2);">'+iDayCounter+'</td>';}else if(khronos.views[sName].holiday(iYear,iMonth,iDayCounter)){sHtml+='<td class="Holiday" style="'+(iYear==iCurrentYear&&iMonth==iCurrentMonth&&iDayCounter==iCurrentDay?khronos.views[sName].currentStyle:'')+' cursor: pointer;" onclick="khronos.createView(\''+sName+'\', '+iDayCounter+', '+iMonth+', '+iYear+', 2);">'+iDayCounter+'</td>';}else{sHtml+='<td class="Day" style="'+(iYear==iCurrentYear&&iMonth==iCurrentMonth&&iDayCounter==iCurrentDay?khronos.views[sName].currentStyle:' cursor: default;')+'">'+iDayCounter+'</td>';}}else{sHtml+='<td class="Blank">&nbsp;</td>';}}sHtml+='</tr>';}sHtml+='</table>';sHtml+='</td></tr>';sHtml+='</table>';return sHtml;}function fPrintView(sName,iMonth,iYear){this.printData.year=iYear;this.printData.month=iMonth;this.printData.name=sName;this.printData.index=khronos.views[sName].dataIndex;var elWindow=gsl.openWindow(this.printPage,'KhronosPrint','');}function fRefreshView(sName,iMonth,iYear){if(iMonth>11){iMonth=0;iYear++;}if(iMonth<0){iMonth=11;iYear--;}var elDiv=document.getElementById(sName+'1');if(elDiv.filters){if(elDiv.filters[0]){elDiv.filters[0].enabled=true;elDiv.filters[0].apply();}}elDiv.innerHTML=fCreateMonthView(sName,iMonth,iYear);if(elDiv.filters){if(elDiv.filters[0]){elDiv.filters[0].play();}}}function fCloseView(sName,iView){gsl.showSelects();var elDiv=document.getElementById(sName+iView);if(elDiv.filters){if(elDiv.filters[0]){elDiv.filters[0].enabled=true;elDiv.filters[0].apply();}}elDiv.style.visibility='hidden';var iDelay=0;if(elDiv.filters){if(elDiv.filters[0]){elDiv.filters[0].play();iDelay=Math.floor(elDiv.filters[0].duration*1000);}}setTimeout('var elBody = document.body; elBody.removeChild(document.getElementById(\''+sName+iView+'\'));',iDelay);}function fCreateDetailView(sName,iDay,iMonth,iYear,sHoliday){var sHtml='<table class="Detail" style="width: 100%;" cellpadding="0" cellspacing="0" border="0">';sHtml+='<tr><td style="width: 100%;">';sHtml+='<table class="Title" style="width: 100%;" cellpadding="0" cellspacing="0" border="0"><tr>';sHtml+='<td>'+khronos.views[sName].months[iMonth]+' '+iDay+', '+iYear+'</td><td align="right">';sHtml+='<table class="Buttons" cellpadding="0" cellspacing="0" border="0">';if(khronos.views[sName].detailPrint&&khronos.printPage){sHtml+='<td class="Print" style="cursor: pointer;" onclick="khronos.printView(\''+sName+'\', '+(iMonth+1)+', '+iYear+');" align="center">'+khronos.views[sName].detailPrint+'</td>';}if(khronos.views[sName].detailClose&&khronos.views[sName].type!='detail'){sHtml+='<td class="Close" style="cursor: pointer;" onclick="khronos.closeView(\''+sName+'\', 2);" align="center">'+khronos.views[sName].detailClose+'</td>';}sHtml+='</table>';sHtml+='</td></tr></table>';sHtml+='</td></tr>';sHtml+='<tr><td>';sHtml+='<div class="List" style="position: relative; overflow: auto;">';if(khronos.views[sName].holiday(iYear,iMonth,iDay)){sHtml+='<table class="Holiday" style="width: 100%;" cellpadding="0" cellspacing="0" border="0">';sHtml+='<tr><td style="width: 100%;">';sHtml+=khronos.views[sName].holiday(iYear,iMonth,iDay)+'<br />';sHtml+='</td></tr>';sHtml+='</table>';}if(khronos.views[sName].data[khronos.views[sName].dataIndex].data[iYear]&&khronos.views[sName].data[khronos.views[sName].dataIndex].data[iYear][iMonth]&&khronos.views[sName].data[khronos.views[sName].dataIndex].data[iYear][iMonth][iDay]){var asEvents=khronos.views[sName].data[khronos.views[sName].dataIndex].data[iYear][iMonth][iDay].split('~');sHtml+='<table style="width: 100%;" cellpadding="0" cellspacing="0" border="0">';for(var iCounter=0;iCounter<asEvents.length;iCounter++){var asThisEvent=asEvents[iCounter].split('|');sHtml+='<tr><td class="Out" style="cursor: pointer;" onclick="location.href = \''+asThisEvent[3]+'\';"><b>';sHtml+=asThisEvent[0]+'</b><br />';sHtml+=asThisEvent[1]+'<br />';sHtml+=asThisEvent[2]+'<br />';sHtml+='</td></tr>';}sHtml+='</table>';sHtml+='</div>';sHtml+='</td></tr>';sHtml+='</table>';}return sHtml;}function fLoad(){fCreateViews();}}var khronos=new CreateKhronos();function KhronosData(){this.name=new Array();this.data=new Array();this.addData=function(iMonth,iDay,iYear,sData){if(!this.data[iYear]){this.data[iYear]=new Array();}if(!this.data[iYear][iMonth]){this.data[iYear][iMonth]=new Array();}this.data[iYear][iMonth][iDay]=(this.data[iYear][iMonth][iDay]?this.data[iYear][iMonth][iDay]+'~':'')+sData;};}