I have this javascript which i m using for implementing timer.
function CountUp(initDate, id) {
this.beginDate = new Date(initDate);
this.countainer = document.getElementById(id);
this.numOfDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
this.borrowed = 0, this.years = 0, this.months = 0, this.days = 0;
this.hours = 0, this.minutes = 0, this.seconds = 0;
this.updateNumOfDays();
this.updateCounter();
}
CountUp.prototype.updateNumOfDays = function () {
var dateNow = new Date();
var currYear = dateNow.getFullYear();
if ((currYear % 4 == 0 && currYear % 100 != 0) || currYear % 400 == 0) {
this.numOfDays[1] = 29;
}
var self = this;
setTimeout(function () { self.updateNumOfDays(); }, (new Date((currYear + 1), 1, 2) - dateNow));
}
CountUp.prototype.datePartDiff = function (then, now, MAX) {
var diff = now - then - this.borrowed;
this.borrowed = 0;
if (diff > -1) return diff;
this.borrowed = 1;
return (MAX + diff);
}
CountUp.prototype.calculate = function () {
var currDate = new Date();
var prevDate = this.beginDate;
this.seconds = this.datePartDiff(prevDate.getSeconds(), currDate.getSeconds(), 60);
this.minutes = this.datePartDiff(prevDate.getMinutes(), currDate.getMinutes(), 60);
this.hours = this.datePartDiff(prevDate.getHours(), currDate.getHours(), 24);
this.days = this.datePartDiff(prevDate.getDate(), currDate.getDate(), this.numOfDays[currDate.getMonth()]);
this.months = this.datePartDiff(prevDate.getMonth(), currDate.getMonth(), 12);
this.years = this.datePartDiff(prevDate.getFullYear(), currDate.getFullYear(), 0);
}
CountUp.prototype.addLeadingZero = function (value) {
return value < 10 ? ("0" + value) : value;
}
CountUp.prototype.formatTime = function () {
this.seconds = this.addLeadingZero(this.seconds);
this.minutes = this.addLeadingZero(this.minutes);
this.hours = this.addLeadingZero(this.hours);
}
CountUp.prototype.updateCounter = function () {
this.calculate();
this.formatTime();
this.countainer.innerHTML = "" +
" " + this.hours + " <small>" + (this.hours == 1 ? "hour" : "hours") + "</small>" +
" " + this.minutes + " <small>" + (this.minutes == 1 ? "minute" : "minutes") + "</small>" +
" " + this.seconds + " <small>" + (this.seconds == 1 ? "second" : "seconds") + "</small>";
var self = this;
setTimeout(function () { self.updateCounter(); }, 1000);
}
var today = new Date();
window.onload = function () { new CountUp(today, 'counter'); }
It is working fine but as we can see the timer is getting enabled from the page load as i m calling the function on Page load i.e Window.Onload, here 'counter' is user for calling the method which is basically id of a div.
I want to call this fuinction on a button click event and i had tried but didnt get sucess.Please guide me that how we will call this method on Button Click event and we have to pass the system current date to this function also mandatory.