/* * Original Code - Bazillyo's Spiffy DHTML Popup Calendar v. 1.0 @ 2000 S. Ousta * - freeware with this comment * - Thanks to Chris for the domlay() function * - this requires calendarcode.js, calendar.css, and calendarTest.htm * - works in IE4.x, IE5.x, NS4.75 possibly 4.x, NS6 (with slight cosmetic issues) * - Netscape does display some controls overtop of the layer so layout is important * * Vertebrae rewrite B. Ullman/P. Smith/K. Meaney * Major changes: * - Removal of month & year drop down menus, and dependancies on those items (which Netscape didn't handle well) * - Addition of month and year VCR-type controls. * - restyle layout to build smaller, neater calendar menu. * - Allow user to select non-current month values (the grayout dates) * - Provide method for menu to default to the date shown in the input box. * - Test on the Macs, and make changes to accomodate them. */ // initialize variables... document.write(""); var ppcIE=((navigator.appName == "Microsoft Internet Explorer") || ((navigator.appName == "Netscape") && (parseInt(navigator.appVersion)==5))); var ppcNN6=((navigator.appName == "Netscape") && (parseInt(navigator.appVersion)==5)); var ppcNN=((navigator.appName == "Netscape")&&(document.layers)); is_mac= (navigator.userAgent.toLowerCase().indexOf("mac")!=-1); var is_mac4x=((navigator.userAgent.toLowerCase().indexOf("mac")!=-1)&&(navigator.appName == "Microsoft Internet Explorer")&&(navigator.appVersion.indexOf("5.0")==-1)); agt=navigator.userAgent.toLowerCase(); is_opera6 = ( (agt.indexOf("opera") != -1) && (parseInt(navigator.appVersion.substring(0,1)) < 7 ) ); is_NsFour = ( (agt.indexOf("msie") == -1) && (agt.indexOf("opera") == -1) && (agt.indexOf("mozilla/4.") != -1) ); var todayDate = new Date, curDate = new Date; var minDate = new Date, maxDate = new Date; var IsCalendarVisible=false, valid=true; var inputCount=0, inputNum=0; var ppcX = 4, ppcY = 4; var curImg, curDateBox; var defaultD, gstrDefaultDate var dteBoxName1, dteBoxName2 var gwhatMonth, gwhatYear var setMin, setMax var IsUsingMinMax; var calfrmName; var gblnClearDate var grunFunc var names = new Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC'); var longnames = new Array('January','February','March','April','May','June','July','August','September','October','November','December'); var days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); var dow = new Array('S','M','T','W','T','F','S'); var dateChar="-"; var imagesDir = "" //is_mac4x=true; //uncomment for mac testing var months = new Array(); months = names //from date.js var now = new Date(); //from date.js document.write(""); var calenderX = 0; var calenderY = 0; // integrated functions from legacy date.js function y2k(number) { return (number < 1900) ? number + 1900 : number; } function getFirstofYearOffset(){ var firstofyear = (new Date((new Date().getYear()),0,1)).getTime(); var todaysDate = (new Date((new Date().getYear()),((new Date().getMonth())),(new Date().getDate()))).getTime(); returnedValue = Math.floor(((todaysDate - firstofyear)/(-24 * 60 * 60 * 1000))); return (returnedValue); } function setDate (dayOffset){ var selectedDate = new Date(((new Date()).getTime() + ((parseInt(dayOffset) * 24 * 60 * 60 * 1000)))); return ((selectedDate.getDate() < 10) ? '0' + selectedDate.getDate() : selectedDate.getDate()) + "-" + months[selectedDate.getMonth()] + "-" + y2k(selectedDate.getYear()); }//end integration date.js function getOffsetLeft (el) { var ol = el.offsetLeft; while ((el = el.offsetParent) != null) ol += el.offsetLeft; return ol; } function getOffsetTop (el) { var ot = el.offsetTop; while((el = el.offsetParent) != null) ot += el.offsetTop; return ot; } function calClick() { window.focus(); } function domlay(id,trigger,lax,lay,content) { // Layer visible if (trigger=="1"){ if (document.layers) document.layers[''+id+''].visibility = "show" else if (document.all) document.all[''+id+''].style.visibility = "visible" else if (document.getElementById) document.getElementById(''+id+'').style.visibility = "visible" } // Layer hidden else if (trigger=="0"){ if (document.layers) document.layers[''+id+''].visibility = "hide" else if (document.all) document.all[''+id+''].style.visibility = "hidden" else if (document.getElementById) document.getElementById(''+id+'').style.visibility = "hidden" } // Set horizontal position if (lax){ if (document.layers){document.layers[''+id+''].left = lax} else if (document.all){document.all[''+id+''].style.left=lax} else if (document.getElementById){document.getElementById(''+id+'').style.left=lax+"px"} } // Set vertical position if (lay){ if (document.layers){document.layers[''+id+''].top = lay} else if (document.all){document.all[''+id+''].style.top=lay} else if (document.getElementById){document.getElementById(''+id+'').style.top=lay+"px"} } // change content if (content){ if (document.layers){ var sprite=document.layers[''+id+'']; sprite.document.open(); sprite.document.write(content); sprite.document.close(); } else if (document.all) document.all[''+id+''].innerHTML = content; else if (document.getElementById) { if ( is_opera6 ) { var container = document.getElementById(''+id+''); container.document.write(content); } else { rng = document.createRange(); el = document.getElementById(''+id+''); rng.setStartBefore(el); htmlFrag = rng.createContextualFragment(content) while(el.hasChildNodes()) el.removeChild(el.lastChild); el.appendChild(htmlFrag); } } } } function hideCalendar(){ domlay('popupcalendar',0,ppcX,ppcY); IsCalendarVisible = false; } function Calendar(whatMonth,whatYear) { var startMonth, startYear; var datecolwidth, output = ''; gwhatMonth=whatMonth; gwhatYear=whatYear startMonth=whatMonth; startYear=whatYear; curDate.setMonth(whatMonth); curDate.setFullYear(whatYear); curDate.setDate(todayDate.getDate()); if (ppcNN6) { output += '