/* global mozIntl */
define(function(require, exports, module) {
'use strict';
var create = require('template').create;
var MINUTE = 60;
var HOUR = 3600;
var DAY = 86400;
var WEEK = 604800;
var MORNING = HOUR * 9;
var layouts = {
standard: [
'none',
0,
0 - MINUTE * 5,
0 - MINUTE * 15,
0 - MINUTE * 30,
0 - HOUR,
0 - HOUR * 2,
0 - DAY
],
allday: [
'none',
0 + MORNING,
0 - DAY + MORNING,
0 - DAY * 2 + MORNING,
0 - WEEK + MORNING,
0 - WEEK * 2 + MORNING
]
};
var Alarm = create({
reminder: function() {
var alarmContent = '';
var alarms = this.arg('alarms');
var isAllDay = this.arg('isAllDay');
var i = 0;
var alarm;
while ((alarm = alarms[i])) {
i++;
alarmContent += Alarm.description.render({
trigger: alarm.trigger,
layout: isAllDay ? 'allday' : 'standard'
});
}
return alarmContent;
},
description: function() {
var {id, data} = getL10n(this.arg('trigger'), this.arg('layout'));
var args = JSON.stringify(data);
var description = navigator.mozL10n.get(id, data);
return `
${description}
`;
},
// builds a list of '
].join(' ');
return content;
},
picker: function() {
return '' +
'' +
'';
}
});
function getL10n(trigger, layout) {
if (trigger === 'none') {
return {
id: trigger,
data: {}
};
}
// Format the display text based on a zero-offset trigger
if (layout === 'allday') {
var options = layouts.allday;
if (options.indexOf(trigger) !== -1) {
trigger -= MORNING;
}
}
if (trigger === 0) {
return {
id: 'alarm-at-event-' + layout,
data: {}
};
}
var affix = trigger > 0 ? 'after' : 'before';
var part = mozIntl._gaia.relativePart(trigger * 1000);
return {
id: part.unit + '-' + affix,
data: {
value: part.value
}
};
}
module.exports = Alarm;
});