From 9800e5a3307cb11d418bb77b651ca52d3375090f Mon Sep 17 00:00:00 2001 From: thomasb Date: Wed, 28 Sep 2011 11:49:37 +0000 Subject: Distinguish standard timezone offset and DST of client git-svn-id: https://svn.roundcube.net/trunk@5285 208e9e7b-5314-0410-a742-e7e81cd9613c --- roundcubemail/program/js/app.js | 5 ++++- roundcubemail/program/js/common.js | 17 +++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) (limited to 'roundcubemail/program/js') diff --git a/roundcubemail/program/js/app.js b/roundcubemail/program/js/app.js index 22599ebf0..1a8d96793 100644 --- a/roundcubemail/program/js/app.js +++ b/roundcubemail/program/js/app.js @@ -380,7 +380,10 @@ function rcube_webmail() $('#rcmloginpwd').focus(); // detect client timezone - $('#rcmlogintz').val(new Date().getTimezoneOffset() / -60); + var tz = new Date().getTimezoneOffset() / -60; + var stdtz = new Date().getStdTimezoneOffset() / -60; + $('#rcmlogintz').val(stdtz); + $('#rcmlogindst').val(tz > stdtz ? 0 : 0); // display 'loading' message on form submit, lock submit button $('form').submit(function () { diff --git a/roundcubemail/program/js/common.js b/roundcubemail/program/js/common.js index f69125bcc..831e44a21 100644 --- a/roundcubemail/program/js/common.js +++ b/roundcubemail/program/js/common.js @@ -671,6 +671,23 @@ RegExp.escape = function(str) return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); }; +// Extend Date prototype to detect Standard timezone without DST +// from http://www.michaelapproved.com/articles/timezone-detect-and-ignore-daylight-saving-time-dst/ +Date.prototype.getStdTimezoneOffset = function() +{ + var m = 12, + d = new Date(null, m, 1), + tzo = d.getTimezoneOffset(); + + while (--m) { + d.setUTCMonth(m); + if (tzo != d.getTimezoneOffset()) { + return Math.max(tzo, d.getTimezoneOffset()); + } + } + + return tzo; +} // Make getElementById() case-sensitive on IE if (bw.ie) -- cgit v1.2.3