source: trunk/expressoCalendar/js/calendar_functions.js @ 632

Revision 632, 8.0 KB checked in by niltonneto, 15 years ago (diff)

Modulo calendar_new renomeado para expressoCalendar

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