var viewType; var todayDate = new Date(); function Calendar() { this.idEl; this.lastId; this.colorCellSelected = "LIGHTYELLOW"; this.nextView; this.previousView; } Calendar.prototype.dialog = function() { var divAddDialog = document.getElementById("divAddDialog"); if (_dragArea.initEvent > _dragArea.endEvent){ var temp = _dragArea.initEvent; _dragArea.initEvent = _dragArea.endEvent; _dragArea.endEvent = temp; } if(divAddDialog && divAddDialog.style.display != "none"){ divAddDialog.style.display = "none"; for (var hour = parseInt(_dragArea.initEvent); hour <= parseInt(_dragArea.endEvent);(hour%100 == 30)?hour+=70:hour+=30) try { document.getElementById(hour).style.background = ""; } catch (e) { break; }; _dragArea.initEvent = null; _dragArea.endEvent = null; try { document.getElementById("div_main").style.opacity = 1; document.getElementById("div_main").filters.alpha.opacity=100; } catch (e) { } return true; } var cell = document.getElementById(_dragArea.endEvent); try { document.getElementById("div_main").style.opacity = 0.5; document.getElementById("div_main").filters.alpha.opacity=50; } catch (e) {}; var data = ''+calendar.parseDate(id2timeStamp(_dragArea.initEvent))+''; var xsl = XMLTools.load('xsl/addDialog.xsl?'+ Date.parse(new Date)); if(!divAddDialog) { divAddDialog = document.createElement("DIV"); divAddDialog.id = 'divAddDialog'; divAddDialog.style.zIndex = "10"; divAddDialog.style.position = "absolute"; divAddDialog.style.display = "none"; document.body.appendChild(divAddDialog); } divAddDialog.style.left = "300px"; //cell.offsetLeft + document.body.scrollLeft; divAddDialog.style.top = "200px"; //cell.offsetTop - 100 + document.getElementById('div_main').offsetTop; divAddDialog.style.display = "block"; divAddDialog.innerHTML = xtools.parse(data, xsl); var closeButton = document.getElementById('closeDialog'); if (is_ie){ closeButton.style.left = '285px'; closeButton.style.top = '5px'; }else{ closeButton.style.left = '320px'; closeButton.style.top = '25px'; } document.getElementById('dragEventSubject').focus(); document.getElementById('addEventLink').innerHTML = get_lang("Add this event"); document.getElementById('addDetailsLink').innerHTML = get_lang("Add with details"); this.lastId = _dragArea.endEvent; } Calendar.prototype.getView = function(idEl, type, data) { this.idEl = idEl; var _this = this; this.lastId = null; var handler_getView = function(XMLdata) { _this.parseView(XMLdata,type); if (viewType == "Week"){ var Today = new Date; Today.setTime(id2timeStamp(document.getElementById('day').firstChild.id)); var lastWeek = new Date; lastWeek.setTime(Today.getTime()-(60*60*24*7*1000)); this.previousView = (lastWeek.getYear()+1900)+normDec(lastWeek.getDate()-7)+normDec(lastWeek.getMonth()+1); Today.setTime(Today.getTime()+(60*60*24*8*1000)); this.nextView = (Today.getYear()+1900)+normDec(Today.getDate())+normDec(Today.getMonth()+1); } if (viewType == "Day"){ var Today = new Date; Today.setTime(id2timeStamp(document.getElementById('day').firstChild.id)); this.previousView = (Today.getYear()+1900)+normDec(Today.getDate()-1)+normDec(Today.getMonth()+1); Today.setDate(Today.getDate()+1); this.nextView = (Today.getYear()+1900)+normDec(Today.getDate())+normDec(Today.getMonth()+1); } if (viewType == 'Month'){ var Today = new Date; Today.setTime(id2timeStamp(document.getElementById('day').firstChild.id)); this.previousView = (Today.getYear()+1900)+normDec(Today.getDate())+normDec(Today.getMonth()); Today.setMonth(Today.getMonth()+1); this.nextView = (Today.getYear()+1900)+normDec(Today.getDate())+normDec(Today.getMonth()+1); } document.getElementById("l_date").innerHTML = "\<\< "; if (viewType == "Week") document.getElementById("l_date").innerHTML += calendar.parseWeek(id2timeStamp(document.getElementById('day').firstChild.id)); if (viewType == "Day") document.getElementById("l_date").innerHTML += calendar.parseDate(id2timeStamp(document.getElementById('day').firstChild.id)); if (viewType == "Month") document.getElementById("l_date").innerHTML += calendar.parseMonth(id2timeStamp(document.getElementById('day').firstChild.id)); document.getElementById("l_date").innerHTML += " \>\>"; var events = document.getElementById('returnEvents'); while(typeof(events.firstChild.id) == 'string'){ createEventDiv(events.firstChild); } }; XMLTools.__RETURN_MODE__ = 'XML'; viewType = type; screenTable = new Array(); XMLTools.request('$this.uicalendar.getView'+type+(data?data:''), 'GET', handler_getView); }; Calendar.prototype.parseView = function(data,type) { var _this = this; try { var xsl = XMLTools.load('xsl/view'+type+'.xsl?'+ Date.parse(new Date)); var div = document.getElementById(this.idEl); div.innerHTML = xtools.parse(data, xsl); } catch(e){ alert(e); } if (type == 'Week' || type == 'Month'){ var trWeek = document.getElementById('tr_week'); for (var i=0; i < trWeek.childNodes.length; i++) trWeek.childNodes[i].innerHTML = get_lang(trWeek.childNodes[i].innerHTML); } }; Calendar.prototype.parseTime = function (first, last) { var hour = first.substring(8,10); var minute = first.substring(10,12); var startHour = hour+":"+minute; if(last && first != last) { hour = last.substring(8,10); minute = last.substring(10,12); } if(minute == "30") { hour = parseInt(hour,10); hour = normDec(hour+1); minute = "00"; } else { minute = "30"; } return startHour+ " - "+ hour+":"+minute; } Calendar.prototype.parseWeek = function (timeStamp) { dateObj=new Date(); dateObj.setTime(timeStamp); Year=dateObj.getYear(); if (Year < 70) { Year=Year*1+2000; } if (Year < 1900) { Year=Year*1+1900; } Then=new Date(Year, 0, 1); Then_Day=Then.getDay(); Diff=dateObj*1-Then*1; Days=Math.floor(Diff/(1000*60*60*24)+(1/24)); Week=Math.floor((Days+Then_Day)/7)+1; return get_lang("Week Number %1 of %2",Week,Year); } Calendar.prototype.parseMonth = function (timeStamp) { obj=new Date(); obj.setTime(timeStamp); switch(obj.getMonth()) { case 0: month = "January"; break; case 1: month = "February"; break; case 2: month = "March"; break; case 3: month = "April"; break; case 4: month = "May"; break; case 5: month = "June"; break; case 6: month = "July"; break; case 7: month = "August"; break; case 8: month = "September"; break; case 9: month = "October"; break; case 10: month = "November"; break; case 11: month = "December"; break; default: month = ""; break; } return get_lang(month); } Calendar.prototype.parseDate = function (timeStamp) { var obj = new Date(); obj.setTime(timeStamp); var day; switch(obj.getDay()) { case 0: day = "Sunday"; break; case 1: day = "Monday"; break; case 2: day = "Tuesday"; break; case 3: day = "Wednesday"; break; case 4: day = "Thursday"; break; case 5: day = "Friday"; break; case 6: day = "Saturday"; break; default: day = ""; break; } var month; switch(obj.getMonth()) { case 0: month = "January"; break; case 1: month = "February"; break; case 2: month = "March"; break; case 3: month = "April"; break; case 4: month = "May"; break; case 5: month = "June"; break; case 6: month = "July"; break; case 7: month = "August"; break; case 8: month = "September"; break; case 9: month = "October"; break; case 10: month = "November"; break; case 11: month = "December"; break; default: month = ""; break; } year = (is_ie?parseInt(obj.getYear()):parseInt(obj.getYear())+1900); return get_lang(day)+", "+obj.getDate()+" "+get_lang("of")+" "+get_lang(month)+" "+get_lang("of")+" "+year; // FIXME USE FORMAT DATE AS PREFERENCE } var calendar = new Calendar();