var Duration = function (o) {
//
var days = 0,
seconds = 0,
miliseconds = 0;
return ({
/**
* Initialize the Duration Object
* add everything in seconds and finally set seconds / days
* @method set
* @param {object} obj object litteral with relevant informations
*/
set: function (obj) {
days = 0;
seconds = 0;
miliseconds = 0;
return this.add(obj);
},
/**
* Add a relative amount of time to the object
* @method add
* @param {object} obj object litteral with relevant informations
*/
add: function (obj) {
if (obj) {
if (obj.weeks) {days += obj.weeks * 7;}
if (obj.days) {days += obj.days;}
if (obj.hours) {seconds += obj.hours * 3600;}
if (obj.minutes) {seconds += obj.minutes * 60;}
if (obj.seconds) {seconds += obj.seconds;}
if (obj.miliseconds) {miliseconds += obj.miliseconds;}
if (seconds > 3600*24) {
days += (seconds - (seconds % (3600*24))) / (3600*24);
}
seconds %= (3600*24);
}
return this;
},
/**
* Return the duration in miliseconds
* @method getTime
* @return {integer} duration in miliseconds
*/
getDuration: function (format) {
switch (format) {
case "seconds":
return (days*3600*24 + seconds);
break;
case "miliseconds":
return ((days*3600*24) + seconds)*1000 + miliseconds
break;
// return seconds by default
default:
return (days*(3600*24) + seconds);
}
},
/**
* When asked, this object is a {}
* @method valueOf
* @return {object} contains days, seconds and miliseconds property
*//*
valueOf: function () {
return {
"days": days,
"seconds": seconds,
"miliseconds": miliseconds
};
}*/
}).set(o);
};