﻿
function LoadCountDownClock(astrUniqueID, astrYear, astrMonth, astrDay, astrHour, astrMinute, astrSecond, astrFormat, aintLanguageID) {
    var strHTML;
   strHTML = '<div style="display:inline;" id="' + astrUniqueID + '"></div>';
         
   document.write(strHTML);

   CountDownClock(astrUniqueID, astrYear, astrMonth, astrDay, astrHour, astrMinute, astrSecond, astrFormat, 1, aintLanguageID);

}

function LoadCountDownClockSmall(astrUniqueID, astrYear, astrMonth, astrDay, astrHour, astrMinute, astrSecond, astrFormat, aintLanguageID) {

    var strHTML;

    strHTML = '<div style="display:inline;" id="' + astrUniqueID + '"></div>';


    document.write(strHTML);


    CountDownClock(astrUniqueID, astrYear, astrMonth, astrDay, astrHour, astrMinute, astrSecond, astrFormat, 2, aintLanguageID);

}



 function CountDownClock(astrUniqueID, astrYear, astrMonth, astrDay, astrHour, astrMinute,astrSecond, astrFormat, astrMode, aintLanguageID)
 {
     if (aintLanguageID == null) aintLanguageID = 1; // English is default
	 var objToday, strTodaysYear, strTodaysMonth;
     var objTodaysDate, objTargetDate ;
     var intTimeLeft, strDaysLetterS, strHoursLetterS, strMinutesLetterS;
     var strDays, strHours, strMinutes, strSeconds, intOffSet;
	 var objUTCDateTime;

	 objToday = new Date();
	 objUTCDateTime = objToday.getTime() + (objToday.getTimezoneOffset() * 60000);
	 if (IsDaylightSavingsTime(objToday.getFullYear()))
	 {intOffSet = -4; }
	 else
	 {intOffSet = -5; }
	 objToday = new Date(objUTCDateTime + (3600000 * intOffSet));

	 
         strTodaysYear = objToday.getFullYear();
         strTodaysMonth = objToday.getMonth();                  
         
         //Convert both today's date and the target date into miliseconds.                           
         objTodaysDate = (new Date(strTodaysYear, strTodaysMonth, objToday.getDate(), 
                                 objToday.getHours(), objToday.getMinutes(), objToday.getSeconds())).getTime();                                 
         objTargetDate = (new Date(astrYear, astrMonth - 1, astrDay, astrHour, astrMinute, astrSecond)).getTime();                  
         
         //Find their difference, and convert that into seconds.                  
         intTimeLeft = Math.round((objTargetDate - objTodaysDate) / 1000);
         
         if(intTimeLeft < 0)
            intTimeLeft = 0;
         
         switch(astrFormat)
               {
                   case 0:
                       //The simplest way to display the time left.
                       if (astrMode == 1) {
                           switch (aintLanguageID) {
                               case 1: // English
                                   strHTML = intTimeLeft + ' seconds';
                                   break;
                               case 2: // Spanish
                                   strHTML = intTimeLeft + ' segundos';
                                   break;
                               case 3: // French
                                   strHTML = intTimeLeft + ' secondes';
                                   break;
                           }
                       }
                       if (astrMode == 2) {
                           strHTML = intTimeLeft + 's ';
                       }
                       document.getElementById(astrUniqueID).innerHTML = strHTML
                       break;
                case 1:
                    //More datailed.
                    strDays = Math.floor(intTimeLeft / (60 * 60 * 24));
                    intTimeLeft %= (60 * 60 * 24);
                    strHours = Math.floor(intTimeLeft / (60 * 60));
                    intTimeLeft %= (60 * 60);
                    strMinutes = Math.floor(intTimeLeft / 60);
                    intTimeLeft %= 60;
                    strSeconds = intTimeLeft;

                    strDaysLetterS = 's';
                    strHoursLetterS = 's';
                    strMinutesLetterS = 's';
                    strSecondsLetterS = 's';
                    //ps is short for plural suffix.
                    if (strDays == 1) strDaysLetterS = '';
                    if (strHours == 1) strHoursLetterS = '';
                    if (strMinutes == 1) strMinutesLetterS = '';
                    if (strSeconds == 1) strSecondsLetterS = '';
                    if (strDays == '0') {
                        strHTML = '';
                    }
                    else {
                        if (astrMode == 1) {
                            switch (aintLanguageID) {
                                case 1: // English
                                    strHTML = strDays + ' day' + strDaysLetterS + ' ';
                                    break;
                                case 2: // Spanish
                                    strHTML = strDays + ' día' + strDaysLetterS + ' ';
                                    break;
                                case 3: // French
                                    strHTML = strDays + ' jour' + strDaysLetterS + ' ';
                                    break;
                            }
                        }
                        if (astrMode == 2) {
                            strHTML = strDays + 'd ';
                        }
                    }
                    if (strHours == '0') {
                    } else {
                        if (astrMode == 1 && aintLanguageID == 1) {
                            strHTML += strHours + ' hr' + strHoursLetterS + ' ';
                        }
                        if (astrMode == 2 || aintLanguageID > 1) {
                            strHTML += strHours + 'h ';
                        }
                    }
                    if (astrMode == 1 && aintLanguageID == 1) {
                        strHTML += strMinutes + ' min' + strMinutesLetterS + ', ';
                        strHTML += strSeconds + ' sec' + strSecondsLetterS;
                    }
                    if (astrMode == 2 || aintLanguageID > 1) {
                        strHTML += strMinutes + 'm ';
                        strHTML += strSeconds + 's';
                    }
                    document.getElementById(astrUniqueID).innerHTML = strHTML
                    break;
                default:
                    if (astrMode == 1) {
                        switch (aintLanguageID) {
                            case 1: // English
                                strHTML = intTimeLeft + ' seconds';
                                break;
                            case 2: // Spanish
                                strHTML = intTimeLeft + ' segundos';
                                break;
                            case 3: // French
                                strHTML = intTimeLeft + ' secondes';
                                break;
                        }
                    }
                    if (astrMode == 2) {
                        strHTML = intTimeLeft + 's';
                    }
                   document.getElementById(astrUniqueID).innerHTML = strHTML
               }
               
         //Recursive call, keeps the clock ticking.

           setTimeout('CountDownClock(\'' + astrUniqueID + '\',' + astrYear + ',' + astrMonth + ',' + astrDay + ',' + astrHour + ',' + astrMinute + ',' + astrSecond + ',' + astrFormat + ', ' + astrMode + ', ' + aintLanguageID + ');', 1000);
 }

 function IsDaylightSavingsTime(aintYear) {

     // 2nd sunday of march

     oDate = new Date();

     var dstStartDate = new Date();

     dstStartDate.setMonth(2);

     dstStartDate.setDate(1);

     dstStartDate.setYear(aintYear);

     dateIdx = dstStartDate.getDay() ? 8 - dstStartDate.getDay() : 1;

     dstStartDate.setDate(dateIdx + 7);



     // first sunday of november

     var dstEndDate = new Date();

     dstEndDate.setMonth(10);

     dstEndDate.setDate(1);

     dstEndDate.setYear(aintYear);

     dateIdx = dstEndDate.getDay() ? 8 - dstEndDate.getDay() : 1;

     dstEndDate.setDate(dateIdx);


     if ((oDate.getMonth() > dstStartDate.getMonth()) && (oDate.getMonth() < dstEndDate.getMonth())) {

         bInDST = true;

     } else if (oDate.getMonth() == dstStartDate.getMonth()) {

         if (oDate.getDate() >= dstStartDate.getDate()) {

             bInDST = true;

         } else {

             bInDST = false;

         }

     } else if (oDate.getMonth() == dstEndDate.getMonth()) {

         if (oDate.getDate() < dstEndDate.getDate()) {

             bInDST = true;

         } else {

             bInDST = false;

         }

     } else {

         bInDST = false;

     }

     return bInDST;

 }
