add: alarmTime = snoozeTime || alarmTime; 
context:     addAlarm: function(aItem) {        var alarmTime;        if (aItem.alarmRelated == Components.interfaces.calIItemBase.ALARM_RELATED_START) {            alarmTime = aItem.startDate || aItem.entryDate;        } else {            alarmTime = aItem.endDate || aItem.dueDate;        }        alarmTime = alarmTime.clone();        // Handle all day events.  This is kinda weird, because they don't have        // a well defined startTime.  We just consider the start/end to be         // midnight in the user's timezone.        if (alarmTime.isDate) {            alarmTime = alarmTime.getInTimezone(this.mTimezone);            alarmTime.isDate = false;        }        var offset = aItem.alarmOffset || aItem.parentItem.alarmOffset;        alarmTime.addDuration(offset);        alarmTime = alarmTime.getInTimezone("UTC");dump("considering alarm for item:"+aItem.title+'\n offset:'+offset+', which makes alarm time:'+alarmTime+'\n');        var now;        // XXX When the item is floating, should use the default timezone        // from the prefs, instead of the javascript timezone (which is what        // jsDateToFloatingDateTime uses)        if (alarmTime.timezone == "floating")            now = jsDateToFloatingDateTime((new Date()));        else            now = jsDateToDateTime((new Date())).getInTimezone("UTC");dump("now is "+now+'\n');        var callbackObj = {            alarmService: this,            item: aItem,            notify: function(timer) {                this.alarmService.alarmFired(this.item);                delete this.alarmService.mEvents[this.item.id];            }        };        if (alarmTime.compare(now) >= 0) {dump("alarm is in the future\n");            // We assume that future alarms haven't been acknowledged            // delay is in msec, so don't forget to multiply            var timeout = alarmTime.subtractDate(now).inSeconds * 1000;            var timeUntilRefresh = this.mRangeEnd.subtractDate(now).inSeconds * 1000;            if (timeUntilRefresh < timeout) {dump("alarm is too late\n");                // we'll get this alarm later.  No sense in keeping an extra timeout                return;            }            this.mEvents[aItem.id] = newTimerWithCallback(callbackObj, timeout, false);            dump("adding alarm timeout (" + timeout + ") for " + aItem + "\n");        } else {            var lastAck = aItem.alarmLastAck || aItem.parentItem.alarmLastAck;            dump("Last ack was:"+lastAck+'\n');            // This alarm is in the past.  See if it has been previously ack'd            if (lastAck && lastAck.compare(alarmTime) >= 0) {dump(aItem.title+' - alarm previously ackd2\n');                return;            } else { // Fire!dump("alarm is in the past, and unack'd, firing now!\n");                this.alarmFired(aItem);            }        }    },
meta: 9421	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/9421/3bde5d687ac353900c87f6c604dfc4dea2b8491a/calAlarmService.js/clean/calendar/base/src/calAlarmService.js