Just a few suggestions:
Your timezone arrangements for 10 and 11 are wrong. Sydney, Melbourne and Canberra are +10, not +11. They go to +11 for DST, but that should not affect their normal +10 offset.
I believe that they should always remain in the +10, but also highlight them to indicate they are in DST.
--
There should be a PHP method to determin if a certain timezone is in DST. I would use that instead of using a user's DST determination.
--
There is a better (less templates) way to show the local users timezone.
PHP Code:
if ($timediff == $vbulletin->userinfo['timezoneoffset'])
{
//blah
}
else
{
//blah
}
Can Become:
PHP Code:
$show['localtimezone'] = false;
if ($timediff == $vbulletin->userinfo['timezoneoffset'])
{
$show['localtimezone'] = true;
}
And using conditionals in the single template instead.
--
There are also functions available in the vbulletin options array for server time.
PHP Code:
$vbulletin->options['timeoffset'] is server offset
--
Finally, you should use UTC, not GMT, because GMT changes forward 1 hour for dst. UTC doesnt