WillGibson
12-17-2004, 10:46 PM
Last year I added a one time popup on the my internal corporate site. It was a huge hit with the users. Management was even not so stuffy about it. So this year I went a bit farther.
This bit of JS will let you setup some holidays (or range of days) and show a popup happy whatever day. :)
Please note that all my scripts are written with IE in mind, maybe some kind person will alter this to be more open to all browsers
// Please note that none of the pages that are popped are included, mine
// are not all that great so I'm sure you don't want them :)
function fPopHoliday(strURL) {
// Makes a centered popup 450px by 400px...WRG
var intWinWidth = 450;
var intWinHeight = 400;
var intLeftPos = (screen.width) ? (screen.width-intWinWidth)/2 : 0;
var intTopPos = (screen.height) ? (screen.height-intWinHeight)/2 : 0;
var newWindow = window.open(strURL,'winHolidays','height='+intWinHeight+',width='+intWinWidth+',top='+intTopPos+',le ft='+intLeftPos+',toolbar=no,minimize=no,status=yes,memubar=no,hotkeys=no,location=no,resizable=yes, scrollbars=no');
}
function fMemorialDay() {
fPopHoliday('holiday/Memorial_Day.jsp');
}
function fIndependanceDay() {
fPopHoliday('holiday/happy_4th.jsp');
}
function fLaborDay() {
fPopHoliday('holiday/Labor_Day.jsp');
}
function fThanksgivingDay() {
fPopHoliday('holiday/Thanksgiving.html');
}
function fHappyHolidays() {
fPopHoliday('holiday/HappyHolidays.html');
}
function fNewYearsEve() {
fPopHoliday('holiday/NewYear.jsp');
}
function fNewYearsDay() {
fPopHoliday('holiday/NewYear.jsp');
}
function fHolidayCheck() {
var dtToday = new Date();
var dtHolidayStart = new Date();
var dtHolidayEnd = new Date();
// every year we will need to update this list, date format is MM/DD/YYYY...WRG
var arystrHolidays=[['06/31/2004','0','0','fMemorialDay()'],
['07/04/2004','1','1','fIndependanceDay()'],
['09/06/2004','0','0','fLaborDay()'],
['11/25/2004','1','1','fThanksgivingDay()'],
['12/25/2004','2','1','fHappyHolidays()'],
['12/31/2004','1','0','fNewYearsEve()'],
['01/01/2005','0','1','fNewYearsDay()']];
for (i=0;i < arystrHolidays.length; i++) {
var arystrDate = arystrHolidays[i][0].split('/');
dtHolidayStart.setFullYear(arystrDate[2]-0, arystrDate[0]-1, (arystrDate[1] - 0) - (arystrHolidays[i][1] - 0));
dtHolidayStart.setHours(0,0,0);
dtHolidayEnd.setFullYear(arystrDate[2]-0, arystrDate[0]-1, (arystrDate[1] - 0) + (arystrHolidays[i][2] - 0));
dtHolidayEnd.setHours(23,59,59);
// Chance to show the holiday popup if we are within the date range...WRG
if ((dtToday >= dtHolidayStart) && (dtToday <= dtHolidayEnd)) {
if (Math.floor(Math.random()+0.5) == 1) { // 50/50 chance of seeing it...WRG
eval(arystrHolidays[i][3]);
}
break;
}
}
}
This bit of JS will let you setup some holidays (or range of days) and show a popup happy whatever day. :)
Please note that all my scripts are written with IE in mind, maybe some kind person will alter this to be more open to all browsers
// Please note that none of the pages that are popped are included, mine
// are not all that great so I'm sure you don't want them :)
function fPopHoliday(strURL) {
// Makes a centered popup 450px by 400px...WRG
var intWinWidth = 450;
var intWinHeight = 400;
var intLeftPos = (screen.width) ? (screen.width-intWinWidth)/2 : 0;
var intTopPos = (screen.height) ? (screen.height-intWinHeight)/2 : 0;
var newWindow = window.open(strURL,'winHolidays','height='+intWinHeight+',width='+intWinWidth+',top='+intTopPos+',le ft='+intLeftPos+',toolbar=no,minimize=no,status=yes,memubar=no,hotkeys=no,location=no,resizable=yes, scrollbars=no');
}
function fMemorialDay() {
fPopHoliday('holiday/Memorial_Day.jsp');
}
function fIndependanceDay() {
fPopHoliday('holiday/happy_4th.jsp');
}
function fLaborDay() {
fPopHoliday('holiday/Labor_Day.jsp');
}
function fThanksgivingDay() {
fPopHoliday('holiday/Thanksgiving.html');
}
function fHappyHolidays() {
fPopHoliday('holiday/HappyHolidays.html');
}
function fNewYearsEve() {
fPopHoliday('holiday/NewYear.jsp');
}
function fNewYearsDay() {
fPopHoliday('holiday/NewYear.jsp');
}
function fHolidayCheck() {
var dtToday = new Date();
var dtHolidayStart = new Date();
var dtHolidayEnd = new Date();
// every year we will need to update this list, date format is MM/DD/YYYY...WRG
var arystrHolidays=[['06/31/2004','0','0','fMemorialDay()'],
['07/04/2004','1','1','fIndependanceDay()'],
['09/06/2004','0','0','fLaborDay()'],
['11/25/2004','1','1','fThanksgivingDay()'],
['12/25/2004','2','1','fHappyHolidays()'],
['12/31/2004','1','0','fNewYearsEve()'],
['01/01/2005','0','1','fNewYearsDay()']];
for (i=0;i < arystrHolidays.length; i++) {
var arystrDate = arystrHolidays[i][0].split('/');
dtHolidayStart.setFullYear(arystrDate[2]-0, arystrDate[0]-1, (arystrDate[1] - 0) - (arystrHolidays[i][1] - 0));
dtHolidayStart.setHours(0,0,0);
dtHolidayEnd.setFullYear(arystrDate[2]-0, arystrDate[0]-1, (arystrDate[1] - 0) + (arystrHolidays[i][2] - 0));
dtHolidayEnd.setHours(23,59,59);
// Chance to show the holiday popup if we are within the date range...WRG
if ((dtToday >= dtHolidayStart) && (dtToday <= dtHolidayEnd)) {
if (Math.floor(Math.random()+0.5) == 1) { // 50/50 chance of seeing it...WRG
eval(arystrHolidays[i][3]);
}
break;
}
}
}