/*
 * http://scripts.franciscocharrua.com/services/countdown-clock/countdown-clock.php 
 */

function countdown_clock(year, month, day, hour, minute, time_sync, format, id_extension,
                         Syear, Smonth, Sday, Shour, Sminute, Ssecond)
         {
         //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 = '<span id="countdown' + id_extension + '"></span>';
                           
         document.write(html_code);
         
         Today = new Date();
         Todays_Year = Today.getFullYear() - 2000;
         Todays_Month = Today.getMonth() + 1;
         
                           
         
         //Computes the time difference between the client computer and the server.
         Server_Date = (new Date(Syear, Smonth, Sday, Shour, Sminute, Ssecond)).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() + 1;
                                             
         //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);
         }
