//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 = '
| Calendar |  |
'
htmlOutput += '| ' + monthStrings[ targetMonth] + ' ' + targetYear + ' | '
htmlOutput += '  |
'
// htmlOutput += '
'
colHeadings = ''
for ( i = weekCommence; i <= weekCommence + 6; i++){
if( i > 6){ k = i - 6}
else { k = i}
colHeadings = colHeadings + "| " + daysOfWeek[ k] + " | "
}
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 += '| '
htmlOutput += arrDays[ counter] + ' | '
dtScratch.setDate( arrDays[ counter] + 1)
counter++
}
}
htmlOutput = htmlOutput + '
'
}
htmlOutput = htmlOutput + '
'
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( '')