Ignore:
Timestamp:
03/01/12 03:35:01 (12 years ago)
Author:
acoutinho
Message:

Ticket #2434 - Implementacao de compartilhamento de agendas (agendas usuario e agendas publicas)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/prototype/modules/calendar/js/timezone.js

    r5550 r5592  
    66 
    77var objTime = DataLayer.dispatch( "timezones" ); 
     8 
    89Timezone = { 
    9    
    10         daylightSaving:  isNaN(objTime.isDaylightSaving) ? parseInt( objTime.isDaylightSaving ) : 0, 
     10        currentOffset : new Date().getUTCOffset(), 
     11        daylightSaving: isNaN(parseInt( objTime.isDaylightSaving )) ? 0 : parseInt( objTime.isDaylightSaving ), 
    1112 
    1213        timezones: objTime.timezones,      
     
    1617 
    1718        }, 
    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         }, 
    3019         
    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  
     20        getDateCalendar: function(date, tzId, isDay){ 
    5421                var timezone = this.timezone( tzId ); 
    5522 
     
    5724                        return date; 
    5825 
    59                 var currentTimezone = parseInt((date.getTimezoneOffset()/60)+'00'); 
     26                date = this.normalizeDate(date, false, true); 
    6027 
    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                 } 
     28                return date.add({hours: parseInt(timezone.charAt(0) + timezone.charAt(2))  +  parseInt(isDay) }); 
    7529        }, 
    7630         
    77         getDateUTC: function (date, tzId){ 
     31        getDateEvent: function(date, tzId, idCalendar, isDay, type){ 
     32                var timezone = this.timezone( tzId ); 
     33                var timezoneCurrent = this.timezone(DataLayer.get('calendar', idCalendar).timezone); 
    7834 
    79                         var timezone = this.timezone( tzId ), currentTimezone = parseInt(timezone.substr(2)) - this.daylightSaving * 100; 
    80                         return(date.setTimezoneOffset(timezone.charAt(0)+'0'+currentTimezone)); 
     35                if(timezone == timezoneCurrent) 
     36                        return date; 
     37                 
     38                var to = parseInt(timezone.charAt(0) + timezone.charAt(2)) + parseInt(isDay.event[type]); 
     39                var current = parseInt(timezoneCurrent.charAt(0) + timezoneCurrent.charAt(2)) + parseInt(isDay.calendar[type]); 
     40                 
     41                if(timezone.charAt(0) == timezoneCurrent.charAt(0)) 
     42                        hours =   (  to + (current * - 1)) ; 
     43                else 
     44                        hours =  to + (( current ) * (timezone.charAt(0) ==  '+'  ? -1 : 1)) ; 
     45                 
     46                return date.add({hours: hours}); 
    8147        }, 
    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)); 
     48         
     49        normalizeDate: function(date, current, inverse){ 
     50                var offsetDate = !!current ? this.currentOffset : date.getUTCOffset(); 
     51                return date.add({hours: (parseInt(offsetDate.charAt(0) + offsetDate.charAt(2)) * (!!inverse ? -1 : 1) )}); 
    9952        } 
    100  
    101  
    102  
    10353} 
Note: See TracChangeset for help on using the changeset viewer.