PDA

View Full Version : Javascript Countdown


lilflur
10-18-2004, 05:30 PM
Hello All,

I have some code that does a count down to a specific day. Here is the code:


function setcountdown(theyear,themonth,theday,thehour,themin,thesec){
yr=theyear;mo=themonth;da=theday;hr=thehour;min=themin;sec=thesec
}

//Configure Date (year, month, day, hour(0=midnight,23=11pm), minutes, seconds):
setcountdown(2004,12,25,0,00,00)

//Configure Occasion Message:
var occasion="Christmas: "
var message_on_occasion="Merry Christmas!"

//Configure width, height, background color, and text style of the countdown area:
var countdownwidth='585px'
var countdownheight='1px'
var countdownbgcolor='#003850'
var opentags='<font face="Times New Roman"><medium>'
var closetags='</medium></font>'

var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
var crosscount=''

function start_countdown(){
if (document.layers)
document.countdownnsmain.visibility="show"
else if (document.all||document.getElementById)
crosscount=document.getElementById&&!document.all?document.getElementById("countdownie") : countdownie
countdown()
}

if (document.all||document.getElementById)
document.write('<span id="countdownie" style="width:'+countdownwidth+'; background-color:'+countdownbgcolor+'"></span>')

window.onload=start_countdown


function countdown(){
var today=new Date()
var todayy=today.getYear()
if (todayy < 1000)
todayy+=1900
var todaym=today.getMonth()
var todayd=today.getDate()
var todayh=today.getHours()
var todaymin=today.getMinutes()
var todaysec=today.getSeconds()
var todaystring=montharray[todaym]+" "+todayd+", "+todayy+" "+todayh+":"+todaymin+":"+todaysec
futurestring=montharray[mo-1]+" "+da+", "+yr+" "+hr+":"+min+":"+sec
dd=Date.parse(futurestring)-Date.parse(todaystring)
dday=Math.floor(dd/(60*60*1000*24)*1)
dhour=Math.floor((dd%(60*60*1000*24))/(60*60*1000)*1)
dmin=Math.floor(((dd%(60*60*1000*24))%(60*60*1000))/(60*1000)*1)
dsec=Math.floor((((dd%(60*60*1000*24))%(60*60*1000))%(60*1000))/1000*1)

//if on day of occasion
if(dday<=0&&dhour<=0&&dmin<=0&&dsec<=1&&todayd==da){
if (document.layers){
document.countdownnsmain.document.countdownnssub.document.write(opentags+message_on_occasion+closeta gs)
document.countdownnsmain.document.countdownnssub.document.close()
}
else if (document.all||document.getElementById)
crosscount.innerHTML=opentags+message_on_occasion+closetags
return
}

//if passed day of occasion
else if (dday<=-1){
if (document.layers){
document.countdownnsmain.document.countdownnssub.document.write(opentags+message_on_occasion+closeta gs)
document.countdownnsmain.document.countdownnssub.document.close()
}
else if (document.all||document.getElementById)
crosscount.innerHTML=opentags+message_on_occasion+closetags
return
}

//else, if not yet
else{
if (document.layers){
document.countdownnsmain.document.countdownnssub.document.write(opentags+dday+ " days, "+dhour+" hours, "+dmin+" minutes, and "+dsec+" seconds."+closetags)
document.countdownnsmain.document.countdownnssub.document.close()
}
else if (document.all||document.getElementById)
crosscount.innerHTML=opentags+occasion+dday+ " days, "+dhour+" hours, "+dmin+" minutes, and "+dsec+" seconds. "+closetags
}
setTimeout("countdown()",1000)
}


Here is how I call the code:


<p><center><font color="#FFFF00"><script src="/js/countdown.js" language="JavaScript" type="text/javascript"></script>

<ilayer id="countdownnsmain" width=&{countdownwidth}; height=&{countdownheight}; bgColor=&{countdownbgcolor}; visibility=hide><layer id="countdownnssub" width=&{countdownwidth}; height=&{countdownheight}; left=0 top=0></layer></ilayer></center></font>



The code works fine, here is the problem I am having: I have the first part of the code in a .js file. I want to be able to have multiple counters displayed on the page so I want to be able to set the date (2004,12,25,0,00,00), the occasion (var occasion="Christmas: ") and the message on occasion (var message_on_occasion="Merry Christmas!") in the html file instead of in the .js file. This way I can have two or three counters with different dates and occasions.

Can anybody help me out?

Thanks,

~ lilflur

Roy Sinclair
10-18-2004, 08:18 PM
See: http://www.codingforums.com/showthread.php?t=26917&highlight=countdown+script

This question has been asked several times before regarding that exact script, it appears nobody wants to tackle that huge and ugly script to make an object oriented version which could be used multiple times on a page.