source: trunk/calendar_new/js/calendar_functions.js @ 464

Revision 464, 8.8 KB checked in by niltonneto, 16 years ago (diff)

Alterações feitas por Alexandre Muller.
Melhorias e correção na versão AJAX da Agenda.
Email: amuller@…

Line 
1var viewType;
2var todayDate = new Date();
3
4function Calendar()
5{
6        this.idEl;
7        this.lastId;
8        this.colorCellSelected = "LIGHTYELLOW";
9        this.nextView;
10        this.previousView;
11}
12
13Calendar.prototype.dialog = function() {
14        var divAddDialog = document.getElementById("divAddDialog");
15        if (_dragArea.initEvent > _dragArea.endEvent){
16                var temp = _dragArea.initEvent;
17                _dragArea.initEvent = _dragArea.endEvent;
18                _dragArea.endEvent = temp;
19        }
20
21
22        if(divAddDialog && divAddDialog.style.display != "none"){
23                divAddDialog.style.display = "none";
24                for (var hour = parseInt(_dragArea.initEvent); hour <= parseInt(_dragArea.endEvent);(hour%100 == 30)?hour+=70:hour+=30)
25                        document.getElementById(hour).style.background = "";
26                _dragArea.initEvent = null;
27                _dragArea.endEvent = null;
28                try {
29                        document.getElementById("div_main").style.opacity = 1;
30                        document.getElementById("div_main").filters.alpha.opacity=100;
31                } catch (e) {  }
32        return true;
33        }
34
35        var cell = document.getElementById(_dragArea.endEvent);
36        try {
37                document.getElementById("div_main").style.opacity = 0.5;
38                document.getElementById("div_main").filters.alpha.opacity=50;
39        } catch (e) {};
40
41        var data = '<text><date>'+calendar.parseDate(id2timeStamp(_dragArea.initEvent))+'</date><time>'+ calendar.parseTime(_dragArea.initEvent,_dragArea.endEvent)+'</time></text>';
42        var xsl = XMLTools.load('xsl/addDialog.xsl?'+ Date.parse(new Date));
43
44        if(!divAddDialog) {
45                divAddDialog = document.createElement("DIV");
46                divAddDialog.id = 'divAddDialog';
47                divAddDialog.style.zIndex = "10";
48                divAddDialog.style.position = "absolute";
49                divAddDialog.style.display = "none";
50                document.body.appendChild(divAddDialog);
51        }
52        divAddDialog.style.left = "300px"; //cell.offsetLeft + document.body.scrollLeft;
53        divAddDialog.style.top  = "200px"; //cell.offsetTop - 100 + document.getElementById('div_main').offsetTop;
54        divAddDialog.style.display = "block";
55        divAddDialog.innerHTML = xtools.parse(data, xsl);
56        document.getElementById('dragEventSubject').focus();
57        document.getElementById('addEventLink').innerHTML = get_lang("Add this event");
58        document.getElementById('addDetailsLink').innerHTML = get_lang("Add with details");
59
60
61        var closeButton = document.getElementById('closeDialog');
62        if (is_ie){
63                closeButton.style.left = '285px';
64                closeButton.style.top = '5px';
65        }else{
66                closeButton.style.left = '320px';
67                closeButton.style.top = '25px';
68        }
69
70        this.lastId = _dragArea.endEvent;
71
72}
73Calendar.prototype.getView = function(idEl, type, data)
74{
75        this.idEl = idEl;
76        var _this = this;
77        this.lastId = null;
78
79        var handler_getView = function(XMLdata)
80        {
81
82                try {
83                        _this.parseView(XMLdata,type);
84
85                        if (viewType == "Week"){
86                                var previousWeek = new Date;
87                                previousWeek.setTime(id2timeStamp(document.getElementById('day').firstChild.id)-(60*60*24*7*1000));
88                                this.previousView = previousWeek.getYear()+1900+""+(previousWeek.getDate()<10?"0":"")+previousWeek.getDate()+""+(previousWeek.getMonth()+1<10?"0":"")+(previousWeek.getMonth()+1);     
89                                var nextWeek = new Date;
90                                nextWeek.setTime(id2timeStamp(document.getElementById('day').firstChild.id));
91                                nextWeek.setDate(nextWeek.getDate()+7);
92                                this.nextView = nextWeek.getYear()+1900+""+(nextWeek.getDate()<10?"0":"")+nextWeek.getDate()+""+(nextWeek.getMonth()+1<10?"0":"")+(nextWeek.getMonth()+1);
93                        }
94                        if (viewType == "Day"){
95                                var previousDay = new Date;
96                                previousDay.setTime(id2timeStamp(document.getElementById('day').firstChild.id)-(60*60*24*1000));
97                                this.previousView = previousDay.getYear()+1900+""+(previousDay.getDate()<10?"0":"")+previousDay.getDate()+""+(previousDay.getMonth()+1<10?"0":"")+(previousDay.getMonth()+1);
98                                var nextDay = new Date;
99                                nextDay.setTime(id2timeStamp(document.getElementById('day').firstChild.id)+(60*60*24*1000));
100                                this.nextView = nextDay.getYear()+1900+""+(nextDay.getDate()<10?"0":"")+nextDay.getDate()+""+(nextDay.getMonth()+1<10?"0":"")+(nextDay.getMonth()+1);
101                        }
102                        if (viewType == 'Month'){
103                                var previousMonth = new Date;
104                                previousMonth.setTime(id2timeStamp(document.getElementById('day').firstChild.id));
105                                previousMonth.setMonth(previousMonth.getMonth()-1);
106                                this.previousView = previousMonth.getYear()+1900+""+(previousMonth.getDate()<10?"0":"")+previousMonth.getDate()+""+(previousMonth.getMonth()+1<10?"0":"")+(previousMonth.getMonth()+1);
107                                var nextMonth = new Date;
108                                nextMonth.setTime(id2timeStamp(document.getElementById('day').firstChild.id));
109                                nextMonth.setMonth(nextMonth.getMonth()+1);
110                                this.nextView = nextMonth.getYear()+1900+""+(nextMonth.getDate()<10?"0":"")+nextMonth.getDate()+""+(nextMonth.getMonth()+1<10?"0":"")+(nextMonth.getMonth()+1);
111                        }
112                        document.getElementById("l_date").innerHTML =  "<a href=\"javascript:calendar.getView('div_main','"+viewType+"','&time='+this.previousView);\">\<\<&nbsp;</a>";
113                        if (viewType == "Week")
114                                document.getElementById("l_date").innerHTML += calendar.parseWeek(id2timeStamp(document.getElementById('day').firstChild.id));
115                        if  (viewType == "Day")
116                                document.getElementById("l_date").innerHTML += calendar.parseDate(id2timeStamp(document.getElementById('day').firstChild.id));
117                        if (viewType == "Month")
118                                document.getElementById("l_date").innerHTML += calendar.parseMonth(id2timeStamp(document.getElementById('day').firstChild.id));
119                        document.getElementById("l_date").innerHTML += "<a href=\"javascript:calendar.getView('div_main','"+viewType+"','&time='+this.nextView);\">&nbsp;\>\></a>";
120
121                }catch(e){ alert(e+"\n"+e.description); }
122                var events = document.getElementById('returnEvents');
123                while(typeof(events.firstChild.id) == 'string'){       
124                        createEventDiv(events.firstChild);
125                }
126
127        };
128
129        XMLTools.__RETURN_MODE__ = 'XML';
130        viewType = type;
131        screenTable = new Array();
132        XMLTools.request('$this.uicalendar.getView'+type+(data?data:''), 'GET', handler_getView); 
133};
134
135
136Calendar.prototype.parseView = function(data,type)
137{
138        var _this = this;
139        try {
140            var xsl = XMLTools.load('xsl/view'+type+'.xsl?'+ Date.parse(new Date));
141            var div = document.getElementById(this.idEl);
142            div.innerHTML = xtools.parse(data, xsl);
143        }
144        catch(e){
145                alert(e);
146        }
147
148        if (type == 'Week' || type == 'Month'){
149                var trWeek = document.getElementById('tr_week');
150                for (var i=0; i < trWeek.childNodes.length; i++)
151                        trWeek.childNodes[i].innerHTML = get_lang(trWeek.childNodes[i].innerHTML);
152        }
153};
154
155
156Calendar.prototype.parseTime = function (first, last) {
157
158        var hour        = first.substring(8,10);
159        var minute      = first.substring(10,12);
160        var startHour = hour+":"+minute;
161       
162        if(last && first != last) {
163                hour    = last.substring(8,10);
164                minute  = last.substring(10,12);
165        }
166       
167        if(minute == "30") {
168                hour    = parseInt(hour,10);
169                hour    = (hour < 9 ? "0" : "")+(hour+1);               
170                minute  = "00";
171        }
172        else {
173                minute  = "30";         
174        }
175               
176        return startHour+ " - "+ hour+":"+minute;
177}
178Calendar.prototype.parseWeek = function (timeStamp) {
179        dateObj=new Date();
180        dateObj.setTime(timeStamp);
181        Year=dateObj.getYear();
182        if (Year < 70) { Year=Year*1+2000; }
183        if (Year < 1900) { Year=Year*1+1900; }
184        Then=new Date(Year, 0, 1);
185        Then_Day=Then.getDay();
186        Diff=dateObj*1-Then*1;
187        Days=Math.floor(Diff/(1000*60*60*24)+(1/24));
188        Week=Math.floor((Days+Then_Day)/7)+1;
189        return get_lang("Week Number %1 of %2",Week,Year);
190}
191Calendar.prototype.parseMonth = function (timeStamp) {
192        obj=new Date();
193        obj.setTime(timeStamp);
194        switch(obj.getMonth()) {
195                case 0: month = "January"; break;
196                case 1: month = "February"; break;
197                case 2: month = "March"; break;
198                case 3: month = "April"; break;
199                case 4: month = "May"; break;
200                case 5: month = "June"; break;
201                case 6: month = "July"; break;
202                case 7: month = "August"; break;
203                case 8: month = "September"; break;
204                case 9: month = "October"; break;
205                case 10: month = "November"; break;
206                case 11: month = "December"; break;
207                default: month = ""; break;
208        }
209        return get_lang(month);
210}
211Calendar.prototype.parseDate = function (timeStamp) {
212        var obj = new Date();
213        obj.setTime(timeStamp);
214
215        var day;
216        switch(obj.getDay()) { 
217                case 0: day = "Sunday"; break; 
218                case 1: day = "Monday"; break; 
219                case 2: day = "Tuesday"; break; 
220                case 3: day = "Wednesday"; break; 
221                case 4: day = "Thursday"; break; 
222                case 5: day = "Friday"; break; 
223                case 6: day = "Saturday"; break; 
224                default: day = ""; break;
225        }
226
227        var month;
228        switch(obj.getMonth()) { 
229                case 0: month = "January"; break; 
230                case 1: month = "February"; break; 
231                case 2: month = "March"; break; 
232                case 3: month = "April"; break; 
233                case 4: month = "May"; break; 
234                case 5: month = "June"; break; 
235                case 6: month = "July"; break; 
236                case 7: month = "August"; break; 
237                case 8: month = "September"; break; 
238                case 9: month = "October"; break; 
239                case 10: month = "November"; break; 
240                case 11: month = "December"; break; 
241                default: month = ""; break;
242        }
243
244        year = (is_ie?parseInt(obj.getYear()):parseInt(obj.getYear())+1900);
245       
246        return get_lang(day)+", "+obj.getDate()+" "+get_lang("of")+" "+get_lang(month)+" "+get_lang("of")+" "+year; // FIXME USE FORMAT DATE AS PREFERENCE
247}
248var calendar = new Calendar();
Note: See TracBrowser for help on using the repository browser.