diff options
Diffstat (limited to 'radicale_web/web/infcloud/vtodo.js')
-rw-r--r-- | radicale_web/web/infcloud/vtodo.js | 3531 |
1 files changed, 0 insertions, 3531 deletions
diff --git a/radicale_web/web/infcloud/vtodo.js b/radicale_web/web/infcloud/vtodo.js deleted file mode 100644 index b110975..0000000 --- a/radicale_web/web/infcloud/vtodo.js +++ /dev/null @@ -1,3531 +0,0 @@ -/* -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==String(CryptoJS.SHA256(inputTodos[iE].vcalendar)))) - continue; - var component=buildTimezoneComponent(inputTodos[iE].timeZone); - if(component!='' && (inputRepeatObj.vcalendarHash!=String(CryptoJS.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==String(CryptoJS.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!=String(CryptoJS.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==String(CryptoJS.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==String(CryptoJS.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==String(CryptoJS.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); - } -} |