var Calendar = Class.create(); Calendar.prototype = { initialize: function(){ this.calX = 0; this.calY = 0; this.dropYearMonth = null; this.dropDay = null; this.dropYearMonthNext = null; this.dropDayNext = null; this.currentMonth = 0; }, dayHeaders: new Array('M','T','W','T','F','S','S'), months: new Array('Jan-2009','Feb-2009','Mar-2009','Apr-2009','May-2009','Jun-2009','Jul-2009','Aug-2009','Sep-2009','Oct-2009','Nov-2009','Dec-2009','Jan-2010','Feb-2010','Mar-2010','Apr-2010','May-2010','Jun-2010','Jul-2010','Aug-2010','Sep-2010','Oct-2010','Nov-2010','Dec-2010','Jan-2011','Feb-2011','Mar-2011','Apr-2011','May-2011','Jun-2011','Jul-2011','Aug-2011','Sep-2011','Oct-2011','Nov-2011','Dec-2011'), monthDates: new Array('200901','200902','200903','200904','200905','200906','200907','200908','200909','200910','200911','200912','201001','201002','201003','201004','201005','201006','201007','201008','201009','201010','201011','201012','201101','201102','201103','201104','201105','201106','201107','201108','201109','201110','201111','201112'), monthMatrix: new Array( new Array(0,0,0,101,102,103,104,105,206,107,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0,0), new Array(0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,0,0,0,0,0,0,0,0), new Array(0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0), new Array(0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,0,0,0,0,0,0,0,0,0), new Array(0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0), new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,0,0,0,0,0,0,0,0,0,0,0), new Array(0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0,0,0), new Array(0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0), new Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,0,0,0,0,0,0,0,0,0,0), new Array(0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0,0), new Array(0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,0,0,0,0,0), new Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0,0,0,0), new Array(0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0), new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0), new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0,0,0,0,0), new Array(0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,0,0,0,0,0,0,0,0), new Array(0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0), new Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,0,0,0,0,0,0,0,0,0,0), new Array(0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0,0), new Array(0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0), new Array(0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,0,0,0,0,0,0,0,0,0), new Array(0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0), new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,0,0,0,0,0,0,0,0,0,0,0), new Array(0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0,0,0), new Array(0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0), new Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,0,0,0,0,0,0,0,0,0,0,0,0,0), new Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0,0,0,0), new Array(0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,0,0,0,0,0,0,0), new Array(0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0), new Array(0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,0,0,0,0,0,0,0,0,0), new Array(0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0), new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0,0,0,0,0), new Array(0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,0,0,0,0,0,0,0,0), new Array(0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0), new Array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,0,0,0,0,0,0,0,0,0,0,0), new Array(0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,0,0,0,0,0,0,0,0) ), handleSyncDates: function(){ this.fixDays(this.dropYearMonth,this.dropDay); if( this.dropYearMonthNext && this.dropDayNext && this.nights ) { if( this.nights>0 ) this.handleSyncDatesF(); else this.handleSyncDatesB(); } }, fixDays: function(dropYearMonth, dropDay){ var day = dropDay.value; var mday_index = 0; this.monthDates.each(function(value,index){ if( value==dropYearMonth.value ) mday_index=index; }); var mday = this.monthMatrix[mday_index]; var min = 31; mday.each(function(value,index){ if( value>0 && value0 && value<32 ) max=value; }); if( daymax ) dropDay.value = max; }, handleSyncDatesF: function(){ var day = parseInt(this.dropDay.value); var nights = this.nights; for(var i=0; i0) { j++; if( j==mday.length || mday[j]==0 ) { i++; if( i==this.monthDates.length ) { i--; j--; break; } else { mday = this.monthMatrix[i]; j = 0; while(j=0; i--) if( this.monthDates[i] == this.dropYearMonth.value ) { var mday = this.monthMatrix[i]; for(var j=mday.length-1; j>=0; j--) { if(mday[j] == day) { while(nights<0) { j--; if( j<0 || mday[j]==0 || mday[j]>31 ) { i--; if( i==-1 ) { i++; j++; break; } else { mday = this.monthMatrix[i]; j = mday.length-1; while(j>=0 && mday[j]==0) j--; } } nights ++; } this.dropYearMonthNext.value = this.monthDates[i]; this.dropDayNext.value = mday[j]; return; } } } }, syncDates: function(dropYearMonthObj, dropDayObj, dropYearMonthNextObj, dropDayNextObj, days){ this.dropYearMonth = dropYearMonthObj; this.dropDay = dropDayObj; this.dropYearMonthNext = dropYearMonthNextObj; this.dropDayNext = dropDayNextObj; this.nights = days; this.handleSyncDates(); }, set_drop: function(o,val){ for (i=0;i0) tmpHtml = '<<'; else tmpHtml = ' '; table_top += '' + tmpHtml + '\n'; table_top += '' + this.months[month] + '\n'; if(month<(this.monthMatrix.length-1)) tmpHtml = '>>'; else tmpHtml = ' '; table_top += '' + tmpHtml + '\n'; table_top += '\n'; table_top += '\n'; table_top += '\n'; for (dh=0;dh'; table_top += '\n'; table_top += '\n'; print_string = ''; thisMonth = this.monthMatrix[month]; for (rw=0;rw<42;rw++) { if (rw!=0 && rw!=(thisMonth.length-1) && (rw%7==0)) print_string += "\n"; if (thisMonth[rw]!=0) { var box = ""; if( this.monthDates[month]==this.dropYearMonth.value && (this.dropDay.value==thisMonth[rw] || this.dropDay.value==(thisMonth[rw]-200)) ) box = " style='border:1px solid #f06f38'"; var clickDate = (this.monthDates[month]*100 + thisMonth[rw]); if (thisMonth[rw]>200) print_string += '' + thisMonth[rw]%200 + ''; //print_string += '' + thisMonth[rw]%200 + ''; else if (thisMonth[rw]>100) print_string += '' + thisMonth[rw]%100 + ''; else print_string += '' + thisMonth[rw] + ''; } else print_string += ' '; } print_string += '\n'; print_string += 'close\n'; print_string += '\n'; this.element.innerHTML = table_top + print_string; Element.setStyle(this.element, {left:this.calX+'px', top:this.calY+'px'}); Element.show(this.element); } } var myCalendar = new Calendar(); function openCal1(obj) { myCalendar.element = $('calendar'); pos = Position.cumulativeOffset(obj); myCalendar.calX=pos[0]+0; myCalendar.calY=pos[1]-0; var days = $("nights").value; myCalendar.open_cal2($('date1m'), $('date1d'), $('date2m'), $('date2d'), $("nights").value); } function openCal2(obj) { myCalendar.element = $('calendar'); pos = Position.cumulativeOffset(obj); myCalendar.calX=pos[0]+0; myCalendar.calY=pos[1]-0; var days = $("nights").value; myCalendar.open_cal2($('date2m'), $('date2d'), $('date1m'), $('date1d'), -$("nights").value); } function calcCal1() { myCalendar.element = $('calendar'); myCalendar.syncDates($('date1m'), $('date1d'), $('date2m'), $('date2d'), $("nights").value); } function calcCal2() { myCalendar.element = $('calendar'); myCalendar.syncDates($('date2m'), $('date2d'), $('date1m'), $('date1d'), -$("nights").value); } function tr_openCal1(obj) { myCalendar.element = $('calendar'); pos = Position.cumulativeOffset(obj); myCalendar.calX=pos[0]+0; myCalendar.calY=pos[1]-0; myCalendar.open_cal1($('tr_date1m'), $('tr_date1d')); } function tr_openCal2(obj) { myCalendar.element = $('calendar'); pos = Position.cumulativeOffset(obj); myCalendar.calX=pos[0]+0; myCalendar.calY=pos[1]-0; myCalendar.open_cal1($('tr_date2m'), $('tr_date2d')); }