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

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

Ticket #2434 - Limpeza, melhorias e correcoes na camada javascript do novo modulo

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