var countDown = function(userSetting) {
this.setting = {
time_remaining: 0,
count: function(formatTime) {
return;
},
after: function() {
return;
},
countStatus: null
};
var _setting = $.extend(this.setting, userSetting);
this.bind = function(object, func) {
return function() {
return func.apply(object, arguments);
}
};
var self = this;
this.default_time = _setting.time_remaining;
this.lock = false;
this.start = function() {
if (self.lock == true)
return;
else
self.progress();
};
this.end = function(){
self.lock = false;
clearTimeout(_setting.countStatus);
_setting.after();
_setting.time_remaining = self.default_time;
}
this.progress = function() {
var formatTime = format(_setting.time_remaining);
_setting.count(formatTime);
if (_setting.time_remaining == 0) {
self.lock = false;
clearTimeout(_setting.countStatus);
_setting.after();
_setting.time_remaining = self.default_time;
} else {
self.lock = true;
_setting.time_remaining -= 1;
_setting.countStatus = setTimeout(function() {
self.progress();
}, 1000);
}
};
function format(second) {
var days = 0;
var hours = 0;
var minutes = 0;
var seconds = 0;
days = Math.floor(second / (24 * 60 * 60));
second -= days * 24 * 60 * 60;
hours = Math.floor(second / (60 * 60));
second -= hours * 60 * 60;
minutes = Math.floor(second / (60));
second -= minutes * 60;
seconds = second;
return {
day: days,
hour: hours,
minute: minutes,
second: seconds
};
}
};
var app_time = new countDown({
time_remaining:59,
count:function(data){
},
after:function(){
}
});
var app_time_start = app_time.start;
var app_time_end = app_time.end;
app_time_start();
app_time_end();