/*******************************************************************************\
Countdown Timer JavaScript Module
Version 2.1.1 (kept in step with fergcorp_countdownTimer.php)
Copyright (c) 2007 Andrew Ferguson
---------------------------------------------------------------------------------
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
\*******************************************************************************/

function rtrim(stringToTrim) {
	return stringToTrim.replace(/..$/,"");
}

function fergcorp_countdownTimer_js ()
{
    var r = 0;
    for (var i=0; i < fergcorp_countdownTimer_js_events.length; i++) {
		
		var nowDate = new Date();
		var targetDate = new Date(fergcorp_countdownTimer_js_events[i]["targetDate"]*1000);
		//alert(nowDate + '|' + targetDate + '|' + (nowDate-targetDate) );
		if((targetDate - nowDate) < 0){
			document.getElementById(fergcorp_countdownTimer_js_events[i]["id"]).innerHTML = fergcorp_countdownTimer_fuzzyDate(nowDate, targetDate, getOptions);			
		}
		else if((targetDate - nowDate) >= 0 ){
			document.getElementById(fergcorp_countdownTimer_js_events[i]["id"]).innerHTML = fergcorp_countdownTimer_fuzzyDate(targetDate, nowDate, getOptions);
		}
	}
	
    window.setTimeout('fergcorp_countdownTimer_js()', 1000);
}

function fergcorp_countdownTimer_fuzzyDate(targetTime, nowTime, getOptions){
	var rollover = 0;
	var vars = '';
	var sigNumHit = false;

	var nowDate = nowTime;
	var targetDate = targetTime;
	
	var s = '';
	
	var nowYear = nowDate.getFullYear();
	var nowMonth = nowDate.getMonth() + 1;
	var nowDay = nowDate.getDate();
	var nowHour = nowDate.getHours();
	var nowMinute = nowDate.getMinutes();
	var nowSecond = nowDate.getSeconds();
	
	var targetYear = targetDate.getFullYear();
	var targetMonth = targetDate.getMonth() + 1;
	var targetDay = targetDate.getDate();
	var targetHour = targetDate.getHours();
	var targetMinute = targetDate.getMinutes();
	var targetSecond = targetDate.getSeconds();
	
	var resultantYear = targetYear - nowYear;
	var resultantMonth = targetMonth - nowMonth;
	var resultantDay = targetDay - nowDay;
	var resultantHour = targetHour - nowHour;
	var resultantMinute = targetMinute - nowMinute;
	var resultantSecond = targetSecond - nowSecond;

	if(resultantSecond < 0){
		resultantMinute--;
		resultantSecond = 60 + resultantSecond;
	}
	
	if(resultantMinute < 0){
		resultantHour--;
		resultantMinute = 60 + resultantMinute;
	}
	
	if(resultantHour < 0){
		resultantDay--;
		resultantHour = 24 + resultantHour;
	}
	
	if(resultantDay < 0){
		resultantMonth--;
		resultantDay = resultantDay + 32 - new Date(targetYear, targetMonth-1, 32).getDate();
	}
	
	

	if(resultantMonth < 0){
		resultantYear--;
		resultantMonth = resultantMonth + 12;
	}

	//Year
	if(getOptions['showYear']){
		if(sigNumHit || !getOptions['stripZero'] || resultantYear){
			s = resultantYear + ' ' + (resultantYear==1?fergcorp_countdownTimer_js_language['year']:fergcorp_countdownTimer_js_language['years'])+', ';
			sigNumHit = true;
		}
	}
	else{
		rollover = resultantYear*31536000;
	}

	//Month	
	if(getOptions['showMonth']){
		if(sigNumHit || !getOptions['stripZero'] || resultantMonth){
			s = s + (resultantMonth + parseInt(rollover/2592000)) + ' ' + (resultantMonth==1?fergcorp_countdownTimer_js_language['month']:fergcorp_countdownTimer_js_language['months']) + ', ';
			rollover = rollover - parseInt(rollover/2592000)*2592000;
			sigNumHit = true;
		}
	}
	else{
		rollover = rollover + resultantMonth*2592000;
	}
	
	//Week (weeks are counted differently becuase we can just take 7 days and call it a week...so we do that)
	if(getOptions['showWeek']){
		if(sigNumHit || !getOptions['stripZero'] || parseInt( (resultantDay + parseInt(rollover/86400) )/7)){
			s = s + parseInt( (resultantDay + parseInt(rollover/86400) )/7 ) + ' ' + ((parseInt( (resultantDay + parseInt(rollover/86400) )/7))==1?fergcorp_countdownTimer_js_language['week']:fergcorp_countdownTimer_js_language['weeks']) + ', ';
			rollover = rollover - parseInt(rollover/86400)*86400;
			resultantDay = resultantDay - parseInt( (resultantDay + parseInt(rollover/86400) )/7 )*7;
			sigNumHit = true;
		}
	}

	//Day
	if(getOptions['showDay']){
		if(sigNumHit || !getOptions['stripZero'] || resultantDay){
			s = s + (resultantDay + parseInt(rollover/86400)) + ' ' + (resultantDay==1?fergcorp_countdownTimer_js_language['day']:fergcorp_countdownTimer_js_language['days']) + ', ';
			rollover = rollover - parseInt(rollover/86400)*86400;
			sigNumHit = true;
		}
	}
	else{
		rollover = rollover + resultantDay*86400;
	}
	
	//Hour
	if(getOptions['showHour']){
		if(sigNumHit || !getOptions['stripZero'] || resultantHour){
			s = s + (resultantHour + parseInt(rollover/3600)) + ' ' + (resultantHour==1?fergcorp_countdownTimer_js_language['hour']:fergcorp_countdownTimer_js_language['hours']) + ', ';
			rollover = rollover - parseInt(rollover/3600)*3600;
			sigNumHit = true;
		}
	}
	else{
		rollover = rollover + resultantHour*3600;
	}
	
	//Minute
	if(getOptions['showMinute']){
		if(sigNumHit || !getOptions['stripZero'] || resultantMinute){
			s = s + (resultantMinute + parseInt(rollover/60)) + ' ' + (resultantMinute==1?fergcorp_countdownTimer_js_language['minute']:fergcorp_countdownTimer_js_language['minutes']) + ', ';
			rollover = rollover - parseInt(rollover/60)*60;
			sigNumHit = true;
		}
	}
	else{
		rollover = rollover + resultantMinute*60;
	}
	
	//Second
	if(getOptions['showSecond']){
		s = s + (resultantSecond + rollover) + ' ' + (resultantSecond==1?fergcorp_countdownTimer_js_language['second']:fergcorp_countdownTimer_js_language['seconds']) + ', ';
	}
	
	return rtrim(s); //...and return the result (a string)
}

fergcorp_countdownTimer_js();