InfCloud/vtodo.js

3532 lines
141 KiB
JavaScript

/*
InfCloud - the open source CalDAV/CardDAV Web Client
Copyright (C) 2011-2015
Jan Mate <jan.mate@inf-it.com>
Andrej Lezo <andrej.lezo@inf-it.com>
Matej Mihalik <matej.mihalik@inf-it.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
function AppleSupportNextDateArray()
{
this.nextDates={};
this.reset=function()
{
this.nextDates={};
};
}
function addAndEditTODO(deleteMode)
{
var inputUID='';
if($('#uidTODO').val()!='')
var coll = globalResourceCalDAVList.getTodoCollectionByUID($('#uidTODO').val().substring(0, $('#uidTODO').val().lastIndexOf('/')+1));
else
var coll = globalResourceCalDAVList.getTodoCollectionByUID($('#todo_calendar').val());
var res = getAccount(coll.accountUID);
var tmp=res.href.match(vCalendar.pre['hrefRex']);
var origUID=tmp[1]+res.userAuth.userName+'@'+tmp[2];
if($('#etagTODO').val()!='')
inputUID=$('#uidTODO').val();
else if($('#todo_calendar').val()!='choose')
inputUID=$('#todo_calendar').val()+'';
else
return false;
todoToVcalendar('EDIT',origUID, inputUID, $('#etagTODO').val(), '',deleteMode);
}
function interResourceEditTODO(operation, delUID)
{
var inputUID='';
if($('#uidTODO').val()!='')
var coll = globalResourceCalDAVList.getTodoCollectionByUID($('#uidTODO').val().substring(0, $('#uidTODO').val().lastIndexOf('/')+1));
else
var coll = globalResourceCalDAVList.getTodoCollectionByUID($('#todo_calendar').val());
var res = getAccount(coll.accountUID);
var tmp=res.href.match(vCalendar.pre['hrefRex']);
var origUID=tmp[1]+res.userAuth.userName+'@'+tmp[2];
if(operation != 'MOVE_IN')
$('#etagTODO').val('');
var srcUID=$('#uidTODO').val().substring($('#uidTODO').val().lastIndexOf('/')+1, $('#uidTODO').val().length);
inputUID=$('#todo_calendar').val()+srcUID;
todoToVcalendar(operation, origUID, inputUID, '', delUID, false);
}
function saveTodo(deleteMode)
{
$('#todo_details_template').scrollTop(0);
var calUID=$('#uidTODO').val().substring(0, $('#uidTODO').val().lastIndexOf('/'));
var newUID=$('#todo_calendar').val().substring(0, $('#todo_calendar').val().length-1);
if($('#todo_details_template').find('img[data-type=invalidVerySmall],img[data-type=invalidSmall]').filter(function(){return this.style.display!='none'}).length>0)
{
show_editor_loader_messageCalendar('vtodo', 'message_error', localization[globalInterfaceLanguage].txtErorInputTodo);
return false;
}
if($('#todo_calendar').val()!='choose')
{
if($('#nameTODO').val()=='')
$('#name').val(localization[globalInterfaceLanguage].pholderNewTODO);
if($('#todo_type').val()=='start' || $('#todo_type').val()=='due' || $('#todo_type').val()=='both')
{
if($('#date_toTODO').val()!='' && $('#date_fromTODO').val()!='')
{
var a=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_fromTODO').val());
var a2=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_toTODO').val());
var datetime_from=$.fullCalendar.formatDate(a, 'yyyy-MM-dd');
var datetime_to=$.fullCalendar.formatDate(a2, 'yyyy-MM-dd');
var time_from='00:00';
var time_to='00:00';
if($('#time_fromTODO').val()!='' && $('#time_toTODO').val()!='')
{
time_from=new Date(Date.parse("01/02/1990, "+$('#time_fromTODO').val()));
time_from=$.fullCalendar.formatDate(time_from, 'HH:mm' );
time_to=new Date(Date.parse("01/02/1990, "+$('#time_toTODO').val()));
time_to=$.fullCalendar.formatDate(time_to, 'HH:mm' );
}
if($('#todo_type').val()=='both' && $.fullCalendar.parseDate(datetime_from+'T'+time_from+'Z')>$.fullCalendar.parseDate(datetime_to+'T'+time_to+'Z'))
{
show_editor_loader_messageCalendar('vtodo', 'message_error', localization[globalInterfaceLanguage].txtErrorDatesTodo);
return false;
}
}
if($('#date_toTODO').val()!='' || $('#date_fromTODO').val()!='')
{
if(newUID==calUID || $('#etagTODO').val()=='')
addAndEditTODO(deleteMode);
// else if(calUID.substring(0, calUID.lastIndexOf('/'))==newUID.substring(0, newUID.lastIndexOf('/')))
// {
// var delUID=$('#uidTODO').val();
// interResourceEditTODO('MOVE_IN',delUID);
// }
else if(/*calUID.substring(0, calUID.lastIndexOf('/'))!=newUID.substring(0, newUID.lastIndexOf('/')) && */$('#etagTODO').val()!='')
{
var delUID=$('#uidTODO').val();
interResourceEditTODO('MOVE_OTHER',delUID);
}
}
else
show_editor_loader_messageCalendar('vtodo', 'message_error', localization[globalInterfaceLanguage].txtDateTimeErrorTodo);
}
else
{
if((newUID==calUID) || ($('#etagTODO').val()==''))
addAndEditTODO(deleteMode);
// else if(calUID.substring(0, calUID.lastIndexOf('/'))==newUID.substring(0, newUID.lastIndexOf('/')))
// {
// var delUID=$('#uidTODO').val();
// interResourceEditTODO('MOVE_IN',delUID);
// }
else if(/*calUID.substring(0, calUID.lastIndexOf('/'))!=newUID.substring(0, newUID.lastIndexOf('/')) && */ $('#etagTODO').val()!='')
{
var delUID=$('#uidTODO').val();
interResourceEditTODO('MOVE_OTHER',delUID);
}
}
}
else
show_editor_loader_messageCalendar('vtodo', 'message_error', localization[globalInterfaceLanguage].txtNotChooseTodo);
}
function deleteTodo()
{
var delUID=$('#uidTODO').val();
if(delUID!='')
deleteVcalendarFromCollection(delUID,'vtodo');
}
function getRepeatTodoObject(inputRepeatObj)
{
var appleTodoMode = false;
var tzArray=new Array();
var tzString='';
var isTimeZone=false;
var origTimezone = '';
var vCalendarText = inputRepeatObj.vCalendarText;
var sel_option = '';
var inputTodos=jQuery.grep(globalEventList.displayTodosArray[inputRepeatObj.rid],function(e){if(e.id==inputRepeatObj.uidTodo && ((globalSettings.appleremindersmode.value || e.repeatCount<2) || !e.repeatCount))return true});
if(globalSettings.appleremindersmode.value && inputTodos.length==1)
{
if(inputRepeatObj.recurrenceId!='' || inputRepeatObj.futureStart!='')
appleTodoMode = true;
}
for(var iE=0;iE<inputTodos.length;iE++)
{
if(tzArray.indexOf(inputTodos[iE].timeZone)==-1)
{
if(!appleTodoMode && inputRepeatObj.deleteMode && (inputRepeatObj.vcalendarHash==hex_sha256(inputTodos[iE].vcalendar)))
continue;
var component=buildTimezoneComponent(inputTodos[iE].timeZone);
if(component!='' && (inputRepeatObj.vcalendarHash!=hex_sha256(inputTodos[iE].vcalendar)))
{
tzArray[tzArray.length]=inputTodos[iE].timeZone;
tzString+=component;
if(tzString.lastIndexOf('\r\n')!=(tzString.length-2))
tzString+='\r\n';
isTimeZone=true;
}
else if(component!='' && (inputRepeatObj.vcalendarHash==hex_sha256(inputTodos[iE].vcalendar)))
origTimezone+=component;
}
}
if(isTimeZone)
{
if(vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2))
vCalendarText+='\r\n';
vCalendarText+=tzString;
}
var newFirst = vCalendarText;
var origRepeatRule = '';
var realTodo='';
var origVcalendarString='';
var todoStringArray=new Array();
if(inputTodos.length>0)
{
var rid=inputRepeatObj.uidTodo.substring(0, inputRepeatObj.uidTodo.lastIndexOf('/')+1);
if(rid && globalEventList.todos[rid][inputRepeatObj.uidTodo].uid!=undefined)
origVcalendarString=globalEventList.todos[rid][inputRepeatObj.uidTodo].vcalendar;
while(origVcalendarString.match(vCalendar.pre['vtodo'])!=null)
{
if(origVcalendarString.substring(origVcalendarString.indexOf('BEGIN:VTODO')-2, origVcalendarString.indexOf('BEGIN:VTODO'))=='\r\n')
{
var partTodo=origVcalendarString.substring(origVcalendarString.indexOf('BEGIN:VTODO')-2,origVcalendarString.indexOf('END:VTODO')+'END:VTODO'.length);
origVcalendarString=origVcalendarString.replace(partTodo, '');
}
else
{
var partTodo=origVcalendarString.substring(origVcalendarString.indexOf('BEGIN:VTODO'),origVcalendarString.indexOf('END:VTODO')+'END:VTODO'.length);
origVcalendarString=origVcalendarString.replace(partTodo, '');
partTodo+='\r\n';
}
todoStringArray[todoStringArray.length]=partTodo;
}
}
var beginVcalendar = vCalendarText;
var futureMode = false;
for(var j=0;j<inputTodos.length;j++)
{
todoStringArray.splice(todoStringArray.indexOf(inputTodos[j].vcalendar),1);
if((inputRepeatObj.futureStart== '' && inputRepeatObj.vcalendarHash!=hex_sha256(inputTodos[j].vcalendar)) || inputTodos[j].rec_id!=inputRepeatObj.recurrenceId)
{
var stringUIDcurrent=inputTodos[j].vcalendar.match(vCalendar.pre['contentline_UID']);
if(stringUIDcurrent!=null)
stringUIDcurrent=stringUIDcurrent[0].match(vCalendar.pre['contentline_parse'])[4];
if((inputRepeatObj.deleteMode && inputRepeatObj.vcalendarHash==hex_sha256(inputTodos[j].vcalendar)) || (inputRepeatObj.deleteMode && !inputTodos[j].rec_id && inputRepeatObj.vcalendarUID==stringUIDcurrent) || appleTodoMode)
{
var ruleString=inputTodos[j].vcalendar.match(vCalendar.pre['contentline_RRULE2']);
var origRuleString=ruleString;
origRepeatRule = ruleString;
var exDate=inputTodos[j].start;
var process_elem=vCalendar.tplC['VTcontentline_EXDATE'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
exDate=inputRepeatObj.recurrenceId.parseComnpactISO8601();
if(globalSettings.timezonesupport.value)
sel_option=inputRepeatObj.timezoneTODO;
if(sel_option!='local')
{
var valOffsetFrom=getOffsetByTZ(sel_option, exDate);
var intOffset = valOffsetFrom.getSecondsFromOffset()*-1;
exDate = new Date(exDate.setSeconds(intOffset));
}
else
exDate=new Date(exDate.setSeconds(getLocalOffset(exDate)));
exDate=$.fullCalendar.formatDate(exDate, "yyyyMMdd'T'HHmmss'Z'");
process_elem=process_elem.replace('##:::##AllDay##:::##', vcalendarEscapeValue(''));
process_elem=process_elem.replace('##:::##TZID##:::##','');
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(exDate));
if(inputTodos[j].finalString.length>2);
inputTodos[j].vcalendar=inputTodos[j].vcalendar.replace(ruleString,ruleString+(inputTodos[j].finalString.substring(2,inputTodos[j].finalString.length)));
if(!appleTodoMode)
inputTodos[j].vcalendar=inputTodos[j].vcalendar.replace(ruleString,ruleString+process_elem);
}
else
{
var endPart = (inputTodos[j].vcalendar+'\r\n').match(vCalendar.pre['endVTODO']);
if(endPart!=null)
{
if(inputTodos[j].finalString.length>2)
inputTodos[j].vcalendar=inputTodos[j].vcalendar.replace(endPart[0].substring(0,endPart[0].length-2),(inputTodos[j].finalString)+endPart[0].substring(2,endPart[0].length));
}
}
var origVcalendar = inputTodos[j].vcalendar;
if(appleTodoMode && typeof globalAppleSupport.nextDates[inputTodos[j].id] != 'undefined')
{
var startPart='',endPart='';
if(origVcalendar.match(vCalendar.pre['contentline_DTSTART'])!=null && origVcalendar.match(vCalendar.pre['contentline_DUE'])!=null)
{
startPart = origVcalendar.match(vCalendar.pre['contentline_DTSTART'])[0].match(vCalendar.pre['contentline_parse'])[4];
endPart = origVcalendar.match(vCalendar.pre['contentline_DUE'])[0].match(vCalendar.pre['contentline_parse'])[4];
}
var isUTC=false;
if(globalSettings.timezonesupport.value)
sel_option=inputRepeatObj.timezoneTODO;
if(sel_option=='UTC')
isUTC=true;
var newStart = new Date(globalAppleSupport.nextDates[inputTodos[j].id].getTime());
var valOffsetFrom=getOffsetByTZ(sel_option,newStart );
var intOffset='';
if(typeof globalSessionTimeZone!='undefined' && globalSessionTimeZone!=null && globalSessionTimeZone!='')
intOffset=getOffsetByTZ(globalSessionTimeZone, newStart).getSecondsFromOffset();
else
intOffset=newStart.getTimezoneOffset()*60*-1;
intOffset = valOffsetFrom.getSecondsFromOffset() - intOffset;
newStart.setSeconds(intOffset);
var datetime_to=$.fullCalendar.formatDate(newStart, "yyyyMMdd'T'HHmmss");
inputTodos[j].vcalendar = inputTodos[j].vcalendar.replace(endPart,vcalendarEscapeValue(datetime_to+(isUTC ? 'Z' : '')));
inputTodos[j].vcalendar = inputTodos[j].vcalendar.replace(startPart,vcalendarEscapeValue(datetime_to+(isUTC ? 'Z' : '')));
if(inputTodos[j].after!='')
inputTodos[j].vcalendar = changeRuleForFuture(inputTodos[j], inputTodos[j].after);
origVcalendar = inputTodos[j].vcalendar;
}
if(origVcalendar.indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2))
vCalendarText+=origVcalendar.substring(2,origVcalendar.length);
else if((origVcalendar.indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2)) || (origVcalendar.indexOf('\r\n')!=0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2)) )
vCalendarText+=origVcalendar;
else
vCalendarText+='\r\n'+origVcalendar;
}
else if(inputRepeatObj.futureStart.split(';')[0]!='' && inputRepeatObj.futureStart.split(';')[1]!=inputTodos[j].start && inputRepeatObj.futureStart.split(';')[1]!=inputTodos[j].end)
{
var ruleString=inputTodos[j].vcalendar.match(vCalendar.pre['contentline_RRULE2']);
if(inputTodos[j].finalString.length>2);
inputTodos[j].vcalendar=inputTodos[j].vcalendar.replace(ruleString,ruleString+(inputTodos[j].finalString.substring(2,inputTodos[j].finalString.length)));
if(inputRepeatObj.futureStart.split(';')[0]>1 && inputRepeatObj.vcalendarHash==hex_sha256(inputTodos[j].vcalendar))
inputTodos[j].vcalendar=changeRuleForFuture(inputTodos[j], inputRepeatObj.futureStart.split(';')[0]);
if(inputTodos[j].vcalendar.indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2))
vCalendarText+=inputTodos[j].vcalendar.substring(2,inputTodos[j].vcalendar.length);
else if((inputTodos[j].vcalendar.indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2)) || (inputTodos[j].vcalendar.indexOf('\r\n')!=0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2)) )
vCalendarText+=inputTodos[j].vcalendar;
else
vCalendarText+='\r\n'+inputTodos[j].vcalendar;
futureMode=true;
}
else if(inputRepeatObj.deleteMode && inputRepeatObj.futureStart.split(';')[0]!='' && (inputRepeatObj.futureStart.split(';')[1]==inputTodos[j].start || inputRepeatObj.futureStart.split(';')[1]==inputTodos[j].end))
{
var ruleString=inputTodos[j].vcalendar.match(vCalendar.pre['contentline_RRULE2']);
if(inputTodos[j].finalString.length>2);
inputTodos[j].vcalendar=inputTodos[j].vcalendar.replace(ruleString,ruleString+(inputTodos[j].finalString.substring(2,inputTodos[j].finalString.length)));
if(inputRepeatObj.vcalendarHash==hex_sha256(inputTodos[j].vcalendar))
inputTodos[j].vcalendar=changeRuleForFuture(inputTodos[j], 2);
if(inputTodos[j].vcalendar.indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2))
vCalendarText+=inputTodos[j].vcalendar.substring(2,inputTodos[j].vcalendar.length);
else if((inputTodos[j].vcalendar.indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2)) || (inputTodos[j].vcalendar.indexOf('\r\n')!=0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2)) )
vCalendarText+=inputTodos[j].vcalendar;
else
vCalendarText+='\r\n'+inputTodos[j].vcalendar;
}
else
realTodo=inputTodos[j];
}
vCalendarText=vCalendarText.replace(realTodo.vcalendar,'');
if(!appleTodoMode)
for(var ip=0; ip<todoStringArray.length;ip++)
{
if(todoStringArray[ip].indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2))
vCalendarText+=todoStringArray[ip].substring(2,todoStringArray[ip].length);
else if((todoStringArray[ip].indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2)) || (todoStringArray[ip].indexOf('\r\n')!=0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2)) )
vCalendarText+=todoStringArray[ip];
else
vCalendarText+='\r\n'+todoStringArray[ip];
}
return {
tzArray:tzArray,
tzString:tzString,
isTimeZone:isTimeZone,
origTimezone:origTimezone,
vCalendarText:vCalendarText,
realTodo:realTodo,
sel_option: sel_option,
futureMode:futureMode,
appleTodoMode:appleTodoMode,
newFirst:newFirst,
beginVcalendar:beginVcalendar
};
}
function todoToVcalendar(operation, accountUID, inputUID, inputEtag, delUID, deleteMode)
{
var vtodo=false;
var vCalendarText='',
groupCounter=0;
var repeatHash = 'form';
if(delUID!='')
var rid=delUID.substring(0, delUID.lastIndexOf('/')+1);
else
var rid=inputUID.substring(0, inputUID.lastIndexOf('/')+1);
// vCalendar BEGIN (required by RFC)
if(vCalendar.tplM['VTbegin'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTbegin'][repeatHash][0])!=undefined)
vCalendarText+=vCalendar.tplM['VTbegin'][repeatHash][0];
else
{
process_elem=vCalendar.tplC['VTbegin'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
vCalendarText+=process_elem;
}
// VERSION (required by RFC)
if(vCalendar.tplM['VTcontentline_VERSION'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_VERSION'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_VERSION'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
}
process_elem=process_elem.replace('##:::##version##:::##', '2.0');
vCalendarText+=process_elem;
// CALSCALE
if(vCalendar.tplM['VTcontentline_CALSCALE'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_CALSCALE'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_CALSCALE'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
}
process_elem=process_elem.replace('##:::##calscale##:::##', 'GREGORIAN');
vCalendarText+=process_elem;
var resultTodoObj = getRepeatTodoObject({
rid:rid,
uidTodo:$('#uidTODO').val(),
vcalendarHash: $('#vcalendarHashTODO').val(),
vcalendarUID: $('#vcalendarUIDTODO').val(),
recurrenceId: $('#recurrenceIDTODO').val(),
timezoneTODO: $('#timezoneTODO').val(),
futureStart: $('#futureStartTODO').val(),
deleteMode: deleteMode,
vCalendarText:vCalendarText
});
vCalendarText = resultTodoObj.vCalendarText;
var tzArray=resultTodoObj.tzArray;
var tzString=resultTodoObj.tzString;
var isTimeZone=resultTodoObj.isTimeZone;
var origTimezone =resultTodoObj.origTimezone;
var appleTodoMode=resultTodoObj.appleTodoMode;
var realTodo = resultTodoObj.realTodo;
var newFirst = resultTodoObj.newFirst;
var sel_option = resultTodoObj.sel_option;
//until here will function TODOCLICK
var origEvent='';
if(deleteMode || resultTodoObj.futureMode)
{
if(vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2))
vCalendarText+='\r\n';
if(!isTimeZone && ( appleTodoMode || (resultTodoObj.futureMode && origTimezone!='')))
{
vCalendarText+=origTimezone;
if(vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2))
vCalendarText+='\r\n';
}
// PRODID
if(vCalendar.tplM['VTcontentline_PRODID'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_PRODID'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_PRODID'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
process_elem=process_elem.replace('##:::##value##:::##', '-//Inf-IT//'+globalAppName+' '+globalVersion+'//EN');
vCalendarText+=process_elem;
if(typeof vCalendar.tplM['VTunprocessed'][repeatHash]!='undefined' && vCalendar.tplM['VTunprocessed'][repeatHash]!='' && vCalendar.tplM['VTunprocessed'][repeatHash]!=null)
vCalendarText+=vCalendar.tplM['VTunprocessed'][repeatHash].replace(RegExp('^\r\n'), '');
vCalendar.tplM['VTunprocessed'][repeatHash]=new Array();
// vCalendar END (required by RFC)
if(vCalendar.tplM['VTend'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTend'][repeatHash][0])!=undefined)
vCalendarText+=vCalendar.tplM['VTend'][repeatHash][0];
else
{
process_elem=vCalendar.tplC['VTend'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
vCalendarText+=process_elem;
}
if(deleteMode)
{
var fixedArr = checkAndFixMultipleUID(vCalendarText,false);
var inputS = fixedArr[0];
fixedArr.splice(0,1);
return putVcalendarToCollection(accountUID, inputUID, inputEtag, inputS, delUID,'vtodo',false,deleteMode,fixedArr);
}
else if(resultTodoObj.futureMode)
{
origEvent = vCalendarText;
vCalendarText = resultTodoObj.beginVcalendar;
}
}
var timeZoneAttr='';
if(typeof globalSessionTimeZone!='undefined' && globalSessionTimeZone)
sel_option=globalSessionTimeZone;
var isUTC=false;
var origFirst=vCalendarText;
if(appleTodoMode)
vCalendarText='';
if($('#todo_type').val()!='none')
{
if(globalSettings.timezonesupport.value)
sel_option=$('#timezoneTODO').val();
if(sel_option=='UTC')
{
isUTC=true;
timeZoneAttr='';
}
else if(sel_option=='local')
timeZoneAttr='';
else if(sel_option=='custom')
timeZoneAttr=';'+vcalendarEscapeValue('TZID='+realTodo.timeZone);
else
timeZoneAttr=';'+vcalendarEscapeValue('TZID='+sel_option);
if(vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2))
vCalendarText+='\r\n';
if(globalSettings.rewritetimezonecomponent.value || !vCalendar.tplM['VTunprocessedVTIMEZONE'][repeatHash])
{
if(tzArray.indexOf(sel_option)==-1)
vCalendarText+= buildTimezoneComponent(sel_option);
}
else
vCalendarText+=vCalendar.tplM['VTunprocessedVTIMEZONE'][repeatHash];
}
origFirst+=vCalendarText;
// ---------------------------------------------------------------------------------------------------- //
if(vCalendar.tplM['VTbeginVTODO'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTbeginVTODO'][repeatHash][0])!=undefined)
vCalendarText+=vCalendar.tplM['VTbeginVTODO'][repeatHash][0];
else
{
process_elem=vCalendar.tplC['VTbeginVTODO'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
vCalendarText+=process_elem;
vtodo=true;
}
var d, utc;
d=new Date();
utc=d.getUTCFullYear()+(d.getUTCMonth()+1<10 ? '0': '')+(d.getUTCMonth()+1)+(d.getUTCDate()<10 ? '0': '')+d.getUTCDate()+'T'+(d.getUTCHours()<10 ? '0': '')+d.getUTCHours()+(d.getUTCMinutes()<10 ? '0': '')+d.getUTCMinutes()+(d.getUTCSeconds()<10 ? '0': '')+d.getUTCSeconds()+'Z';
var create=true;
if($('#recurrenceIDTODO').val()=='')
var checkVal='orig';
else
var checkVal=$('#recurrenceIDTODO').val();
var created='';
for(vev in vCalendar.tplM['VTcontentline_CREATED'][repeatHash])
{
if(vev==checkVal)
created=vCalendar.tplM['VTcontentline_CREATED'][repeatHash][vev];
}
if(created!='')
{
process_elem=created;
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_CREATED'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(utc));
}
vCalendarText+=process_elem;
if(vCalendar.tplM['VTcontentline_LM'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_LM'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_LM'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(utc));
vCalendarText+=process_elem;
if(vCalendar.tplM['VTcontentline_DTSTAMP'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_DTSTAMP'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_DTSTAMP'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(utc));
vCalendarText+=process_elem;
// UID (required by RFC)
if(!appleTodoMode && $("#futureStartTODO").val()=='' && (operation!='MOVE_IN'&& operation!='MOVE_OTHER') && vCalendar.tplM['VTcontentline_UID'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_UID'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_UID'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
var newUID=globalEventList.getNewUID();
// it is VERY small probability, that for 2 newly created events the same UID is generated (but not impossible :( ...)
process_elem=process_elem.replace('##:::##uid##:::##', newUID);
vCalendarText+=process_elem;
if(vCalendar.tplM['VTcontentline_SUMMARY'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_SUMMARY'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_SUMMARY'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
if($('#nameTODO').val()=='')
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue("New TODO"));
else
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#nameTODO').val()));
//process_elem=process_elem.replace('##:::##value##:::##',vcalendarEscapeValue('zmena'));
vCalendarText+=process_elem;
if($('#statusTODO').val()!='NONE')
{
//if((value=$('[id="vcalendar_editor"] [data-type="\\%note"]').find('textarea').val())!='')
//{
if(vCalendar.tplM['VTcontentline_STATUS'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_STATUS'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_STATUS'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#statusTODO').val()));
vCalendarText+=process_elem;
}
if($('#percenteCompleteValue').val()!='')
{
if(vCalendar.tplM['VTcontentline_PERCENT-COMPLETE'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_PERCENT-COMPLETE'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_PERCENT-COMPLETE'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#percenteCompleteValue').val()));
vCalendarText+=process_elem;
}
if($('#priority_TODO').val()!='0')
{
if(vCalendar.tplM['VTcontentline_PRIORITY'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_PRIORITY'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_PRIORITY'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#priority_TODO').val()));
vCalendarText+=process_elem;
}
if($('#noteTODO').val()!='')
{
// NOTE
if(vCalendar.tplM['VTcontentline_NOTE'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_NOTE'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_NOTE'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#noteTODO').val()));
vCalendarText+=process_elem;
}
if($('#typeTODO').val()!='')
{
// CLASS
if(vCalendar.tplM['VTcontentline_CLASS'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_CLASS'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_CLASS'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
if(typeof vCalendar.tplM['VTcontentline_CLASS'][repeatHash] =='undefined' || vCalendar.tplM['VTcontentline_CLASS'][repeatHash]==null || vCalendar.tplM['VTcontentline_CLASS'][repeatHash].length==0)
process_elem='';
}
if($('.row_typeTODO').css('display')!='none')
{
process_elem=vCalendar.tplC['VTcontentline_CLASS'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#typeTODO').val().toUpperCase()));
}
vCalendarText+=process_elem;
}
if($('#url_TODO').val()!='')
{
if(vCalendar.tplM['VTcontentline_URL'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_URL'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_URL'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#url_TODO').val()));
vCalendarText+=process_elem;
}
//RFC OPTIONAL
if(vCalendar.tplM['VTcontentline_LOCATION'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_LOCATION'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)','m'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.','\\.'),'mg'),'\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_LOCATION'];
process_elem=process_elem.replace('##:::##group_wd##:::##','');
process_elem=process_elem.replace('##:::##params_wsc##:::##','');
}
if($('#location_TODO').val()!='')
{
process_elem=process_elem.replace('##:::##value##:::##',vcalendarEscapeValue($('#location_TODO').val()));
vCalendarText+=process_elem;
}
if($('#repeat_TODO').val()!='no-repeat')
{
var interval=$("#repeat_interval_detail_TODO").val();
var byDay='';
var isCustom=false;
var monthDay='';
var bymonth='';
var wkst='';
if(interval==1 || interval=='')
interval='';
else interval=";INTERVAL="+$("#repeat_interval_detail_TODO").val();
var frequency=$('#repeat_TODO').val();
if(frequency=='TWO_WEEKLY')
{
frequency='WEEKLY';
interval=";INTERVAL="+2;
}
else if(frequency=='BUSINESS')
{
frequency='WEEKLY';
byDay=';BYDAY=';
if(globalSettings.weekenddays.value.length>0)
{
for(var i=0;i<7;i++)
if(globalSettings.weekenddays.value.indexOf(i)==-1)
byDay+=i+',';
byDay=byDay.substring(0,byDay.length-1);
byDay=byDay.replace(1,'MO').replace(2,'TU').replace(3,'WE').replace(4,'TH').replace(5,'FR').replace(6,'SA').replace(0,'SU');
}
else
{
byDay='SA,SU';
}
interval='';
}
else if(frequency=='WEEKEND')
{
frequency='WEEKLY';
byDay=';BYDAY=';
if(globalSettings.weekenddays.value.length>0)
{
for(var i=0;i<globalSettings.weekenddays.value.length;i++)
byDay+=globalSettings.weekenddays.value[i]+',';
byDay=byDay.substring(0,byDay.length-1);
byDay=byDay.replace(1,'MO').replace(2,'TU').replace(3,'WE').replace(4,'TH').replace(5,'FR').replace(6,'SA').replace(0,'SU');
}
else
{
byDay='SA,SU';
}
interval='';
}
else if(frequency=='CUSTOM_WEEKLY')
{
frequency='WEEKLY';
var byDayArray=$('#week_custom_TODO .customTable td.selected');
if(byDayArray.length>0)
{
byDay=';BYDAY=';
for(var ri=0;ri<byDayArray.length;ri++)
byDay+=$(byDayArray[ri]).attr('data-type')+',';
byDay=byDay.substring(0,byDay.length-1);
byDay=byDay.replace(1,'MO').replace(2,'TU').replace(3,'WE').replace(4,'TH').replace(5,'FR').replace(6,'SA').replace(0,'SU');
if(globalSettings.mozillasupport.value==null || !globalSettings.mozillasupport.value)
if(realTodo!='')
{
if(realTodo.wkst!='')
wkst=';WKST='+realTodo.wkst.replace(1,'MO').replace(2,'TU').replace(3,'WE').replace(4,'TH').replace(5,'FR').replace(6,'SA').replace(0,'SU');
}
else
wkst=';WKST='+globalSettings.datepickerfirstdayofweek.value.toString().replace(1,'MO').replace(2,'TU').replace(3,'WE').replace(4,'TH').replace(5,'FR').replace(6,'SA').replace(0,'SU');
}
}
else if(frequency=='CUSTOM_MONTHLY')
{
frequency='MONTHLY';
var byDayFirstPart='';
var monthCustomOption = $('#repeat_month_custom_select_TODO').val();
if(monthCustomOption!='custom' && $('#repeat_month_custom_select2_TODO').val()!='DAY')
{
if(monthCustomOption!='')
byDay=';BYDAY=';
switch(monthCustomOption)
{
case 'every':
byDayFirstPart='';
break;
case 'first':
byDayFirstPart='1';
break;
case 'second':
byDayFirstPart='2';
break;
case 'third':
byDayFirstPart='3';
break;
case 'fourth':
byDayFirstPart='4';
break;
case 'fifth':
byDayFirstPart='5';
break;
case 'last':
byDayFirstPart='-1';
break;
default:
byDayFirstPart='';
break;
}
byDay+= byDayFirstPart+$('#repeat_month_custom_select2_TODO').val();
}
else if(monthCustomOption!='custom' && $('#repeat_month_custom_select2_TODO').val()=='DAY')
{
byDay='';
switch(monthCustomOption)
{
case 'every':
monthDay=';BYMONTHDAY=';
for(var p=1;p<32;p++)
monthDay+=p+',';
monthDay=monthDay.substring(0,monthDay.length-1);
break;
case 'first':
monthDay=';BYMONTHDAY=1';
break;
case 'second':
monthDay=';BYMONTHDAY=2';
break;
case 'third':
monthDay=';BYMONTHDAY=3';
break;
case 'fourth':
monthDay=';BYMONTHDAY=4';
break;
case 'fifth':
monthDay=';BYMONTHDAY=5';
break;
case 'last':
monthDay=';BYMONTHDAY=-1';
break;
default:
byDayFirstPart='';
monthDay='';
break;
}
}
else
{
var monthDayArray = $('#month_custom2_TODO .selected');
if(monthDayArray.length>0)
{
monthDay=';BYMONTHDAY=';
for(var ri=0;ri<monthDayArray.length;ri++)
monthDay+=$(monthDayArray[ri]).attr('data-type')+',';
monthDay=monthDay.substring(0,monthDay.length-1);
}
}
}
else if(frequency=='CUSTOM_YEARLY')
{
frequency='YEARLY';
var byDayFirstPart='';
var monthCustomOption = $('#repeat_year_custom_select1_TODO').val();
var monthArray = $('#year_custom3_TODO .selected');
if(monthArray.length>0)
{
bymonth=';BYMONTH=';
for(var ri=0;ri<monthArray.length;ri++)
{
var val = parseInt($(monthArray[ri]).attr('data-type'),10);
if(!isNaN(val))
bymonth+=(val+1)+',';
}
bymonth=bymonth.substring(0,bymonth.length-1);
}
if(monthCustomOption!='custom' && $('#repeat_year_custom_select2_TODO').val()!='DAY')
{
if(monthCustomOption!='')
byDay=';BYDAY=';
switch(monthCustomOption)
{
case 'every':
byDayFirstPart='';
break;
case 'first':
byDayFirstPart='1';
break;
case 'second':
byDayFirstPart='2';
break;
case 'third':
byDayFirstPart='3';
break;
case 'fourth':
byDayFirstPart='4';
break;
case 'fifth':
byDayFirstPart='5';
break;
case 'last':
byDayFirstPart='-1';
break;
default:
byDayFirstPart='';
break;
}
byDay+= byDayFirstPart+$('#repeat_month_custom_select2_TODO').val();
}
else if(monthCustomOption!='custom' && $('#repeat_year_custom_select2_TODO').val()=='DAY')
{
byDay='';
switch(monthCustomOption)
{
case 'every':
monthDay=';BYMONTHDAY=';
for(var p=1;p<32;p++)
monthDay+=p+',';
monthDay=monthDay.substring(0,monthDay.length-1);
break;
case 'first':
monthDay=';BYMONTHDAY=1';
break;
case 'second':
monthDay=';BYMONTHDAY=2';
break;
case 'third':
monthDay=';BYMONTHDAY=3';
break;
case 'fourth':
monthDay=';BYMONTHDAY=4';
break;
case 'fifth':
monthDay=';BYMONTHDAY=5';
break;
case 'last':
monthDay=';BYMONTHDAY=-1';
break;
default:
byDayFirstPart='';
monthDay='';
break;
}
}
else
{
var monthDayArray = $('#year_custom1_TODO .selected');
if(monthDayArray.length>0)
{
monthDay=';BYMONTHDAY=';
for(var ri=0;ri<monthDayArray.length;ri++)
monthDay+=$(monthDayArray[ri]).attr('data-type')+',';
monthDay=monthDay.substring(0,monthDay.length-1);
}
}
}
else if($('#repeat_TODO option:selected').attr('data-type')=="custom_repeat")
isCustom=true;
if(vCalendar.tplM['VTcontentline_RRULE'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_RRULE'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_RRULE'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
if(!isCustom)
{
if($('#repeat_end_details_TODO').val()=="on_date")
{
var dateUntil=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#repeat_end_date_TODO').val());
var datetime_until='';
if($('#todo_type').val()=='start')
var tForR=new Date(Date.parse("01/02/1990, "+$('#time_fromTODO').val()));
else
var tForR=new Date(Date.parse("01/02/1990, "+$('#time_toTODO').val()));
dateUntil.setHours(tForR.getHours());
dateUntil.setMinutes(tForR.getMinutes());
dateUntil.setSeconds(tForR.getSeconds());
if(globalSettings.timezonesupport.value && sel_option in timezones)
var valOffsetFrom=getOffsetByTZ(sel_option, dateUntil);
if(valOffsetFrom)
{
var intOffset=valOffsetFrom.getSecondsFromOffset()*1000*-1;
dateUntil.setTime(dateUntil.getTime()+intOffset);
}
datetime_until=$.fullCalendar.formatDate(dateUntil, "yyyyMMdd'T'HHmmss'Z'");
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue("FREQ="+frequency)+interval+";UNTIL="+datetime_until+bymonth+monthDay+byDay+wkst);
}
else if($('#repeat_end_details_TODO').val()=="after")
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue("FREQ="+frequency)+interval+";COUNT="+(parseInt($('#repeat_end_after_TODO').val()))+bymonth+monthDay+byDay+wkst);
else
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue("FREQ="+frequency)+interval+bymonth+monthDay+byDay+wkst);
}
else
process_elem=process_elem.replace('##:::##value##:::##', $('#repeat_TODO').val());
vCalendarText+=process_elem;
if(realTodo.repeatStart || realTodo.repeatEnd)
{
if(realTodo.repeatStart)
var a=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_fromTODO').val());
else
var a=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_toTODO').val());
if(realTodo.repeatStart)
var repeatStart=realTodo.repeatStart;
else
var repeatStart=realTodo.repeatEnd;
var b=new Date(1970,1,1,0,0,0);
if(realTodo.repeatStart)
b=new Date(Date.parse("01/02/1990, "+$('#time_fromTODO').val() ));
else
b=new Date(Date.parse("01/02/1990, "+$('#time_toTODO').val() ));
a.setHours(b.getHours());
a.setMinutes(b.getMinutes());
a.setSeconds(b.getSeconds());
var offsetDate=a-repeatStart;
for(var iter in vCalendar.tplM['VTcontentline_EXDATE'][repeatHash])
{
if(isNaN(iter))
continue;
var exStr=('\r\n'+vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][iter]).match(vCalendar.pre['contentline_parse']);
var exVal=exStr[4].parseComnpactISO8601();
if(exVal)
{
if(exStr[4].indexOf('T')==-1)
{
//HERE
if(realTodo.repeatStart)
var timePart = new Date(Date.parse("01/02/1990, "+$('#time_fromTODO').val() ));
else
var timePart = new Date(Date.parse("01/02/1990, "+$('#time_toTODO').val() ));
var time_from = $.fullCalendar.formatDate(b, 'HHmmss');
exVal = (exStr[4] + 'T' + time_from).parseComnpactISO8601();
if(sel_option!='local')
{
var valOffsetFrom=getOffsetByTZ(sel_option, exVal);
var intOffset = valOffsetFrom.getSecondsFromOffset()*-1;
exVal = new Date(exVal.setSeconds(intOffset));
}
}
else if(exStr[4].indexOf('T')!=-1)
{
if(sel_option!='local')
{
var valOffsetFrom=getOffsetByTZ(sel_option, exVal);
var origValOffset = getOffsetByTZ(realTodo.timeZone, exVal);
var intOffset = (valOffsetFrom.getSecondsFromOffset() - origValOffset.getSecondsFromOffset())*-1;
exVal = new Date(exVal.setSeconds(intOffset));
}
else
{
var origValOffset = getOffsetByTZ(realTodo.timeZone, exVal);
exVal = new Date(exVal.setSeconds(origValOffset.getSecondsFromOffset()));
}
}
var value=new Date(exVal.getTime()+offsetDate);
process_elem=vCalendar.tplC['VTcontentline_EXDATE'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
newValue=$.fullCalendar.formatDate(value, "yyyyMMdd'T'HHmmss")+(sel_option!='local' ? 'Z' : '');
process_elem=process_elem.replace('##:::##AllDay##:::##', vcalendarEscapeValue(''));
process_elem=process_elem.replace('##:::##TZID##:::##', vcalendarEscapeValue(''));
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(newValue));
vCalendarText+=process_elem;
}
}
}
}
//RECURRENCE-ID
if($('#recurrenceIDTODO').val() && !appleTodoMode)
{
if(vCalendar.tplM['VTcontentline_REC_ID'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_REC_ID'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_REC_ID'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
var rec_id=$('#recurrenceIDTODO').val()
if(rec_id.indexOf('T')==-1)
{
process_elem=process_elem.replace('##:::##AllDay##:::##', ';'+vcalendarEscapeValue('VALUE=DATE'));
process_elem=process_elem.replace('##:::##TZID##:::##', vcalendarEscapeValue(''));
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(rec_id));
}
else
{
process_elem=process_elem.replace('##:::##AllDay##:::##', vcalendarEscapeValue(''));
process_elem=process_elem.replace('##:::##TZID##:::##',timeZoneAttr);
if(isUTC && rec_id.charAt(rec_id.length-1)!='Z')
rec_id+='Z';
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(rec_id));
}
vCalendarText+=process_elem;
}
var a=$('#todoDetailsTable').find("tr[data-id]");
var lastDataId=0;
for(var i=0;i<a[a.length-1].attributes.length;i++)
if(a[a.length-1].attributes[i].nodeName=="data-id")
{
lastDataId=a[a.length-1].attributes[i].value;
break;
}
var alarmIterator=0;
var alarmUniqueArray = new Array();
for(var t=0;t<lastDataId;t++)
{
if($(".alertTODO[data-id="+(t+1)+"]").length>0)
{
var alarmText = '';
if($(".alertTODO[data-id="+(t+1)+"]").val()!='none')
{
if(vCalendar.tplM['VTbeginVALARM'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTbeginVALARM'][repeatHash][0])!=undefined)
alarmText+=vCalendar.tplM['VTbeginVALARM'][repeatHash][0];
else
{
process_elem=vCalendar.tplC['VTbeginVALARM'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
alarmText+=process_elem;
vevent=true;
}
if($(".alertTODO[data-id="+(t+1)+"]").val()=='message')
{
if($(".alert_message_detailsTODO[data-id="+(t+1)+"]").val()=='on_date')
{
if(vCalendar.tplM['VTcontentline_TRIGGER'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_TRIGGER'][repeatHash][0])!=undefined)
{
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_TRIGGER'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$(".message_date_inputTODO[data-id="+(t+1)+"]").val());
var datetime_to=$.fullCalendar.formatDate(dateTo, 'yyyy-MM-dd');
var aDate=new Date(Date.parse("01/02/1990, "+$(".message_time_inputTODO[data-id="+(t+1)+"]").val()));
var time_to=$.fullCalendar.formatDate(aDate, 'HH:mm:ss');
var alarmDT=$.fullCalendar.parseDate(datetime_to+'T'+time_to);
if(globalSettings.timezonesupport.value)
sel_option=$('#timezoneTODO').val();
if($('.timezone_rowTODO').css('display')=='none')
sel_option='local';
if(sel_option!='local')
{
var valOffsetFrom=getOffsetByTZ(sel_option, alarmDT);
var intOffset = valOffsetFrom.getSecondsFromOffset()*-1;
alarmDT = new Date(alarmDT.setSeconds(intOffset));
}
else
{
var intOffset = getLocalOffset(alarmDT);
alarmDT = new Date(alarmDT.setSeconds(intOffset));
}
var newValue=$.fullCalendar.formatDate(alarmDT, "yyyyMMdd'T'HHmmss")+'Z';
process_elem=process_elem.replace('##:::##VALUE=DATE-TIME##:::##', ';VALUE=DATE-TIME');
process_elem=process_elem.replace('##:::##VALUE=DURATION##:::##', '');
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(newValue));
alarmText+=process_elem;
}
else
{
var duration='';
var before_after=$(".before_after_inputTODO[data-id="+(t+1)+"]").val();
if($(".alert_message_detailsTODO[data-id="+(t+1)+"]").val()=='minutes_before')
duration="-PT"+before_after+"M";
if($(".alert_message_detailsTODO[data-id="+(t+1)+"]").val()=='hours_before')
duration="-PT"+before_after+"H";
if($(".alert_message_detailsTODO[data-id="+(t+1)+"]").val()=='days_before')
duration="-P"+before_after+"D";
if($(".alert_message_detailsTODO[data-id="+(t+1)+"]").val()=='weeks_before')
duration="-P"+before_after+"W";
if($(".alert_message_detailsTODO[data-id="+(t+1)+"]").val()=='seconds_before')
duration="-PT"+before_after+"S";
if($(".alert_message_detailsTODO[data-id="+(t+1)+"]").val()=='minutes_after')
duration="PT"+before_after+"M";
if($(".alert_message_detailsTODO[data-id="+(t+1)+"]").val()=='hours_after')
duration="PT"+before_after+"H";
if($(".alert_message_detailsTODO[data-id="+(t+1)+"]").val()=='days_after')
duration="P"+before_after+"D";
if($(".alert_message_detailsTODO[data-id="+(t+1)+"]").val()=='weeks_after')
duration="P"+before_after+"W";
if($(".alert_message_detailsTODO[data-id="+(t+1)+"]").val()=='seconds_after')
duration="PT"+before_after+"S";
if(vCalendar.tplM['VTcontentline_TRIGGER'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_TRIGGER'][repeatHash][0])!=undefined)
{
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_TRIGGER'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
process_elem=process_elem.replace('##:::##VALUE=DATE-TIME##:::##', '');
process_elem=process_elem.replace('##:::##VALUE=DURATION##:::##', ';VALUE=DURATION');
process_elem=process_elem.replace('##:::##value##:::##', duration);
alarmText+=process_elem;
}
if(vCalendar.tplM['VTcontentline_ACTION'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_ACTION'][repeatHash][0])!=undefined)
{
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_ACTION'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue('DISPLAY'));
alarmText+=process_elem;
if(vCalendar.tplM['VTcontentline_DESCRIPTION']!=null && (process_elem=vCalendar.tplM['VTcontentline_DESCRIPTION'][0])!=undefined)
{
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_DESCRIPTION'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue('Reminder'));
alarmText+=process_elem;
}
if(typeof vCalendar.tplM['VTunprocessedVALARM'][repeatHash]!='undefined' && vCalendar.tplM['VTunprocessedVALARM'][repeatHash]!='' && vCalendar.tplM['VTunprocessedVALARM'][repeatHash]!=null)
{
if(vCalendar.tplM['VTunprocessedVALARM'][repeatHash][t]!=undefined)
{
tmp=vCalendar.tplM['VTunprocessedVALARM'][repeatHash][t].replace(RegExp('^\r\n'), '').replace(RegExp('\r\n$'), '');
if(tmp.indexOf('\r\n')==0)
tmp=tmp.substring(2, tmp.length);
if(tmp.lastIndexOf('\r\n')!=(tmp.length-2))
tmp+='\r\n';
alarmText+=tmp;
}
}
if(vCalendar.tplM['VTendVALARM'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTendVALARM'][repeatHash][0])!=undefined)
alarmText+=vCalendar.tplM['VTendVALARM'][repeatHash][0];
else
{
process_elem=vCalendar.tplC['VTendVALARM'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
alarmText+=process_elem;
}
if(alarmUniqueArray.indexOf(alarmText)==-1)
{
alarmUniqueArray.push(alarmText);
vCalendarText+=alarmText;
}
}
}
}
if($('#todo_type').val()=='start' || $('#todo_type').val()=='due' || $('#todo_type').val()=='both')
{
if($('#date_fromTODO').val()=='' && $('#date_toTODO').val()=='')
{
alert("Not enough data!");
return false;
}
if(($('#todo_type').val()=='start' || ($('#todo_type').val()=='both' && !appleTodoMode)) && $('#date_fromTODO').val()!='')
{
if(vCalendar.tplM['VTcontentline_E_DTSTART'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_E_DTSTART'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_E_DTSTART'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
var dateFrom=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_fromTODO').val());
var datetime_from=$.fullCalendar.formatDate(dateFrom, 'yyyyMMdd');
var timeFrom=new Date(Date.parse("01/02/1990, "+$('#time_fromTODO').val()));
var time_from=((timeFrom.getHours())<10 ? '0'+(timeFrom.getHours()): (timeFrom.getHours()))+''+((timeFrom.getMinutes())<10 ? '0'+(timeFrom.getMinutes()): (timeFrom.getMinutes()))+'00';
process_elem=process_elem.replace('##:::##AllDay##:::##', vcalendarEscapeValue(''));
process_elem=process_elem.replace('##:::##TZID##:::##', timeZoneAttr);
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(datetime_from+'T'+time_from+(isUTC ? 'Z' : '')));
if(appleTodoMode)
{
var process_elem2 = '';
if(vCalendar.tplM['VTcontentline_DUE'][repeatHash]!=null && (process_elem2=vCalendar.tplM['VTcontentline_DUE'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem2).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem2=('\r\n'+process_elem2).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem2=vCalendar.tplC['VTcontentline_DUE'];
process_elem2=process_elem2.replace('##:::##group_wd##:::##', '');
process_elem2=process_elem2.replace('##:::##params_wsc##:::##', '');
}
process_elem2=process_elem2.replace('##:::##AllDay##:::##', vcalendarEscapeValue(''));
process_elem2=process_elem2.replace('##:::##TZID##:::##',timeZoneAttr);
process_elem2=process_elem2.replace('##:::##value##:::##', vcalendarEscapeValue(datetime_from+'T'+time_from+(isUTC ? 'Z' : '')));
vCalendarText+=process_elem2;
}
vCalendarText+=process_elem;
}
if(($('#todo_type').val()=='due' || $('#todo_type').val()=='both') && $('#date_toTODO').val()!='')
{
if(vCalendar.tplM['VTcontentline_DUE'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_DUE'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_DUE'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$('#date_toTODO').val());
var datetime_to=$.fullCalendar.formatDate(dateTo, 'yyyyMMdd');
var timeTo=new Date(Date.parse("01/02/1990, "+$('#time_toTODO').val()));
var time_to=((timeTo.getHours())<10 ? '0'+(timeTo.getHours()): (timeTo.getHours()))+''+((timeTo.getMinutes())<10 ? '0'+(timeTo.getMinutes()): (timeTo.getMinutes()))+'00';
process_elem=process_elem.replace('##:::##AllDay##:::##', vcalendarEscapeValue(''));
process_elem=process_elem.replace('##:::##TZID##:::##',timeZoneAttr);
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(datetime_to+'T'+time_to+(isUTC ? 'Z' : '')));
if(globalSettings.appleremindersmode.value)
{
var process_elem2 = '';
if(vCalendar.tplM['VTcontentline_E_DTSTART'][repeatHash]!=null && (process_elem2=vCalendar.tplM['VTcontentline_E_DTSTART'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem2).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem2=('\r\n'+process_elem2).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem2=vCalendar.tplC['VTcontentline_E_DTSTART'];
process_elem2=process_elem2.replace('##:::##group_wd##:::##', '');
process_elem2=process_elem2.replace('##:::##params_wsc##:::##', '');
}
process_elem2=process_elem2.replace('##:::##AllDay##:::##', vcalendarEscapeValue(''));
process_elem2=process_elem2.replace('##:::##TZID##:::##',timeZoneAttr);
process_elem2=process_elem2.replace('##:::##value##:::##', vcalendarEscapeValue(datetime_to+'T'+time_to+(isUTC ? 'Z' : '')));
vCalendarText+=process_elem2;
}
vCalendarText+=process_elem;
}
}
if(realTodo!='')
{
if(realTodo.type!='')
{
if(realTodo.repeatStart)
{
var a=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_fromTODO').val());
var b=new Date(Date.parse("01/02/1990, "+$('#time_fromTODO').val() ));
}
else if(realTodo.repeatEnd)
{
var a=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_toTODO').val());
var b=new Date(Date.parse("01/02/1990, "+$('#time_toTODO').val() ));
}
if(realTodo.repeatStart)
var repeatStart=realTodo.repeatStart;
else if(realTodo.repeatEnd)
var repeatEnd=realTodo.repeatEnd;
a.setHours(b.getHours());
a.setMinutes(b.getMinutes());
a.setSeconds(b.getSeconds());
var changeDate=new Date(a.getTime());
var offsetDate=0;
if(realTodo.repeatStart)
offsetDate=changeDate-repeatStart;
else if(realTodo.repeatEnd)
offsetDate=changeDate-repeatEnd;
var realEventUID=realTodo.vcalendar.match(vCalendar.pre['contentline_UID']);
if(realEventUID!=null)
realEventUID=realEventUID[0].match(vCalendar.pre['contentline_parse'])[4];
if(offsetDate!=0)
{
var vcalendarOrig=vCalendarText;
var eventArray=new Array(),backupEventArray= new Array();
while(vcalendarOrig.match(vCalendar.pre['vtodo'])!=null)
{
if(vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:VTODO')-2, vcalendarOrig.indexOf('BEGIN:VTODO'))=='\r\n')
{
var partEvent=vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:VTODO')-2,vcalendarOrig.indexOf('END:VTODO')+'END:VTODO'.length);
vcalendarOrig=vcalendarOrig.replace(partEvent, '');
}
else
{
var partEvent=vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:VTODO'),vcalendarOrig.indexOf('END:VTODO')+'END:VTODO'.length);
vcalendarOrig=vcalendarOrig.replace(partEvent, '');
partEvent+='\r\n';
}
eventArray[eventArray.length]=partEvent;
backupEventArray[backupEventArray.length]=partEvent;
}
if(eventArray.length==0)
console.log("Error: '"+inputUID+"': unable to parse vTodo");
for(var it=0;it<eventArray.length;it++)
{
var findUid=eventArray[it].match(vCalendar.pre['contentline_UID']);
if(findUid!=null)
{
if(findUid[0].match(vCalendar.pre['contentline_parse'])[4]!=realEventUID)
continue;
}
var findRec=eventArray[it].match(vCalendar.pre['contentline_RECURRENCE_ID']);
if(findRec!=null)
{
var parsed=findRec[0].match(vCalendar.pre['contentline_parse']);
process_elem=vCalendar.tplC['VTcontentline_REC_ID'];
process_elem=process_elem.replace('##:::##group_wd##:::##', parsed[1]);
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
var value=parsed[4].parseComnpactISO8601();
if(value)
{
value=new Date(value.getTime()+offsetDate)
var newValue=$.fullCalendar.formatDate(value, "yyyyMMdd'T'HHmmss");
if(isUTC)
newValue+='Z';
process_elem=process_elem.replace('##:::##AllDay##:::##', vcalendarEscapeValue(''));
process_elem=process_elem.replace('##:::##TZID##:::##', timeZoneAttr);
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(newValue));
eventArray[it]=eventArray[it].replace(findRec[0],'\r\n'+process_elem);
}
}
vCalendarText=vCalendarText.replace(backupEventArray[it],eventArray[it]);
}
}
}
}
if($('.completedOnTr').css('display')!='none')
{
if(vCalendar.tplM['VTcontentline_COMPLETED'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_COMPLETED'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_COMPLETED'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
if($('.completedOnTr .date').val()!='' && $('.completedOnTr .time').val()!='')
{
var completedDate=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('.completedOnTr .date').val());
var timeCompleted=new Date(Date.parse("01/02/1990, "+$('#completedOnTime').val()));
var datetime_completed=$.fullCalendar.parseDate($.fullCalendar.formatDate(completedDate, "yyyy'-'MM'-'dd")+'T'+$.fullCalendar.formatDate(timeCompleted, "HH':'mm'-'ss"));
if(globalSettings.timezonesupport.value)
sel_option=$('#timezoneTODO').val();
if($('.timezone_rowTODO').css('display')=='none')
sel_option='local';
if(sel_option!='local')
{
var valOffsetFrom=getOffsetByTZ(sel_option, datetime_completed);
var intOffset = valOffsetFrom.getSecondsFromOffset()*-1;
datetime_completed = new Date(datetime_completed.setSeconds(intOffset));
}
var newValue=$.fullCalendar.formatDate(datetime_completed, "yyyyMMdd'T'HHmmss")+'Z';
process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(newValue));
vCalendarText+=process_elem;
}
}
if(appleTodoMode)
{
if(vCalendarText.indexOf('\r\n')==0 && newFirst.lastIndexOf('\r\n')==(newFirst.length-2))
newFirst+=vCalendarText.substring(2,vCalendarText.length);
else if((vCalendarText.indexOf('\r\n')==0 && newFirst.lastIndexOf('\r\n')!=(newFirst.length-2)) || (vCalendarText.indexOf('\r\n')!=0 && newFirst.lastIndexOf('\r\n')==(newFirst.length-2)) )
newFirst+=vCalendarText;
else
newFirst+='\r\n'+vCalendarText;
}
if($('#recurrenceIDTODO').val()=='')
var checkVal='orig';
else
var checkVal=$('#recurrenceIDTODO').val();
if(typeof vCalendar.tplM['VTunprocessedVTODO'][repeatHash]!='undefined' && vCalendar.tplM['VTunprocessedVTODO'][repeatHash]!=null)
{
for(vev in vCalendar.tplM['VTunprocessedVTODO'][repeatHash])
if(vev==checkVal)
vCalendarText+=vCalendar.tplM['VTunprocessedVTODO'][repeatHash][vev].replace(RegExp('^\r\n'), '');
}
if(appleTodoMode)
vCalendarText = '';
if(vCalendar.tplM['VTendVTODO'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTendVTODO'][repeatHash][0])!=undefined)
{
if(!appleTodoMode)
vCalendarText+=vCalendar.tplM['VTendVTODO'][repeatHash][0];
else
newFirst+=vCalendar.tplM['VTendVTODO'][repeatHash][0];
}
else
{
process_elem=vCalendar.tplC['VTendVTODO'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
if(!appleTodoMode)
vCalendarText+=process_elem;
else
newFirst+=process_elem;
}
// PRODID
if(vCalendar.tplM['VTcontentline_PRODID'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTcontentline_PRODID'][repeatHash][0])!=undefined)
{
// replace the object and related objects' group names (+ append the related objects after the processed)
parsed=('\r\n'+process_elem).match(RegExp('\r\n((?:'+vCalendar.re['group']+'\\.)?)', 'm'));
if(parsed[1]!='') // if group is present, replace the object and related objects' group names
process_elem=('\r\n'+process_elem).replace(RegExp('\r\n'+parsed[1].replace('.', '\\.'), 'mg'), '\r\nitem'+(groupCounter++)+'.').substring(2);
}
else
{
process_elem=vCalendar.tplC['VTcontentline_PRODID'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
}
process_elem=process_elem.replace('##:::##value##:::##', '-//Inf-IT//'+globalAppName+' '+globalVersion+'//EN');
vCalendarText+=process_elem;
if(typeof vCalendar.tplM['VTunprocessed'][repeatHash]!='undefined' && vCalendar.tplM['VTunprocessed'][repeatHash]!='' && vCalendar.tplM['VTunprocessed'][repeatHash]!=null)
{
if(!appleTodoMode)
vCalendarText+=vCalendar.tplM['VTunprocessed'][repeatHash].replace(RegExp('^\r\n'), '');
else
origFirst+=vCalendar.tplM['VTunprocessed'][repeatHash].replace(RegExp('^\r\n'), '');;
}
vCalendar.tplM['VTunprocessed'][repeatHash]=new Array();
// vCalendar END (required by RFC)
if(vCalendar.tplM['VTend'][repeatHash]!=null && (process_elem=vCalendar.tplM['VTend'][repeatHash][0])!=undefined)
vCalendarText+=vCalendar.tplM['VTend'][repeatHash][0];
else
{
process_elem=vCalendar.tplC['VTend'];
process_elem=process_elem.replace('##:::##group_wd##:::##', '');
vCalendarText+=process_elem;
}
var textArray = new Array();
if(appleTodoMode)
{
newFirst += vCalendarText;
if(origFirst.lastIndexOf('\r\n')!=(origFirst.length-2))
origFirst += '\r\n';
origFirst += vCalendarText;
var fixed = checkAndFixMultipleUID(newFirst,false);
if(fixed.length==1)
textArray[textArray.length]=origFirst;
else
textArray=fixed;
vCalendarText = newFirst;
}
else if(resultTodoObj.futureMode && origEvent!='')
{
var fixed = checkAndFixMultipleUID(origEvent,false);
if(fixed.length==1)
textArray[textArray.length]=origEvent;
else
textArray=fixed;
}
var fixedArr = checkAndFixMultipleUID(vCalendarText,false);
fixedArr = $.merge(textArray,fixedArr);
var inputS = fixedArr[0];
fixedArr.splice(0,1);
if(operation=='MOVE_IN')
return moveVcalendarToCollection(accountUID, inputUID, inputEtag, inputS, delUID, 'vtodo', false, deleteMode, fixedArr);
else
return putVcalendarToCollection(accountUID, inputUID, inputEtag, inputS, delUID,'vtodo',false,deleteMode,fixedArr);
}
function fullVcalendarToTodoData(inputEvent, formMode)
{
var vcalendar='';
if(formMode)
var repeatHash = 'form';
else
var repeatHash = inputEvent.repeatHash;
CalDAVeditor_cleanup(repeatHash);
var rid=inputEvent.id.substring(0, inputEvent.id.lastIndexOf('/')+1);
if(rid)
if(globalEventList.todos[rid][inputEvent.id].uid!=undefined)
vcalendar=globalEventList.todos[rid][inputEvent.id].vcalendar;
if(!vcalendar)
return false;
var vcalendar_full=vcalendar.split('\r\n');
if((parsed=('\r\n'+vcalendar_full[0]+'\r\n').match(vCalendar.pre['contentline_parse']))==null)
return false;
//BEGIN, END VCALENDAR
vCalendar.tplM['VTbegin'][repeatHash]=new Array();
vCalendar.tplM['VTbegin'][repeatHash][0]=vCalendar.tplC['VTbegin'].replace(/##:::##group_wd##:::##/g, vcalendar_begin_group=parsed[1]);
// parsed (contentline_parse)=[1]->"group.", [2]->"name", [3]->";param;param", [4]->"value"
if((parsed=('\r\n'+vcalendar_full[vcalendar_full.length-2]+'\r\n').match(vCalendar.pre['contentline_parse']))==null)
return false;
// values not directly supported by the editor (old values are kept intact)
vCalendar.tplM['VTend'][repeatHash]=new Array();
vCalendar.tplM['VTend'][repeatHash][0]=vCalendar.tplC['VTend'].replace(/##:::##group_wd##:::##/g, vcalendar_end_group=parsed[1]);
if(vcalendar_begin_group!=vcalendar_end_group)
return false; // the vCalendar BEGIN and END "group" are different
// remove the vCalendar BEGIN and END
vcalendar='\r\n'+vcalendar_full.slice(1, vcalendar_full.length-2).join('\r\n')+'\r\n';
//FIX TIMEZONE
var beginTimeZone=vcalendar.indexOf('BEGIN:VTIMEZONE');
var startEndTimeZone=vcalendar.indexOf('END:VTIMEZONE');
var endTimeZone=0;
var vTimeZone='';
while(beginTimeZone!=-1 && startEndTimeZone!=-1)
{
for(i=(startEndTimeZone+2);i<vcalendar.length;i++)
{
if(vcalendar.charAt(i)=='\n')
{
endTimeZone=i+1;
break;
}
}
vTimeZone=vcalendar.substring(beginTimeZone, endTimeZone);
vcalendar=vcalendar.substring(0, beginTimeZone)+vcalendar.substring(endTimeZone, vcalendar.length);
beginTimeZone=vcalendar.indexOf('BEGIN:VTIMEZONE');
startEndTimeZone=vcalendar.indexOf('END:VTIMEZONE');
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_VERSION']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
version=vcalendarUnescapeValue(parsed[4]);
vCalendar.tplM['VTcontentline_VERSION'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_VERSION'][repeatHash][0]=vCalendar.tplC['VTcontentline_VERSION'];
vCalendar.tplM['VTcontentline_VERSION'][repeatHash][0]=vCalendar.tplM['VTcontentline_VERSION'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_VERSION'][repeatHash][0]=vCalendar.tplM['VTcontentline_VERSION'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vcalendar=vcalendar.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vcalendar.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_VERSION'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vcalendar=vcalendar.replace(vcalendar_element_related[0], '\r\n');
}
}
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_CALSCALE']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
version=vcalendarUnescapeValue(parsed[4]);
vCalendar.tplM['VTcontentline_CALSCALE'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_CALSCALE'][repeatHash][0]=vCalendar.tplC['VTcontentline_CALSCALE'];
vCalendar.tplM['VTcontentline_CALSCALE'][repeatHash][0]=vCalendar.tplM['VTcontentline_CALSCALE'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_CALSCALE'][repeatHash][0]=vCalendar.tplM['VTcontentline_CALSCALE'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vcalendar=vcalendar.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vcalendar.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_CALSCALE'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vcalendar=vcalendar.replace(vcalendar_element_related[0], '\r\n');
}
}
}
//PRODID
vcalendar_element=vcalendar.match(RegExp('\r\n'+vCalendar.re['contentline_PRODID'], 'mi'));
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_PRODID'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_PRODID'][repeatHash][0]=vCalendar.tplC['VTcontentline_PRODID'];
vCalendar.tplM['VTcontentline_PRODID'][repeatHash][0]=vCalendar.tplM['VTcontentline_PRODID'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_PRODID'][repeatHash][0]=vCalendar.tplM['VTcontentline_PRODID'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vcalendar=vcalendar.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vcalendar.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_PRODID'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vcalendar=vcalendar.replace(vcalendar_element_related[0], '\r\n');
}
}
}
// -------------------VTODO---------------------- //
var todoArray=new Array();
while(vcalendar.match(vCalendar.pre['vtodo'])!=null)
{
if(vcalendar.substring(vcalendar.indexOf('BEGIN:VTODO')-2, vcalendar.indexOf('BEGIN:VTODO'))=='\r\n')
{
var partTodo=vcalendar.substring(vcalendar.indexOf('BEGIN:VTODO')-2,vcalendar.indexOf('END:VTODO')+'END:VTODO'.length);
vcalendar=vcalendar.replace(partTodo, '');
}
else
{
var partTodo=vcalendar.substring(vcalendar.indexOf('BEGIN:VTODO'),vcalendar.indexOf('END:VTODO')+'END:VTODO'.length);
vcalendar=vcalendar.replace(partTodo, '');
partTodo+='\r\n';
}
todoArray[todoArray.length]=partTodo;
}
if(todoArray.length==0)
console.log("Error: '"+inputEvent.id+"': unable to parse vTodo");
for(var it=0;it<todoArray.length;it++)
{
var vtodo=todoArray[it];
var vtodo_full=vtodo.split('\r\n');
var isThisTODO=false;
if(vtodo==null)
return false;
//BEGIN
if((parsed=('\r\nBEGIN:VTODO\r\n').match(vCalendar.pre['contentline_parse']))==null)
return false;
//BEGIN, END VCALENDAR
vCalendar.tplM['VTbeginVTODO'][repeatHash] = new Array();
vCalendar.tplM['VTbeginVTODO'][repeatHash][0]=vCalendar.tplC['VTbeginVTODO'].replace(/##:::##group_wd##:::##/g, vcalendar_begin_group=parsed[1]);
// parsed (contentline_parse)=[1]->"group.", [2]->"name", [3]->";param;param", [4]->"value"
if((parsed=('\r\n'+vcalendar_full[vtodo_full.length-2]+'\r\n').match(vCalendar.pre['contentline_parse']))==null)
return false;
// values not directly supported by the editor (old values are kept intact)
vCalendar.tplM['VTendVTODO'][repeatHash] = new Array();
vCalendar.tplM['VTendVTODO'][repeatHash][0]=vCalendar.tplC['VTendVTODO'].replace(/##:::##group_wd##:::##/g, vcalendar_end_group=parsed[1]);
if(vcalendar_begin_group!=vcalendar_end_group)
return false; // the vCalendar BEGIN and END "group" are different
// remove the vCalendar BEGIN and END
vtodo='\r\n'+vtodo_full.slice(2, vtodo_full.length-1).join('\r\n')+'\r\n';
var created='',recurr_id='', frequency='';
//RECURRENCE-ID
var rec='';
vcalendar_element=vtodo.match(vCalendar.pre['contentline_RECURRENCE_ID']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
var rec=parsed[4];
vCalendar.tplM['VTcontentline_REC_ID'][repeatHash]= new Array();
vCalendar.tplM['VTcontentline_REC_ID'][repeatHash][0]=vCalendar.tplC['VTcontentline_REC_ID'];
vCalendar.tplM['VTcontentline_REC_ID'][repeatHash][0]=vCalendar.tplM['VTcontentline_REC_ID'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
var pars=vcalendarSplitParam(parsed[3]);
var parString='';
for(var i=0;i<pars.length;i++)
{
if((pars[i]!='VALUE=DATE') && (pars[i].indexOf('TZID=')==-1) && (pars[i]!=''))
parString+=';'+pars[i];
}
vCalendar.tplM['VTcontentline_REC_ID'][repeatHash][0]=vCalendar.tplM['VTcontentline_REC_ID'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parString);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_REC_ID'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
if(rec=='')
rec='orig';
else
recurr_id=rec;
//CREATED
vcalendar_element=vtodo.match(RegExp('\r\n'+vCalendar.re['contentline_CREATED'], 'mi'));
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_CREATED'][repeatHash]={};
vCalendar.tplM['VTcontentline_CREATED'][repeatHash][rec]=vCalendar.tplC['VTcontentline_CREATED'];
vCalendar.tplM['VTcontentline_CREATED'][repeatHash][rec]=vCalendar.tplM['VTcontentline_CREATED'][repeatHash][rec].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_CREATED'][repeatHash][rec]=vCalendar.tplM['VTcontentline_CREATED'][repeatHash][rec].replace(/##:::##params_wsc##:::##/g, parsed[3]);
created = parsed[4];
vCalendar.tplM['VTcontentline_CREATED'][repeatHash][rec]=vCalendar.tplM['VTcontentline_CREATED'][repeatHash][rec].replace(/##:::##value##:::##/g,parsed[4]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_CREATED'][repeatHash][rec]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
//RRULE
vcalendar_element=vtodo.match(vCalendar.pre['contentline_RRULE2']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_RRULE'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_RRULE'][repeatHash][0]=vCalendar.tplC['VTcontentline_RRULE'];
vCalendar.tplM['VTcontentline_RRULE'][repeatHash][0]=vCalendar.tplM['VTcontentline_RRULE'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
var pars=parsed[4].split(';');
var parString='';
for(var i=0;i<pars.length;i++)
{
if((pars[i].indexOf('FREQ=')==-1) && (pars[i].indexOf('COUNT=')==-1) && (pars[i].indexOf('UNTIL=')==-1) && (pars[i]!='') && (pars[i].indexOf('INTERVAL=')==-1) && (pars[i].indexOf('BYDAY=')==-1)
&& (pars[i].indexOf('BYMONTHDAY=')==-1) && (pars[i].indexOf('BYMONTH=')==-1) && (pars[i].indexOf('WKST=')==-1))
parString+=';'+pars[i];
if(pars[i].indexOf('FREQ=')!=-1)
frequency=pars[i].split('FREQ=')[1];
}
vCalendar.tplM['VTcontentline_RRULE'][repeatHash][0]=vCalendar.tplM['VTcontentline_RRULE'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vCalendar.tplM['VTcontentline_RRULE'][repeatHash][0]=vCalendar.tplM['VTcontentline_RRULE'][repeatHash][0].replace(/##:::##value##:::##/g, '##:::##value##:::##'+parString);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_RRULE'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
var tmpR=''
if(frequency!='')
tmpR=inputEvent.id+'#'+created+'#'+frequency;
else
tmpR=inputEvent.id+'#'+created+'#'+recurr_id;
if(tmpR==repeatHash)
isThisTODO=true;
//SUMMARY
vcalendar_element=vtodo.match(vCalendar.pre['contentline_SUMMARY']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
title=vcalendarUnescapeValue(parsed[4]);
vCalendar.tplM['VTcontentline_SUMMARY'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_SUMMARY'][repeatHash][0]=vCalendar.tplC['VTcontentline_SUMMARY'];
vCalendar.tplM['VTcontentline_SUMMARY'][repeatHash][0]=vCalendar.tplM['VTcontentline_SUMMARY'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_SUMMARY'][repeatHash][0]=vCalendar.tplM['VTcontentline_SUMMARY'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_SUMMARY'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
vcalendar_element=vtodo.match(RegExp('\r\n'+vCalendar.re['contentline_TRANSP'], 'mi'));
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_TRANSP'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_TRANSP'][repeatHash][0]=vCalendar.tplC['VTcontentline_TRANSP'];
vCalendar.tplM['VTcontentline_TRANSP'][repeatHash][0]=vCalendar.tplM['VTcontentline_TRANSP'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_TRANSP'][repeatHash][0]=vCalendar.tplM['VTcontentline_TRANSP'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_TRANSP'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
vcalendar_element=vtodo.match(vCalendar.pre['contentline_STATUS']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
title=vcalendarUnescapeValue(parsed[4]);
vCalendar.tplM['VTcontentline_STATUS'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_STATUS'][repeatHash][0]=vCalendar.tplC['VTcontentline_STATUS'];
vCalendar.tplM['VTcontentline_STATUS'][repeatHash][0]=vCalendar.tplM['VTcontentline_STATUS'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_STATUS'][repeatHash][0]=vCalendar.tplM['VTcontentline_STATUS'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_STATUS'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
//LOCATION
vcalendar_element=vtodo.match(RegExp('\r\n'+vCalendar.re['contentline_LOCATION'], 'mi'));
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
//note=String(vcalendar_element).split(':')[1];
title=vcalendarUnescapeValue(parsed[4]);
vCalendar.tplM['VTcontentline_LOCATION'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_LOCATION'][repeatHash][0]=vCalendar.tplC['VTcontentline_LOCATION'];
vCalendar.tplM['VTcontentline_LOCATION'][repeatHash][0]=vCalendar.tplM['VTcontentline_LOCATION'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_LOCATION'][repeatHash][0]=vCalendar.tplM['VTcontentline_LOCATION'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_LOCATION'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
//URL
vcalendar_element=vtodo.match(RegExp('\r\n'+vCalendar.re['contentline_URL'], 'mi'));
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
//note=String(vcalendar_element).split(':')[1];
title=vcalendarUnescapeValue(parsed[4]);
vCalendar.tplM['VTcontentline_URL'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_URL'][repeatHash][0]=vCalendar.tplC['VTcontentline_URL'];
vCalendar.tplM['VTcontentline_URL'][repeatHash][0]=vCalendar.tplM['VTcontentline_URL'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_URL'][repeatHash][0]=vCalendar.tplM['VTcontentline_URL'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_URL'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
vcalendar_element=vtodo.match(vCalendar.pre['contentline_PERCENT-COMPLETE']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
//note=String(vcalendar_element).split(':')[1];
title=vcalendarUnescapeValue(parsed[4]);
vCalendar.tplM['VTcontentline_PERCENT-COMPLETE'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_PERCENT-COMPLETE'][repeatHash][0]=vCalendar.tplC['VTcontentline_PERCENT-COMPLETE'];
vCalendar.tplM['VTcontentline_PERCENT-COMPLETE'][repeatHash][0]=vCalendar.tplM['VTcontentline_PERCENT-COMPLETE'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_PERCENT-COMPLETE'][repeatHash][0]=vCalendar.tplM['VTcontentline_PERCENT-COMPLETE'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_PERCENT-COMPLETE'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
vcalendar_element=vtodo.match(vCalendar.pre['contentline_PRIORITY']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
//note=String(vcalendar_element).split(':')[1];
title=vcalendarUnescapeValue(parsed[4]);
vCalendar.tplM['VTcontentline_PRIORITY'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_PRIORITY'][repeatHash][0]=vCalendar.tplC['VTcontentline_PRIORITY'];
vCalendar.tplM['VTcontentline_PRIORITY'][repeatHash][0]=vCalendar.tplM['VTcontentline_PRIORITY'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_PRIORITY'][repeatHash][0]=vCalendar.tplM['VTcontentline_PRIORITY'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_PRIORITY'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
// ---------------- VALARM --------------- //
var valarm=vtodo.match(vCalendar.pre['valarm']);
if(valarm!=null)
{
vtodo=vtodo.replace(valarm[0], '');
vCalendar.tplM['VTalarm_STRING'][repeatHash]='';
var alarmString='';
var alarmArray=new Array();
for(var i=0;i<valarm[0].length;i++)
{
if(valarm[0].substring(i-'END:VALARM'.length, i)=='END:VALARM')
{
alarmArray[alarmArray.length]=alarmString+'\r\n';
if(isThisTODO)
vCalendar.tplM['VTalarm_STRING'][repeatHash]+=alarmString+'\r\n';
alarmString='';
}
alarmString+=valarm[0][i];
}
for(var j=0;j<alarmArray.length;j++)
{
checkA=alarmArray[j].match(vCalendar.re['valarm']);
if(checkA!=null)
{
var valarm_full=checkA[0].split('\r\n');
//BEGIN
if((parsed=('\r\n'+valarm_full[0]+'\r\n').match(vCalendar.pre['contentline_parse']))==null)
return false;
//BEGIN, END VCALENDAR
vCalendar.tplM['VTbeginVALARM'][repeatHash] = new Array();
vCalendar.tplM['VTbeginVALARM'][repeatHash][j]=vCalendar.tplC['VTbeginVALARM'].replace(/##:::##group_wd##:::##/g, vcalendar_begin_group=parsed[1]);
// parsed (contentline_parse)=[1]->"group.", [2]->"name", [3]->";param;param", [4]->"value"
if((parsed=('\r\n'+valarm_full[valarm_full.length-2]+'\r\n').match(vCalendar.pre['contentline_parse']))==null)
return false;
// values not directly supported by the editor (old values are kept intact)
vCalendar.tplM['VTendVALARM'][repeatHash] = new Array();
vCalendar.tplM['VTendVALARM'][repeatHash][j]=vCalendar.tplC['VTendVALARM'].replace(/##:::##group_wd##:::##/g, vcalendar_end_group=parsed[1]);
if(vcalendar_begin_group!=vcalendar_end_group)
return false; // the vCalendar BEGIN and END "group" are different
// remove the vCalendar BEGIN and END
alarmArray[j]='\r\n'+valarm_full.slice(1, valarm_full.length-2).join('\r\n')+'\r\n';
trigger=alarmArray[j].match(vCalendar.pre['contentline_TRIGGER']);
if(trigger!=null)
{
parsed=(trigger[0]+'\r\n').match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_TRIGGER'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_TRIGGER'][repeatHash][j]=vCalendar.tplC['VTcontentline_TRIGGER'];
vCalendar.tplM['VTcontentline_TRIGGER'][repeatHash][j]=vCalendar.tplM['VTcontentline_TRIGGER'][repeatHash][j].replace(/##:::##group_wd##:::##/g, parsed[1]);
var pars=vcalendarSplitParam(parsed[3]);
var parString='';
for(var i=0;i<pars.length;i++)
{
if((pars[i]!='VALUE=DATE-TIME') && (pars[i]!='VALUE=DURATION') && (pars[i]!=''))
parString+=';'+pars[i];
}
vCalendar.tplM['VTcontentline_TRIGGER'][repeatHash][j]=vCalendar.tplM['VTcontentline_TRIGGER'][repeatHash][j].replace(/##:::##params_wsc##:::##/g, parString);
alarmArray[j]=alarmArray[j].replace(trigger[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_TRIGGER'][repeatHash][j]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
note=alarmArray[j].match(vCalendar.pre['contentline_NOTE']);
if(note!=null)
{
parsed=note[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_VANOTE'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_VANOTE'][repeatHash][j]=vCalendar.tplC['VTcontentline_VANOTE'];
vCalendar.tplM['VTcontentline_VANOTE'][repeatHash][j]=vCalendar.tplM['VTcontentline_VANOTE'][repeatHash][j].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_VANOTE'][repeatHash][j]=vCalendar.tplM['VTcontentline_VANOTE'][repeatHash][j].replace(/##:::##params_wsc##:::##/g, parsed[3]);
alarmArray[j]=alarmArray[j].replace(note[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_VANOTE'][repeatHash][j]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
action=(alarmArray[j]).match(vCalendar.pre['contentline_ACTION']);
if(action!=null)
{
parsed=action[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_ACTION'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_ACTION'][repeatHash][j]=vCalendar.tplC['VTcontentline_ACTION'];
vCalendar.tplM['VTcontentline_ACTION'][repeatHash][j]=vCalendar.tplM['VTcontentline_ACTION'][repeatHash][j].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_ACTION'][repeatHash][j]=vCalendar.tplM['VTcontentline_ACTION'][repeatHash][j].replace(/##:::##params_wsc##:::##/g, parsed[3]);
alarmArray[j]=alarmArray[j].replace(action[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_ACTION'][repeatHash][j]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
var checkUnprocess=$.trim(alarmArray[j]);
vCalendar.tplM['VTunprocessedVALARM'][repeatHash] = new Array();
if(checkUnprocess!='')
vCalendar.tplM['VTunprocessedVALARM'][repeatHash][j]=alarmArray[j];
}
}
}
//NOTE
vcalendar_element=vtodo.match(vCalendar.pre['contentline_NOTE']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_NOTE'][repeatHash]=new Array();
vCalendar.tplM['VTcontentline_NOTE'][repeatHash][0]=vCalendar.tplC['VTcontentline_NOTE'];
vCalendar.tplM['VTcontentline_NOTE'][repeatHash][0]=vCalendar.tplM['VTcontentline_NOTE'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_NOTE'][repeatHash][0]=vCalendar.tplM['VTcontentline_NOTE'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_NOTE'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
//NOTE
vcalendar_element=vtodo.match(vCalendar.pre['contentline_CLASS']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_CLASS'][repeatHash]=new Array()
vCalendar.tplM['VTcontentline_CLASS'][repeatHash][0]=vCalendar.tplC['VTcontentline_CLASS'];
vCalendar.tplM['VTcontentline_CLASS'][repeatHash][0]=vCalendar.tplM['VTcontentline_CLASS'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_CLASS'][repeatHash][0]=vCalendar.tplM['VTcontentline_CLASS'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vCalendar.tplM['VTcontentline_CLASS'][repeatHash][0]=vCalendar.tplM['VTcontentline_CLASS'][repeatHash][0].replace(/##:::##value##:::##/g, parsed[4]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_CLASS'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
//END
vcalendar_element=vtodo.match(vCalendar.pre['contentline_DUE']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_DUE'][repeatHash]= new Array();
vCalendar.tplM['VTcontentline_DUE'][repeatHash][0]=vCalendar.tplC['VTcontentline_DUE'];
vCalendar.tplM['VTcontentline_DUE'][repeatHash][0]=vCalendar.tplM['VTcontentline_DUE'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
var pars=vcalendarSplitParam(parsed[3]);
var parString='';
for(var i=0;i<pars.length;i++)
{
if((pars[i]!='VALUE=DATE') && (pars[i].indexOf('TZID=')==-1) && (pars[i]!=''))
parString+=';'+pars[i];
}
vCalendar.tplM['VTcontentline_DUE'][repeatHash][0]=vCalendar.tplM['VTcontentline_DUE'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parString);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_DUE'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
//START
vcalendar_element=vtodo.match(vCalendar.pre['contentline_DTSTART']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_E_DTSTART'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_E_DTSTART'][repeatHash][0]=vCalendar.tplC['VTcontentline_E_DTSTART'];
vCalendar.tplM['VTcontentline_E_DTSTART'][repeatHash][0]=vCalendar.tplM['VTcontentline_E_DTSTART'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
var pars=vcalendarSplitParam(parsed[3]);
var parString='';
for(var i=0;i<pars.length;i++)
{
if(pars[i]!='VALUE=DATE' && pars[i].indexOf('TZID=')==-1 && pars[i]!='')
parString+=';'+pars[i];
}
vCalendar.tplM['VTcontentline_E_DTSTART'][repeatHash][0]=vCalendar.tplM['VTcontentline_E_DTSTART'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parString);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_E_DTSTART'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
//UID
vcalendar_element=vtodo.match(RegExp('\r\n'+vCalendar.re['contentline_UID'], 'mi'));
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_UID'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_UID'][repeatHash][0]=vCalendar.tplC['VTcontentline_UID'];
vCalendar.tplM['VTcontentline_UID'][repeatHash][0]=vCalendar.tplM['VTcontentline_UID'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_UID'][repeatHash][0]=vCalendar.tplM['VTcontentline_UID'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vCalendar.tplM['VTcontentline_UID'][repeatHash][0]=vCalendar.tplM['VTcontentline_UID'][repeatHash][0].replace(/##:::##uid##:::##/g,parsed[4]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_UID'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
//LAST-MODIFIED
vcalendar_element=vtodo.match(RegExp('\r\n'+vCalendar.re['contentline_LM'], 'mi'));
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_LM'][repeatHash]=new Array();
vCalendar.tplM['VTcontentline_LM'][repeatHash][0]=vCalendar.tplC['VTcontentline_LM'];
vCalendar.tplM['VTcontentline_LM'][repeatHash][0]=vCalendar.tplM['VTcontentline_LM'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_LM'][repeatHash][0]=vCalendar.tplM['VTcontentline_LM'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_LM'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
//DTSTAMP
vcalendar_element=vtodo.match(RegExp('\r\n'+vCalendar.re['contentline_DTSTAMP'], 'mi'));
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_DTSTAMP'][repeatHash] = new Array();
vCalendar.tplM['VTcontentline_DTSTAMP'][repeatHash][0]=vCalendar.tplC['VTcontentline_DTSTAMP'];
vCalendar.tplM['VTcontentline_DTSTAMP'][repeatHash][0]=vCalendar.tplM['VTcontentline_DTSTAMP'][repeatHash][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_DTSTAMP'][repeatHash][0]=vCalendar.tplM['VTcontentline_DTSTAMP'][repeatHash][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_DTSTAMP'][repeatHash][0]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
var i=-1;
while(vtodo.match(vCalendar.pre['contentline_EXDATE'])!= null)
{
i++;
vcalendar_element=vtodo.match(vCalendar.pre['contentline_EXDATE']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_EXDATE'][repeatHash]=new Array();
vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i]=vCalendar.tplC['VTcontentline_EXDATE'];
vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i]=vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i].replace(/##:::##group_wd##:::##/g, parsed[1]);
var pars=vcalendarSplitParam(parsed[3]);
var parString='', dateStr='';
for(var j=0;j<pars.length;j++)
{
if(pars[j]!='VALUE=DATE' && pars[j]!='')
parString+=';'+pars[j];
if(pars[j]=='VALUE=DATE')
dateStr=pars[j];
}
if(dateStr.indexOf('VALUE=DATE')!=-1)
vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i]=vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i].replace(/##:::##AllDay##:::##/g, ';VALUE=DATE');
else
vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i]=vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i].replace(/##:::##AllDay##:::##/g, '');
vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i]=vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i].replace(/##:::##TZID##:::##/g, '');
vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i]=vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i].replace(/##:::##params_wsc##:::##/g, parString);
vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i]=vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i].replace(/##:::##value##:::##/g,parsed[4]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_EXDATE'][repeatHash][i]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
}
//COMPLETED
vcalendar_element=vtodo.match(RegExp('\r\n'+vCalendar.re['contentline_COMPLETED'], 'mi'));
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
vCalendar.tplM['VTcontentline_COMPLETED'][repeatHash] = {};
vCalendar.tplM['VTcontentline_COMPLETED'][repeatHash][rec]=vCalendar.tplC['VTcontentline_COMPLETED'];
vCalendar.tplM['VTcontentline_COMPLETED'][repeatHash][rec]=vCalendar.tplM['VTcontentline_COMPLETED'][repeatHash][rec].replace(/##:::##group_wd##:::##/g, parsed[1]);
vCalendar.tplM['VTcontentline_COMPLETED'][repeatHash][rec]=vCalendar.tplM['VTcontentline_COMPLETED'][repeatHash][rec].replace(/##:::##params_wsc##:::##/g, parsed[3]);
vtodo=vtodo.replace(vcalendar_element[0], '\r\n');
if(parsed[1]!='')
{
var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
while ((vcalendar_element_related=vtodo.match(re))!=null)
{
// append the parameter to its parent
vCalendar.tplM['VTcontentline_COMPLETED'][repeatHash][rec]+=vcalendar_element_related[0].substr(2);
// remove the processed parameter
vtodo=vtodo.replace(vcalendar_element_related[0], '\r\n');
}
}
}
if(vcalendar.indexOf('\r\n')==0)
vcalendar=vcalendar.substring(2, vcalendar.length-2);
if(vcalendar.lastIndexOf('\r\n')!=(vcalendar.length-2))
vcalendar+='\r\n';
vCalendar.tplM['VTunprocessedVTODO'][repeatHash]={};
vCalendar.tplM['VTunprocessedVTODO'][repeatHash][rec]=vtodo;
// if(vTimeZone!='')
// vcalendar+=vTimeZone;
isThisTODO=false;
}
if(vcalendar.indexOf('\r\n')==0)
vcalendar=vcalendar.substring(2, vcalendar.length-2);
if(vcalendar.lastIndexOf('\r\n')!=(vcalendar.length-2))
vcalendar+='\r\n';
vCalendar.tplM['VTunprocessedVTIMEZONE'][repeatHash]=vTimeZone;
vCalendar.tplM['VTunprocessed'][repeatHash]=vcalendar;
}
function vcalendarTodoData(inputCollection, inputEvent, isNew)
{
var vcalendarOrig=inputEvent.vcalendar;
var todoArray=new Array();
var preTodoArray=new Array();
if((check=inputEvent.vcalendar.match(vCalendar.pre['vtodo']))==null)
{
console.log("Error: '"+inputEvent.uid+"': unable to parse vTodo");
return false;
}
//CHECK CALSCALE
var elem=vcalendarOrig.match(vCalendar.pre['contentline_CALSCALE']);
if(elem!=null)
{
var calscale=elem[0].match(vCalendar.pre['contentline_parse'])[4];
if(calscale!='GREGORIAN')
{
console.log("Error:'"+inputEvent.uid+"': Unsupported calscale in:"+vcalendarOrig);
return false;
}
}
//CHECK VERSION
var elemV=vcalendarOrig.match(vCalendar.pre['contentline_VERSION']);
if(elemV!=null)
{
var ver=elemV[0].match(vCalendar.pre['contentline_parse'])[4];
if(ver!='2.0')
{
console.log("Error:'"+inputEvent.uid+"': Unsupported version ("+ver+") in:"+vcalendarOrig);
return false;
}
}
//FIX TIMEZONE
var beginTimeZone=vcalendarOrig.indexOf('BEGIN:VTIMEZONE');
var startEndTimeZone=vcalendarOrig.indexOf('END:VTIMEZONE');
var endTimeZone=0;
while(vcalendarOrig.indexOf('BEGIN:VTIMEZONE')!=-1)
if(beginTimeZone!=-1 && startEndTimeZone!=-1)
{
for(i=(startEndTimeZone+2);i<vcalendarOrig.length;i++)
{
if(vcalendarOrig.charAt(i)=='\n')
{
endTimeZone=i+1;
break;
}
}
vTimeZone=vcalendarOrig.substring(beginTimeZone, endTimeZone);
vcalendarOrig=vcalendarOrig.substring(0, beginTimeZone)+vcalendarOrig.substring(endTimeZone, vcalendarOrig.length);
}
var rid=inputEvent.uid.substring(0, inputEvent.uid.lastIndexOf('/')+1);
var evid=inputEvent.uid.substring(inputEvent.uid.lastIndexOf('/')+1, inputEvent.uid.length);
var recurrence_id_array=new Array();
while(vcalendarOrig.match(vCalendar.pre['vtodo'])!=null)
{
if(vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:VTODO')-2, vcalendarOrig.indexOf('BEGIN:VTODO'))=='\r\n')
{
var partTodo=vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:VTODO')-2,vcalendarOrig.indexOf('END:VTODO')+'END:VTODO'.length);
vcalendarOrig=vcalendarOrig.replace(partTodo, '');
}
else
{
var partTodo=vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:VTODO'),vcalendarOrig.indexOf('END:VTODO')+'END:VTODO'.length);
vcalendarOrig=vcalendarOrig.replace(partTodo, '');
partTodo+='\r\n';
}
var rec_array=partTodo.match(vCalendar.pre['contentline_RECURRENCE_ID']);
var uidString=partTodo.match(vCalendar.pre['contentline_UID']);
if(uidString!=null && rec_array!=null)
recurrence_id_array[recurrence_id_array.length]=rec_array[0].match(vCalendar.pre['contentline_parse'])[4]+';'+uidString[0].match(vCalendar.pre['contentline_parse'])[4];
todoArray[todoArray.length]=partTodo;
}
if(todoArray.length==0)
return false;
var repeatHashEquals = false;
for(var toIt=0; toIt<todoArray.length; toIt++)
{
var oo='',
note='',
start='',
end='',
title='',
all=false,
frequency='',
until='',
complete='',
isUntilDate=false,
alertTime=new Array(),
alertNote=new Array(),
alertTimeOut=new Array(),
valOffsetFrom='',
tzName='local',
classType='',
url='',
tmpObj='',
isRepeat=false,
intOffset='',
realStart='',
realEnd='',
interval='',
until='',
completedOn='',
location='',
isUntilDate=false,
wkst='',
byMonthDay='',
byDay='',
rec_id='',
created='',
repeatHash='',
returnForValue = true,
pars=new Array();
var rid=inputEvent.uid.substring(0, inputEvent.uid.lastIndexOf('/')+1);
var status='',filterStatus='',renderPriority=0,
percent="0",
priority="0",
alarms=new Array();
var vcalendar=inputEvent.vcalendar;
var dates = new Array();
var vcalendar=todoArray[toIt];
var stringUID=vcalendar.match(vCalendar.pre['contentline_UID']);
if(stringUID!=null)
stringUID=stringUID[0].match(vCalendar.pre['contentline_parse'])[4];
var exDates=new Array();
var exDate=null;
var exDate_array=new Array();
var vcalendar2=vcalendar+'';
while(vcalendar2.match(vCalendar.pre['contentline_EXDATE'])!= null)
{
exDate=vcalendar2.match(vCalendar.pre['contentline_EXDATE']);
exDate_array[exDate_array.length]=exDate[0];
vcalendar2=vcalendar2.replace(exDate,'\r\n');
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_RRULE2']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
// if(parsed[4].indexOf('BYSETPOS')!=-1 || parsed[4].indexOf('BYWEEKNO')!=-1)
// {
// console.log("Error:'"+inputEvent.uid+"': Unsupported recurrence rule in todo:"+vcalendar);
// return false;
// }
pars=parsed[4].split(';');
var parString='';
if(pars.length>0)
isRepeat=true;
for(var i=0;i<pars.length;i++)
{
if(pars[i].indexOf('FREQ=')!=-1)
frequency=pars[i].split('=')[1];
else if(pars[i].indexOf('INTERVAL=')!=-1)
interval=pars[i].split('=')[1];
else if(pars[i].indexOf('COUNT=')!=-1)
{
until=pars[i].split('=')[1];
if(until==0)
{
returnForValue = false;
break
}
else if(isNaN(until))
{
returnForValue = false;
break
}
}
else if(pars[i].indexOf('UNTIL=')!=-1)
{
isUntilDate=true;
until=pars[i].split('=')[1];
}
else if(pars[i].indexOf('WKST=')!=-1)
{
wkst=pars[i].split('=')[1].replace(/\d*MO/,1).replace(/\d*TU/,2).replace(/\d*WE/,3).replace(/\d*TH/,4).replace(/\d*FR/,5).replace(/\d*SA/,6).replace(/\d*SU/,0);
if(globalSettings.mozillasupport.value!=null && globalSettings.mozillasupport.value)
wkst='';
}
else if(pars[i].indexOf('BYMONTHDAY=')!=-1)
byMonthDay=pars[i].split('=')[1];
else if(pars[i].indexOf('BYDAY=')!=-1)
{
byDay=pars[i].split('=')[1];
byDay=byDay.replace(/\d*MO/,1).replace(/\d*TU/,2).replace(/\d*WE/,3).replace(/\d*TH/,4).replace(/\d*FR/,5).replace(/\d*SA/,6).replace(/\d*SU/,0).split(',');
if(byDay.length>1 &&(frequency=='MONTHLY'||frequency=='YEARLY'))
{
console.log("Error:'"+inputEvent.uid+"': Unsupported recurrence rule in todo:"+vcalendar);
return false;
}
}
}
if(!returnForValue)
return false;
if(!interval)
interval=1;
}
var help1 = '';
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_DTSTART']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
start=parsed[4];
help1=start;
if(help1.indexOf("T")==-1)
{
help1=help1.substring(0, 4)+'-'+help1.substring(4, 6)+'-'+help1.substring(6, 8);
all=true;
}
else
{
help1=help1.substring(0, 4)+'-'+help1.substring(4, 6)+'-'+help1.substring(6, 8)+'T'+help1.substring(9, 11)+':'+help1.substring(11, 13)+':'+help1.substring(13, 15);
all=false;
}
var t=$.fullCalendar.parseDate(help1);
start=help1;
if(t==null)
return false;
if((t.toString())=='Invalid Date')
return false;
if(exDate_array!=null)
for(var j=0;j<exDate_array.length;j++)
{
var exString=(exDate_array[j]+'\r\n').match(vCalendar.pre['contentline_parse'])[4];
if(exString.indexOf('T')!=-1 && exString.indexOf('Z')!=-1)
var utcTime=exString.parseComnpactISO8601().setSeconds(getLocalOffset(exString.parseComnpactISO8601())*-1);
else if(exString.indexOf('T')!=-1 && exString.indexOf('Z')==-1)
var utcTime=exString.parseComnpactISO8601();
else
{
if(start.indexOf('T')!=-1)
exString += 'T' + $.fullCalendar.formatDate(t,'HHmmss');
var utcTime=exString.parseComnpactISO8601();
}
exDates[exDates.length]=new Date(utcTime).toString();
}
var dtStartTimezone=parsed[3].split('=');
if(!all)
{
if(parsed[4].charAt(parsed[4].length-1)=='Z')
tzName='UTC';
if(dtStartTimezone.length>1 || tzName=='UTC')
{
if(tzName!='UTC')
tzName=$.trim(dtStartTimezone[1]);
var finTZ = checkTimezone(tzName);
if(finTZ!=null)
tzName = finTZ;
if(globalSettings.timezonesupport.value && tzName in timezones)
{
valOffsetFrom=getOffsetByTZ(tzName, t);
intOffset=(getLocalOffset(t)*-1*1000)-valOffsetFrom.getSecondsFromOffset()*1000;
}
}
else if(processedTimezones.indexOf(tzName)==-1)
{
if(timeZonesEnabled.indexOf(tzName)==-1)
timeZonesEnabled.push('local');
processedTimezones.push('local');
}
if(tzName!='' && tzName != 'local')
if(processedTimezones.indexOf(tzName)==-1)
{
if(timeZonesEnabled.indexOf(tzName)==-1)
timeZonesEnabled.push(tzName);
processedTimezones.push(tzName);
}
}
realStart=start;
if(help1.indexOf("T")!=-1)
{
if(intOffset!='')
t.setTime(t.getTime()+intOffset);
start=$.fullCalendar.formatDate(t,'u');
}
inputEvent.start=$.fullCalendar.parseDate(start);
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_DUE']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
end=parsed[4];
var help=end;
var oldEnd = '';
if(help.indexOf("T")==-1)
{
help=help.substring(0, 4)+'-'+help.substring(4, 6)+'-'+help.substring(6, 8);
var d=$.fullCalendar.parseDate(help);
var da=new Date(d.getTime());
if(help1.indexOf("T")==-1)
da.setDate(da.getDate()-1);
help=$.fullCalendar.formatDate(da, "yyyy-MM-dd");
all=true;
oldEnd = help;
if(help1.indexOf("T")!=-1)
{
all=false;
help+='T00:00:00';
if(tzName == 'UTC')
help+='Z';
}
}
else
{
help=help.substring(0, 4)+'-'+help.substring(4, 6)+'-'+help.substring(6, 8)+'T'+help.substring(9, 11)+':'+help.substring(11, 13)+':'+help.substring(13, 15);
oldEnd = help;
all=false;
}
end=help;
var t1=$.fullCalendar.parseDate(end);
if(t1==null)
return false;
if((t1.toString())=='Invalid Date')
return false;
if(exDate_array!=null && exDates.length==0)
for(var j=0;j<exDate_array.length;j++)
{
var exString=(exDate_array[j]+'\r\n').match(vCalendar.pre['contentline_parse'])[4];
if(exString.indexOf('T')!=-1 && exString.indexOf('Z')!=-1)
var utcTime=exString.parseComnpactISO8601().setSeconds(getLocalOffset(exString.parseComnpactISO8601())*-1);
else if(exString.indexOf('T')!=-1 && exString.indexOf('Z')==-1)
var utcTime=exString.parseComnpactISO8601();
else
{
if(end.indexOf('T')!=-1)
exString += 'T' + $.fullCalendar.formatDate(t1,'HHmmss');
var utcTime=exString.parseComnpactISO8601();
}
exDates[exDates.length]=new Date(utcTime).toString();
}
if(intOffset=='' && (help1.indexOf("T")!=-1 || oldEnd.indexOf("T")!=-1))
{
var dtStartTimezone=parsed[3].split('=');
if(parsed[4].charAt(parsed[4].length-1)=='Z')
tzName='UTC';
if(dtStartTimezone.length>1 || tzName=='UTC')
{
if(tzName!='UTC' && oldEnd.indexOf("T")!=-1)
tzName=$.trim(dtStartTimezone[1]);
var finTZ = checkTimezone(tzName);
if(finTZ!=null)
tzName = finTZ;
if(globalSettings.timezonesupport.value && tzName in timezones)
{
valOffsetFrom=getOffsetByTZ(tzName, t1);
intOffset=(getLocalOffset(t1)*-1*1000)-valOffsetFrom.getSecondsFromOffset()*1000;
}
}
}
realEnd=help;
if(globalSettings.appleremindersmode.value)
realStart=help;
if(help.indexOf("T")!=-1)
{
if(intOffset!='')
t1.setTime(t1.getTime()+intOffset);
end=$.fullCalendar.formatDate(t1,'u');
}
inputEvent.end=end;
if(globalSettings.appleremindersmode.value)
start=end;
}
if(globalSettings.appleremindersmode.value && realEnd=='' && realStart!='')
{
realStart='';
start='';
}
var finalAString='';
var valarm=vcalendar.match(vCalendar.pre['valarm']);
if(valarm!=null)
{
vcalendar=vcalendar.replace(valarm[0], '');
var alarmString='';
var alarmArray=new Array();
for(var i=0;i<valarm[0].length;i++)
{
if(valarm[0].substring(i-'END:VALARM'.length, i)=='END:VALARM')
{
alarmArray[alarmArray.length]=alarmString+'\r\n';
alarmString='';
}
alarmString+=valarm[0][i];
}
for(var j=0;j<alarmArray.length;j++)
{
if(alarmArray[j].indexOf('\r\n')==0 && finalAString.lastIndexOf('\r\n')==(finalAString.length-2))
finalAString+=alarmArray[j].substring(2,alarmArray[j].length);
else if((alarmArray[j].indexOf('\r\n')==0 && finalAString.lastIndexOf('\r\n')!=(finalAString.length-2)) || (alarmArray[j].indexOf('\r\n')!=0 && finalAString.lastIndexOf('\r\n')==(finalAString.length-2)) )
finalAString+=alarmArray[j];
else
finalAString+='\r\n'+alarmArray[j];
checkA=alarmArray[j].match(vCalendar.re['valarm']);
if(checkA!=null)
{
action=(alarmArray[j]).match(vCalendar.pre['contentline_ACTION']);
if(action!=null)
parsed=action[0].match(vCalendar.pre['contentline_parse']);
else
break;
trigger=alarmArray[j].match(vCalendar.pre['contentline_TRIGGER']);
if(trigger!=null)
{
parsed=(trigger[0]+'\r\n').match(vCalendar.pre['contentline_parse']);
if(parsed!=null)
{
value=parsed[4];
var checkD=value.match(vCalendar.pre['date-time-value']);
var intOffsetA='';
var tzNameA='';
if(checkD!=null)
{
if(parsed[3])
var dtStartTimezoneA=parsed[3].split('=');
var alarmTimeA=$.fullCalendar.parseDate(value.substring(0, 4)+'-'+value.substring(4, 6)+'-'+value.substring(6, 8)+'T'+value.substring(9, 11)+':'+value.substring(11, 13)+':'+value.substring(13, 15));
if(value.charAt(value.length-1)=='Z')
tzNameA='UTC';
if(dtStartTimezoneA.length>1 || tzNameA=='UTC')
{
if(tzNameA!='UTC' && dtStartTimezoneA[0]==';TZID')
tzNameA=$.trim(dtStartTimezoneA[1]);
var finTZ = checkTimezone(tzNameA);
if(finTZ!=null)
tzNameA = finTZ;
if(globalSettings.timezonesupport.value && tzNameA in timezones)
{
var valOffsetFromA=getOffsetByTZ(tzNameA, alarmTimeA);
if(tzName != 'local')
intOffsetA=getOffsetByTZ(tzName, alarmTimeA).getSecondsFromOffset()*1000-valOffsetFromA.getSecondsFromOffset()*1000;
else
intOffsetA=-1*getLocalOffset(alarmTimeA)*1000-valOffsetFromA.getSecondsFromOffset()*1000;
}
}
else if(processedTimezones.indexOf(tzName)==-1)
{
if(timeZonesEnabled.indexOf(tzName)==-1)
timeZonesEnabled.push('local');
processedTimezones.push('local');
}
if(tzNameA!='' && tzName != 'local')
if(processedTimezones.indexOf(tzNameA)==-1)
{
if(timeZonesEnabled.indexOf(tzNameA)==-1)
timeZonesEnabled.push(tzNameA);
processedTimezones.push(tzNameA);
}
if(intOffsetA!='')
alarmTimeA.setTime(alarmTimeA.getTime()+intOffsetA);
alertTime[j]=$.fullCalendar.formatDate(alarmTimeA,"yyyy-MM-dd'T'HH:mm:ss");
}
else
{
alertTime[j]=0;
if(value.indexOf('W')!=-1)
alertTime[j]=parseAlarmWeek(value);
else if(value.indexOf('D')!=-1)
alertTime[j]=parseAlarmDay(value);
else if(value.indexOf('T')!=-1)
alertTime[j]=parseAlarmTime(value);
if(parsed[4].charAt(0)=="-")
alertTime[j]="-"+alertTime[j];
else
alertTime[j]="+"+alertTime[j];
}
}
}
else
break;
alnote=alarmArray[j].match(vCalendar.pre['contentline_NOTE']);
if(alnote!=null)
{
parsed=alnote[0].match(vCalendar.pre['contentline_parse']);
alertNote[j]=parsed[4];
}
else
alertNote[j]='Default note';
}
}
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_LOCATION']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
location=vcalendarUnescapeValue(parsed[4]);
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_NOTE']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
note=vcalendarUnescapeValue(parsed[4]);
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_CLASS']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
classType=vcalendarUnescapeValue(parsed[4]);
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_URL']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
url=vcalendarUnescapeValue(parsed[4]);
}
//NEEDS-ACTION
//COMPLETED
//IN-PROCESS
//CANCELLED
//PERCENT-COMPLETE
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_RECURRENCE_ID']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
var rec=parsed[4];
/*if(rec.indexOf("T")==-1)
{
rec=rec.substring(0, 4)+'/'+rec.substring(4, 6)+'/'+rec.substring(6, 8);
var d=$.fullCalendar.parseDate(rec);
var da=new Date(d.getTime()-1*24*60*60*1000);
var day=da.getDate();
if(day<10)
day='0'+day;
var month=da.getMonth();
month++;
if(month<10)
month='0'+month;
rec=da.getFullYear()+'-'+month+'-'+day;
}
else
rec=rec.substring(0, 4)+'-'+rec.substring(4, 6)+'-'+rec.substring(6, 8)+'T'+rec.substring(9, 11)+':'+rec.substring(11, 13)+':'+rec.substring(13, 15);
rec_id=$.fullCalendar.parseDate(rec);*/
//if(!rec_id || rec_id=='Invalid Date')
// rec_id='';
rec_id=rec;
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_SUMMARY']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
title=vcalendarUnescapeValue(parsed[4]);
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_CREATED']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
created=vcalendarUnescapeValue(parsed[4]);
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_STATUS']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
status=vcalendarUnescapeValue(parsed[4]);
}
if(globalSettings.appleremindersmode.value && (status=='IN-PROCESS' || status=='CANCELLED'))
status = 'NEEDS-ACTION';
switch(status)
{
case 'NEEDS-ACTION':
filterStatus = 'filterAction';
break;
case 'COMPLETED':
filterStatus = 'filterCompleted';
break;
case 'IN-PROCESS':
filterStatus = 'filterProgress';
break;
case 'CANCELLED':
filterStatus = 'filterCanceled';
break;
default:
filterStatus = 'filterAction';
break;
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_COMPLETED']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
var tmpDate=parsed[4];
if(tmpDate.indexOf("T")!=-1)
tmpDate=tmpDate.substring(0, 4)+'-'+tmpDate.substring(4, 6)+'-'+tmpDate.substring(6, 8)+'T'+tmpDate.substring(9, 11)+':'+tmpDate.substring(11, 13)+':'+tmpDate.substring(13, 15);
var t1=$.fullCalendar.parseDate(tmpDate);
if(t1==null || ((t1.toString())=='Invalid Date'))
completedOn='';
else
completedOn=new Date(t1.getTime());
if(completedOn!='')
{
var intOffsetA='';
var dtStartTimezoneA = new Array();
if(parsed[3])
dtStartTimezoneA=parsed[3].split('=');
if(parsed[4].charAt(parsed[4].length-1)=='Z')
tzNameA='UTC';
if(dtStartTimezoneA.length>1 || tzNameA=='UTC')
{
if(tzNameA!='UTC')
tzNameA=$.trim(dtStartTimezoneA[1]);
var finTZ = checkTimezone(tzNameA);
if(finTZ!=null)
tzNameA = finTZ;
if(globalSettings.timezonesupport.value && tzNameA in timezones)
{
var valOffsetFromA=getOffsetByTZ(tzNameA, completedOn);
intOffsetA=getOffsetByTZ(tzName, completedOn).getSecondsFromOffset()*1000-valOffsetFromA.getSecondsFromOffset()*1000;
}
}
else if(processedTimezones.indexOf(tzName)==-1)
{
if(timeZonesEnabled.indexOf(tzName)==-1)
timeZonesEnabled.push('local');
processedTimezones.push('local');
}
if(tzName!='' && tzName != 'local')
if(processedTimezones.indexOf(tzNameA)==-1)
{
if(timeZonesEnabled.indexOf(tzNameA)==-1)
timeZonesEnabled.push(tzNameA);
processedTimezones.push(tzNameA);
}
if(intOffsetA!='')
completedOn.setTime(completedOn.getTime()+intOffsetA);
}
}
if(status=='COMPLETED' && completedOn=='' && end!='' && typeof end=='object')
completedOn=new Date(end.getTime());
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_PERCENT-COMPLETE']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
complete=vcalendarUnescapeValue(parsed[4]);
percent=complete;
}
vcalendar_element=vcalendar.match(vCalendar.pre['contentline_PRIORITY']);
if(vcalendar_element!=null)
{
parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
priority=vcalendarUnescapeValue(parsed[4]);
var priorN = parseInt(priority,10);
if(!isNaN(priorN))
{
if(priority>5 && priority<10)
renderPriority=3;
else if(priority<5 && priority>0)
renderPriority=1;
else if(priority==5)
renderPriority=2;
else
renderPriority=0;
}
}
var evid=inputEvent.uid.substring(inputEvent.uid.lastIndexOf('/')+1, inputEvent.uid.length);
var todos='',
p=0;
var isChange=false;
if(isRepeat &&(realStart || realEnd))
repeatHash=inputEvent.uid+'#'+created+'#'+frequency;
else if(!isRepeat)
repeatHash=inputEvent.uid+'#'+created+'#'+rec_id;
if(percent!='' && percent!='0' && percent!='100' && percent!='50')
{
if(typeof globalTodolistStatusArray[repeatHash]=='undefined')
globalTodolistStatusArray[repeatHash] = {};
globalTodolistStatusArray[repeatHash].percent = percent;
}
if(!isNew && !repeatHashEquals)
{
var checkForChangeTodo=findEventInArray(inputEvent.uid, false, globalCalTodo!=null ? globalCalTodo.repeatHash : null);
if(checkForChangeTodo!='')
{
if(checkForChangeTodo.etag!=inputEvent.etag || ($('#showTODO').val()==inputEvent.uid && ($('#repeatTodo').val()=="true" || $('#recurrenceIDTODO').val()!='') && !repeatHashEquals))
{
for(var it=0; it<checkForChangeTodo.alertTimeOut.length; it++)
clearTimeout(checkForChangeTodo.alertTimeOut[it]);
if($('#showTODO').val()==inputEvent.uid)
{
if($('#repeatTodo').val()=="true" || $('#recurrenceIDTODO').val()!='')
{
if(!(typeof globalCalTodo!='undefined' && globalCalTodo!=null && globalCalTodo.repeatHash == repeatHash))
{
var name=globalCalTodo.title;
//showTodoForm({title: name, id:inputEvent.uid}, 'show','', true);
$('#editAllTODO').css('visibility','hidden');
$('#editFutureTODO').css('visibility','hidden');
$('#editOnlyOneTODO').css('visibility','hidden');
$('#repeatConfirmBoxContentTODO').html('<b>'+name+"</b> "+localization[globalInterfaceLanguage].repeatChangeTxt);
$('#repeatConfirmBoxQuestionTODO').html(localization[globalInterfaceLanguage].repeatTodoChangeTxtClose);
}
else
{
isChange=true;
repeatHashEquals=true;
$('#todoList').fullCalendar('selectEvent');
}
}
else
isChange=true;
}
}
}
}
var res=0;
var index=0;
for(var p=0;p<globalResourceCalDAVList.TodoCollections.length;p++)
if(typeof globalResourceCalDAVList.TodoCollections[p].uid !='undefined' && globalResourceCalDAVList.TodoCollections[p].uid==inputCollection.uid)
{
index=p;
break;
}
var re=new RegExp('^(https?://)([^@/]+(?:@[^@/]+)?)@([^/]+)(.*/)([^/]+/)([^/]+/)([^/]*)', 'i');
var tmp=rid.match(re);
var firstPart=index.pad(String(globalResourceCalDAVList.TodoCollections.length).length);
var compareString=(firstPart + title).toLowerCase();
var isall=false;
if(isRepeat &&(realStart || realEnd))
{
var firstDateSaved = false;
if(globalAppleSupport.nextDates[inputEvent.uid]!=undefined)
delete globalAppleSupport.nextDates[inputEvent.uid];
var ruleString=vcalendar.match(vCalendar.pre['contentline_RRULE2'])[0].match(vCalendar.pre['contentline_parse'])[4];
inputEvent.isRepeat=true;
if(realStart)
var varDate=new Date($.fullCalendar.parseDate(realStart).getTime());
else if(realEnd)
var varDate=new Date($.fullCalendar.parseDate(realEnd).getTime());
if(realEnd)
var varEndDate=new Date($.fullCalendar.parseDate(realEnd).getTime());
var lastGenDate='';
var repeatStart='', repeatEnd='';
if(realStart)
repeatStart=new Date(varDate.getTime());
if(realEnd)
repeatEnd=new Date(varEndDate.getTime());
var untilDate='',
realUntilDate='',
realUntil='';
if(until!=='')
{
if(isUntilDate)
{
if(until.indexOf('T')!=-1)
{
var uString = until.substring(0, 4)+'-'+until.substring(4, 6)+'-'+until.substring(6, 8)+'T'+until.substring(9, 11)+':'+until.substring(11, 13)+':'+until.substring(13, 15);
var ut=$.fullCalendar.parseDate(uString);
if(ut==null)
return false;
if(ut.toString()=='Invalid Date')
return false;
if(globalSettings.timezonesupport.value && tzName in timezones)
valOffsetFrom=getOffsetByTZ(tzName, ut);
if(valOffsetFrom)
{
var intOffset=valOffsetFrom.getSecondsFromOffset()*1000;
ut.setTime(ut.getTime()+intOffset);
}
untilDate = new Date(ut.getTime());
}
else
{
untilDate=$.fullCalendar.parseDate(until.substring(0, 4)+'-'+until.substring(4, 6)+'-'+until.substring(6, 8));
if(realStart!='')
{
untilDate.setHours($.fullCalendar.parseDate(realStart).getHours());
untilDate.setMinutes($.fullCalendar.parseDate(realStart).getMinutes());
untilDate.setSeconds($.fullCalendar.parseDate(realStart).getSeconds());
}
else if(realEnd!='')
{
untilDate.setHours($.fullCalendar.parseDate(realEnd).getHours());
untilDate.setMinutes($.fullCalendar.parseDate(realEnd).getMinutes());
untilDate.setSeconds($.fullCalendar.parseDate(realEnd).getSeconds());
}
}
realUntil='';
}
else
{
untilDate='';
realUntil=until;
}
realUntilDate=untilDate;
inputEvent.untilDate=untilDate;
}
else
{
untilDate=globalToLoadedLimitTodo;
realUntilDate='';
inputEvent.untilDate='never';
}
var repeatCount=0, realRepeatCount=0;
var repeatLimit = new Date(globalToLoadedLimitTodo.getTime());
repeatLimit.setMonth(repeatLimit.getMonth() + 2);
var dayDifference=0;
if(realEnd)
dayDifference=varEndDate.getTime()-varDate.getTime();
var lastGenDate=generateTodoRepeatInstances({
dayDifference:dayDifference,
untilDate:realUntilDate,
repeatStart:repeatStart,
repeatEnd:repeatEnd,
futureRLimit:repeatLimit,
stringUID:stringUID,
recurrence_id_array:recurrence_id_array,
exDates:exDates,
alertTime:alertTime,
ignoreAlarms:inputCollection.ignoreAlarms,
isChange:isChange,
todoArray:todoArray,
preTodoArray:preTodoArray,
realRepeatCount:realRepeatCount,
repeatCount:repeatCount,
items:new todoItems(start,end, realUntilDate, frequency, interval, realUntil, wkst, repeatStart, repeatEnd, repeatCount, realRepeatCount, byDay, location, note, title, inputEvent.uid, vcalendar, inputEvent.etag, alertTime, alertNote, status, filterStatus, rec_id, repeatHash, percent, inputEvent.displayValue, rid, compareString, tzName, realStart, realEnd, alertTimeOut,classType,url,completedOn, toIt, priority,renderPriority, finalAString,ruleString)
});
}
else
{
if(end!='' && typeof end == 'string')
{
var ttt = $.fullCalendar.parseDate(end);
end=new Date(ttt.getTime());
}
if(!inputCollection.ignoreAlarms)
alertTimeOut=setAlertTimeouts(true, alertTime, start,end, {title:title, status:status},true, inputEvent.uid);
var tmpObj=new todoItems(start, end, '', '', '', '', '', '', '', '', '', '', location, note, title, inputEvent.uid, vcalendar, inputEvent.etag, alertTime, alertNote, status, filterStatus, rec_id, repeatHash, percent, inputEvent.displayValue, rid, compareString, tzName, realStart, realEnd, alertTimeOut,classType,url,completedOn,toIt, priority,renderPriority, finalAString,'');
preTodoArray.splice(preTodoArray.length, 0, tmpObj);
if(isChange)
globalCalTodo=tmpObj;
}
deleteEventFromArray(inputEvent.uid);
$.merge(globalEventList.displayTodosArray[rid],preTodoArray);
}
}