source: trunk/prototype/modules/calendar/js/timezone.js @ 5468

Revision 5468, 2.9 KB checked in by acoutinho, 12 years ago (diff)

Ticket #2434 - Correção de bugs no expresso email

  • Property svn:executable set to *
Line 
1/*
2        Todo Otimizar caulculo de timezone
3        Objeto Date.toString() retorna a data com inserção do offset
4        Objeto Date.getTime() retorna a data sem inserção do offset
5*/
6
7var objTime = DataLayer.dispatch( "timezones" );
8Timezone = {
9 
10        daylightSaving: parseInt( objTime.isDaylightSaving ),
11
12        timezones: objTime.timezones,     
13        timezone: function( tzId ){
14
15                return this.timezones[ tzId || User.preferences.timezone ];
16
17        },
18
19        compareTZID: function( fromTZID, toTZID ){
20
21                return( this.timezones[ fromTZID ] === this.timezones[ toTZID ] );
22
23        },
24
25        checkTimezoneCalendar: function(idCalendar, tzId){
26
27                return idCalendar && this.compareTZID( DataLayer.get('calendar', idCalendar).timezone, tzId );
28
29        },
30       
31        setDateTimezone: function (date, tzId, idCalendar){
32       
33                if( !!!tzId || this.checkTimezoneCalendar(idCalendar, tzId) )
34                        return date;
35
36                var timezone = this.timezone( tzId );
37
38                var timezoneOffset = parseInt(timezone.substr(2)) - this.daylightSaving * 100;
39
40                var timeCurrent = parseInt((date.getTimezoneOffset()/60)+'00') * ( ( timezone.charAt(0) != date.getUTCOffset().charAt(0) )? 1 : -1 );
41
42                var times = timezoneOffset + timeCurrent;
43
44                if(times == 0)
45                        return date;           
46                else if(times > 0)
47                        return date.setTimezoneOffset('-0'+(times));
48                else
49                        return date.setTimezoneOffset('+0'+((times * -1)));
50        },
51
52        getDateTimezone: function(date, tzId, recursive){
53
54                var timezone = this.timezone( tzId );
55
56                if(!timezone)
57                        return date;
58
59                var currentTimezone = parseInt((date.getTimezoneOffset()/60)+'00');
60
61                var timezoneOffset = parseInt(timezone.substr(2)) - this.daylightSaving * 100;
62
63                var times =  timezoneOffset - currentTimezone;
64
65                if(times == 0){
66                        if((timezone.charAt(0) == date.getUTCOffset().charAt(0)) && recursive)
67                                return date.setTimezoneOffset( timezone.charAt(0)+'0'+(currentTimezone));
68
69                        return  date;
70                }else if (times > 0)
71                        return date.setTimezoneOffset('+0'+(times));
72                else{
73                        return date.setTimezoneOffset('-0'+((times * -1) + (currentTimezone * 2)));
74                }
75        },
76       
77        getDateUTC: function (date, tzId){
78
79                        var timezone = this.timezone( tzId ), currentTimezone = parseInt(timezone.substr(2)) - this.daylightSaving * 100;
80                        return(date.setTimezoneOffset(timezone.charAt(0)+'0'+currentTimezone));
81        },
82
83        createDateTimezone: function(date, tzId, idCalendar){                   
84                if(this.checkTimezoneCalendar(idCalendar, tzId))
85                        return this.getDateTimezone(date, tzId, true);
86
87                var times = 0, timezone = this.timezone( tzId );
88               
89                if(timezone.charAt(0) == '+')
90                        times = parseInt(timezone.substr(2)) - parseInt((date.getTimezoneOffset()/60)+'00');
91                else
92                        times = (parseInt(timezone.substr(2)) + parseInt((date.getTimezoneOffset()/60)+'00')) * (-1);
93                if(times == 0)
94                        return date.setTimezoneOffset('0000');
95                else if (times > 0)
96                        return date.setTimezoneOffset('+0'+times);
97                else
98                        return date.setTimezoneOffset('-0'+(times * -1));
99        }
100
101
102
103}
Note: See TracBrowser for help on using the repository browser.