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

Revision 420, 6.5 KB checked in by niltonneto, 16 years ago (diff)

Commit inicial da agenda com layout usando Ajax.

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        var elData = XMLTools.ParseXmlXsl(data, xsl);
55        divAddDialog.style.display = "block";
56        divAddDialog.innerHTML = elData.innerHTML;
57        document.getElementById('dragEventSubject').focus();
58        document.getElementById('addEventLink').innerHTML = get_lang("Add this event");
59
60        this.lastId = _dragArea.endEvent;
61
62}
63Calendar.prototype.getView = function(idEl, type, data)
64{
65        this.idEl = idEl;
66        var _this = this;
67        this.lastId = null;
68
69        var handler_getView = function(XMLdata)
70        {
71
72                try {
73                        _this.parseView(XMLdata,type);
74
75                        if (viewType == "Week"){
76                                this.previousView = document.getElementById('day').firstChild.id;
77                                this.nextView = document.getElementById('day').firstChild.id;
78                                var dayInt = parseInt(this.nextView.substr(4,2),10)+7;
79                                this.nextView = this.nextView.substr(0,4)+(dayInt+7)+this.nextView.substr(6,2);
80                                }
81                        if (viewType == "Day"){
82                                this.nextView = document.getElementById('day').firstChild.id;
83                                this.previousView = document.getElementById('day').firstChild.id;
84                                var dayInt = parseInt(this.nextView.substr(4,2),10);
85                                this.nextView = this.nextView.substr(0,4)+(dayInt+1)+this.nextView.substr(6,2);
86                                var dayInt = parseInt(this.previousView.substr(4,2),10);   
87                                this.previousView = this.previousView.substr(0,4)+(dayInt-1)+this.previousView.substr(6,2);
88                        }
89                        document.getElementById("l_date").innerHTML =  "<a href=\"javascript:calendar.getView('div_main','"+viewType+"','&time='+this.previousView);\">\<\<&nbsp;</a>";
90                        if (viewType == "Week")
91                                document.getElementById("l_date").innerHTML += calendar.parseWeek(id2timeStamp(document.getElementById('day').firstChild.id));
92                        else
93                                document.getElementById("l_date").innerHTML += calendar.parseDate(id2timeStamp(document.getElementById('day').firstChild.id));
94                        document.getElementById("l_date").innerHTML += "<a href=\"javascript:calendar.getView('div_main','"+viewType+"','&time='+this.nextView);\">&nbsp;\>\></a>";
95
96                }catch(e){ alert(e); }
97                var events = document.getElementById('returnEvents');
98                while(typeof(events.firstChild.id) == 'string'){       
99                        createEventDiv(events.firstChild);
100                }
101
102        };
103
104        XMLTools.__RETURN_MODE__ = 'XML';
105        viewType = type;
106        screenTable = new Array();
107        XMLTools.request('$this.uicalendar.getView'+type+(data?data:''), 'GET', handler_getView); 
108};
109
110
111Calendar.prototype.parseView = function(data,type)
112{
113        var _this = this;
114        try {
115            var xsl = XMLTools.load('xsl/view'+type+'.xsl?'+ Date.parse(new Date));
116            var div = document.getElementById(this.idEl);
117            div.innerHTML = XMLTools.transform(data, xsl);
118        }
119        catch(e){
120                alert(e);
121        }
122
123        if (type == 'Week' || type == 'Month'){
124                var trWeek = document.getElementById('tr_week');
125                for (var i=0; i < trWeek.childNodes.length; i++)
126                        trWeek.childNodes[i].innerHTML = get_lang(trWeek.childNodes[i].innerHTML);
127        }
128};
129
130
131Calendar.prototype.parseTime = function (first, last) {
132
133        var hour        = first.substring(8,10);
134        var minute      = first.substring(10,12);
135        var startHour = hour+":"+minute;
136       
137        if(last && first != last) {
138                hour    = last.substring(8,10);
139                minute  = last.substring(10,12);
140        }
141       
142        if(minute == "30") {
143                hour    = parseInt(hour,10);
144                hour    = (hour < 9 ? "0" : "")+(hour+1);               
145                minute  = "00";
146        }
147        else {
148                minute  = "30";         
149        }
150               
151        return startHour+ " - "+ hour+":"+minute;
152}
153Calendar.prototype.parseWeek = function (timeStamp) {
154        dateObj=new Date();
155        dateObj.setTime(timeStamp);
156        Year=dateObj.getYear();
157        if (Year < 70) { Year=Year*1+2000; }
158        if (Year < 1900) { Year=Year*1+1900; }
159        Then=new Date(Year, 0, 1);
160        Then_Day=Then.getDay();
161        Diff=dateObj*1-Then*1;
162        Days=Math.floor(Diff/(1000*60*60*24)+(1/24));
163        Week=Math.floor((Days+Then_Day)/7)+1;
164        return get_lang("Week Number %1 of %2",Week,Year);
165}
166Calendar.prototype.parseDate = function (timeStamp) {
167        var obj = new Date();
168        obj.setTime(timeStamp);
169
170        switch(obj.getDay()) { 
171                case 0: day = "Sunday"; break; 
172                case 1: day = "Monday"; break; 
173                case 2: day = "Tuesday"; break; 
174                case 3: day = "Wednesday"; break; 
175                case 4: day = "Thursday"; break; 
176                case 5: day = "Friday"; break; 
177                case 6: day = "Saturday"; break; 
178                default: day = ""; break;
179        }       
180   
181        switch(obj.getMonth()) { 
182                case 0: month = "January"; break; 
183                case 1: month = "February"; break; 
184                case 2: month = "March"; break; 
185                case 3: month = "April"; break; 
186                case 4: month = "May"; break; 
187                case 5: month = "June"; break; 
188                case 6: month = "July"; break; 
189                case 7: month = "August"; break; 
190                case 8: month = "September"; break; 
191                case 9: month = "October"; break; 
192                case 10: month = "November"; break; 
193                case 11: month = "December"; break; 
194                default: month = ""; break;
195        }       
196        year = parseInt(obj.getYear())+1900;
197        return get_lang(day)+", "+obj.getDate()+" "+get_lang("of")+" "+get_lang(month)+" "+get_lang("of")+" "+year; // FIXME USE FORMAT DATE AS PREFERENCE
198}
199var calendar = new Calendar();
Note: See TracBrowser for help on using the repository browser.