1546 lines
48 KiB
JavaScript
1546 lines
48 KiB
JavaScript
/************************************************************************************************************
|
||
JS Calendar
|
||
Copyright (C) September 2006 DTHMLGoodies.com, Alf Magne Kalleland
|
||
|
||
This library is free software; you can redistribute it and/or
|
||
modify it under the terms of the GNU Lesser General Public
|
||
License as published by the Free Software Foundation; either
|
||
version 2.1 of the License, or (at your option) any later version.
|
||
|
||
This library is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
Lesser General Public License for more details.
|
||
|
||
You should have received a copy of the GNU Lesser General Public
|
||
License along with this library; if not, write to the Free Software
|
||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||
|
||
Dhtmlgoodies.com., hereby disclaims all copyright interest in this script
|
||
written by Alf Magne Kalleland.
|
||
|
||
Alf Magne Kalleland, 2006
|
||
Owner of DHTMLgoodies.com
|
||
|
||
************************************************************************************************************/
|
||
|
||
/* Update log:
|
||
(C) www.dhtmlgoodies.com, September 2005
|
||
|
||
Version 1.2, November 8th - 2005 - Added <iframe> background in IE
|
||
Version 1.3, November 12th - 2005 - Fixed top bar position in Opera 7
|
||
Version 1.4, December 28th - 2005 - Support for Spanish and Portuguese
|
||
Version 1.5, January 18th - 2006 - Fixed problem with next-previous buttons after a month has been selected from dropdown
|
||
Version 1.6, February 22nd - 2006 - Added variable which holds the path to images.
|
||
Format todays date at the bottom by use of the todayStringFormat variable
|
||
Pick todays date by clicking on todays date at the bottom of the calendar
|
||
Version 2.0 May, 25th - 2006 - Added support for time(hour and minutes) and changing year and hour when holding mouse over + and - options. (i.e. instead of click)
|
||
Version 2.1 July, 2nd - 2006 - Added support for more date formats(example: d.m.yyyy, i.e. one letter day and month).
|
||
|
||
// Modifications by Gregg Buntin
|
||
Version 2.1.1 8/9/2007 gfb - Add switch to turn off Year Span Selection
|
||
This allows me to only have this year & next year in the drop down
|
||
|
||
Version 2.1.2 8/30/2007 gfb - Add switch to start week on Sunday
|
||
Add switch to turn off week number display
|
||
Fix bug when using on an HTTPS page
|
||
|
||
*/
|
||
var turnOffYearSpan = false; // true = Only show This Year and Next, false = show +/- 5 years
|
||
var weekStartsOnSunday = false; // true = Start the week on Sunday, false = start the week on Monday
|
||
var showWeekNumber = true; // true = show week number, false = do not show week number
|
||
|
||
var languageCode = 'en'; // Possible values: en,ge,no,nl,es,pt-br,fr
|
||
// en = english, ge = german, no = norwegian,nl = dutch, es = spanish, pt-br = portuguese, fr = french, da = danish, hu = hungarian(Use UTF-8 doctype for hungarian)
|
||
|
||
var calendar_display_time = true;
|
||
|
||
// Format of current day at the bottom of the calendar
|
||
// [todayString] = the value of todayString
|
||
// [dayString] = day of week (examle: mon, tue, wed...)
|
||
// [UCFdayString] = day of week (examle: Mon, Tue, Wed...) ( First letter in uppercase)
|
||
// [day] = Day of month, 1..31
|
||
// [monthString] = Name of current month
|
||
// [year] = Current year
|
||
var todayStringFormat = '[todayString] [UCFdayString]. [day]. [monthString] [year]';
|
||
var pathToImages = 'images/'; // Relative to your HTML file
|
||
|
||
var speedOfSelectBoxSliding = 200; // Milliseconds between changing year and hour when holding mouse over "-" and "+" - lower value = faster
|
||
var intervalSelectBox_minutes = 5; // Minute select box - interval between each option (5 = default)
|
||
|
||
var calendar_offsetTop = 0; // Offset - calendar placement - You probably have to modify this value if you're not using a strict doctype
|
||
var calendar_offsetLeft = 0; // Offset - calendar placement - You probably have to modify this value if you're not using a strict doctype
|
||
var calendarDiv = false;
|
||
|
||
var MSIE = false;
|
||
var Opera = false;
|
||
if(navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('Opera')<0)MSIE=true;
|
||
if(navigator.userAgent.indexOf('Opera')>=0)Opera=true;
|
||
|
||
|
||
switch(languageCode){
|
||
case "en": /* English */
|
||
var monthArray = ['January','February','March','April','May','June','July','August','September','October','November','December'];
|
||
var monthArrayShort = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
|
||
var dayArray = ['Mon','Tue','Wed','Thu','Fri','Sat','Sun'];
|
||
var weekString = 'Week';
|
||
var todayString = '';
|
||
break;
|
||
case "ge": /* German */
|
||
var monthArray = ['Januar','Februar','M<>rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'];
|
||
var monthArrayShort = ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'];
|
||
var dayArray = ['Mon','Die','Mit','Don','Fre','Sam','Son'];
|
||
var weekString = 'Woche';
|
||
var todayString = 'Heute';
|
||
break;
|
||
case "no": /* Norwegian */
|
||
var monthArray = ['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'];
|
||
var monthArrayShort = ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Des'];
|
||
var dayArray = ['Man','Tir','Ons','Tor','Fre','Lør','Søn'];
|
||
var weekString = 'Uke';
|
||
var todayString = 'Dagen i dag er';
|
||
break;
|
||
case "nl": /* Dutch */
|
||
var monthArray = ['Januari','Februari','Maart','April','Mei','Juni','Juli','Augustus','September','Oktober','November','December'];
|
||
var monthArrayShort = ['Jan','Feb','Mar','Apr','Mei','Jun','Jul','Aug','Sep','Okt','Nov','Dec'];
|
||
var dayArray = ['Ma','Di','Wo','Do','Vr','Za','Zo'];
|
||
var weekString = 'Week';
|
||
var todayString = 'Vandaag';
|
||
break;
|
||
case "es": /* Spanish */
|
||
var monthArray = ['Enero','Febrero','Marzo','April','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
|
||
var monthArrayShort =['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'];
|
||
var dayArray = ['Lun','Mar','Mie','Jue','Vie','Sab','Dom'];
|
||
var weekString = 'Semana';
|
||
var todayString = 'Hoy es';
|
||
break;
|
||
case "pt-br": /* Brazilian portuguese (pt-br) */
|
||
var monthArray = ['Janeiro','Fevereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'];
|
||
var monthArrayShort = ['Jan','Fev','Mar','Abr','Mai','Jun','Jul','Ago','Set','Out','Nov','Dez'];
|
||
var dayArray = ['Seg','Ter','Qua','Qui','Sex','Sáb','Dom'];
|
||
var weekString = 'Sem.';
|
||
var todayString = 'Hoje é';
|
||
break;
|
||
case "fr": /* French */
|
||
var monthArray = ['Janvier','F<>vrier','Mars','Avril','Mai','Juin','Juillet','Ao<41>t','Septembre','Octobre','Novembre','D<>cembre'];
|
||
var monthArrayShort = ['Jan','Fev','Mar','Avr','Mai','Jun','Jul','Aou','Sep','Oct','Nov','Dec'];
|
||
var dayArray = ['Lun','Mar','Mer','Jeu','Ven','Sam','Dim'];
|
||
var weekString = 'Sem';
|
||
var todayString = "Aujourd'hui";
|
||
break;
|
||
case "da": /*Danish*/
|
||
var monthArray = ['januar','februar','marts','april','maj','juni','juli','august','september','oktober','november','december'];
|
||
var monthArrayShort = ['jan','feb','mar','apr','maj','jun','jul','aug','sep','okt','nov','dec'];
|
||
var dayArray = ['man','tirs','ons','tors','fre','lør','søn'];
|
||
var weekString = 'Uge';
|
||
var todayString = 'I dag er den';
|
||
break;
|
||
case "hu": /* Hungarian - Remember to use UTF-8 encoding, i.e. the <meta> tag */
|
||
var monthArray = ['Január','Február','Március','<27>?prilis','Május','Június','Július','Augusztus','Szeptember','Október','November','December'];
|
||
var monthArrayShort = ['Jan','Feb','Márc','<27>?pr','Máj','Jún','Júl','Aug','Szep','Okt','Nov','Dec'];
|
||
var dayArray = ['Hé','Ke','Sze','Cs','Pé','Szo','Vas'];
|
||
var weekString = 'Hét';
|
||
var todayString = 'Mai nap';
|
||
break;
|
||
case "it": /* Italian*/
|
||
var monthArray = ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'];
|
||
var monthArrayShort = ['Gen','Feb','Mar','Apr','Mag','Giu','Lugl','Ago','Set','Ott','Nov','Dic'];
|
||
var dayArray = ['Lun',';Mar','Mer','Gio','Ven','Sab','Dom'];
|
||
var weekString = 'Settimana';
|
||
var todayString = 'Oggi è il';
|
||
break;
|
||
case "sv": /* Swedish */
|
||
var monthArray = ['Januari','Februari','Mars','April','Maj','Juni','Juli','Augusti','September','Oktober','November','December'];
|
||
var monthArrayShort = ['Jan','Feb','Mar','Apr','Maj','Jun','Jul','Aug','Sep','Okt','Nov','Dec'];
|
||
var dayArray = ['Mån','Tis','Ons','Tor','Fre','Lör','Sön'];
|
||
var weekString = 'Vecka';
|
||
var todayString = 'Idag är det den';
|
||
break;
|
||
case "cz": /* Czech */
|
||
var monthArray = ['leden','únor','březen','duben','květen','červen','červenec','srpen','září','říjen','listopad','prosinec'];
|
||
var monthArrayShort = ['led','ún','bř','dub','kvě','čer','čer-ec','srp','zář','říj','list','pros'];
|
||
var dayArray = ['Pon','Út','St','Čt','Pá','So','Ne'];
|
||
var weekString = 'týden';
|
||
var todayString = '';
|
||
break;
|
||
}
|
||
|
||
if (weekStartsOnSunday) {
|
||
var tempDayName = dayArray[6];
|
||
for(var theIx = 6; theIx > 0; theIx--) {
|
||
dayArray[theIx] = dayArray[theIx-1];
|
||
}
|
||
dayArray[0] = tempDayName;
|
||
}
|
||
|
||
|
||
|
||
var daysInMonthArray = [31,28,31,30,31,30,31,31,30,31,30,31];
|
||
var currentMonth;
|
||
var currentYear;
|
||
var currentHour;
|
||
var currentMinute;
|
||
var calendarContentDiv;
|
||
var returnDateTo;
|
||
var returnFormat;
|
||
var activeSelectBoxMonth;
|
||
var activeSelectBoxYear;
|
||
var activeSelectBoxHour;
|
||
var activeSelectBoxMinute;
|
||
|
||
var iframeObj = false;
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
var iframeObj2 =false;
|
||
function EIS_FIX_EI1(where2fixit)
|
||
{
|
||
|
||
if(!iframeObj2)return;
|
||
iframeObj2.style.display = 'block';
|
||
iframeObj2.style.height =document.getElementById(where2fixit).offsetHeight+1;
|
||
iframeObj2.style.width=document.getElementById(where2fixit).offsetWidth;
|
||
iframeObj2.style.left=getleftPos(document.getElementById(where2fixit))+1-calendar_offsetLeft;
|
||
iframeObj2.style.top=getTopPos(document.getElementById(where2fixit))-document.getElementById(where2fixit).offsetHeight-calendar_offsetTop;
|
||
}
|
||
|
||
function EIS_Hide_Frame()
|
||
{ if(iframeObj2)iframeObj2.style.display = 'none';}
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
var returnDateToYear;
|
||
var returnDateToMonth;
|
||
var returnDateToDay;
|
||
var returnDateToHour;
|
||
var returnDateToMinute;
|
||
|
||
var inputYear;
|
||
var inputMonth;
|
||
var inputDay;
|
||
var inputHour;
|
||
var inputMinute;
|
||
var calendarDisplayTime = false;
|
||
|
||
var selectBoxHighlightColor = '#D60808'; // Highlight color of select boxes
|
||
var selectBoxRolloverBgColor = '#E2EBED'; // Background color on drop down lists(rollover)
|
||
|
||
var selectBoxMovementInProgress = false;
|
||
var activeSelectBox = false;
|
||
|
||
function cancelCalendarEvent()
|
||
{
|
||
return false;
|
||
}
|
||
function isLeapYear(inputYear)
|
||
{
|
||
if(inputYear%400==0||(inputYear%4==0&&inputYear%100!=0)) return true;
|
||
return false;
|
||
|
||
}
|
||
var activeSelectBoxMonth = false;
|
||
var activeSelectBoxDirection = false;
|
||
|
||
function highlightMonthYear()
|
||
{
|
||
if(activeSelectBoxMonth)activeSelectBoxMonth.className='';
|
||
activeSelectBox = this;
|
||
|
||
|
||
if(this.className=='monthYearActive'){
|
||
this.className='';
|
||
}else{
|
||
this.className = 'monthYearActive';
|
||
activeSelectBoxMonth = this;
|
||
}
|
||
|
||
if(this.innerHTML.indexOf('-')>=0 || this.innerHTML.indexOf('+')>=0){
|
||
if(this.className=='monthYearActive')
|
||
selectBoxMovementInProgress = true;
|
||
else
|
||
selectBoxMovementInProgress = false;
|
||
if(this.innerHTML.indexOf('-')>=0)activeSelectBoxDirection = -1; else activeSelectBoxDirection = 1;
|
||
|
||
}else selectBoxMovementInProgress = false;
|
||
|
||
}
|
||
|
||
function showMonthDropDown()
|
||
{
|
||
if(document.getElementById('monthDropDown').style.display=='block'){
|
||
document.getElementById('monthDropDown').style.display='none';
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
EIS_Hide_Frame();
|
||
}else{
|
||
document.getElementById('monthDropDown').style.display='block';
|
||
document.getElementById('yearDropDown').style.display='none';
|
||
document.getElementById('hourDropDown').style.display='none';
|
||
document.getElementById('minuteDropDown').style.display='none';
|
||
if (MSIE)
|
||
{ EIS_FIX_EI1('monthDropDown')}
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
|
||
}
|
||
}
|
||
|
||
function showYearDropDown()
|
||
{
|
||
if(document.getElementById('yearDropDown').style.display=='block'){
|
||
document.getElementById('yearDropDown').style.display='none';
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
EIS_Hide_Frame();
|
||
}else{
|
||
document.getElementById('yearDropDown').style.display='block';
|
||
document.getElementById('monthDropDown').style.display='none';
|
||
document.getElementById('hourDropDown').style.display='none';
|
||
document.getElementById('minuteDropDown').style.display='none';
|
||
if (MSIE)
|
||
{ EIS_FIX_EI1('yearDropDown')}
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
|
||
}
|
||
|
||
}
|
||
function showHourDropDown()
|
||
{
|
||
if(document.getElementById('hourDropDown').style.display=='block'){
|
||
document.getElementById('hourDropDown').style.display='none';
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
EIS_Hide_Frame();
|
||
}else{
|
||
document.getElementById('hourDropDown').style.display='block';
|
||
document.getElementById('monthDropDown').style.display='none';
|
||
document.getElementById('yearDropDown').style.display='none';
|
||
document.getElementById('minuteDropDown').style.display='none';
|
||
if (MSIE)
|
||
{ EIS_FIX_EI1('hourDropDown')}
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
}
|
||
|
||
}
|
||
function showMinuteDropDown()
|
||
{
|
||
if(document.getElementById('minuteDropDown').style.display=='block'){
|
||
document.getElementById('minuteDropDown').style.display='none';
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
EIS_Hide_Frame();
|
||
}else{
|
||
document.getElementById('minuteDropDown').style.display='block';
|
||
document.getElementById('monthDropDown').style.display='none';
|
||
document.getElementById('yearDropDown').style.display='none';
|
||
document.getElementById('hourDropDown').style.display='none';
|
||
if (MSIE)
|
||
{ EIS_FIX_EI1('minuteDropDown')}
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
}
|
||
|
||
}
|
||
|
||
function selectMonth()
|
||
{
|
||
document.getElementById('calendar_month_txt').innerHTML = this.innerHTML
|
||
currentMonth = this.id.replace(/[^\d]/g,'');
|
||
|
||
document.getElementById('monthDropDown').style.display='none';
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
EIS_Hide_Frame();
|
||
for(var no=0;no<monthArray.length;no++){
|
||
document.getElementById('monthDiv_'+no).style.color='';
|
||
}
|
||
this.style.color = selectBoxHighlightColor;
|
||
activeSelectBoxMonth = this;
|
||
writeCalendarContent();
|
||
|
||
}
|
||
|
||
function selectHour()
|
||
{
|
||
document.getElementById('calendar_hour_txt').innerHTML = this.innerHTML
|
||
currentHour = this.innerHTML.replace(/[^\d]/g,'');
|
||
document.getElementById('hourDropDown').style.display='none';
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
EIS_Hide_Frame();
|
||
if(activeSelectBoxHour){
|
||
activeSelectBoxHour.style.color='';
|
||
}
|
||
activeSelectBoxHour=this;
|
||
this.style.color = selectBoxHighlightColor;
|
||
}
|
||
|
||
function selectMinute()
|
||
{
|
||
document.getElementById('calendar_minute_txt').innerHTML = this.innerHTML
|
||
currentMinute = this.innerHTML.replace(/[^\d]/g,'');
|
||
document.getElementById('minuteDropDown').style.display='none';
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
EIS_Hide_Frame();
|
||
if(activeSelectBoxMinute){
|
||
activeSelectBoxMinute.style.color='';
|
||
}
|
||
activeSelectBoxMinute=this;
|
||
this.style.color = selectBoxHighlightColor;
|
||
}
|
||
|
||
|
||
function selectYear()
|
||
{
|
||
document.getElementById('calendar_year_txt').innerHTML = this.innerHTML
|
||
currentYear = this.innerHTML.replace(/[^\d]/g,'');
|
||
document.getElementById('yearDropDown').style.display='none';
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
EIS_Hide_Frame();
|
||
if(activeSelectBoxYear){
|
||
activeSelectBoxYear.style.color='';
|
||
}
|
||
activeSelectBoxYear=this;
|
||
this.style.color = selectBoxHighlightColor;
|
||
writeCalendarContent();
|
||
|
||
}
|
||
|
||
function switchMonth()
|
||
{
|
||
if(this.src.indexOf('left')>=0){
|
||
currentMonth=currentMonth-1;;
|
||
if(currentMonth<0){
|
||
currentMonth=11;
|
||
currentYear=currentYear-1;
|
||
}
|
||
}else{
|
||
currentMonth=currentMonth+1;;
|
||
if(currentMonth>11){
|
||
currentMonth=0;
|
||
currentYear=currentYear/1+1;
|
||
}
|
||
}
|
||
|
||
writeCalendarContent();
|
||
|
||
|
||
}
|
||
|
||
function createMonthDiv(){
|
||
var div = document.createElement('DIV');
|
||
div.className='monthYearPicker';
|
||
div.id = 'monthPicker';
|
||
|
||
for(var no=0;no<monthArray.length;no++){
|
||
var subDiv = document.createElement('DIV');
|
||
subDiv.innerHTML = monthArray[no];
|
||
subDiv.onmouseover = highlightMonthYear;
|
||
subDiv.onmouseout = highlightMonthYear;
|
||
subDiv.onclick = selectMonth;
|
||
subDiv.id = 'monthDiv_' + no;
|
||
subDiv.style.width = '56px';
|
||
subDiv.onselectstart = cancelCalendarEvent;
|
||
div.appendChild(subDiv);
|
||
if(currentMonth && currentMonth==no){
|
||
subDiv.style.color = selectBoxHighlightColor;
|
||
activeSelectBoxMonth = subDiv;
|
||
}
|
||
|
||
}
|
||
return div;
|
||
|
||
}
|
||
|
||
function changeSelectBoxYear(e,inputObj)
|
||
{
|
||
if(!inputObj)inputObj =this;
|
||
var yearItems = inputObj.parentNode.getElementsByTagName('DIV');
|
||
if(inputObj.innerHTML.indexOf('-')>=0){
|
||
var startYear = yearItems[1].innerHTML/1 -1;
|
||
if(activeSelectBoxYear){
|
||
activeSelectBoxYear.style.color='';
|
||
}
|
||
}else{
|
||
var startYear = yearItems[1].innerHTML/1 +1;
|
||
if(activeSelectBoxYear){
|
||
activeSelectBoxYear.style.color='';
|
||
|
||
}
|
||
}
|
||
|
||
for(var no=1;no<yearItems.length-1;no++){
|
||
yearItems[no].innerHTML = startYear+no-1;
|
||
yearItems[no].id = 'yearDiv' + (startYear/1+no/1-1);
|
||
|
||
}
|
||
if(activeSelectBoxYear){
|
||
activeSelectBoxYear.style.color='';
|
||
if(document.getElementById('yearDiv'+currentYear)){
|
||
activeSelectBoxYear = document.getElementById('yearDiv'+currentYear);
|
||
activeSelectBoxYear.style.color=selectBoxHighlightColor;;
|
||
}
|
||
}
|
||
}
|
||
function changeSelectBoxHour(e,inputObj)
|
||
{
|
||
if(!inputObj)inputObj = this;
|
||
|
||
var hourItems = inputObj.parentNode.getElementsByTagName('DIV');
|
||
if(inputObj.innerHTML.indexOf('-')>=0){
|
||
var startHour = hourItems[1].innerHTML/1 -1;
|
||
if(startHour<0)startHour=0;
|
||
if(activeSelectBoxHour){
|
||
activeSelectBoxHour.style.color='';
|
||
}
|
||
}else{
|
||
var startHour = hourItems[1].innerHTML/1 +1;
|
||
if(startHour>14)startHour = 14;
|
||
if(activeSelectBoxHour){
|
||
activeSelectBoxHour.style.color='';
|
||
|
||
}
|
||
}
|
||
var prefix = '';
|
||
for(var no=1;no<hourItems.length-1;no++){
|
||
if((startHour/1 + no/1) < 11)prefix = '0'; else prefix = '';
|
||
hourItems[no].innerHTML = prefix + (startHour+no-1);
|
||
|
||
hourItems[no].id = 'hourDiv' + (startHour/1+no/1-1);
|
||
|
||
}
|
||
if(activeSelectBoxHour){
|
||
activeSelectBoxHour.style.color='';
|
||
if(document.getElementById('hourDiv'+currentHour)){
|
||
activeSelectBoxHour = document.getElementById('hourDiv'+currentHour);
|
||
activeSelectBoxHour.style.color=selectBoxHighlightColor;;
|
||
}
|
||
}
|
||
}
|
||
|
||
function updateYearDiv()
|
||
{
|
||
var yearSpan = 5;
|
||
if (turnOffYearSpan) {
|
||
yearSpan = 0;
|
||
}
|
||
//alert(currentYear);
|
||
//alert(yearSpan);
|
||
var div = document.getElementById('yearDropDown');
|
||
var yearItems = div.getElementsByTagName('DIV');
|
||
for(var no=1;no<yearItems.length-1;no++){
|
||
//alert(no);
|
||
yearItems[no].innerHTML = currentYear/1 -yearSpan + no;
|
||
if(currentYear==(currentYear/1 -yearSpan + no)){
|
||
yearItems[no].style.color = selectBoxHighlightColor;
|
||
activeSelectBoxYear = yearItems[no];
|
||
}else{
|
||
yearItems[no].style.color = '';
|
||
}
|
||
}
|
||
}
|
||
|
||
function updateMonthDiv()
|
||
{
|
||
for(no=0;no<12;no++){
|
||
document.getElementById('monthDiv_' + no).style.color = '';
|
||
}
|
||
document.getElementById('monthDiv_' + currentMonth).style.color = selectBoxHighlightColor;
|
||
activeSelectBoxMonth = document.getElementById('monthDiv_' + currentMonth);
|
||
}
|
||
|
||
|
||
function updateHourDiv()
|
||
{
|
||
var div = document.getElementById('hourDropDown');
|
||
var hourItems = div.getElementsByTagName('DIV');
|
||
|
||
var addHours = 0;
|
||
if((currentHour/1 -6 + 1)<0){
|
||
addHours = (currentHour/1 -6 + 1)*-1;
|
||
}
|
||
for(var no=1;no<hourItems.length-1;no++){
|
||
var prefix='';
|
||
if((currentHour/1 -6 + no + addHours) < 10)prefix='0';
|
||
hourItems[no].innerHTML = prefix + (currentHour/1 -6 + no + addHours);
|
||
if(currentHour==(currentHour/1 -6 + no)){
|
||
hourItems[no].style.color = selectBoxHighlightColor;
|
||
activeSelectBoxHour = hourItems[no];
|
||
}else{
|
||
hourItems[no].style.color = '';
|
||
}
|
||
}
|
||
}
|
||
|
||
function updateMinuteDiv()
|
||
{
|
||
for(no=0;no<60;no+=intervalSelectBox_minutes){
|
||
var prefix = '';
|
||
if(no<10)prefix = '0';
|
||
|
||
document.getElementById('minuteDiv_' + prefix + no).style.color = '';
|
||
}
|
||
if(document.getElementById('minuteDiv_' + currentMinute)){
|
||
document.getElementById('minuteDiv_' + currentMinute).style.color = selectBoxHighlightColor;
|
||
activeSelectBoxMinute = document.getElementById('minuteDiv_' + currentMinute);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
function createYearDiv()
|
||
{
|
||
|
||
if(!document.getElementById('yearDropDown')){
|
||
var div = document.createElement('DIV');
|
||
div.className='monthYearPicker';
|
||
}else{
|
||
var div = document.getElementById('yearDropDown');
|
||
var subDivs = div.getElementsByTagName('DIV');
|
||
for(var no=0;no<subDivs.length;no++){
|
||
subDivs[no].parentNode.removeChild(subDivs[no]);
|
||
}
|
||
}
|
||
|
||
|
||
var d = new Date();
|
||
if(currentYear){
|
||
d.setFullYear(currentYear);
|
||
}
|
||
|
||
var startYear = d.getFullYear()/1 - 5;
|
||
|
||
var yearSpan = 10;
|
||
if (! turnOffYearSpan) {
|
||
var subDiv = document.createElement('DIV');
|
||
subDiv.innerHTML = ' - ';
|
||
subDiv.onclick = changeSelectBoxYear;
|
||
subDiv.onmouseover = highlightMonthYear;
|
||
subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;};
|
||
subDiv.onselectstart = cancelCalendarEvent;
|
||
div.appendChild(subDiv);
|
||
} else {
|
||
startYear = d.getFullYear()/1 - 0;
|
||
yearSpan = 2;
|
||
}
|
||
|
||
for(var no=startYear;no<(startYear+yearSpan);no++){
|
||
var subDiv = document.createElement('DIV');
|
||
subDiv.innerHTML = no;
|
||
subDiv.onmouseover = highlightMonthYear;
|
||
subDiv.onmouseout = highlightMonthYear;
|
||
subDiv.onclick = selectYear;
|
||
subDiv.id = 'yearDiv' + no;
|
||
subDiv.onselectstart = cancelCalendarEvent;
|
||
div.appendChild(subDiv);
|
||
if(currentYear && currentYear==no){
|
||
subDiv.style.color = selectBoxHighlightColor;
|
||
activeSelectBoxYear = subDiv;
|
||
}
|
||
}
|
||
if (! turnOffYearSpan) {
|
||
var subDiv = document.createElement('DIV');
|
||
subDiv.innerHTML = ' + ';
|
||
subDiv.onclick = changeSelectBoxYear;
|
||
subDiv.onmouseover = highlightMonthYear;
|
||
subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;};
|
||
subDiv.onselectstart = cancelCalendarEvent;
|
||
div.appendChild(subDiv);
|
||
}
|
||
return div;
|
||
}
|
||
|
||
/* This function creates the hour div at the bottom bar */
|
||
|
||
function slideCalendarSelectBox()
|
||
{
|
||
if(selectBoxMovementInProgress){
|
||
if(activeSelectBox.parentNode.id=='hourDropDown'){
|
||
changeSelectBoxHour(false,activeSelectBox);
|
||
}
|
||
if(activeSelectBox.parentNode.id=='yearDropDown'){
|
||
changeSelectBoxYear(false,activeSelectBox);
|
||
}
|
||
|
||
}
|
||
setTimeout('slideCalendarSelectBox()',speedOfSelectBoxSliding);
|
||
|
||
}
|
||
|
||
function createHourDiv()
|
||
{
|
||
if(!document.getElementById('hourDropDown')){
|
||
var div = document.createElement('DIV');
|
||
div.className='monthYearPicker';
|
||
}else{
|
||
var div = document.getElementById('hourDropDown');
|
||
var subDivs = div.getElementsByTagName('DIV');
|
||
for(var no=0;no<subDivs.length;no++){
|
||
subDivs[no].parentNode.removeChild(subDivs[no]);
|
||
}
|
||
}
|
||
|
||
if(!currentHour)currentHour=0;
|
||
var startHour = currentHour/1;
|
||
if(startHour>14)startHour=14;
|
||
|
||
var subDiv = document.createElement('DIV');
|
||
subDiv.innerHTML = ' - ';
|
||
subDiv.onclick = changeSelectBoxHour;
|
||
subDiv.onmouseover = highlightMonthYear;
|
||
subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;};
|
||
subDiv.onselectstart = cancelCalendarEvent;
|
||
div.appendChild(subDiv);
|
||
|
||
for(var no=startHour;no<startHour+10;no++){
|
||
var prefix = '';
|
||
if(no/1<10)prefix='0';
|
||
var subDiv = document.createElement('DIV');
|
||
subDiv.innerHTML = prefix + no;
|
||
subDiv.onmouseover = highlightMonthYear;
|
||
subDiv.onmouseout = highlightMonthYear;
|
||
subDiv.onclick = selectHour;
|
||
subDiv.id = 'hourDiv' + no;
|
||
subDiv.onselectstart = cancelCalendarEvent;
|
||
div.appendChild(subDiv);
|
||
if(currentYear && currentYear==no){
|
||
subDiv.style.color = selectBoxHighlightColor;
|
||
activeSelectBoxYear = subDiv;
|
||
}
|
||
}
|
||
var subDiv = document.createElement('DIV');
|
||
subDiv.innerHTML = ' + ';
|
||
subDiv.onclick = changeSelectBoxHour;
|
||
subDiv.onmouseover = highlightMonthYear;
|
||
subDiv.onmouseout = function(){ selectBoxMovementInProgress = false;};
|
||
subDiv.onselectstart = cancelCalendarEvent;
|
||
div.appendChild(subDiv);
|
||
|
||
return div;
|
||
}
|
||
/* This function creates the minute div at the bottom bar */
|
||
|
||
function createMinuteDiv()
|
||
{
|
||
if(!document.getElementById('minuteDropDown')){
|
||
var div = document.createElement('DIV');
|
||
div.className='monthYearPicker';
|
||
}else{
|
||
var div = document.getElementById('minuteDropDown');
|
||
var subDivs = div.getElementsByTagName('DIV');
|
||
for(var no=0;no<subDivs.length;no++){
|
||
subDivs[no].parentNode.removeChild(subDivs[no]);
|
||
}
|
||
}
|
||
var startMinute = 0;
|
||
var prefix = '';
|
||
for(var no=startMinute;no<60;no+=intervalSelectBox_minutes){
|
||
|
||
if(no<10)prefix='0'; else prefix = '';
|
||
var subDiv = document.createElement('DIV');
|
||
subDiv.innerHTML = prefix + no;
|
||
subDiv.onmouseover = highlightMonthYear;
|
||
subDiv.onmouseout = highlightMonthYear;
|
||
subDiv.onclick = selectMinute;
|
||
subDiv.id = 'minuteDiv_' + prefix + no;
|
||
subDiv.onselectstart = cancelCalendarEvent;
|
||
div.appendChild(subDiv);
|
||
if(currentYear && currentYear==no){
|
||
subDiv.style.color = selectBoxHighlightColor;
|
||
activeSelectBoxYear = subDiv;
|
||
}
|
||
}
|
||
return div;
|
||
}
|
||
|
||
function highlightSelect()
|
||
{
|
||
|
||
if(this.className=='selectBoxTime'){
|
||
this.className = 'selectBoxTimeOver';
|
||
this.getElementsByTagName('IMG')[0].src = pathToImages + 'down_time_over.gif';
|
||
}else if(this.className=='selectBoxTimeOver'){
|
||
this.className = 'selectBoxTime';
|
||
this.getElementsByTagName('IMG')[0].src = pathToImages + 'down_time.gif';
|
||
}
|
||
|
||
if(this.className=='selectBox'){
|
||
this.className = 'selectBoxOver';
|
||
this.getElementsByTagName('IMG')[0].src = pathToImages + 'down_over.gif';
|
||
}else if(this.className=='selectBoxOver'){
|
||
this.className = 'selectBox';
|
||
this.getElementsByTagName('IMG')[0].src = pathToImages + 'down.gif';
|
||
}
|
||
|
||
}
|
||
|
||
function highlightArrow()
|
||
{
|
||
if(this.src.indexOf('over')>=0){
|
||
if(this.src.indexOf('left')>=0)this.src = pathToImages + 'left.gif';
|
||
if(this.src.indexOf('right')>=0)this.src = pathToImages + 'right.gif';
|
||
}else{
|
||
if(this.src.indexOf('left')>=0)this.src = pathToImages + 'left_over.gif';
|
||
if(this.src.indexOf('right')>=0)this.src = pathToImages + 'right_over.gif';
|
||
}
|
||
}
|
||
|
||
function highlightClose()
|
||
{
|
||
if(this.src.indexOf('over')>=0){
|
||
this.src = pathToImages + 'close.gif';
|
||
}else{
|
||
this.src = pathToImages + 'close_over.gif';
|
||
}
|
||
|
||
}
|
||
|
||
function closeCalendar(){
|
||
|
||
document.getElementById('yearDropDown').style.display='none';
|
||
document.getElementById('monthDropDown').style.display='none';
|
||
document.getElementById('hourDropDown').style.display='none';
|
||
document.getElementById('minuteDropDown').style.display='none';
|
||
|
||
calendarDiv.style.display='none';
|
||
if(iframeObj){
|
||
iframeObj.style.display='none';
|
||
//// //// fix for EI frame problem on time dropdowns 09/30/2006
|
||
EIS_Hide_Frame();}
|
||
if(activeSelectBoxMonth)activeSelectBoxMonth.className='';
|
||
if(activeSelectBoxYear)activeSelectBoxYear.className='';
|
||
|
||
|
||
}
|
||
|
||
function writeTopBar()
|
||
{
|
||
|
||
var topBar = document.createElement('DIV');
|
||
topBar.className = 'topBar';
|
||
topBar.id = 'topBar';
|
||
calendarDiv.appendChild(topBar);
|
||
|
||
// Left arrow
|
||
var leftDiv = document.createElement('DIV');
|
||
leftDiv.style.marginRight = '1px';
|
||
var img = document.createElement('IMG');
|
||
img.src = pathToImages + 'left.gif';
|
||
img.onmouseover = highlightArrow;
|
||
img.onclick = switchMonth;
|
||
img.onmouseout = highlightArrow;
|
||
leftDiv.appendChild(img);
|
||
topBar.appendChild(leftDiv);
|
||
if(Opera)leftDiv.style.width = '16px';
|
||
|
||
// Right arrow
|
||
var rightDiv = document.createElement('DIV');
|
||
rightDiv.style.marginRight = '1px';
|
||
var img = document.createElement('IMG');
|
||
img.src = pathToImages + 'right.gif';
|
||
img.onclick = switchMonth;
|
||
img.onmouseover = highlightArrow;
|
||
img.onmouseout = highlightArrow;
|
||
rightDiv.appendChild(img);
|
||
if(Opera)rightDiv.style.width = '16px';
|
||
topBar.appendChild(rightDiv);
|
||
|
||
|
||
// Month selector
|
||
var monthDiv = document.createElement('DIV');
|
||
monthDiv.id = 'monthSelect';
|
||
monthDiv.onmouseover = highlightSelect;
|
||
monthDiv.onmouseout = highlightSelect;
|
||
monthDiv.onclick = showMonthDropDown;
|
||
var span = document.createElement('SPAN');
|
||
span.innerHTML = monthArray[currentMonth];
|
||
span.id = 'calendar_month_txt';
|
||
monthDiv.appendChild(span);
|
||
|
||
var img = document.createElement('IMG');
|
||
img.src = pathToImages + 'down.gif';
|
||
img.style.position = 'absolute';
|
||
img.style.right = '0px';
|
||
monthDiv.appendChild(img);
|
||
monthDiv.className = 'selectBox';
|
||
if(Opera){
|
||
img.style.cssText = 'float:right;position:relative';
|
||
img.style.position = 'relative';
|
||
img.style.styleFloat = 'right';
|
||
}
|
||
topBar.appendChild(monthDiv);
|
||
|
||
var monthPicker = createMonthDiv();
|
||
monthPicker.style.left = '37px';
|
||
monthPicker.style.top = monthDiv.offsetTop + monthDiv.offsetHeight + 1 + 'px';
|
||
monthPicker.style.width ='60px';
|
||
monthPicker.id = 'monthDropDown';
|
||
|
||
calendarDiv.appendChild(monthPicker);
|
||
|
||
// Year selector
|
||
var yearDiv = document.createElement('DIV');
|
||
yearDiv.onmouseover = highlightSelect;
|
||
yearDiv.onmouseout = highlightSelect;
|
||
yearDiv.onclick = showYearDropDown;
|
||
var span = document.createElement('SPAN');
|
||
span.innerHTML = currentYear;
|
||
span.id = 'calendar_year_txt';
|
||
yearDiv.appendChild(span);
|
||
topBar.appendChild(yearDiv);
|
||
|
||
var img = document.createElement('IMG');
|
||
img.src = pathToImages + 'down.gif';
|
||
yearDiv.appendChild(img);
|
||
yearDiv.className = 'selectBox';
|
||
|
||
if(Opera){
|
||
yearDiv.style.width = '50px';
|
||
img.style.cssText = 'float:right';
|
||
img.style.position = 'relative';
|
||
img.style.styleFloat = 'right';
|
||
}
|
||
|
||
var yearPicker = createYearDiv();
|
||
yearPicker.style.left = '113px';
|
||
yearPicker.style.top = monthDiv.offsetTop + monthDiv.offsetHeight + 1 + 'px';
|
||
yearPicker.style.width = '35px';
|
||
yearPicker.id = 'yearDropDown';
|
||
calendarDiv.appendChild(yearPicker);
|
||
|
||
|
||
var img = document.createElement('IMG');
|
||
img.src = pathToImages + 'close.gif';
|
||
img.style.styleFloat = 'right';
|
||
img.onmouseover = highlightClose;
|
||
img.onmouseout = highlightClose;
|
||
img.onclick = closeCalendar;
|
||
topBar.appendChild(img);
|
||
if(!document.all){
|
||
img.style.position = 'absolute';
|
||
img.style.right = '2px';
|
||
}
|
||
|
||
|
||
|
||
}
|
||
|
||
function writeCalendarContent()
|
||
{
|
||
var calendarContentDivExists = true;
|
||
if(!calendarContentDiv){
|
||
calendarContentDiv = document.createElement('DIV');
|
||
calendarDiv.appendChild(calendarContentDiv);
|
||
calendarContentDivExists = false;
|
||
}
|
||
currentMonth = currentMonth/1;
|
||
var d = new Date();
|
||
|
||
d.setFullYear(currentYear);
|
||
d.setDate(1);
|
||
d.setMonth(currentMonth);
|
||
|
||
var dayStartOfMonth = d.getDay();
|
||
if (! weekStartsOnSunday) {
|
||
if(dayStartOfMonth==0)dayStartOfMonth=7;
|
||
dayStartOfMonth--;
|
||
}
|
||
|
||
document.getElementById('calendar_year_txt').innerHTML = currentYear;
|
||
document.getElementById('calendar_month_txt').innerHTML = monthArray[currentMonth];
|
||
document.getElementById('calendar_hour_txt').innerHTML = currentHour;
|
||
document.getElementById('calendar_minute_txt').innerHTML = currentMinute;
|
||
|
||
var existingTable = calendarContentDiv.getElementsByTagName('TABLE');
|
||
if(existingTable.length>0){
|
||
calendarContentDiv.removeChild(existingTable[0]);
|
||
}
|
||
|
||
var calTable = document.createElement('TABLE');
|
||
calTable.width = '100%';
|
||
calTable.cellSpacing = '0';
|
||
calendarContentDiv.appendChild(calTable);
|
||
|
||
|
||
|
||
|
||
var calTBody = document.createElement('TBODY');
|
||
calTable.appendChild(calTBody);
|
||
var row = calTBody.insertRow(-1);
|
||
row.className = 'calendar_week_row';
|
||
if (showWeekNumber) {
|
||
var cell = row.insertCell(-1);
|
||
cell.innerHTML = weekString;
|
||
cell.className = 'calendar_week_column';
|
||
cell.style.backgroundColor = selectBoxRolloverBgColor;
|
||
}
|
||
|
||
for(var no=0;no<dayArray.length;no++){
|
||
var cell = row.insertCell(-1);
|
||
cell.innerHTML = dayArray[no];
|
||
}
|
||
|
||
var row = calTBody.insertRow(-1);
|
||
|
||
if (showWeekNumber) {
|
||
var cell = row.insertCell(-1);
|
||
cell.className = 'calendar_week_column';
|
||
cell.style.backgroundColor = selectBoxRolloverBgColor;
|
||
var week = getWeek(currentYear,currentMonth,1);
|
||
cell.innerHTML = week; // Week
|
||
}
|
||
for(var no=0;no<dayStartOfMonth;no++){
|
||
var cell = row.insertCell(-1);
|
||
cell.innerHTML = ' ';
|
||
}
|
||
|
||
var colCounter = dayStartOfMonth;
|
||
var daysInMonth = daysInMonthArray[currentMonth];
|
||
if(daysInMonth==28){
|
||
if(isLeapYear(currentYear))daysInMonth=29;
|
||
}
|
||
|
||
for(var no=1;no<=daysInMonth;no++){
|
||
d.setDate(no-1);
|
||
if(colCounter>0 && colCounter%7==0){
|
||
var row = calTBody.insertRow(-1);
|
||
if (showWeekNumber) {
|
||
var cell = row.insertCell(-1);
|
||
cell.className = 'calendar_week_column';
|
||
var week = getWeek(currentYear,currentMonth,no);
|
||
cell.innerHTML = week; // Week
|
||
cell.style.backgroundColor = selectBoxRolloverBgColor;
|
||
}
|
||
}
|
||
var cell = row.insertCell(-1);
|
||
if(currentYear==inputYear && currentMonth == inputMonth && no==inputDay){
|
||
cell.className='activeDay';
|
||
}
|
||
cell.innerHTML = no;
|
||
cell.onclick = pickDate;
|
||
colCounter++;
|
||
}
|
||
|
||
|
||
if(!document.all){
|
||
if(calendarContentDiv.offsetHeight)
|
||
document.getElementById('topBar').style.top = calendarContentDiv.offsetHeight + document.getElementById('timeBar').offsetHeight + document.getElementById('topBar').offsetHeight -1 + 'px';
|
||
else{
|
||
document.getElementById('topBar').style.top = '';
|
||
document.getElementById('topBar').style.bottom = '0px';
|
||
}
|
||
|
||
}
|
||
|
||
if(iframeObj){
|
||
if(!calendarContentDivExists)setTimeout('resizeIframe()',350);else setTimeout('resizeIframe()',10);
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
function resizeIframe()
|
||
{
|
||
iframeObj.style.width = calendarDiv.offsetWidth + 'px';
|
||
iframeObj.style.height = calendarDiv.offsetHeight + 'px' ;
|
||
|
||
|
||
}
|
||
|
||
function pickTodaysDate()
|
||
{
|
||
var d = new Date();
|
||
currentMonth = d.getMonth();
|
||
currentYear = d.getFullYear();
|
||
pickDate(false,d.getDate());
|
||
|
||
}
|
||
|
||
function pickDate(e,inputDay)
|
||
{
|
||
var month = currentMonth/1 +1;
|
||
if(month<10)month = '0' + month;
|
||
var day;
|
||
if(!inputDay && this)day = this.innerHTML; else day = inputDay;
|
||
|
||
if(day/1<10)day = '0' + day;
|
||
if(returnFormat){
|
||
returnFormat = returnFormat.replace('dd',day);
|
||
returnFormat = returnFormat.replace('mm',month);
|
||
returnFormat = returnFormat.replace('yyyy',currentYear);
|
||
returnFormat = returnFormat.replace('hh',currentHour);
|
||
returnFormat = returnFormat.replace('ii',currentMinute);
|
||
returnFormat = returnFormat.replace('d',day/1);
|
||
returnFormat = returnFormat.replace('m',month/1);
|
||
if(is_greater(returnFormat)==true){
|
||
returnDateTo.value = returnFormat;}
|
||
try{
|
||
returnDateTo.onchange();
|
||
}catch(e){
|
||
|
||
}
|
||
}else{
|
||
//alert(no);
|
||
for(var no=0;no<returnDateToYear.options.length;no++){
|
||
if(returnDateToYear.options[no].value==currentYear){
|
||
returnDateToYear.selectedIndex=no;
|
||
break;
|
||
}
|
||
}
|
||
for(var no=0;no<returnDateToMonth.options.length;no++){
|
||
if(returnDateToMonth.options[no].value==parseInt(month)){
|
||
returnDateToMonth.selectedIndex=no;
|
||
break;
|
||
}
|
||
}
|
||
for(var no=0;no<returnDateToDay.options.length;no++){
|
||
if(returnDateToDay.options[no].value==parseInt(day)){
|
||
returnDateToDay.selectedIndex=no;
|
||
break;
|
||
}
|
||
}
|
||
if(calendarDisplayTime){
|
||
for(var no=0;no<returnDateToHour.options.length;no++){
|
||
if(returnDateToHour.options[no].value==parseInt(currentHour)){
|
||
returnDateToHour.selectedIndex=no;
|
||
break;
|
||
}
|
||
}
|
||
for(var no=0;no<returnDateToMinute.options.length;no++){
|
||
if(returnDateToMinute.options[no].value==parseInt(currentMinute)){
|
||
returnDateToMinute.selectedIndex=no;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
closeCalendar();
|
||
|
||
}
|
||
|
||
// This function is from http://www.codeproject.com/csharp/gregorianwknum.asp
|
||
// Only changed the month add
|
||
function getWeek(year,month,day){
|
||
if (! weekStartsOnSunday) {
|
||
day = (day/1);
|
||
} else {
|
||
day = (day/1)+1;
|
||
}
|
||
year = year /1;
|
||
month = month/1 + 1; //use 1-12
|
||
var a = Math.floor((14-(month))/12);
|
||
var y = year+4800-a;
|
||
var m = (month)+(12*a)-3;
|
||
var jd = day + Math.floor(((153*m)+2)/5) +
|
||
(365*y) + Math.floor(y/4) - Math.floor(y/100) +
|
||
Math.floor(y/400) - 32045; // (gregorian calendar)
|
||
var d4 = (jd+31741-(jd%7))%146097%36524%1461;
|
||
var L = Math.floor(d4/1460);
|
||
var d1 = ((d4-L)%365)+L;
|
||
NumberOfWeek = Math.floor(d1/7) + 1;
|
||
return NumberOfWeek;
|
||
}
|
||
|
||
function writeTimeBar()
|
||
{
|
||
var timeBar = document.createElement('DIV');
|
||
timeBar.id = 'timeBar';
|
||
timeBar.className = 'timeBar';
|
||
|
||
var subDiv = document.createElement('DIV');
|
||
subDiv.innerHTML = 'Time:';
|
||
//timeBar.appendChild(subDiv);
|
||
|
||
// Year selector
|
||
var hourDiv = document.createElement('DIV');
|
||
hourDiv.onmouseover = highlightSelect;
|
||
hourDiv.onmouseout = highlightSelect;
|
||
hourDiv.onclick = showHourDropDown;
|
||
hourDiv.style.width = '30px';
|
||
var span = document.createElement('SPAN');
|
||
span.innerHTML = currentHour;
|
||
span.id = 'calendar_hour_txt';
|
||
hourDiv.appendChild(span);
|
||
timeBar.appendChild(hourDiv);
|
||
|
||
var img = document.createElement('IMG');
|
||
img.src = pathToImages + 'down_time.gif';
|
||
hourDiv.appendChild(img);
|
||
hourDiv.className = 'selectBoxTime';
|
||
|
||
if(Opera){
|
||
hourDiv.style.width = '30px';
|
||
img.style.cssText = 'float:right';
|
||
img.style.position = 'relative';
|
||
img.style.styleFloat = 'right';
|
||
}
|
||
|
||
var hourPicker = createHourDiv();
|
||
hourPicker.style.left = '130px';
|
||
//hourPicker.style.top = monthDiv.offsetTop + monthDiv.offsetHeight + 1 + 'px';
|
||
hourPicker.style.width = '35px';
|
||
hourPicker.id = 'hourDropDown';
|
||
calendarDiv.appendChild(hourPicker);
|
||
|
||
// Add Minute picker
|
||
|
||
// Year selector
|
||
var minuteDiv = document.createElement('DIV');
|
||
minuteDiv.onmouseover = highlightSelect;
|
||
minuteDiv.onmouseout = highlightSelect;
|
||
minuteDiv.onclick = showMinuteDropDown;
|
||
minuteDiv.style.width = '30px';
|
||
var span = document.createElement('SPAN');
|
||
span.innerHTML = currentMinute;
|
||
|
||
span.id = 'calendar_minute_txt';
|
||
minuteDiv.appendChild(span);
|
||
timeBar.appendChild(minuteDiv);
|
||
|
||
var img = document.createElement('IMG');
|
||
img.src = pathToImages + 'down_time.gif';
|
||
minuteDiv.appendChild(img);
|
||
minuteDiv.className = 'selectBoxTime';
|
||
|
||
if(Opera){
|
||
minuteDiv.style.width = '30px';
|
||
img.style.cssText = 'float:right';
|
||
img.style.position = 'relative';
|
||
img.style.styleFloat = 'right';
|
||
}
|
||
|
||
var minutePicker = createMinuteDiv();
|
||
minutePicker.style.left = '167px';
|
||
//minutePicker.style.top = monthDiv.offsetTop + monthDiv.offsetHeight + 1 + 'px';
|
||
minutePicker.style.width = '35px';
|
||
minutePicker.id = 'minuteDropDown';
|
||
calendarDiv.appendChild(minutePicker);
|
||
|
||
|
||
return timeBar;
|
||
|
||
}
|
||
|
||
function writeBottomBar()
|
||
{
|
||
var d = new Date();
|
||
var bottomBar = document.createElement('DIV');
|
||
|
||
bottomBar.id = 'bottomBar';
|
||
|
||
bottomBar.style.cursor = 'pointer';
|
||
bottomBar.className = 'todaysDate';
|
||
// var todayStringFormat = '[todayString] [dayString] [day] [monthString] [year]'; ;;
|
||
|
||
var subDiv = document.createElement('DIV');
|
||
subDiv.onclick = pickTodaysDate;
|
||
subDiv.id = 'todaysDateString';
|
||
subDiv.style.width = (calendarDiv.offsetWidth - 95) + 'px';
|
||
var day = d.getDay();
|
||
if (! weekStartsOnSunday) {
|
||
if(day==0)day = 7;
|
||
day--;
|
||
}
|
||
|
||
var bottomString = todayStringFormat;
|
||
bottomString = bottomString.replace('[monthString]',monthArrayShort[d.getMonth()]);
|
||
bottomString = bottomString.replace('[day]',d.getDate());
|
||
bottomString = bottomString.replace('[year]',d.getFullYear());
|
||
bottomString = bottomString.replace('[dayString]',dayArray[day].toLowerCase());
|
||
bottomString = bottomString.replace('[UCFdayString]',dayArray[day]);
|
||
bottomString = bottomString.replace('[todayString]',todayString);
|
||
|
||
|
||
subDiv.innerHTML = todayString + ': ' + d.getDate() + '. ' + monthArrayShort[d.getMonth()] + ', ' + d.getFullYear() ;
|
||
subDiv.innerHTML = bottomString ;
|
||
bottomBar.appendChild(subDiv);
|
||
|
||
var timeDiv = writeTimeBar();
|
||
bottomBar.appendChild(timeDiv);
|
||
|
||
calendarDiv.appendChild(bottomBar);
|
||
|
||
|
||
|
||
}
|
||
function getTopPos(inputObj)
|
||
{
|
||
|
||
var returnValue = inputObj.offsetTop + inputObj.offsetHeight;
|
||
while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetTop;
|
||
return returnValue + calendar_offsetTop;
|
||
}
|
||
|
||
function getleftPos(inputObj)
|
||
{
|
||
var returnValue = inputObj.offsetLeft;
|
||
while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetLeft;
|
||
return returnValue + calendar_offsetLeft;
|
||
}
|
||
|
||
function positionCalendar(inputObj)
|
||
{
|
||
calendarDiv.style.left = getleftPos(inputObj) + 'px';
|
||
calendarDiv.style.top = getTopPos(inputObj) + 'px';
|
||
if(iframeObj){
|
||
iframeObj.style.left = calendarDiv.style.left;
|
||
iframeObj.style.top = calendarDiv.style.top;
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
iframeObj2.style.left = calendarDiv.style.left;
|
||
iframeObj2.style.top = calendarDiv.style.top;
|
||
}
|
||
|
||
}
|
||
|
||
function initCalendar()
|
||
{
|
||
if(MSIE){
|
||
iframeObj = document.createElement('IFRAME');
|
||
iframeObj.style.filter = 'alpha(opacity=0)';
|
||
iframeObj.style.position = 'absolute';
|
||
iframeObj.border='0px';
|
||
iframeObj.style.border = '0px';
|
||
iframeObj.style.backgroundColor = '#FF0000';
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
iframeObj2 = document.createElement('IFRAME');
|
||
iframeObj2.style.position = 'absolute';
|
||
iframeObj2.border='0px';
|
||
iframeObj2.style.border = '0px';
|
||
iframeObj2.style.height = '1px';
|
||
iframeObj2.style.width = '1px';
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
// Added fixed for HTTPS
|
||
iframeObj2.src = 'blank.html';
|
||
iframeObj.src = 'blank.html';
|
||
document.body.appendChild(iframeObj2); // gfb move this down AFTER the .src is set
|
||
document.body.appendChild(iframeObj);
|
||
}
|
||
|
||
calendarDiv = document.createElement('DIV');
|
||
calendarDiv.id = 'calendarDiv';
|
||
calendarDiv.style.zIndex = 1000;
|
||
slideCalendarSelectBox();
|
||
|
||
document.body.appendChild(calendarDiv);
|
||
writeBottomBar();
|
||
writeTopBar();
|
||
|
||
|
||
|
||
if(!currentYear){
|
||
var d = new Date();
|
||
currentMonth = d.getMonth();
|
||
currentYear = d.getFullYear();
|
||
}
|
||
writeCalendarContent();
|
||
|
||
|
||
|
||
}
|
||
|
||
function setTimeProperties()
|
||
{
|
||
if(!calendarDisplayTime){
|
||
document.getElementById('timeBar').style.display='none';
|
||
document.getElementById('timeBar').style.visibility='hidden';
|
||
document.getElementById('todaysDateString').style.width = '100%';
|
||
|
||
|
||
}else{
|
||
document.getElementById('timeBar').style.display='block';
|
||
document.getElementById('timeBar').style.visibility='visible';
|
||
document.getElementById('hourDropDown').style.top = document.getElementById('calendar_minute_txt').parentNode.offsetHeight + calendarContentDiv.offsetHeight + document.getElementById('topBar').offsetHeight + 'px';
|
||
document.getElementById('minuteDropDown').style.top = document.getElementById('calendar_minute_txt').parentNode.offsetHeight + calendarContentDiv.offsetHeight + document.getElementById('topBar').offsetHeight + 'px';
|
||
document.getElementById('minuteDropDown').style.right = '50px';
|
||
document.getElementById('hourDropDown').style.right = '50px';
|
||
document.getElementById('todaysDateString').style.width = '115px';
|
||
}
|
||
}
|
||
|
||
function calendarSortItems(a,b)
|
||
{
|
||
return a/1 - b/1;
|
||
}
|
||
|
||
|
||
function displayCalendar(inputField,format,buttonObj,displayTime,timeInput)
|
||
{
|
||
if(displayTime)calendarDisplayTime=true; else calendarDisplayTime = false;
|
||
|
||
if(inputField.value.length>6){ //dates must have at least 6 digits...
|
||
if(!inputField.value.match(/^[0-9]*?$/gi)){
|
||
|
||
var items = inputField.value.split(/[^0-9]/gi);
|
||
var positionArray = new Object();
|
||
positionArray.m = format.indexOf('mm');
|
||
if(positionArray.m==-1)positionArray.m = format.indexOf('m');
|
||
positionArray.d = format.indexOf('dd');
|
||
if(positionArray.d==-1)positionArray.d = format.indexOf('d');
|
||
positionArray.y = format.indexOf('yyyy');
|
||
positionArray.h = format.indexOf('hh');
|
||
positionArray.i = format.indexOf('ii');
|
||
|
||
|
||
this.initialHour = '00';
|
||
this.initialMinute = '00';
|
||
var elements = ['y','m','d','h','i'];
|
||
var properties = ['currentYear','currentMonth','inputDay','currentHour','currentMinute'];
|
||
var propertyLength = [4,2,2,2,2];
|
||
for(var i=0;i<elements.length;i++) {
|
||
if(positionArray[elements[i]]>=0) {
|
||
window[properties[i]] = inputField.value.substr(positionArray[elements[i]],propertyLength[i])/1;
|
||
}
|
||
}
|
||
|
||
currentMonth--;
|
||
}else{
|
||
var monthPos = format.indexOf('mm');
|
||
currentMonth = inputField.value.substr(monthPos,2)/1 -1;
|
||
var yearPos = format.indexOf('yyyy');
|
||
currentYear = inputField.value.substr(yearPos,4);
|
||
var dayPos = format.indexOf('dd');
|
||
tmpDay = inputField.value.substr(dayPos,2);
|
||
|
||
var hourPos = format.indexOf('hh');
|
||
if(hourPos>=0){
|
||
tmpHour = inputField.value.substr(hourPos,2);
|
||
currentHour = tmpHour;
|
||
}else{
|
||
currentHour = '00';
|
||
}
|
||
var minutePos = format.indexOf('ii');
|
||
if(minutePos>=0){
|
||
tmpMinute = inputField.value.substr(minutePos,2);
|
||
currentMinute = tmpMinute;
|
||
}else{
|
||
currentMinute = '00';
|
||
}
|
||
}
|
||
}else{
|
||
var d = new Date();
|
||
currentMonth = d.getMonth();
|
||
currentYear = d.getFullYear();
|
||
currentHour = '08';
|
||
currentMinute = '00';
|
||
inputDay = d.getDate()/1;
|
||
}
|
||
|
||
inputYear = currentYear;
|
||
inputMonth = currentMonth;
|
||
|
||
|
||
if(!calendarDiv){
|
||
initCalendar();
|
||
}else{
|
||
if(calendarDiv.style.display=='block'){
|
||
closeCalendar();
|
||
return false;
|
||
}
|
||
writeCalendarContent();
|
||
}
|
||
|
||
|
||
|
||
returnFormat = format;
|
||
returnDateTo = inputField;
|
||
positionCalendar(buttonObj);
|
||
calendarDiv.style.visibility = 'visible';
|
||
calendarDiv.style.display = 'block';
|
||
if(iframeObj){
|
||
iframeObj.style.display = '';
|
||
iframeObj.style.height = '140px';
|
||
iframeObj.style.width = '195px';
|
||
iframeObj2.style.display = '';
|
||
iframeObj2.style.height = '140px';
|
||
iframeObj2.style.width = '195px';
|
||
}
|
||
|
||
setTimeProperties();
|
||
updateYearDiv();
|
||
updateMonthDiv();
|
||
updateMinuteDiv();
|
||
updateHourDiv();
|
||
}
|
||
|
||
// added by Rahul
|
||
|
||
function is_greater(txtObj) {
|
||
if(txtObj.value!="")
|
||
{
|
||
var present = new Date();
|
||
presentMonth = parseInt(present.getMonth())+1;
|
||
presentYear = present.getFullYear();
|
||
presentDay = present.getDate();
|
||
|
||
if(presentMonth<=9)
|
||
{
|
||
presentMonth = '0'+presentMonth.toString();
|
||
}else{
|
||
presentMonth = presentMonth.toString();
|
||
}
|
||
|
||
if(presentDay<=9)
|
||
{
|
||
PresentDate = presentYear.toString()+presentMonth.toString()+'0'+presentDay.toString();
|
||
}else{
|
||
PresentDate = presentYear.toString()+presentMonth.toString()+presentDay.toString();
|
||
}
|
||
var ymd=txtObj.split('/');
|
||
givenDate = ymd[2]+ymd[1]+ymd[0];
|
||
|
||
if(parseInt(givenDate) > parseInt(PresentDate))
|
||
{
|
||
alert("Date should not be greater than today's date");
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
} // end
|
||
|
||
function displayCalendarSelectBox(yearInput,monthInput,dayInput,hourInput,minuteInput,buttonObj)
|
||
{
|
||
if(!hourInput)calendarDisplayTime=false; else calendarDisplayTime = true;
|
||
|
||
currentMonth = monthInput.options[monthInput.selectedIndex].value/1-1;
|
||
currentYear = yearInput.options[yearInput.selectedIndex].value;
|
||
if(hourInput){
|
||
currentHour = hourInput.options[hourInput.selectedIndex].value;
|
||
inputHour = currentHour/1;
|
||
}
|
||
if(minuteInput){
|
||
currentMinute = minuteInput.options[minuteInput.selectedIndex].value;
|
||
inputMinute = currentMinute/1;
|
||
}
|
||
|
||
inputYear = yearInput.options[yearInput.selectedIndex].value;
|
||
inputMonth = monthInput.options[monthInput.selectedIndex].value/1 - 1;
|
||
inputDay = dayInput.options[dayInput.selectedIndex].value/1;
|
||
|
||
if(!calendarDiv){
|
||
initCalendar();
|
||
}else{
|
||
writeCalendarContent();
|
||
}
|
||
|
||
|
||
|
||
returnDateToYear = yearInput;
|
||
returnDateToMonth = monthInput;
|
||
returnDateToDay = dayInput;
|
||
returnDateToHour = hourInput;
|
||
returnDateToMinute = minuteInput;
|
||
|
||
|
||
|
||
|
||
returnFormat = false;
|
||
returnDateTo = false;
|
||
positionCalendar(buttonObj);
|
||
calendarDiv.style.visibility = 'visible';
|
||
calendarDiv.style.display = 'block';
|
||
if(iframeObj){
|
||
iframeObj.style.display = '';
|
||
iframeObj.style.height = calendarDiv.offsetHeight + 'px';
|
||
iframeObj.style.width = calendarDiv.offsetWidth + 'px';
|
||
//// fix for EI frame problem on time dropdowns 09/30/2006
|
||
iframeObj2.style.display = '';
|
||
iframeObj2.style.height = calendarDiv.offsetHeight + 'px';
|
||
iframeObj2.style.width = calendarDiv.offsetWidth + 'px'
|
||
}
|
||
setTimeProperties();
|
||
updateYearDiv();
|
||
updateMonthDiv();
|
||
updateHourDiv();
|
||
updateMinuteDiv();
|
||
|
||
} |