jQuery.fn.eventCalendar=function(eventsCollection,cname,id,date,language,refreshBindingsFunction){cal2=new Calendar("cal2",this.attr("id"),new Date(),language,refreshBindingsFunction);if(eventsCollection){cal2.eventDates=eventsCollection}this.html(renderCalendar(cal2));return cal2};function Calendar(cname,id,date,language,refreshBindingsFunction){this.fallback_single=0;this.fallback_multi=1;this.fallback_both=2;this.viewOnly=false;this.allowWeekends=true;this.allowWeekdays=true;this.minDate=new Date();this.minDate.setDate(1);this.maxDate="--";this.scrolling=true;this.name=cname;this.firstDayOfWeek=1;this.fallback=this.fallback_both;this.calendarDate=date;this.calendarDate.setUTCHours(0);this.calendarDate.setUTCMinutes(0);this.calendarDate.setUTCSeconds(0);this.calendarDate.setUTCMilliseconds(0);this.attachedId=id;this.controlLeft="&#171;";this.controlRight="&#187;";this.controlLeftDisabled="";this.controlRightDisabled="";this.monthNavigateStyle="month-navigation";this.calendarStyle="cal_calendar";this.headerStyle="cal_header";this.headerCellStyle="cal_cell";this.headerCellStyleLabel="cal_labelcell";this.weekStyle="cal_week";this.evenWeekStyle="cal_evenweek";this.oddWeekStyle="cal_oddweek";this.dayStyle="cal_day";this.disabledDayStyle="cal_disabled";this.commonDayStyle="cal_common";this.holidayDayStyle="cal_holiday";this.eventDayStyle="cal_event";this.todayDayStyle="";this.juridicalCalendarPath="";switch(language){case"fr":this.dayLabels=new Array("Di","Lu","Ma","Me","Je","Ve","Sa");this.monthLabels=new Array("Janvier","F&eacute;vrier","Mars","Avril","Mai","Juin","Juillet","Ao&ucirc;t","Septembre","Octobre","Novembre","D&eacute;cembre");break;case"en":this.dayLabels=new Array("Su","Mo","Tu","We","Th","Fr","Sa");this.monthLabels=new Array("January","February","March","April","May","June","July","August","September","October","November","December");break;case"nl":default:this.dayLabels=new Array("Zo","Ma","Di","Wo","Do","Vr","Za");this.monthLabels=new Array("Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December");break}this.refreshBindings=refreshBindingsFunction;this.selectEvent=goToJuridicalCalendar;this.eventDates=new Array()}function goToJuridicalCalendar(){if(juridicalCalendarPath!=""){window.location.href=juridicalCalendarPath}}function updateFromSingle(sender,helper){newDate=new Date(helper.value);newDate.setUTCDate(newDate.getUTCDate()+1);sender.calendarDate=newDate;renderCalendar(sender)}function updateFromMultiDay(sender,helper){if(isNaN(helper.value)){helper.value=sender.calendarDate.getUTCDate();return false}sender.calendarDate.setUTCDate(helper.value);renderCalendar(sender)}function updateFromMultiMonth(sender,helper){if(isNaN(helper.value)){helper.value=sender.calendarDate.getUTCMonths()-1;return false}sender.calendarDate.setUTCMonth(helper.value-1);renderCalendar(sender)}function updateFromMultiYear(sender,helper){if(isNaN(helper.value)){helper.value=sender.calendarDate.getUTCFullYear();return false}sender.calendarDate.setUTCFullYear(helper.value);renderCalendar(sender)}function getFirstCalendarDate(calendar){return new Date(calendar.calendarDate.getUTCFullYear(),calendar.calendarDate.getUTCMonth(),1)}function renderCalendar(calendar){calHtml1=('<table id="cal_'+calendar.attachedId+'" class="'+calendar.calendarStyle+'">');calHtml1+=((calendar.scrolling)?buildHeader(calendar):buildStaticHeader(calendar));calHtml1+=buildCalendarTable(calendar);calHtml1+=("</table>");$("#"+calendar.attachedId).html(calHtml1)}function scrollMonthBack(calendar){calendar.calendarDate.setUTCMonth(calendar.calendarDate.getUTCMonth()-1);calendar.refreshBindings()}function selectDate(calendar,day){goToJuridicalCalendar()}function scrollMonthForward(calendar){calendar.calendarDate.setUTCMonth(calendar.calendarDate.getUTCMonth()+1);calendar.refreshBindings()}function setFieldValue(fieldId,date){document.getElementById(fieldId).value=date.getUTCFullYear()+"/"+(date.getUTCMonth()+1)+"/"+date.getUTCDate();document.getElementById(fieldId+"_year").value=date.getUTCFullYear();document.getElementById(fieldId+"_month").selectedIndex=date.getUTCMonth();document.getElementById(fieldId+"_day").value=date.getUTCDate()}function buildHeader(calendar){enableLeft=true;enableRight=true;if(calendar.minDate!="--"){if(calendar.calendarDate.getUTCFullYear()<=calendar.minDate.getUTCFullYear()){if(calendar.calendarDate.getUTCMonth()<=calendar.minDate.getUTCMonth()){enableLeft=false}}}if(calendar.maxDate!="--"){if(calendar.calendarDate.getUTCFullYear()>=calendar.maxDate.getUTCFullYear()){if(calendar.calendarDate.getUTCMonth()>=calendar.maxDate.getUTCMonth()){enableRight=false}}}calHtml2="";calHtml2+=('<tr class="'+calendar.headerStyle+'">');calHtml2+=('<td class="'+calendar.monthNavigateStyle+((enableLeft)?('" onclick="scrollMonthBack('+calendar.name+")"):"")+'">'+((enableLeft)?calendar.controlLeft:calendar.controlLeftDisabled)+"</td>");calHtml2+=('<td colspan="5" class="'+calendar.headerCellStyleLabel+'">'+calendar.monthLabels[calendar.calendarDate.getUTCMonth()]+", "+calendar.calendarDate.getUTCFullYear()+"</td>");calHtml2+=('<td class="'+calendar.monthNavigateStyle+((enableRight)?('" onclick="scrollMonthForward('+calendar.name+")"):"")+'">'+((enableRight)?calendar.controlRight:calendar.controlRightDisabled)+"</td>");calHtml2+=("</tr>");calHtml2+=('<tr class="'+calendar.headerStyle+'">');for(i=0;i<7;i++){showDay=i+calendar.firstDayOfWeek;if(showDay>6){showDay=showDay-7}calHtml2+=('<td class="'+calendar.headerCellStyle+'">'+calendar.dayLabels[showDay]+"</td>")}calHtml2+=("</tr>");return calHtml2}function buildStaticHeader(calendar){calHtml2="";calHtml2+=('<tr class="'+calendar.headerStyle+'">');calHtml2+=('<td colspan="7" class="'+calendar.headerCellStyleLabel+'">'+calendar.monthLabels[calendar.calendarDate.getUTCMonth()]+", "+calendar.calendarDate.getUTCFullYear()+"</td>");calHtml2+=("</tr>");calHtml2+=('<tr class="'+calendar.headerStyle+'">');for(i=0;i<7;i++){showDay=i+calendar.firstDayOfWeek;if(showDay>6){showDay=showDay-7}calHtml2+=('<td class="'+calendar.headerCellStyle+'">'+calendar.dayLabels[showDay]+"</td>")}calHtml2+=("</tr>");return calHtml2}function RenderDayDisabled(calendar,currentDate){calHtml+=('<td class="day">');calHtml+=('<a class="'+calendar.disabledDayStyle+'">');calHtml+=(currentDate.getUTCDate());calHtml+=("</a>");calHtml+=("</td>")}function RenderDayEnabled(calendar,currentDate,dayStyle){currentDayStyle=dayStyle;calHtml+=('<td class="day">');calHtml+=('<a class="'+dayStyle+'" onclick="selectDate('+calendar.name+", "+currentDate.getUTCDate()+')">');calHtml+=(currentDate.getUTCDate());calHtml+=("</a>");calHtml+=("</td>")}function RenderDayEvent(calendar,currentDate,dayStyle,eventId,hoverText){currentDayStyle=dayStyle;calHtml+=('<td class="day">');calHtml+=('<a class="hover '+dayStyle+'" title="'+hoverText+'" onclick="selectDate('+calendar.name+", "+currentDate.getUTCDate()+"); "+calendar.name+".selectEvent('"+eventId+"')\">");calHtml+=(currentDate.getUTCDate());calHtml+=("</a>");calHtml+=("</td>")}function buildCalendarTable(calendar){currentDate=getFirstCalendarDate(calendar);odd=0;while(currentDate.getUTCDay()!=calendar.firstDayOfWeek){currentDate.setUTCDate(currentDate.getUTCDate()-1)}calHtml="";do{odd+=1;calHtml+=('<tr class="'+(((odd%2)==0)?calendar.evenWeekStyle:calendar.oddWeekStyle)+'">');for(i=0;i<7;i++){currentDayStyle=calendar.dayStyle;currentEventStyle=calendar.commonDayStyle;currentDateString=currentDate.getUTCFullYear()+"/"+(currentDate.getUTCMonth()+1)+"/"+currentDate.getUTCDate();if(currentDate<calendar.minDate){RenderDayDisabled(calendar,currentDate)}else{if(currentDate>calendar.maxDate){RenderDayDisabled(calendar,currentDate)}else{if(currentDate.getUTCMonth()!=calendar.calendarDate.getUTCMonth()){RenderDayDisabled(calendar,currentDate)}else{if((currentDate.getUTCDay()==0)||(currentDate.getUTCDay()==6)){if(calendar.allowWeekends==true){style=calendar.holidayDayStyle;for(j=0;j<calendar.eventDates.length;j++){if(calendar.eventDates[j].date==currentDateString){style=calendar.eventDayStyle;RenderDayEvent(calendar,currentDate,style,calendar.eventDates[j].date,calendar.eventDates[j].hoverText)}}if(style==calendar.holidayDayStyle){RenderDayEnabled(calendar,currentDate,style)}}else{RenderDayDisabled(calendar,currentDate)}}else{if(calendar.allowWeekdays==true){style=calendar.commonDayStyle;for(j=0;j<calendar.eventDates.length;j++){if(calendar.eventDates[j].date==currentDateString){style=calendar.eventDayStyle;RenderDayEvent(calendar,currentDate,style,calendar.eventDates[j].date,calendar.eventDates[j].hoverText)}}if(style==calendar.commonDayStyle){RenderDayEnabled(calendar,currentDate,style)}}else{RenderDayDisabled(calendar,currentDate)}}}}}currentDate.setUTCDate(currentDate.getUTCDate()+1)}calHtml+=("</tr>")}while(currentDate.getUTCMonth()==calendar.calendarDate.getUTCMonth());return calHtml};