//Copyright Righteous Solutions ltd 2001 //Created by Edward Yabsley on 9/8/2001 //Record all modifications below var gTargetField var gTargetObject var gDatePicker function datePicked( sourceDateString){ // alert( 'DatePicked:' + sourceDateString) if ( gTargetField != ''){ document.all[ gTargetField].value = sourceDateString} if ( gTargetObject != ''){ document.all[ gTargetObject].innerHTML = sourceDateString} document.all[ 'calendarPicker'].style.display='none' } function getPrevDate( dtSource, dayOfWeek){ //Check date given is not day of week required //Set Month end for February based on leap year var monthEnds = new Array( 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31) var targetYear = dtSource.getFullYear() monthEnds[ 1] = ( ( targetYear % 4 == 0 & targetYear % 100 > 0) | targetYear % 1000 == 0 ? 29: 28) // alert( "Target Year: " + targetYear + "\r Div by 4: " + (targetYear % 4 == 0?true:false) + "\r Div by 100: " + (targetYear % 100 > 0?false:true) + "\r div by 1000: " + (targetYear % 1000 == 0?true: false) + "\r" + (monthEnds[ 1] == 29 ? "Leap Year": "Not a leap year")) if ( dtSource.getDay() != dayOfWeek){ //Move to last day of previous month monthCurr = dtSource.getMonth() monthPrev = ( monthCurr == 0? 11: monthCurr - 1) dtSource.setMonth( monthPrev) dtSource.setDate( monthEnds[ monthPrev]) //Adjust year if current month is December if ( monthCurr == 0){ dtSource.setYear( dtSource.getFullYear() - 1) } //Move to first [dayOfWeek] of previous month dayScratch = monthEnds[ monthPrev] while ( dtSource.getDay() != dayOfWeek){ // sourceTime = sourceTime - ( 24 * 60 *60 * 1000) // dtSource.setTime( sourceTime) dayScratch = dayScratch - 1 dtSource.setDate( dayScratch) // alert( "Date: " + dtSource + ". Day: " + dtSource.getDay()) } } return( dtSource) } function popCalendar( targetDate, targetField, targetObject, givenX, givenY, placeCarefully, doNotMove) { //alert( 'popCalendar\ntargetDate: ' + targetDate + '\ntargetField: ' + targetField + '\ntargetObject: ' + targetObject + '\ngivenX:' + givenX + '\ngivenY: ' + givenY ) gTargetField = targetField gTargetObject = targetObject var htmlOutput = '' var weekCommence = 0 var daysOfWeek = new Array( "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa") var colorBGStandard = "BFBFBE" var colorBGSelected = "F00000" var colorBGHighlight = "FFFFFF" var colorText = "000000" var targetYear var targetMonth var targetDay var dtNow = new Date() var dtStart var dtScratch var arrDays = new Array() var counter = 0 var monthStrings = new Array( "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December") var cellClass = 'calCell' if ( targetDate == ''){ dtStart = new Date() dtScratch = new Date() targetDay = dtStart.getDate() targetMonth = dtStart.getMonth() targetYear = dtStart.getFullYear() // alert( 'Start: ' + dtStart) } else { //alert( targetDate) targetDate = targetDate.split( '/') targetDate[ 1] = targetDate[ 1] - 1 dtStart = new Date( targetDate[ 2], targetDate[ 1], targetDate[ 0]) dtScratch = new Date( targetDate[ 2], targetDate[ 1], targetDate[ 0]) targetDay = targetDate[ 0] targetMonth = targetDate[ 1] targetYear = targetDate[ 2] } // dtStart.setHours( 4) // dtStart.setMinutes( 0) // dtStart.setSeconds( 0) // dtStart.setMilliseconds( 0) dtScratch.setDate(1) // dtStart.setDate(1) dtScratch = getPrevDate( dtScratch, weekCommence) counter = 0 cellClass = 'calCell' dtNext = new Date( targetYear, targetMonth + 1, 1) monthNext = dtNext.getMonth() + 1 dtPrev = new Date( targetYear, targetMonth - 1, 1) monthPrev = dtPrev.getMonth() + 1 popNext = "popCalendar('1/" + monthNext + "/" + dtNext.getFullYear() + "', '" + gTargetField + "', '" + gTargetObject + "', '', '', false, true)" popPrev = "popCalendar('1/" + monthPrev + "/" + dtPrev.getFullYear() + "', '" + gTargetField + "', '" + gTargetObject + "', '', '', false, true)" htmlOutput = '' htmlOutput += '' htmlOutput += '' // htmlOutput += '
Calendar
' + monthStrings[ targetMonth] + ' ' + targetYear + '
' colHeadings = '' for ( i = weekCommence; i <= weekCommence + 6; i++){ if( i > 6){ k = i - 6} else { k = i} colHeadings = colHeadings + "" } htmlOutput += '' + colHeadings + '' inNextMonthCount = 0 for ( i = 1; i <= 6; i++){ htmlOutput = htmlOutput + '' for ( j = weekCommence; j <= weekCommence + 6; j++){ arrDays[ counter] = dtScratch.getDate() inNextMonth = false if ( targetMonth == dtScratch.getMonth()){ // dtScratch.setMonth( targetMonth) cellClass = 'calCellCurrent' } else { cellClass = 'calCell' if ( counter > 7){ inNextMonth = true inNextMonthCount = dtScratch.getDay() - weekCommence + inNextMonthCount + 1 } } if ( inNextMonth == false | (counter > 28 & counter < 35) | ( counter > 35 & counter < 42)){ // dateOnly = dtScratch.toLocaleString().substring( 0, dtScratch.toLocaleString().indexOf( ' ')) dateOnly = new Array( dtScratch.getDate(), dtScratch.getMonth() + 1, dtScratch.getFullYear()) dateOnly = dateOnly.join( '/') cellClass = ( dtScratch.getTime() == dtStart.getTime() ? 'calCellDate': cellClass) updateFieldCode = "datePicked( '" + dateOnly + "')" // onMouseOverCode = "document.all[ 'td" + counter + "'].style.backgroundColor='" + colorBGHighlight + "'" // onMouseOffCode = "document.all[ 'td" + counter + "'].style.backgroundColor='" + ( dtScratch.getTime() == dtStart.getTime() ? colorBGSelected: colorBGStandard) + "'" onMouseOverCode = '' onMouseOffCode = '' //alert( datePicked) htmlOutput += '' dtScratch.setDate( arrDays[ counter] + 1) counter++ } } htmlOutput = htmlOutput + '' } htmlOutput = htmlOutput + '
" + daysOfWeek[ k] + "
' htmlOutput += arrDays[ counter] + '
' document.all[ 'calendarPicker'].style.display='' document.all[ 'calendarPicker'].innerHTML = htmlOutput //Place calendar picker on page if ( !doNotMove) { var posX = event.x - 103 + document.body.scrollLeft; var calX = 150 posX = ( posX < 0? 3: posX) posX = ( givenX ==''? posX: givenX) adjustX = ( posX >= (document.body.clientWidth - calX)? calX: 0) var posY = event.y - 3 + document.body.scrollTop; var calY = 150 posY = ( posY < 0? 3: posY) posY = ( givenY ==''? posY: givenY) adjustY = ( posY >= ( document.body.clientHeight - calY)? calY: 0) //alert( 'posX: ' + posX + ' posY: ' + posY + '\nClientH: ' + document.body.clientHeight + ' clientW: ' + document.body.clientWidth + '\nadjustX: ' + adjustX + 'adjustY: ' + adjustY) posX = posX - ( placeCarefully? adjustX: 0) posY = posY - ( placeCarefully? adjustY: 0) document.all[ 'calendarPicker'].style.top= posY document.all[ 'calendarPicker'].style.left= posX //alert( "Y:" + ( givenY ==''? posY: givenY) + '\nX:' + ( givenX ==''? posX: givenX)) } } function calHighLight() { if (event.srcElement.className.indexOf( "calCell") != -1) { event.srcElement.style.borderTopColor = '#5F5F5F' event.srcElement.style.borderLeftColor = '#5F5F5F' event.srcElement.style.borderBottomColor = '#FFFFFF' event.srcElement.style.borderRightColor = '#FFFFFF' event.srcElement.style.backgroundColor = 'white' } } function calLowLight() { if (event.srcElement.className.indexOf( "calCell") != -1) { event.srcElement.style.borderColor = '#C0C0C0' event.srcElement.style.backgroundColor = '#C0C0C0' } } function unPopCalendar(){ document.all[ 'calendarPicker'].style.display='none' } //Invoke calendar picker var gCalStyle = '' document.writeln( '' + gCalStyle + '') document.writeln( '')