aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/styles/prosilver/template/timezone.js
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/styles/prosilver/template/timezone.js')
-rw-r--r--phpBB/styles/prosilver/template/timezone.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/phpBB/styles/prosilver/template/timezone.js b/phpBB/styles/prosilver/template/timezone.js
new file mode 100644
index 0000000000..5d07b1d3ad
--- /dev/null
+++ b/phpBB/styles/prosilver/template/timezone.js
@@ -0,0 +1,54 @@
+function phpbb_preselect_tz_select()
+{
+ var selector = document.getElementsByClassName('tz_select')[0];
+ if (selector.value)
+ {
+ return;
+ }
+ // The offset returned here is in minutes and negated.
+ // http://www.w3schools.com/jsref/jsref_getTimezoneOffset.asp
+ var offset = (new Date()).getTimezoneOffset();
+ if (offset < 0)
+ {
+ var sign = '+';
+ offset = -offset;
+ }
+ else
+ {
+ var sign = '-';
+ }
+ var minutes = offset % 60;
+ var hours = (offset - minutes) / 60;
+ if (hours < 10)
+ {
+ hours = '0' + hours.toString();
+ }
+ else
+ {
+ hours = hours.toString();
+ }
+ if (minutes < 10)
+ {
+ minutes = '0' + minutes.toString();
+ }
+ else
+ {
+ minutes = minutes.toString();
+ }
+ var prefix = 'GMT' + sign + hours + ':' + minutes;
+ var prefix_length = prefix.length;
+ for (var i = 0; i < selector.options.length; ++i)
+ {
+ var option = selector.options[i];
+ if (option.value.substring(0, prefix_length) == prefix)
+ {
+ // Firefox scrolls the selector only to put the option into view;
+ // for negative-offset timezones, this means the first timezone
+ // of a particular offset will be the bottom one, and selected,
+ // with all other timezones not visible. Not much can be done
+ // about that here unfortunately.
+ option.selected = true;
+ break;
+ }
+ }
+}