When I tested detection script with Safari, the result in my timezone is Europe/Minsk, but with all other browsers (Chrome, Firefox, Opera, IE) it is Europe/Helsinki, which is the right one.
I examined the problem, and noticed that when ambiguity_check()-function tests dates of local_ambiquity_list using date_is_dst(date), Safari behaves differently. The "Asia/Beirut"-list first value is "Europe/Minsk", and date_is_dst(dst start date of Europe/Minsk) evaluates true in Safari, but false in other browsers. In date_is_dst()-function the date_offset in Safari is 180, while all other browsers it is 120. When I tested Math.abs(date2.getTimezoneOffset()) all browsers returned the right value 120. Why not to use getTimezoneOffset()?
dst_start_dates are not real, why? In Europe/Helsinki the start time is 03:00 local time (= UTC 01:00), and Europe/Minsk the start is 02:00 local time (= UTC 00:00). I don't understand why the times in the following are 05:00:00 and 07:00:00:
'Europe/Minsk' : new Date(2011, 2, 27, 5, 0, 0, 0) 'Europe/Helsinki' : new Date(2011, 2, 27, 7, 0, 0, 0)