Calender

Status
Niet open voor verdere reacties.

nl18663

Gebruiker
Lid geworden
19 dec 2007
Berichten
156
Hallo, ik heb een script dat een calerder is, hij moet per week aangeven welke data erin vallen, ik krijg het alleen niet voor elkaar om bij de laatste week van de maand alle dagen naar voren te halen... het gene wat het script doet is alleen de dagen van die maand laten zien en nog niet die van de volgende... kan mij iemand helpen??? :rolleyes:
 
//************************************************************************************
// weeklycalendar
// Copyright (C) 2006, Massimo Beatini
//
// This software is provided "as-is", without any express or implied warranty. In
// no event will the authors be held liable for any damages arising from the use
// of this software.
//
// Permission is granted to anyone to use this software for any purpose, including
// commercial applications, and to alter it and redistribute it freely, subject to
// the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not claim
// that you wrote the original software. If you use this software in a product,
// an acknowledgment in the product documentation would be appreciated but is
// not required.
//
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
//
// 3. This notice may not be removed or altered from any source distribution.
//
//************************************************************************************

// variable declarations
var w_d = new Date()
var w_monthname=new Array("January","February","March","April","May","June","July","August","September","Octber","November","December");
var w_dayname = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
var w_StartOfWeek = 1; // Monday

// image title
var prev_month_title = "Previous month";
var next_month_title = "Next month";
var close_title = "Close";


// set the default position
// for the week end days (Staurday,Sunday)
var weekend_pos = new Array(6,0);


var w_min_year = 1960;
var w_max_year = 2060;

var gx = 0;
var gy = 0;

var w_linkedInputText_1;
var w_linkedInputText_2;


var HideWeekCol = false;


//
//
//
function w_funMouseMove(evnt)
{
gx = evnt.pageX;
gy = evnt.pageY;

return true;
}

//
// handle mousemove
//
if ((navigator.appName.indexOf("Netscape") != -1) || (navigator.appName.indexOf("Opera") != -1))
{
if (document.onmousemove == undefined)
document.onmousemove = w_funMouseMove;
}

//
//
//
function w_changeMonth(id)
{
var box = document.getElementById(id);
var mm = box.options[box.selectedIndex].value;
w_d.setMonth(mm);
w_renderCalendar(0);
}

//
//
//
function w_changeYear(id)
{
var box = document.getElementById(id);
var yy = box.options[box.selectedIndex].value;
w_d.setFullYear(yy);
w_renderCalendar(0);
}

