[420] | 1 | var viewType; |
---|
| 2 | var todayDate = new Date(); |
---|
| 3 | |
---|
| 4 | function Calendar() |
---|
| 5 | { |
---|
| 6 | this.idEl; |
---|
| 7 | this.lastId; |
---|
| 8 | this.colorCellSelected = "LIGHTYELLOW"; |
---|
| 9 | this.nextView; |
---|
| 10 | this.previousView; |
---|
| 11 | } |
---|
| 12 | |
---|
| 13 | Calendar.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 | } |
---|
| 63 | Calendar.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);\">\<\< </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);\"> \>\></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 | |
---|
| 111 | Calendar.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 | |
---|
| 131 | Calendar.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 | } |
---|
| 153 | Calendar.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 | } |
---|
| 166 | Calendar.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 | } |
---|
| 199 | var calendar = new Calendar(); |
---|