A theft detection device configured to be coupled to a product, comprising: a light sensor; a motion sensor; an emitter; and a controller coupled to the light sensor, the motion sensor, and the emitter; wherein the controller is configured to receive a signal from the light sensor indicative of the sensed light level and to process the signal to determine whether the sensed light level is below a light level threshold; wherein the controller is configured to determine whether the theft detection device is in motion; wherein, when the controller determines that the theft detection device is in motion, the controller is configured to determine if the theft detection device has previously been in motion within a first predetermined time period; and wherein the controller is configured to control the emitter to emit an alarm signal based on the sensed motion of the theft detection device and the light level sensed by the light sensor; characterized in that: if the controller determines that the theft detection device has previously been in motion within the first predetermined time, the controller is configured to reset a first counter and to increase a second counter; the controller is configured to determine whether the second counter is greater than a first predetermined value, and, if it is, to determine that the theft detection device is in motion matching a predetermined motion profile; and if the controller determines that the theft detection device has not previously been in motion within the first predetermined time, the controller is configured to increase the first counter, determine if the first counter is greater than a second predetermined value, and, if it is, to determine that the theft detection device is not in motion matching a predetermined motion profile. a light sensor; a motion sensor; an emitter; and a controller coupled to the light sensor, the motion sensor, and the emitter; wherein the controller is configured to receive a signal from the light sensor indicative of the sensed light level and to process the signal to determine whether the sensed light level is below a light level threshold; wherein the controller is configured to determine whether the theft detection device is in motion; wherein, when the controller determines that the theft detection device is in motion, the controller is configured to determine if the theft detection device has previously been in motion within a first predetermined time period; and wherein the controller is configured to control the emitter to emit an alarm signal based on the sensed motion of the theft detection device and the light level sensed by the light sensor; characterized in that: if the controller determines that the theft detection device has previously been in motion within the first predetermined time, the controller is configured to reset a first counter and to increase a second counter; the controller is configured to determine whether the second counter is greater than a first predetermined value, and, if it is, to determine that the theft detection device is in motion matching a predetermined motion profile; and if the controller determines that the theft detection device has not previously been in motion within the first predetermined time, the controller is configured to increase the first counter, determine if the first counter is greater than a second predetermined value, and, if it is, to determine that the theft detection device is not in motion matching a predetermined motion profile. if the controller determines that the theft detection device has previously been in motion within the first predetermined time, the controller is configured to reset a first counter and to increase a second counter; the controller is configured to determine whether the second counter is greater than a first predetermined value, and, if it is, to determine that the theft detection device is in motion matching a predetermined motion profile; and if the controller determines that the theft detection device has not previously been in motion within the first predetermined time, the controller is configured to increase the first counter, determine if the first counter is greater than a second predetermined value, and, if it is, to determine that the theft detection device is not in motion matching a predetermined motion profile.