//
//
//
function w_getWeek(year,month,day){
//Find JulianDay
month += 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 jd = (day+1)+Math.round(((153*m)+2)/5)+(365+y) +
Math.round(y/4)-32083; // (julian calendar)
*/

//now calc weeknumber according to JD
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 w_writeDayNumber(d)
{
var dd = new Date(d);
var temp = new Date(d);

// reset data array
for (i=0;i<6;i++)
{
for (j=0;j<7;j++)
{
document.getElementById("w_c" +i+""+j).innerHTML= "";
document.getElementById("w_c" +i+""+j).className = "day_out";
}
document.getElementById("week_" +i).innerHTML = '';
}

// set to the first day of the month
dd.setDate(1);

// fill data array
i = 0;
j = 0;

// previous month's days
j = dd.getDay() - w_StartOfWeek;
if (j<0)
j = 7 + j;

if (j > 0)
{
temp.setDate(dd.getDate()-1);
for (k=j-1; k>=0; k--)
{
document.getElementById("w_c" +i+""+k).innerHTML= temp.getDate();
if ((weekend_pos[0] == k) || (weekend_pos[1] == k))
document.getElementById("w_c" +i+""+k).className = "weekends_out";
else
document.getElementById("w_c" +i+""+k).className = "day_out";

temp.setDate(temp.getDate()-1);
}
}

var week = -1;
var iStartWeek = -1;
var iEndWeek = -1;
var weekEl;
var dayval;

do
{
// get the position according to
// StartOfWeek
j = dd.getDay() - w_StartOfWeek;
if (j<0)
j = 7 + j;

if (iStartWeek==-1)
iStartWeek = j;
iEndWeek = j;

dayval = dd.getDate();



// get the week number
if (week < 0)
week = w_getWeek(w_d.getFullYear(), w_d.getMonth(), dayval);

document.getElementById("w_c" +i+""+j).innerHTML= dayval;

// set week ends layout
if ((weekend_pos[0] == j) || (weekend_pos[1] == j))
document.getElementById("w_c" +i+""+j).className = "weekends";
else
document.getElementById("w_c" +i+""+j).className = "day";
{
// set today layout
var today = new Date();

if ((today.getDate() == dayval) && (today.getMonth() == w_d.getMonth()) && (today.getFullYear() == w_d.getFullYear()) )
document.getElementById("w_c" +i+""+j).className = "today";
}

////////
// dinamically set the onclick event
// only on the day of the selected month
////////

var object = document.getElementById("w_c" +i+""+j);
object.rownumber = i;
object.colnumber = j;

if(window.addEventListener){ // Mozilla, Netscape, Firefox
object.addEventListener('click', w_setDate, false);
} else { // IE
object.attachEvent('onclick', w_setDate);
}

///////


if (week < 0)
document.getElementById("week_" +i).innerHTML = '';
else if (w_StartOfWeek != 1)
document.getElementById("week_" +i).innerHTML = "&lt;";
else
document.getElementById("week_" +i).innerHTML = week;

weekEl = document.getElementById("week_" +i);

// if HideWeekCol change the class
// hide the week col and its header
if (HideWeekCol)
{
weekEl.className = "weekhidden";
document.getElementById("weekHeader").className = "weekhidden";
}
else
{
document.getElementById("weekHeader").className = "week";
weekEl.className = "weeksel";
}

if (j == 6)
{
////////
// dinamically set the onclick event
// on the week number
////////
weekEl.startweek = iStartWeek;
weekEl.endweek = iEndWeek;
weekEl.rowweek = i;

if(window.addEventListener){ // Mozilla, Netscape, Firefox
weekEl.addEventListener('click', w_SetWeekDate, false);
} else { // IE
weekEl.attachEvent('onclick', w_SetWeekDate);
}
///////

week = -1;
iStartWeek = -1;
iEndWeek = -1;
i++;
}

dd.setDate(dd.getDate() + 1);

} while (dd.getDate() != 1);

if ((iStartWeek!=-1) && (iEndWeek!=-1))
{
weekEl = document.getElementById("week_" +i);

////////
// dinamically set the onclick event
// on the week number
////////
weekEl.startweek = iStartWeek;
weekEl.endweek = iEndWeek;
weekEl.rowweek = i;

if(window.addEventListener){ // Mozilla, Netscape, Firefox
weekEl.addEventListener('click', w_SetWeekDate, false);
} else { // IE
weekEl.attachEvent('onclick', w_SetWeekDate);
}
///////
}

// next month's days
if ((j < 7))
{
temp = dd;
for (k=j+1; k<7; k++)
{
document.getElementById("w_c" +i+""+k).innerHTML= temp.getDate();
if ((weekend_pos[0] == k) || (weekend_pos[1] == k))
document.getElementById("w_c" +i+""+k).className = "weekends_out";
else
document.getElementById("w_c" +i+""+k).className = "day_out";
temp.setDate(temp.getDate()+1);
}
}


}


//
// render calendar accordint to the selected
// month (k)
//
function w_renderCalendar(k)
{
var monthsel_html='';

w_d.setMonth(w_d.getMonth() + k);

monthsel_html += '<select class="nav" id="w_sel_month" onchange="w_changeMonth(\'w_sel_month\')">';
for (im=0; im < 12; im++)
{
monthsel_html += '<option value="' + im + '" ' + ((im == w_d.getMonth())?'selected ':'')+ '>'+ w_monthname[im] + '</option>';
}
monthsel_html += '</select>';
monthsel_html += ' ';


monthsel_html += '<select class="nav" id="w_sel_year" onchange="w_changeYear(\'w_sel_year\')">';
for (im = w_min_year; im <= w_max_year; im++)
{
monthsel_html += '<option value="' + im + '" ' + ((im == w_d.getFullYear())?'selected ':'')+ '>'+ im + '</option>';
}
monthsel_html += '</select>';
monthsel_html += ' ';

document.getElementById('w_month_year').innerHTML = monthsel_html;

// write days number
w_writeDayNumber(w_d);
}



//
// set clicked date
//
function w_setDate(evt)
{
var m="";
var g="";
var mMonth;
var mDay;
var i,j;


var e_out;
var ie_var = "srcElement";
var moz_var = "target";
var prop_var = "rownumber";

// "target" for Mozilla, Netscape, Firefox et al. ; "srcElement" for IE
evt[moz_var] ? e_out = evt[moz_var][prop_var] : e_out = evt[ie_var][prop_var];
i = e_out;
prop_var = "colnumber";
evt[moz_var] ? e_out = evt[moz_var][prop_var] : e_out = evt[ie_var][prop_var];
j = e_out;

mMonth = (w_d.getMonth()+1);
mDay = document.getElementById("w_c"+i+j).innerHTML;

if(mMonth<10)
m = "0" + mMonth
else
m = mMonth

if (mDay<10)
g = "0" + mDay
else
g = mDay

// set the selected date
try
{
document.getElementById(w_linkedInputText_1).value = m + "/" + g + "/" + w_d.getFullYear();
document.getElementById(w_linkedInputText_2).value = '';
}
catch(e){}

w_hiddenCalendar();
}

//
// set week start and end date
// in the selected month
//
function w_SetWeekDate(evt)
{
var m="";
var g="";
var mMonth;
var mDay;
var result = '';
var startW = '';
var endW = '';


var e_out;
var ie_var = "srcElement";
var moz_var = "target";
var prop_var = "startweek";
var istartWeek, iendWeek;
var rowWeek;

// "target" for Mozilla, Netscape, Firefox et al. ; "srcElement" for IE
evt[moz_var] ? e_out = evt[moz_var][prop_var] : e_out = evt[ie_var][prop_var];
istartWeek = e_out;
prop_var = "endweek";
evt[moz_var] ? e_out = evt[moz_var][prop_var] : e_out = evt[ie_var][prop_var];
iendWeek = e_out;

prop_var = "rowweek";
evt[moz_var] ? e_out = evt[moz_var][prop_var] : e_out = evt[ie_var][prop_var];
rowWeek = e_out;


mMonth = (w_d.getMonth()+1);

if(mMonth<10)
m = "0" + mMonth
else
m = mMonth

mDay = document.getElementById("w_c"+rowWeek+istartWeek).innerHTML;
if (mDay<10)
g = "0" + mDay
else
g = mDay

startW = m + "/" + g + "/" + w_d.getFullYear();

mDay = document.getElementById("w_c"+rowWeek+iendWeek).innerHTML;
if (mDay<10)
g = "0" + mDay
else
g = mDay

endW = m + "/" + g + "/" + w_d.getFullYear();

// set the selected date
try
{
document.getElementById(w_linkedInputText_1).value = startW;
document.getElementById(w_linkedInputText_2).value = endW;
}
catch(e)
{};

w_hiddenCalendar();
}

//
// display date picker
// hide the col week
//
function w_displayDatePicker(linkedId1)
{
w_linkedInputText_1 = linkedId1;
w_linkedInputText_2 = null;

HideWeekCol = true;
w_displayCal();
}

//
// display calendar
//
function w_displayCalendar(linkedId1, linkedId2)
{
w_linkedInputText_1 = linkedId1;
w_linkedInputText_2 = linkedId2;

HideWeekCol = false;
w_displayCal();
}


function w_displayCal()
{
w_renderCalendar(0);
if(navigator.userAgent.indexOf("MSIE") != -1)
{
weeklyCalendar.style.left=window.event.x+document.body.scrollLeft;
weeklyCalendar.style.top=window.event.y+document.body.scrollTop;
}
else if ((navigator.appName.indexOf("Netscape") != -1) || (navigator.appName.indexOf("Opera") != -1))
{
document.getElementById('weeklyCalendar').style.left=gx + 5;
document.getElementById('weeklyCalendar').style.top=gy + 5;
}
document.getElementById('weeklyCalendar').style.visibility = "visible";
}

//
// hidden calendar
//
function w_hiddenCalendar()
{
document.getElementById('weeklyCalendar').style.visibility='hidden';


// remove the attached events
var i, j;
var week;
var daycol;

for (i = 0; i < 7; i++)
{
// detach event from week element
try
{
week = document.getElementById("week_" +i);
if(window.removeEventListener()){ // Mozilla, Netscape, Firefox
week.removeEventListener('click', w_SetWeekDate, false);
} else { // IE
week.detachEvent('onclick', w_SetWeekDate);
}
}
catch(e){};

// detach event from each day col
try
{
for (j=0; j <7; j++)
{
daycol = document.getElementById("w_c" +i+""+j);
if(window.removeEventListener()){ // Mozilla, Netscape, Firefox
daycol.removeEventListener('click', w_setDate, false);
} else { // IE
daycol.detachEvent('onclick', w_setDate);
}
}
}
catch(e){};
}

}


function w_writeDayname()
{
var mDay;
document.write('<tr>');
for(wd =0; wd < 7; wd++)
{
mDay = wd + w_StartOfWeek;

if (mDay > 6)
mDay = mDay-7;
document.write('<td class="wd">' + w_dayname[mDay] + '</td>');

// set week ends postion
if (w_dayname[mDay] == 'Sat')
weekend_pos[0] = wd;
if (w_dayname[mDay] == 'Sun')
weekend_pos[1] = wd;

}

document.write('<td class="week" id="weekHeader">Week</td>');

document.write('</tr>');

}

///
///
///
function buildWeeklyCalendar(WeekStart)
{
if (WeekStart != undefined)
w_StartOfWeek = WeekStart;

document.write('<div id="weeklyCalendar" class="calendar">');
document.write('<table class="calendar" >');
document.write('<tr><td colspan="8">');
// header table
document.write('<table width="100%" cellpading="0" cellspacing="0">');

document.write('<tr class="firstrow"><td width="8px" onClick="w_renderCalendar(-1);" align="right" ><img src="arrow_left.gif" title="' + prev_month_title + '" border="0"></td>');
document.write('<td width="8px" onClick="w_renderCalendar(1);" align="left" ><img src="arrow_right.gif" title="' + next_month_title + '" border="0"></td>');
document.write('<td colspan="4" id="w_month_year" align="center">');

document.write('<select id="w_sel_month">');

for (im=0; im < 12; im++)
{
document.write('<option value="' + im + '" ' + ((im == w_d.getMonth())?'selected ':'')+ '>'+ w_monthname[im] + '</option>');
}
document.write('</select>');
document.write(' ');
document.write('<select id="w_sel_year">');

for (im = w_min_year; im <= w_max_year; im++)
{
document.write('<option value="' + im + '" ' + ((im == w_d.getFullYear())?'selected ':'')+ '>'+ im + '</option>');
}
document.write('</select>');

document.write('</td>');

document.write('<td align="center" onClick="w_hiddenCalendar()"><img src="close.jpg" title="' + close_title + '" border="0"></td>');

document.write('</tr>');

document.write('</table>');
// end header table

document.write('</td></tr>');

w_writeDayname();

// init day/week number
for (i=0;i<6;i++)
{
document.write(' <tr>');

for (j=0;j<7;j++)
{
// document.write('<td onClick="w_setDate('+i+','+j+')" class="day_out" id="w_c' + i + j + '">&nbsp;</td>');
document.write('<td class="day_out" onmouseover="return escape(\'This is area 1\')" id="w_c' + i + j + '">&nbsp;</td>');
}

// document.write('<td class="weeksel" id="week_'+ i + '" onClick="w_SetWeekDate(' + i + ')">&nbsp;Select&nbsp;</td>');
document.write('<td class="weeksel" id="week_'+ i + '">&nbsp;Select&nbsp;</td>');
document.write(' </tr>');
}
document.write('</table></div>');

}
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan