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)
document.getElementById(hour).style.background = "";
_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);
document.getElementById('dragEventSubject').focus();
document.getElementById('addEventLink').innerHTML = get_lang("Add this event");
document.getElementById('addDetailsLink').innerHTML = get_lang("Add with details");
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';
}
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)
{
try {
_this.parseView(XMLdata,type);
if (viewType == "Week"){
var previousWeek = new Date;
previousWeek.setTime(id2timeStamp(document.getElementById('day').firstChild.id)-(60*60*24*7*1000));
this.previousView = previousWeek.getYear()+1900+""+(previousWeek.getDate()<10?"0":"")+previousWeek.getDate()+""+(previousWeek.getMonth()+1<10?"0":"")+(previousWeek.getMonth()+1);
var nextWeek = new Date;
nextWeek.setTime(id2timeStamp(document.getElementById('day').firstChild.id));
nextWeek.setDate(nextWeek.getDate()+7);
this.nextView = nextWeek.getYear()+1900+""+(nextWeek.getDate()<10?"0":"")+nextWeek.getDate()+""+(nextWeek.getMonth()+1<10?"0":"")+(nextWeek.getMonth()+1);
}
if (viewType == "Day"){
var previousDay = new Date;
previousDay.setTime(id2timeStamp(document.getElementById('day').firstChild.id)-(60*60*24*1000));
this.previousView = previousDay.getYear()+1900+""+(previousDay.getDate()<10?"0":"")+previousDay.getDate()+""+(previousDay.getMonth()+1<10?"0":"")+(previousDay.getMonth()+1);
var nextDay = new Date;
nextDay.setTime(id2timeStamp(document.getElementById('day').firstChild.id)+(60*60*24*1000));
this.nextView = nextDay.getYear()+1900+""+(nextDay.getDate()<10?"0":"")+nextDay.getDate()+""+(nextDay.getMonth()+1<10?"0":"")+(nextDay.getMonth()+1);
}
if (viewType == 'Month'){
var previousMonth = new Date;
previousMonth.setTime(id2timeStamp(document.getElementById('day').firstChild.id));
previousMonth.setMonth(previousMonth.getMonth()-1);
this.previousView = previousMonth.getYear()+1900+""+(previousMonth.getDate()<10?"0":"")+previousMonth.getDate()+""+(previousMonth.getMonth()+1<10?"0":"")+(previousMonth.getMonth()+1);
var nextMonth = new Date;
nextMonth.setTime(id2timeStamp(document.getElementById('day').firstChild.id));
nextMonth.setMonth(nextMonth.getMonth()+1);
this.nextView = nextMonth.getYear()+1900+""+(nextMonth.getDate()<10?"0":"")+nextMonth.getDate()+""+(nextMonth.getMonth()+1<10?"0":"")+(nextMonth.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 += " \>\>";
}catch(e){ alert(e+"\n"+e.description); }
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 = (hour < 9 ? "0" : "")+(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();