function countdown_clock(year, month, day, hour, minute, time_sync, format, id_extension) { //I chose a div as the container for the timer, but //it can be an input tag inside a form, or anything //who's displayed content can be changed through //client-side scripting. html_code = '
'; document.write(html_code); Today = new Date(); Todays_Year = Today.getFullYear() - 2000; Todays_Month = Today.getMonth(); //Computes the time difference between the client computer and the server. Server_Date = (new Date(18, 8, 22, 17, 27, 4)).getTime(); Todays_Date = (new Date(Todays_Year, Todays_Month, Today.getDate(), Today.getHours(), Today.getMinutes(), Today.getSeconds())).getTime(); countdown(year, month, day, hour, minute, (Todays_Date - Server_Date), time_sync, format, id_extension); } function countdown(year, month, day, hour, minute, time_difference, time_sync, format, id_extension) { Today = new Date(); Todays_Year = Today.getFullYear() - 2000; Todays_Month = Today.getMonth(); //Convert today's date and the target date into miliseconds. Todays_Date = (new Date(Todays_Year, Todays_Month, Today.getDate(), Today.getHours(), Today.getMinutes(), Today.getSeconds())).getTime(); Target_Date = (new Date(year, month, day, hour, minute, 00)).getTime(); //Find their difference, and convert that into seconds. //Taking into account the time differential between the client computer and the server. Time_Left = Math.round((Target_Date - Todays_Date + time_difference - time_sync) / 1000); if(Time_Left < 0) Time_Left = 0; switch(format) { case 0: //The simplest way to display the time left. innerHTML = Time_Left + ' seconds'; break; case 1: minutes = Math.floor(Time_Left / 60); Time_Left %= 60; seconds = Time_Left; mps = 's'; sps = 's'; //ps is short for plural suffix. if(minutes == 1) mps =''; if(seconds == 1) sps =''; innerHTML = minutes + ' minute' + mps + ' and '; innerHTML += seconds + ' second' + sps; break; case 2: hours = Math.floor(Time_Left / (60 * 60)); Time_Left %= (60 * 60); minutes = Math.floor(Time_Left / 60); Time_Left %= 60; seconds = Time_Left; hps = 's'; mps = 's'; sps = 's'; //ps is short for plural suffix. if(hours == 1) hps =''; if(minutes == 1) mps =''; if(seconds == 1) sps =''; innerHTML = hours + ' hour' + hps + ' '; innerHTML += minutes + ' minute' + mps + ' and '; innerHTML += seconds + ' second' + sps; break; case 3: //More datailed. days = Math.floor(Time_Left / (60 * 60 * 24)); Time_Left %= (60 * 60 * 24); hours = Math.floor(Time_Left / (60 * 60)); Time_Left %= (60 * 60); minutes = Math.floor(Time_Left / 60); Time_Left %= 60; seconds = Time_Left; dps = 's'; hps = 's'; mps = 's'; sps = 's'; //ps is short for plural suffix. if(days == 1) dps =''; if(hours == 1) hps =''; if(minutes == 1) mps =''; if(seconds == 1) sps =''; innerHTML = days + ' day' + dps + ' '; innerHTML += hours + ' hour' + hps + ' '; innerHTML += minutes + ' minute' + mps + ' and '; innerHTML += seconds + ' second' + sps; break; case 4: minutes = Math.floor(Time_Left / 60); mps = 's'; //ps is short for plural suffix. if(minutes == 1) mps =''; innerHTML = minutes + ' minute' + mps; break; case 5: hours = Math.floor(Time_Left / (60 * 60)); Time_Left %= (60 * 60); minutes = Math.floor(Time_Left / 60); hps = 's'; mps = 's'; //ps is short for plural suffix. if(hours == 1) hps =''; if(minutes == 1) mps =''; innerHTML = hours + ' hour' + hps + ' and '; innerHTML += minutes + ' minute' + mps; break; case 6: //More datailed. days = Math.floor(Time_Left / (60 * 60 * 24)); Time_Left %= (60 * 60 * 24); hours = Math.floor(Time_Left / (60 * 60)); Time_Left %= (60 * 60); minutes = Math.floor(Time_Left / 60); dps = 's'; hps = 's'; mps = 's'; //ps is short for plural suffix. if(days == 1) dps =''; if(hours == 1) hps =''; if(minutes == 1) mps =''; innerHTML = days + ' day' + dps + ' '; innerHTML += hours + ' hour' + hps + ' and '; innerHTML += minutes + ' minute' + mps; break; default: innerHTML = Time_Left + ' seconds'; } countdown_id = 'countdown' + id_extension; countdown_Object = document.getElementById(countdown_id); countdown_Object.innerHTML = '' + innerHTML + ''; time_out = 1000; if(format > 3) time_out *= 60; //Recursive call, keeps the clock ticking. setTimeout('countdown(' + year + ',' + month + ',' + day + ',' + hour + ',' + minute + ',' + time_difference + ', ' + time_sync + ', ' + format + ', \'' + id_extension + '\');', time_out); }