Changeset 665 for trunk/expressoCalendar/js/common_functions.js
- Timestamp:
- 02/06/09 08:41:18 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/expressoCalendar/js/common_functions.js
r632 r665 12 12 } 13 13 14 // This array stores the events in table to avoid conflict in screen 15 var screenTable = new Array(); 16 var today = new Date(); 17 var weekDay = today.getDay(); 18 function createEventDiv(eventDiv){ 19 eventDiv.className = "event_div"; 20 eventDiv.style.height = parseInt(eventDiv.childNodes[1].id-eventDiv.childNodes[0].id)/120000+"px"; 21 var end_ = timeStamp2id(eventDiv.childNodes[1].id).substr(8); 22 var start_ = parseInt(timeStamp2id(eventDiv.childNodes[0].id).substr(8),10); 23 if (viewType == "Day"){ 24 if (!screenTable[weekDay]) 25 screenTable[weekDay] = new Array(); 26 eventDiv.style.width = "190px"; 27 28 currentPos = 1; 29 for (var hour = parseInt(start_,10); hour < parseInt(end_,10);(hour%100 == 30)?hour+=70:hour+=30){ 30 if (!screenTable[weekDay][hour]) 31 screenTable[weekDay][hour] = 0; 32 33 if (currentPos <= screenTable[weekDay][hour]) 34 currentPos = screenTable[weekDay][hour]+1; 35 } 36 for (var hour = parseInt(start_,10); hour < parseInt(end_,10);(hour%100 == 30)?hour+=70:hour+=30) 37 screenTable[weekDay][hour] = currentPos; 38 eventDiv.style.left = 90+(205*(currentPos-1)) + "px" ; 39 eventDiv.onmouseover = function(){ createButtons(eventDiv); }; 40 eventDiv.onmouseout = function(){ removeButtons(eventDiv); }; 41 var resizeDiv = document.createElement('DIV'); 42 resizeDiv.id = "resize_" + eventDiv.id; 43 resizeDiv.className = 'resize_div'; 44 resizeDiv.onmousedown = function() { resizeEvent(eventDiv); }; 45 eventDiv.appendChild(resizeDiv); 46 } 47 if (viewType == "Week"){ 48 var tempDate = new Date; 49 tempDate.setTime(eventDiv.childNodes[1].id); 50 if (!screenTable[tempDate.getDay()]) 51 screenTable[tempDate.getDay()] = new Array(); 52 currentPos = 1; 53 if (!screenTable[tempDate.getDay()][start_]) 54 screenTable[tempDate.getDay()][start_] = 0; 55 56 if (currentPos <= screenTable[tempDate.getDay()][start_]) 57 currentPos = screenTable[tempDate.getDay()][start_]+1; 58 screenTable[tempDate.getDay()][start_] = currentPos; 59 60 var widthValue = 100; 61 eventDiv.style.width = widthValue+"px"; 62 63 var headerElement = document.getElementById('weekHeader_'+timeStamp2id(eventDiv.childNodes[1].id).substr(0,8)); 64 if (currentPos > 1) 65 eventDiv.style.left = (10+(tempDate.getDay()*122)+(widthValue*currentPos))+"px"; 66 headerElement.style.width = (widthValue*currentPos)+"px"; 67 eventDiv.style.height = "20px"; 68 eventDiv.style.cursor = "pointer"; 69 eventDiv.onmouseover = function () { this.style.height = "auto"; this.style.zIndex = 2;}; 70 eventDiv.onmouseout = function () { this.style.height = "20px"; this.style.zIndex = 1; }; 71 eventDiv.onclick = function () { calendar.getView('div_main','Day','&time='+timeStamp2id(eventDiv.childNodes[1].id).substr(0,8)); }; 72 } 73 74 var tdElement = document.getElementById(timeStamp2id(eventDiv.childNodes[0].id)); 75 76 if (viewType == "Month"){ 77 var tdElement = document.getElementById(timeStamp2id(eventDiv.childNodes[0].id).substr(0,8)+'0000'); 78 eventDiv.style.width = "60px"; 79 eventDiv.style.height = "15px"; 80 eventDiv.onmouseover = function () { if (this.childNodes[2].length > 9) this.style.width = "auto"; this.style.zIndex = 2; }; 81 eventDiv.onmouseout = function () { this.style.width = "60px"; this.style.zIndex = 1; }; 82 eventDiv.onclick = function () { calendar.getView('div_main','Day','&time='+timeStamp2id(eventDiv.childNodes[1].id).substr(0,8)); }; 83 eventDiv.style.cursor = "pointer"; 84 85 tdElement.style.height = (tdElement.childNodes.length * 10) + "px"; 86 87 if (tdElement.childNodes.length > 3) 88 eventDiv.style.margin = "20 0 0 "+(20+(tdElement.childNodes.length-4)*25); 89 else 90 eventDiv.style.margin = "0 0 0 "+(20+(tdElement.childNodes.length-1)*25); 91 } 92 93 eventDiv.style.top = (tdElement.offsetTop + 145) + "px"; 94 tdElement.appendChild(eventDiv); 14 function write_error (message){ 15 if (headerMsgLock){ 16 setTimeout('write_error("'+message+'");', 300); 17 return; 18 } 19 headerMsgLock = true; 20 headerDiv = document.getElementById("divAppboxHeader"); 21 var labelBefore = headerDiv.innerHTML; 22 headerDiv.innerHTML = '<table width=100% cellspacing="0" cellpadding="0" border="0"><tbody><tr><th width="40%"></th><th noWrap class="action_error_th">'+message+'</th><th width="40%"></th></tr></tbody></table>'; 23 setTimeout('headerMsgLock = false; document.getElementById("divAppboxHeader").innerHTML = \"'+labelBefore+'\";', 2000); 95 24 } 96 25 … … 128 57 } 129 58 } 130 131 function addDetails(title,description,datetime,edatetime){ 132 if (!edatetime) 133 edatetime = ""; 134 if (!datetime || datetime.length == 0) 135 datetime = edatetime; 136 data="<retorno>"+ 137 "<title>"+title+"</title>"+ 138 "<description>"+description+"</description>"+ 139 "<datetime>"+datetime.substr(4,2)+"/"+datetime.substr(6,2)+"/"+datetime.substr(0,4)+"</datetime>"+ 140 "<datehour>"+datetime.substr(8,2)+"</datehour>"+ 141 "<dateminute>"+datetime.substr(10,2)+"</dateminute>"+ 142 "<edatetime>"+edatetime.substr(4,2)+"/"+edatetime.substr(6,2)+"/"+edatetime.substr(0,4)+"</edatetime>"+ 143 "<edatehour>"+edatetime.substr(8,2)+"</edatehour>"+ 144 "<edateminute>"+edatetime.substr(10,2)+"</edateminute>"+ 145 "</retorno>"; 146 147 var divAddDialog = document.getElementById("divAddDialog"); 148 var xsl = XMLTools.load('xsl/detailsDialog.xsl?'+ Date.parse(new Date)); 149 if(!divAddDialog) { 150 divAddDialog = document.createElement("DIV"); 151 divAddDialog.id = 'divAddDialog'; 152 divAddDialog.style.zIndex = "10"; 153 divAddDialog.style.position = "absolute"; 154 divAddDialog.style.display = "none"; 155 document.body.appendChild(divAddDialog); 156 } 157 divAddDialog.style.left = "300px"; 158 divAddDialog.style.top = "200px"; 159 divAddDialog.innerHTML = xtools.parse(data, xsl); 160 divAddDialog.style.display = "block"; 161 } 59 function submitDetailsHandler () { 60 var iframe = document.getElementById('nullFrame'); 61 var Fdoc = iframe.contentDocument || iframe.contentWindow; 62 statusSpan = Fdoc.getElementById('formStatus'); 63 if (statusSpan) 64 { 65 var ErMessage = statusSpan.innerHTML.replace(/<[^>]*>/,''); 66 write_error(ErMessage); 67 divAddDialog = document.getElementById("divAddDialog"); 68 divAddDialog.appendChild(Fdoc.getElementsByName('app_form')[0]); 69 divAddDialog.style.display = "block"; 70 } 71 else 72 { 73 if (Fdoc.getElementById('calendar_overlap_table')){ 74 write_error(get_lang('scheduling conflict')); 75 divAddDialog = document.getElementById("divAddDialog"); 76 document.getElementsByName('app_form')[0].innerHTML = Fdoc.getElementById('divAppbox').innerHTML; 77 document.getElementById('ignore_button').style.display = "none"; 78 document.getElementById('redit_button').style.display = "none"; // TODO: Update the action to submit in background 79 divAddDialog.style.display = "block"; 80 } 81 else 82 write_msg(get_lang('Event updated successfully')); 83 } 84 connector.hideProgressBar(); 85 } 86 87 function addDetails(title,description,datetime,edatetime){ 88 if (!edatetime) 89 edatetime = ""; 90 if (!datetime || datetime.length == 0) 91 datetime = edatetime; 92 var handler_embeddedHTML = function (data) { 93 var divAddDialog = document.getElementById("divAddDialog"); 94 if(!divAddDialog) 95 { 96 divAddDialog = document.createElement("DIV"); 97 divAddDialog.id = 'divAddDialog'; 98 divAddDialog.style.zIndex = "10"; 99 divAddDialog.style.position = "absolute"; 100 divAddDialog.style.display = "none"; 101 document.body.appendChild(divAddDialog); 102 } 103 divAddDialog.style.left = "100px"; 104 divAddDialog.style.top = "100px"; 105 var xsl = XMLTools.load('xsl/windowDialog.xsl'); 106 xml = "<return></return>"; 107 divAddDialog.innerHTML = xtools.parse(xml, xsl); 108 document.getElementById('form_content').innerHTML = data; 109 submitButton = document.getElementById('submit_button'); 110 submitButton.onclick = function () { cExecuteForm('/index.php?menuaction=calendar.bocalendar.update',document.getElementsByName('app_form')[0],'submitDetailsHandler'); return false; } 111 cancelButton = document.getElementById('cancel_button'); 112 cancelButton.onclick = function () { calendar.dialog(); return false; } 113 deleteButton = document.getElementById('delete_button'); 114 deleteButton.onclick = function () { removeEvent(eventId.id.substr(6)); calendar.dialog(); return false; } 115 divAddDialog.style.display = "block"; 116 } 117 cExecute('../index.php?menuaction=calendar.uicalendar.add&plain=True&date='+datetime.substr(0,4)+datetime.substr(6,2)+datetime.substr(4,2)+'&hour='+datetime.substr(8,2)+'&minute='+datetime.substr(10,2),handler_embeddedHTML); 118 } 162 119 163 120 function showDetails(eventId){ 164 var handler_getDetails = function (data) 165 { 121 var handler_embeddedHTML = function (data) { 166 122 var divAddDialog = document.getElementById("divAddDialog"); 167 var xsl = XMLTools.load('xsl/detailsDialog.xsl?'+ Date.parse(new Date)); 168 if(!divAddDialog) { 123 var xsl = XMLTools.load('xsl/windowDialog.xsl'); 124 if(!divAddDialog) 125 { 169 126 divAddDialog = document.createElement("DIV"); 170 127 divAddDialog.id = 'divAddDialog'; … … 174 131 document.body.appendChild(divAddDialog); 175 132 } 176 divAddDialog.style.left = "300px"; 177 divAddDialog.style.top = "200px"; 178 divAddDialog.innerHTML = xtools.parse(data, xsl); 133 divAddDialog.style.left = "100px"; 134 divAddDialog.style.top = "100px"; 135 xml = "<return></return>"; 136 divAddDialog.innerHTML = xtools.parse(xml, xsl); 137 document.getElementById('form_content').innerHTML = data; 138 submitButton = document.getElementById('submit_button'); 139 submitButton.onclick = function () { cExecuteForm('/index.php?menuaction=calendar.bocalendar.update',document.getElementsByName('app_form')[0],'submitDetailsHandler'); calendar.dialog(); return false; } 140 try 141 { 142 cancelButton = document.getElementById('cancel_button'); 143 cancelButton.onclick = function () { calendar.dialog(); return false; } 144 } 145 catch (e) 146 { 147 cancelButton = document.createElement('INPUT'); 148 cancelButton.type = "submit"; 149 cancelButton.value = get_lang('cancel'); 150 cancelButton.onclick = function () { calendar.dialog(); return false; } 151 document.getElementsByName('app_form')[0].appendChild(cancelButton); 152 }; 153 deleteButton = document.getElementById('delete_button'); 154 deleteButton.onclick = function () { removeEvent(eventId.id.substr(6)); calendar.dialog(); return false; } 179 155 divAddDialog.style.display = "block"; 180 var saveBut = document.getElementById("saveLink"); 181 saveBut.onclick = function () { saveEvent(eventId); } 182 var startDate = document.getElementById('startstr'); 183 var endDate = document.getElementById('endstr'); 184 var startHour = document.getElementById('starthour'); 185 var startMin = document.getElementById('startmin'); 186 var endHour = document.getElementById('endhour'); 187 var endMin = document.getElementById('endmin'); 188 objDate = new Date(); 189 objDate.setTime(startDate.value*1000); 190 startDate.value = objDate.getDate()+"/"+(objDate.getMonth()+1)+"/"+objDate.getFullYear(); 191 startHour.value = objDate.getHours(); 192 startMin.value = objDate.getMinutes(); 193 if (startMin.value.length < 2) 194 startMin.value += "0"; 195 objDate.setTime(endDate.value*1000); 196 endDate.value = objDate.getDate()+"/"+(objDate.getMonth()+1)+"/"+objDate.getFullYear(); 197 endHour.value = objDate.getHours(); 198 endMin.value = objDate.getMinutes(); 199 if (endMin.value.length < 2) 200 endMin.value += "0"; 201 } 202 XMLTools.__RETURN_MODE__ = 'XML'; 203 XMLTools.request('$this.uicalendar.getDetails&id='+eventId.id.substr(6), 'GET', handler_getDetails); 156 } 157 cExecute('../index.php?menuaction=calendar.uicalendar.edit&cal_id='+eventId.id.substr(6)+'&plain=True',handler_embeddedHTML); 204 158 } 205 159 function removeButtons(eventDiv){ … … 215 169 var handler_removeEvent = function (data) { 216 170 var xsl = XMLTools.load('xsl/returnData.xsl?'+ Date.parse(new Date)); 217 171 var serverRet = xtools.parse(data, xsl); 218 172 serverRet = serverRet.substr(serverRet.indexOf('>')+1); 219 173 var retStatus = serverRet.substr(0,5);
Note: See TracChangeset
for help on using the changeset viewer.