12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265 |
- /*
- CalDavZAP - the open source CalDAV 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/>.
- */
- String.prototype.parseComnpactISO8601=function(uid)
- {
- if(this.length>=15)
- var formattedString=this.substring(0, 4)+'/'+this.substring(4, 6)+'/'+this.substring(6, 8)+' '+this.substring(9, 11)+':'+this.substring(11, 13)+':'+this.substring(13, 15);
- else
- var formattedString=this.substring(0, 4)+'/'+this.substring(4, 6)+'/'+this.substring(6, 8)+' '+'00:00:00';
- var value=Date.parse(formattedString);
- if(isNaN(value))
- return false
- else
- return new Date(value);
- }
- function repeatStartCompare(objA,objB)
- {
- var startA='',startB='';
- if(objA.rec_id!='')
- startA=objA.rec_id.parseComnpactISO8601();
- else if(objA.start)
- startA=new Date(objA.start.getTime());
- else if(objA.end)
- startA=new Date(objA.end.getTime());
- else
- startA=Infinity;
- if(objB.rec_id!='')
- startB=objB.rec_id.parseComnpactISO8601();
- else if(objB.start)
- startB=new Date(objB.start.getTime());
- else if(objB.end)
- startB=new Date(objB.end.getTime());
- else
- startB=Infinity;
- if(startA<startB)
- return -1;
- if(startA>startB)
- return 1;
- return 0;
- }
- function findWeek(weekNo,inDate,day)
- {
- var distance = (day + 7 - inDate.getDay()) % 7;
- var date = new Date(inDate.getTime());
- date.setDate(date.getDate() + distance);
- if(date.getWeekNo() <= weekNo)
- date.setDate(date.getDate() + 7*(weekNo-date.getWeekNo()));
- else
- {
- var actualYearWeeks = new Date(date.getFullYear(),11,31,1,1,1).getWeekNo();
- date.setDate(date.getDate() + 7*(actualYearWeeks-date.getWeekNo()));
- }
- }
- String.prototype.getSecondsFromOffset=function()
- {
- if(this.length>=5)
- {
- var hours=this.substring(1,3);
- var minutes=this.substring(3,5);
- var seconds='00';
- if(this.length>=7)
- seconds=this.substring(5,7);
- var value=parseInt(hours,10)*60*60+parseInt(minutes,10)*60+parseInt(seconds,10);
- if(this.charAt(0)=='-')
- value=value*-1;
- if(!isNaN(value))
- return value
- else
- return 0;
- }
- else
- return 0;
- }
- Array.prototype.indexElementOf=function(value)
- {
- for(var i=0;i<this.length;i++)
- if(this[i].indexOf(value)!=-1)
- return i;
- return -1;
- }
- function setAlertTimeouts(isTodo, alertTime, dateStart, dateEnd, params, firstInstance, uid)
- {
- var alertTimeOut=new Array();
- if(isTodo && dateEnd!='')
- {
- if(typeof dateEnd=='string')
- dateStart = dateEnd;
- else
- dateStart=new Date(dateEnd.getTime());
- }
- else if(isTodo && dateStart!='')
- {
- if(typeof dateStart=='string')
- dateEnd=dateStart;
- else
- dateEnd=new Date(dateStart.getTime());
- }
- if(alertTime.length>0)
- {
- for(var v=0;v<alertTime.length;v++)
- {
- if((alertTime[v].charAt(0)=='-') || (alertTime[v].charAt(0)=='+') || firstInstance)
- {
- var startTime;
- var aTime='';
- if((dateStart!='' || dateEnd!='') && alertTime[v].charAt(0)=='-')
- {
- if(typeof dateStart=='string')
- startTime = $.fullCalendar.parseDate(dateStart);
- else
- startTime=new Date(dateStart.getTime());
- aTime=startTime.getTime() - parseInt(alertTime[v].substring(1, alertTime[v].length-1));
- }
- else if((dateStart!='' || dateEnd!='') && alertTime[v].charAt(0)=='+')
- {
- if(typeof dateEnd=='string')
- startTime = $.fullCalendar.parseDate(dateEnd);
- else
- startTime=new Date(dateEnd.getTime());
- aTime=startTime.getTime() + parseInt(alertTime[v].substring(1, alertTime[v].length-1));
- }
- else if(firstInstance)
- {
- aTime=$.fullCalendar.parseDate(alertTime[v]);
- if(isTodo)
- var displayDate=(dateEnd=='' ? dateStart : dateEnd);
- else
- var displayDate=dateStart;
- if(displayDate!='')
- startTime = new Date(displayDate.getTime());
- else
- startTime='';
- }
- var now=new Date();
- if(aTime!==''&&aTime>now)
- {
- var delay=aTime-now;
- if(maxAlarmValue<delay)
- delay=maxAlarmValue;
- if(isTodo)
- alertTimeOut[alertTimeOut.length]=setTimeout(function(startTime){
- showAlertTODO(uid, (aTime-now), {start:(startTime!='' ? new Date(startTime.getTime()) : ''), status:params.status, title:params.title});
- }, delay,startTime);
- else
- alertTimeOut[alertTimeOut.length]=setTimeout(function(startTime){
- showAlertEvents(uid, (aTime-now), {start:new Date(startTime.getTime()), allDay:params.allDay, title:params.title});
- }, delay,startTime);
- }
- }
- }
- }
- return alertTimeOut;
- }
- function isInRecurrenceArray(varDate,stringUID,recurrence_id_array, tzName)
- {
- var checkRec=false;
- var checkDate='';
- if(typeof varDate=='string')
- checkDate=$.fullCalendar.parseDate(varDate);
- else
- checkDate=new Date(varDate.getTime());
- if(recurrence_id_array.length>0)
- {
- for(var ir=0;ir<recurrence_id_array.length;ir++)
- {
- var recString = recurrence_id_array[ir].split(';')[0];
- if(recString.charAt(recString.length-1)=='Z')
- {
- if(globalSettings.timezonesupport.value && tzName in timezones)
- {
- var recValOffsetFrom=getOffsetByTZ(tzName, varDate);
- var recTime = new Date(recString.parseComnpactISO8601().getTime());
- if(recValOffsetFrom)
- {
- var rintOffset=recValOffsetFrom.getSecondsFromOffset()*1000;
- recTime.setTime(recTime.getTime()+rintOffset);
- }
- if(recTime.toString()+recurrence_id_array[ir].split(';')[1] == varDate+stringUID)
- checkRec=true;
- }
- }
- else
- {
- if(recString.parseComnpactISO8601().toString()+recurrence_id_array[ir].split(';')[1] == varDate+stringUID)
- checkRec=true;
- }
- }
- }
- return checkRec;
- }
- function applyTimezone(previousTimezone,isEventLocal)
- {
- updateMainLoaderTextTimezone();
- $('#MainLoader').show();
- var eventsDone=false;
- var todosDone=false;
- var collections=globalResourceCalDAVList.collections;
- var todoCollections=globalResourceCalDAVList.TodoCollections;
- var calendarCount=0, calendarCounter=0;
- var todoCount=0, todoCounter=0;
- for(var i=0;i<collections.length;i++)
- if(collections[i].uid!=undefined)
- calendarCount++;
- for(var i=0;i<todoCollections.length;i++)
- if(todoCollections[i].uid!=undefined)
- todoCount++;
- var eventsArray=globalEventList.displayEventsArray;
- var todosArray=globalEventList.displayTodosArray;
- for(var i=0;i<collections.length;i++)
- if(collections[i].uid!=undefined)
- {
- setTimeout(function(i){
- for(var j=0;j<eventsArray[collections[i].uid].length;j++)
- {
- if(eventsArray[collections[i].uid][j].timeZone=='local' || eventsArray[collections[i].uid][j].allDay)
- continue;
- var dateStart=eventsArray[collections[i].uid][j].start;
- var previousOffset=getOffsetByTZ(previousTimezone, dateStart).getSecondsFromOffset();
- var actualOffset='';
- if(typeof globalSessionTimeZone!='undefined' && globalSessionTimeZone!=null && globalSessionTimeZone!='')
- actualOffset=getOffsetByTZ(globalSessionTimeZone, dateStart).getSecondsFromOffset();
- else
- actualOffset=dateStart.getTimezoneOffset()*60*-1;
- //if timezonesupport is turned off go to local
- if(typeof isEventLocal!='undefined')
- actualOffset=getOffsetByTZ(eventsArray[collections[i].uid][j].timeZone, dateStart).getSecondsFromOffset();
- if(typeof isEventLocal!='undefined' && !isEventLocal)
- var intOffset=(previousOffset-actualOffset)*1000;
- else
- var intOffset=(actualOffset-previousOffset)*1000;
- eventsArray[collections[i].uid][j].start.setTime(eventsArray[collections[i].uid][j].start.getTime()+intOffset);
- if(eventsArray[collections[i].uid][j].end)
- eventsArray[collections[i].uid][j].end.setTime(eventsArray[collections[i].uid][j].end.getTime()+intOffset);
- var calEvent=eventsArray[collections[i].uid][j];
- if(j==0 || j>0 && eventsArray[collections[i].uid][j].id!=eventsArray[collections[i].uid][j-1].id)
- if(calEvent.alertTime.length>0)
- {
- for(var k=0; k<calEvent.alertTimeOut.length; k++)
- clearTimeout(calEvent.alertTimeOut[k]);
- var aTime='', now=new Date();
- for(var alarmIterator=0;alarmIterator<calEvent.alertTime.length;alarmIterator++)
- {
- if(eventsArray[collections[i].uid][j].start!=null && calEvent.alertTime[alarmIterator].charAt(0)=='-')
- aTime=eventsArray[collections[i].uid][j].start.getTime() - parseInt(calEvent.alertTime[alarmIterator].substring(1, calEvent.alertTime[alarmIterator].length-1));
- else if(eventsArray[collections[i].uid][j].end!=null && calEvent.alertTime[alarmIterator].charAt(0)=='+')
- aTime=eventsArray[collections[i].uid][j].end.getTime() + parseInt(calEvent.alertTime[alarmIterator].substring(1, calEvent.alertTime[alarmIterator].length-1));
- else
- {
- var previousOffset=getOffsetByTZ(previousTimezone, $.fullCalendar.parseDate(calEvent.alertTime[alarmIterator])).getSecondsFromOffset();
- var actualOffset='';
- if(typeof globalSessionTimeZone!='undefined' && globalSessionTimeZone!=null && globalSessionTimeZone!='')
- actualOffset=getOffsetByTZ(globalSessionTimeZone, $.fullCalendar.parseDate(calEvent.alertTime[alarmIterator])).getSecondsFromOffset();
- else
- actualOffset=$.fullCalendar.parseDate(calEvent.alertTime[alarmIterator]).getTimezoneOffset()*60*-1;
- if(typeof isEventLocal!='undefined')
- actualOffset=getOffsetByTZ(eventsArray[collections[i].uid][j].timeZone, $.fullCalendar.parseDate(calEvent.alertTime[alarmIterator])).getSecondsFromOffset();
- if(typeof isEventLocal!='undefined' && !isEventLocal)
- var intOffset=(previousOffset-actualOffset)*1000;
- else
- var intOffset=(actualOffset-previousOffset)*1000;
- aTime=new Date($.fullCalendar.parseDate(calEvent.alertTime[alarmIterator]).getTime()+intOffset);
- eventsArray[collections[i].uid][j].alertTime[alarmIterator]=$.fullCalendar.formatDate(aTime, "yyyy-MM-dd HH:mm:ss");
- }
- if(aTime>now)
- {
- var delay=aTime-now;
- if(maxAlarmValue<delay)
- delay=maxAlarmValue;
- eventsArray[collections[i].uid][j].alertTimeOut[alarmIterator]=setTimeout(function(){
- showAlertEvents(calEvent.id, (aTime-now), {start:calEvent.start, allDay:calEvent.allDay, title:calEvent.title});
- }, delay);
- }
- }
- }
- }
- calendarCounter++;
- if(calendarCounter==calendarCount)
- {
- refetchCalendarEvents();
- eventsDone=true;
- if(todosDone)
- $('#MainLoader').hide();
- }
- },10,i);
- }
- for(var i=0;i<todoCollections.length;i++)
- if(todoCollections[i].uid!=undefined)
- {
- setTimeout(function(i){
- for(var j=0;j<todosArray[todoCollections[i].uid].length;j++)
- {
- if(todosArray[todoCollections[i].uid][j].start)
- {
- if(typeof todosArray[todoCollections[i].uid][j].start =='string')
- todosArray[todoCollections[i].uid][j].start = $.fullCalendar.parseDate(todosArray[todoCollections[i].uid][j].start);
- var dateStart = todosArray[todoCollections[i].uid][j].start;
- var previousOffset=getOffsetByTZ(previousTimezone, dateStart).getSecondsFromOffset();
- var actualOffset='';
- if(typeof globalSessionTimeZone!='undefined' && globalSessionTimeZone!=null && globalSessionTimeZone!='')
- actualOffset=getOffsetByTZ(globalSessionTimeZone, dateStart).getSecondsFromOffset();
- else
- actualOffset=dateStart.getTimezoneOffset()*60*-1;
- var intOffset=(actualOffset-previousOffset)*1000;
- todosArray[todoCollections[i].uid][j].start.setTime(todosArray[todoCollections[i].uid][j].start.getTime()+intOffset);
- }
- if(todosArray[todoCollections[i].uid][j].end)
- {
- if(typeof todosArray[todoCollections[i].uid][j].end =='string')
- todosArray[todoCollections[i].uid][j].end=$.fullCalendar.parseDate(todosArray[todoCollections[i].uid][j].end);
- var dateEnd = todosArray[todoCollections[i].uid][j].end;
- var previousOffset=getOffsetByTZ(previousTimezone, dateEnd).getSecondsFromOffset();
- var actualOffset='';
- if(typeof globalSessionTimeZone!='undefined' && globalSessionTimeZone!=null && globalSessionTimeZone!='')
- actualOffset=getOffsetByTZ(globalSessionTimeZone, dateEnd).getSecondsFromOffset();
- else
- actualOffset=dateEnd.getTimezoneOffset()*60*-1;
- if(typeof isEventLocal!='undefined')
- actualOffset=getOffsetByTZ(todosArray[todoCollections[i].uid][j].timeZone, dateStart).getSecondsFromOffset();
- if(typeof isEventLocal!='undefined' && !isEventLocal)
- var intOffset=(previousOffset-actualOffset)*1000;
- else
- var intOffset=(actualOffset-previousOffset)*1000;
- todosArray[todoCollections[i].uid][j].end.setTime(todosArray[todoCollections[i].uid][j].end.getTime()+intOffset);
- }
- var todoEvent=todosArray[todoCollections[i].uid][j];
- if(j==0 || j>0 && todosArray[todoCollections[i].uid][j].id!=todosArray[todoCollections[i].uid][j-1].id)
- if(todoEvent.alertTime.length>0)
- {
- if(todoEvent.end)
- var showDate= new Date(todoEvent.end.getTime());
- else if(todoEvent.start)
- var showDate= new Date(todoEvent.start.getTime());
- else
- var showDate=new Date();
- for(var k=0; k<todoEvent.alertTimeOut.length; k++)
- clearTimeout(todoEvent.alertTimeOut[k]);
- var aTime='', now='';
- for(var alarmIterator=0;alarmIterator<todoEvent.alertTime.length;alarmIterator++)
- {
- if(todoEvent.alertTime[alarmIterator].charAt(0)=='-' || todoEvent.alertTime[alarmIterator].charAt(0)=='+')
- {
- aTime=showDate.getTime();
- var dur=parseInt(todoEvent.alertTime[alarmIterator].substring(1, todoEvent.alertTime[alarmIterator].length-1));
- if(todoEvent.alertTime[alarmIterator].charAt(0)=='-')
- aTime=aTime-dur;
- else
- aTime=aTime+dur;
- now=new Date();
- }
- else
- {
- var previousOffset=getOffsetByTZ(previousTimezone, $.fullCalendar.parseDate(todoEvent.alertTime[alarmIterator])).getSecondsFromOffset();
- var actualOffset='';
- if(typeof globalSessionTimeZone!='undefined' && globalSessionTimeZone!=null && globalSessionTimeZone!='')
- actualOffset=getOffsetByTZ(globalSessionTimeZone, $.fullCalendar.parseDate(todoEvent.alertTime[alarmIterator])).getSecondsFromOffset();
- else
- actualOffset=$.fullCalendar.parseDate(todoEvent.alertTime[alarmIterator]).getTimezoneOffset()*60*-1;
- if(typeof isEventLocal!='undefined')
- actualOffset=getOffsetByTZ(todosArray[todoCollections[i].uid][j].timeZone, $.fullCalendar.parseDate(todoEvent.alertTime[alarmIterator])).getSecondsFromOffset();
- if(typeof isEventLocal!='undefined' && !isEventLocal)
- var intOffset=(previousOffset-actualOffset)*1000;
- else
- var intOffset=(actualOffset-previousOffset)*1000;
- aTime=new Date($.fullCalendar.parseDate(todoEvent.alertTime[alarmIterator]).getTime()+intOffset);
- todosArray[todoCollections[i].uid][j].alertTime[alarmIterator]=$.fullCalendar.formatDate(aTime, "yyyy-MM-dd HH:mm:ss");
- now=new Date();
- }
- if(aTime>now)
- {
- var delay=aTime-now;
- if(maxAlarmValue<delay)
- delay=maxAlarmValue;
- todosArray[todoCollections[i].uid][j].alertTimeOut[alarmIterator]=setTimeout(function(){
- showAlertEvents(todoEvent.id, (aTime-now), {start:showDate, allDay:todoEvent.allDay, title:todoEvent.title});
- }, delay);
- }
- }
- }
- }
- todoCounter++;
- if(todoCounter==todoCount)
- {
- refetchTodoEvents();
- todosDone=true;
- if(eventsDone)
- $('#MainLoader').hide();
- }
- },10,i);
- }
- }
- function getLocalOffset(date)
- {
- if(typeof globalSessionTimeZone!='undefined' && globalSessionTimeZone!=null && globalSessionTimeZone!='')
- return getOffsetByTZ(globalSessionTimeZone, date).getSecondsFromOffset()*-1;
- else
- date.getTimezoneOffset()*60;
- }
- function changeRuleForFuture(inputEvent, repeatCount)
- {
- var vcalendar=inputEvent.vcalendar;
- var vcalendar_element=vcalendar.match(vCalendar.pre['contentline_RRULE2']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- var ruleParts=parsed[4].split(';');
- var foundUntil=false;
- var parsedLine=parsed[0];
- for(var i=0; i<ruleParts.length;i++)
- {
- if(ruleParts[i].indexOf('UNTIL')!=-1 || ruleParts[i].indexOf('COUNT')!=-1)
- {
- parsedLine=parsedLine.replace(ruleParts[i],'COUNT='+(repeatCount-1));
- foundUntil=true;
- }
- }
- if(!foundUntil)
- {
- var tmp=parsed[4]+';COUNT='+(repeatCount-1);
- parsedLine=parsedLine.replace(parsed[4], tmp);
- }
- vcalendar=vcalendar.replace(parsed[0], parsedLine);
- }
- return vcalendar;
- }
- function buildTimezoneComponent(tzName)
- {
- var component='';
- var dayNames=['SU','MO', 'TU', 'WE', 'TH', 'FR', 'SA'];
- if(!tzName || tzName=='local' || tzName=='UTC')
- return component;
- if(tzName in timezones)
- {
- component+='BEGIN:VTIMEZONE\r\nTZID:'+tzName+'\r\n';
- for(comp in timezones[tzName])
- {
- if(comp=='daylightComponents')
- {
- var daylightC=timezones[tzName].daylightComponents;
- var compName='DAYLIGHT';
- }
- else if(comp=='standardComponents')
- {
- var daylightC=timezones[tzName].standardComponents;
- var compName='STANDARD';
- }
- for(var i in daylightC)
- {
- if(isNaN(i))
- continue;
- component+='BEGIN:'+compName+'\r\n';
- for(key in daylightC[i])
- {
- switch(key)
- {
- case 'dtStart':
- component+='DTSTART:'+daylightC[i][key]+'\r\n';
- break;
- case 'tzName':
- component+='TZNAME:'+daylightC[i][key]+'\r\n';
- break;
- case 'tzOffsetFROM':
- component+='TZOFFSETFROM:'+daylightC[i][key]+'\r\n';
- break;
- case 'tzOffsetTO':
- component+='TZOFFSETTO:'+daylightC[i][key]+'\r\n';
- break;
- case 'startMonth':
- component+='RRULE:FREQ=YEARLY';
- if(daylightC[i]['startMonth'])
- component+=';BYMONTH='+daylightC[i]['startMonth'];
- if(typeof daylightC[i]['startDay']!='undefined' && typeof dayNames[daylightC[i]['startDay']]!='undefined')
- {
- if(!daylightC[i]['startCount'])
- component+=';BYDAY='+dayNames[daylightC[i]['startDay']];
- else
- component+=';BYDAY='+daylightC[i]['startCount']+dayNames[daylightC[i]['startDay']];
- }
- component+='\r\n';
- break;
- case 'rDates':
- if(daylightC[i]['rDates'])
- for(var j=0;j<daylightC[i]['rDates'].length;j++)
- component+='RDATE:'+daylightC[i]['rDates'][j]+'\r\n';
- break;
- default:
- break;
- }
- }
- component+='END:'+compName+'\r\n';
- }
- }
- component+='END:VTIMEZONE\r\n';
- }
- return component;
- }
- function getOffsetByTZ(tZone, date,uid)
- {
- var offset='+0000';
- if(tZone in timezones && tZone!='UTC')
- {
- var objDayLight='', objStandard='';
- var checkRule=true;
- var daylightComponents=timezones[tZone].daylightComponents;
- var actualDaylightComponent;
- if(daylightComponents)
- {
- for(var i=0;i<daylightComponents.length;i++)
- {
- if(daylightComponents[i].dtStart.parseComnpactISO8601()>date)
- continue;
- if(checkRule && daylightComponents[i].startMonth) // is RRULE SET
- {
- objDayLight=daylightComponents[i];
- actualDaylightComponent=getDateFromDay(objDayLight, date,false,uid);
- break;
- }
- else
- {
- for(var j=0;j<daylightComponents[i].rDates.length; j++)
- {
- if(daylightComponents[i].rDates[j].parseComnpactISO8601()<date && (actualDaylightComponent==null || (date-daylightComponents[i].rDates[j].parseComnpactISO8601())<(date-actualDaylightComponent.startDate)))
- {
- objDayLight=daylightComponents[i];
- actualDaylightComponent={offsetFrom:objDayLight.tzOffsetFROM, offsetTo: objDayLight.tzOffsetTO,startDate: daylightComponents[i].rDates[j].parseComnpactISO8601()};
- }
- }
- }
- checkRule=false;
- }
- }
- var standardComponents=timezones[tZone].standardComponents;
- var actualStandardComponent;
- checkRule=true;
- if(standardComponents)
- {
- for(var i=0;i<standardComponents.length;i++)
- {
- if(standardComponents[i].dtStart.parseComnpactISO8601()>date)
- continue;
- if(checkRule && standardComponents[i].startMonth) // is RRULE SET
- {
- objDayLight=standardComponents[i];
- actualStandardComponent=getDateFromDay(objDayLight, date);
- break;
- }
- else
- {
- for(var j=0;j<standardComponents[i].rDates.length; j++)
- {
- if(standardComponents[i].rDates[j].parseComnpactISO8601()<date && (actualStandardComponent==null || (date-standardComponents[i].rDates[j].parseComnpactISO8601())<(date-actualStandardComponent.startDate)))
- {
- objStandard=standardComponents[i];
- actualStandardComponent={offsetFrom:objStandard.tzOffsetFROM, offsetTo: objStandard.tzOffsetTO,startDate: standardComponents[i].rDates[j].parseComnpactISO8601()};
- }
- }
- }
- checkRule=false;
- }
- }
- if(actualDaylightComponent && actualStandardComponent)
- {
- if(actualDaylightComponent.startDate>actualStandardComponent.startDate)
- offset=actualDaylightComponent.offsetTo;
- else
- offset=actualStandardComponent.offsetTo;
- }
- else if(actualDaylightComponent)
- offset=actualDaylightComponent.offsetTo;
- else if(actualStandardComponent)
- offset=actualStandardComponent.offsetTo;
- }
- else if(tZone == 'local')
- offset = getStringLocalOffset(date);
- return offset;
- }
- function getStringLocalOffset(date)
- {
- var offset = '+0000';
- var localOffset = date.getTimezoneOffset();
- if(localOffset>0)
- {
- var hours = Math.floor(localOffset/60);
- var minutes = localOffset - hours*60;
- offset = '-' + (hours<10 ? '0'+hours : hours);
- offset += (minutes<10 ? '0'+minutes : minutes);
- }
- else if(localOffset<0)
- {
- localOffset = localOffset*-1;
- var hours = Math.floor(localOffset/60);
- var minutes = localOffset - hours*60;
- offset = '+' + (hours<10 ? '0'+hours : hours);
- offset += (minutes<10 ? '0'+minutes : minutes);
- }
- return offset;
- }
- function getDayLightObject(tzObject,t)
- {
- var dayLightStartDate, dayLightEndDate, myDate=t;
- dayLightStartDate=getDateFromDay(tzObject, t);
- dayLightEndDate=getDateFromDay(tzObject, t);
- for(var i=0;i<tzObject.rDatesDT.length;i++)
- {
- var dateDT=tzObject.rDatesDT[i].parseComnpactISO8601();
- if(dateDT)
- if(dateDT.getFullYear()==t.getFullYear())
- {
- dayLightStartDate=dateDT;
- break;
- }
- }
- for(var i=0;i<tzObject.rDatesST.length;i++)
- {
- var dateST=tzObject.rDatesST[i].parseComnpactISO8601();
- if(dateST && dateST.getFullYear()==t.getFullYear())
- {
- dayLightEndDate=dateST;
- break;
- }
- }
- if(dayLightStartDate>dayLightEndDate)
- {
- if(myDate>dayLightStartDate)
- dayLightEndDate.setFullYear(dayLightEndDate.getFullYear()+1);
- else
- dayLightStartDate.setFullYear(dayLightStartDate.getFullYear()-1);
- }
- return {dayLightStartDate : dayLightStartDate, dayLightEndDate: dayLightEndDate};
- }
- function deleteEventFromArray(uid)
- {
- var rid=uid.substring(0, uid.lastIndexOf('/')+1);
- var count=0;
- if(globalEventList.displayEventsArray[rid]!=null && typeof globalEventList.displayEventsArray[rid] != 'undefined')
- for(var i=globalEventList.displayEventsArray[rid].length-1;i>=0;i--)
- if(globalEventList.displayEventsArray[rid][i].id==uid)
- {
- count++;
- for(var o=0;o<globalEventList.displayEventsArray[rid][i].alertTimeOut.length;o++)
- clearTimeout(globalEventList.displayEventsArray[rid][i].alertTimeOut[o]);
- globalEventList.displayEventsArray[rid].splice(i, 1);
- }
- if(count==0)
- if(globalEventList.displayTodosArray[rid]!=null && typeof globalEventList.displayTodosArray[rid] != 'undefined')
- for(var i=globalEventList.displayTodosArray[rid].length-1;i>=0;i--)
- if(globalEventList.displayTodosArray[rid][i].id==uid)
- {
- for(var o=0;o<globalEventList.displayTodosArray[rid][i].alertTimeOut.length;o++)
- clearTimeout(globalEventList.displayTodosArray[rid][i].alertTimeOut[o]);
- globalEventList.displayTodosArray[rid].splice(i, 1);
- }
- }
- function findEventInArray(uid, isEvent,repeatHash)
- {
- var rid=uid.substring(0, uid.lastIndexOf('/')+1);
- var firstItem=null;
- if(isEvent)
- {
- for(var i=0; i<globalEventList.displayEventsArray[rid].length;i++)
- if(globalEventList.displayEventsArray[rid][i].id==uid)
- return globalEventList.displayEventsArray[rid][i];
- }
- else
- {
- for(var i=0; i<globalEventList.displayTodosArray[rid].length;i++)
- if(globalEventList.displayTodosArray[rid][i].id==uid)
- {
- if(typeof repeatHash=='undefined' || repeatHash==null)
- return globalEventList.displayTodosArray[rid][i];
- else if(globalEventList.displayTodosArray[rid][i].repeatHash==repeatHash)
- return globalEventList.displayTodosArray[rid][i];
- else if(firstItem==null)
- firstItem=globalEventList.displayTodosArray[rid][i];
- }
- }
- return firstItem || '';
- }
- function getvCalendarstart(inputEvent)
- {
- var vcalendar_element='',
- itsOK=false;
- var vEvent=inputEvent.vcalendar;
- if(vEvent.match(vCalendar.pre['vcalendar']))
- {
- vcalendar_element=vEvent.match(vCalendar.pre['beginVTODO']);
- if(vcalendar_element!=null)
- {
- var endVT=vEvent.match(vCalendar.pre['endVTODO']);
- if(endVT!=null)
- return '1970-01-01T01:01:01Z';
- return false;
- }
- vcalendar_element=vEvent.match(vCalendar.pre['beginVEVENT']);
- if(vcalendar_element==null)
- itsOK=false;
- else
- itsOK=true;
- if(!itsOK)
- return false;
- vcalendar_element=vEvent.match(vCalendar.pre['endVEVENT']);
- if(vcalendar_element==null)
- itsOK=false;
- else
- itsOK=true;
- if(!itsOK)
- return false;
- var oo='',
- start='',
- help1;
- /*
- vcalendar_element=vEvent.match(vCalendar.pre['tzone']);
- if(vcalendar_element!=null)
- vEvent=vEvent.replace(vcalendar_element[0],'');
- */
- //FIX
- // var beginTimeZone=vEvent.indexOf('BEGIN:VTIMEZONE');
- // var startEndTimeZone=vEvent.lastIndexOf('END:VTIMEZONE');
- // var endTimeZone=0;
- // if(beginTimeZone!=-1 && startEndTimeZone!=-1)
- // {
- // for(i=(startEndTimeZone+2);i<vEvent.length;i++)
- // {
- // if(vEvent.charAt(i)=='\n')
- // {
- // endTimeZone=i+1;
- // break;
- // }
- // }
- // vTimeZone=vEvent.substring(beginTimeZone, endTimeZone);
- // vEvent=vEvent.substring(0, beginTimeZone)+vEvent.substring(endTimeZone, vEvent.length);
- // }
- vEvent = vEvent.replace(/BEGIN:VTIMEZONE((\s|.)*?)END:VTIMEZONE\r\n/g, '');
- vcalendar_element=vEvent.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)+'T00:00:00Z';
- 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)+'Z';
- start=help1;
- }
- if(start!='')
- {
- var t=$.fullCalendar.parseDate(help1);
- if((t.toString())=='Invalid Date')
- return false;
- }
- return help1;
- }
- else
- return -1;
- }
- function giveMeUntilDate(start, count, frequency, interval, allDay)
- {
- var varDate=$.fullCalendar.parseDate(start);
- var monthPlus=0,
- dayPlus=0;
- if(frequency=="DAILY")
- {
- monthPlus=0,
- dayPlus=1;
- }
- else if(frequency=="WEEKLY")
- {
- monthPlus=0,
- dayPlus=7;
- }
- else if(frequency=="MONTHLY")
- {
- monthPlus=1,
- dayPlus=0;
- }
- else if(frequency=="YEARLY")
- {
- monthPlus=12,
- dayPlus=0;
- }
- var iterator=1, counter=1;
- while(iterator<count)
- {
- if(counter%interval==0)
- iterator++;
- if(allDay)
- var td=new Date(varDate.getFullYear(), varDate.getMonth()+monthPlus, varDate.getDate()+dayPlus);
- else
- var td=new Date(varDate.getFullYear(), varDate.getMonth()+monthPlus, varDate.getDate()+dayPlus, varDate.getHours(), varDate.getMinutes(), varDate.getSeconds());
- varDate=td;
- counter++;
- }
- return varDate;
- }
- function checkAndFixMultipleUID(vcalendar, isEvent)
- {
- var vcalendarOrig = vcalendar;
- var uidArray={};
- var uidC=0;
- var eventStringArray=new Array();
- var componentS = 'VEVENT';
- if(!isEvent)
- componentS='VTODO';
- var checkVcalendar = vcalendarOrig;
- var valarm=checkVcalendar.match(vCalendar.pre['valarm']);
- if(valarm!=null)
- checkVcalendar=checkVcalendar.replace(valarm[0], '');
- while(checkVcalendar.match(vCalendar.pre['contentline_UID'])!= null)
- {
- vcalendar_element=checkVcalendar.match(vCalendar.pre['contentline_UID']);
- if(vcalendar_element[0]!=null)
- {
- if(typeof uidArray[vcalendar_element[0]]=='undefined')
- {
- uidArray[vcalendar_element[0]]={isTimezone:false, string:''};
- uidC++;
- }
- }
- checkVcalendar=checkVcalendar.replace(vcalendar_element[0], '\r\n');
- }
- if(uidC==1)
- return [vcalendar];
- var beginTimeZone=vcalendarOrig.indexOf('BEGIN:VTIMEZONE');
- var startEndTimeZone=vcalendarOrig.lastIndexOf('END:VTIMEZONE');
- var endTimeZone=0;
- var vTimeZone='';
- 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);
- }
- while(vcalendarOrig.match(vCalendar.pre[componentS.toLowerCase()])!=null)
- {
- if(vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:'+componentS)-2, vcalendarOrig.indexOf('BEGIN:'+componentS))=='\r\n')
- {
- var partEvent=vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:'+componentS)-2,vcalendarOrig.indexOf('END:'+componentS)+('END:'+componentS).length);
- vcalendarOrig=vcalendarOrig.replace(partEvent, '');
- }
- else
- {
- var partEvent=vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:'+componentS),vcalendarOrig.indexOf('END:'+componentS)+('END:'+componentS).length);
- vcalendarOrig=vcalendarOrig.replace(partEvent, '');
- partEvent+='\r\n';
- }
- var tmpEvent = partEvent;
- var valarm=tmpEvent.match(vCalendar.pre['valarm']);
- if(valarm!=null)
- tmpEvent=tmpEvent.replace(valarm[0], '');
- vcalendar_element=tmpEvent.match(vCalendar.pre['contentline_UID']);
- if(vcalendar_element[0]!=null)
- {
- var vcalendar_element_start=tmpEvent.match(vCalendar.pre['contentline_DTSTART']);
- if(vcalendar_element_start!=null)
- {
- var parsed=vcalendar_element_start[0].match(vCalendar.pre['contentline_parse']);
- var pars=vcalendarSplitParam(parsed[3]);
- if(pars.indexElementOf('TZID=')!=-1)
- uidArray[vcalendar_element[0]].isTimezone=true;
- }
- if(!isEvent && !uidArray[vcalendar_element[0]].isTimezone)
- {
- var vcalendar_element_start=tmpEvent.match(vCalendar.pre['contentline_DUE']);
- if(vcalendar_element_start!=null)
- {
- var parsed=vcalendar_element_start[0].match(vCalendar.pre['contentline_parse']);
- var pars=vcalendarSplitParam(parsed[3]);
- if(pars.indexElementOf('TZID=')!=-1)
- uidArray[vcalendar_element[0]].isTimezone=true;
- }
- }
- uidArray[vcalendar_element[0]].string+=partEvent;
- }
- }
- for(var uid in uidArray)
- {
- var vcalendarS = '';
- // vEvent BEGIN (required by RFC)
- if(vCalendar.tplM['begin']!=null && (process_elem=vCalendar.tplM['begin'][0])!=undefined)
- vcalendarS+=vCalendar.tplM['begin'][0];
- else
- {
- process_elem=vCalendar.tplC['begin'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- vcalendarS+=process_elem;
- }
- // VERSION (required by RFC)
- if(vCalendar.tplM['contentline_VERSION']!=null && (process_elem=vCalendar.tplM['contentline_VERSION'][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['contentline_VERSION'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- }
- process_elem=process_elem.replace('##:::##version##:::##', '2.0');
- vcalendarS+=process_elem;
- // CALSCALE
- if(vCalendar.tplM['contentline_CALSCALE']!=null && (process_elem=vCalendar.tplM['contentline_CALSCALE'][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['contentline_CALSCALE'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- }
- process_elem=process_elem.replace('##:::##calscale##:::##', 'GREGORIAN');
- vcalendarS+=process_elem;
- if(uidArray[uid].isTimezone)
- vcalendarS+=vTimeZone;
- vcalendarS=vcalendarS.substring(0, vcalendarS.length-2);
- vcalendarS+=uidArray[uid].string;
- if(vcalendarS.lastIndexOf('\r\n')!=(vcalendarS.length-2))
- vcalendarS+='\r\n';
- // PRODID
- if(vCalendar.tplM['contentline_PRODID']!=null && (process_elem=vCalendar.tplM['contentline_PRODID'][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['contentline_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');
- vcalendarS+=process_elem;
- if(typeof vCalendar.tplM['unprocessed']!='undefined' && vCalendar.tplM['unprocessed']!='' && vCalendar.tplM['unprocessed']!=null)
- vcalendarS+=vCalendar.tplM['unprocessed'].replace(RegExp('^\r\n'), '');
- vCalendar.tplM['unprocessed']=new Array();
- // vCalendar END (required by RFC)
- if(vCalendar.tplM['end']!=null && (process_elem=vCalendar.tplM['end'][0])!=undefined)
- vcalendarS+=vCalendar.tplM['end'][0];
- else
- {
- process_elem=vCalendar.tplC['end'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- vcalendarS+=process_elem;
- }
- eventStringArray.push(vcalendarS);
- }
- return eventStringArray;
- }
- function dataToVcalendar(operation, accountUID, inputUID, inputEtag, delUID,isFormHidden, deleteMode)
- {
- var vevent=false,
- vCalendarText='',
- groupCounter=0;
- var sel_option='local';
- // vEvent BEGIN (required by RFC)
- if(vCalendar.tplM['begin']!=null && (process_elem=vCalendar.tplM['begin'][0])!=undefined)
- vCalendarText+=vCalendar.tplM['begin'][0];
- else
- {
- process_elem=vCalendar.tplC['begin'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- vCalendarText+=process_elem;
- }
- // VERSION (required by RFC)
- if(vCalendar.tplM['contentline_VERSION']!=null && (process_elem=vCalendar.tplM['contentline_VERSION'][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['contentline_VERSION'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- }
- process_elem=process_elem.replace('##:::##version##:::##', '2.0');
- vCalendarText+=process_elem;
- // CALSCALE
- if(vCalendar.tplM['contentline_CALSCALE']!=null && (process_elem=vCalendar.tplM['contentline_CALSCALE'][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['contentline_CALSCALE'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- }
- process_elem=process_elem.replace('##:::##calscale##:::##', 'GREGORIAN');
- vCalendarText+=process_elem;
- if(delUID!='')
- var rid=delUID.substring(0, delUID.lastIndexOf('/')+1);
- else
- var rid=inputUID.substring(0, inputUID.lastIndexOf('/')+1);
- var inputEvents=jQuery.grep(globalEventList.displayEventsArray[rid],function(e){if(e.id==$('#uid').val() && (e.repeatCount<2 || !e.repeatCount))return true});
- var tzArray=new Array();
- var tzString='';
- var isTimeZone=false;
- var origVcalendarString='';
- var eventStringArray=new Array();
- if(inputEvents.length>0)
- {
- var rid=$('#uid').val().substring(0, $('#uid').val().lastIndexOf('/')+1);
- if(rid)
- if(globalEventList.events[rid][$('#uid').val()].uid!=undefined)
- origVcalendarString=globalEventList.events[rid][$('#uid').val()].vcalendar;
- while(origVcalendarString.match(vCalendar.pre['vevent'])!=null)
- {
- if(origVcalendarString.substring(origVcalendarString.indexOf('BEGIN:VEVENT')-2, origVcalendarString.indexOf('BEGIN:VEVENT'))=='\r\n')
- {
- var partEvent=origVcalendarString.substring(origVcalendarString.indexOf('BEGIN:VEVENT')-2,origVcalendarString.indexOf('END:VEVENT')+'END:VEVENT'.length);
- origVcalendarString=origVcalendarString.replace(partEvent, '');
- }
- else
- {
- var partEvent=origVcalendarString.substring(origVcalendarString.indexOf('BEGIN:VEVENT'),origVcalendarString.indexOf('END:VEVENT')+'END:VEVENT'.length);
- origVcalendarString=origVcalendarString.replace(partEvent, '');
- partEvent+='\r\n';
- }
- eventStringArray[eventStringArray.length]=partEvent;
- }
- }
- var origTimezone = '';
- for(var iE=0;iE<inputEvents.length;iE++)
- {
- if(tzArray.indexOf(inputEvents[iE].timeZone)==-1)
- {
- if(inputEvents[iE].allDay ||(deleteMode && ($('#vcalendarHash').val()==hex_sha256(inputEvents[iE].vcalendar))))
- continue;
- var component=buildTimezoneComponent(inputEvents[iE].timeZone);
- if(component!='' && ($('#vcalendarHash').val()!=hex_sha256(inputEvents[iE].vcalendar)))
- {
- tzArray[tzArray.length]=inputEvents[iE].timeZone;
- tzString+=component;
- if(tzString.lastIndexOf('\r\n')!=(tzString.length-2))
- tzString+='\r\n';
- isTimeZone=true;
- }
- else if(component!='' && $('#vcalendarHash').val()==hex_sha256(inputEvents[iE].vcalendar))
- origTimezone+=component;
- }
- }
- if(isTimeZone)
- {
- if(vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2))
- vCalendarText+='\r\n';
- vCalendarText+=tzString;
- }
- var beginVcalendar = vCalendarText;
- var realEvent='';
- var futureMode = false;
- for(var j=0;j<inputEvents.length;j++)
- {
- eventStringArray.splice(eventStringArray.indexOf(inputEvents[j].vcalendar),1);
- if(($('#futureStart').val()== '' && $('#vcalendarHash').val()!=hex_sha256(inputEvents[j].vcalendar)) || inputEvents[j].rec_id!=$('#recurrenceID').val())
- {
- var stringUIDcurrent=inputEvents[j].vcalendar.match(vCalendar.pre['contentline_UID']);
- if(stringUIDcurrent!=null)
- stringUIDcurrent=stringUIDcurrent[0].match(vCalendar.pre['contentline_parse'])[4];
- if((deleteMode && $('#vcalendarHash').val()==hex_sha256(inputEvents[j].vcalendar)) || (deleteMode && !inputEvents[j].rec_id && $('#vcalendarUID').val()==stringUIDcurrent))
- {
- var ruleString=inputEvents[j].vcalendar.match(vCalendar.pre['contentline_RRULE2']);
- var origRuleString=ruleString;
- var exDate=inputEvents[j].start;
- var process_elem=vCalendar.tplC['contentline_EXDATE'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- if(inputEvents[j].allDay)
- {
- exDate=$('#recurrenceID').val();
- process_elem=process_elem.replace('##:::##AllDay##:::##', ';'+vcalendarEscapeValue('VALUE=DATE'));
- process_elem=process_elem.replace('##:::##TZID##:::##', vcalendarEscapeValue(''));
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(exDate));
- }
- else
- {
- exDate=$('#recurrenceID').val().parseComnpactISO8601();
- if(!$('#allday').prop('checked'))
- if(globalSettings.timezonesupport.value)
- sel_option=$('#timezone').val();
- 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));
- }
- inputEvents[j].vcalendar=inputEvents[j].vcalendar.replace(ruleString,ruleString+process_elem);
- }
- if(inputEvents[j].vcalendar.indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2))
- vCalendarText+=inputEvents[j].vcalendar.substring(2,inputEvents[j].vcalendar.length);
- else if((inputEvents[j].vcalendar.indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2)) || (inputEvents[j].vcalendar.indexOf('\r\n')!=0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2)) )
- vCalendarText+=inputEvents[j].vcalendar;
- else
- vCalendarText+='\r\n'+inputEvents[j].vcalendar;
- }
- else if($('#futureStart').val().split(';')[0]!='' && $('#futureStart').val().split(';')[1]!=inputEvents[j].start)
- {
- if($('#futureStart').val().split(';')[0]>1 && $('#vcalendarHash').val()==hex_sha256(inputEvents[j].vcalendar))
- inputEvents[j].vcalendar=changeRuleForFuture(inputEvents[j], $('#futureStart').val().split(';')[0]);
- if(inputEvents[j].vcalendar.indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2))
- vCalendarText+=inputEvents[j].vcalendar.substring(2,inputEvents[j].vcalendar.length);
- else if((inputEvents[j].vcalendar.indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2)) || (inputEvents[j].vcalendar.indexOf('\r\n')!=0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2)) )
- vCalendarText+=inputEvents[j].vcalendar;
- else
- vCalendarText+='\r\n'+inputEvents[j].vcalendar;
- futureMode=true;
- }
- else if(deleteMode && $('#futureStart').val().split(';')[0]!='' && $('#futureStart').val().split(';')[1]==inputEvents[j].start)
- {
- if($('#vcalendarHash').val()==hex_sha256(inputEvents[j].vcalendar))
- {
- inputEvents[j].vcalendar=changeRuleForFuture(inputEvents[j], 2);
- }
- if(inputEvents[j].vcalendar.indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2))
- vCalendarText+=inputEvents[j].vcalendar.substring(2,inputEvents[j].vcalendar.length);
- else if((inputEvents[j].vcalendar.indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2)) || (inputEvents[j].vcalendar.indexOf('\r\n')!=0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2)) )
- vCalendarText+=inputEvents[j].vcalendar;
- else
- vCalendarText+='\r\n'+inputEvents[j].vcalendar;
- }
- else
- {
- realEvent=inputEvents[j];
- }
- }
- vCalendarText=vCalendarText.replace(realEvent.vcalendar,'');
- for(var ip=0; ip<eventStringArray.length;ip++)
- {
- if(eventStringArray[ip].indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2))
- vCalendarText+=eventStringArray[ip].substring(2,eventStringArray[ip].length);
- else if((eventStringArray[ip].indexOf('\r\n')==0 && vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2)) || (eventStringArray[ip].indexOf('\r\n')!=0 && vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2)) )
- vCalendarText+=eventStringArray[ip];
- else
- vCalendarText+='\r\n'+eventStringArray[ip];
- }
- var origEvent = '';
- if(deleteMode || futureMode)
- {
- if(vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2))
- vCalendarText+='\r\n';
- if(!isTimeZone && futureMode && origTimezone!='')
- {
- vCalendarText+=origTimezone;
- if(vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2))
- vCalendarText+='\r\n';
- }
- // PRODID
- if(vCalendar.tplM['contentline_PRODID']!=null && (process_elem=vCalendar.tplM['contentline_PRODID'][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['contentline_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['unprocessed']!='undefined') && (vCalendar.tplM['unprocessed']!='') && (vCalendar.tplM['unprocessed']!=null))
- vCalendarText+=vCalendar.tplM['unprocessed'].replace(RegExp('^\r\n'), '');
- vCalendar.tplM['unprocessed']=new Array();
- // vCalendar END (required by RFC)
- if(vCalendar.tplM['end']!=null && (process_elem=vCalendar.tplM['end'][0])!=undefined)
- vCalendarText+=vCalendar.tplM['end'][0];
- else
- {
- process_elem=vCalendar.tplC['end'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- vCalendarText+=process_elem;
- }
- if(deleteMode)
- {
- var fixedArr = checkAndFixMultipleUID(vCalendarText,true);
- var inputS = fixedArr[0];
- fixedArr.splice(0,1);
- return putVcalendarToCollection(accountUID, inputUID, inputEtag, inputS, delUID,'vevent',isFormHidden,deleteMode,fixedArr);
- }
- else if(futureMode)
- {
- origEvent = vCalendarText;
- vCalendarText = beginVcalendar;
- }
- }
- var timeZoneAttr='';
- if(typeof globalSessionTimeZone!='undefined' && globalSessionTimeZone)
- sel_option=globalSessionTimeZone;
- var isUTC=false;
- if(!$('#allday').prop('checked'))
- {
- if(globalSettings.timezonesupport.value)
- sel_option=$('#timezone').val();
- //else
- //{
- // if(inputEvents.length>0)
- // sel_option=inputEvents[0].timeZone;
- //}
- if(sel_option=='UTC')
- {
- isUTC=true;
- timeZoneAttr='';
- }
- else if(sel_option=='local')
- timeZoneAttr='';
- else if(sel_option=='custom')
- timeZoneAttr=';'+vcalendarEscapeValue('TZID='+realEvent.timeZone);
- else
- timeZoneAttr=';'+vcalendarEscapeValue('TZID='+sel_option);
- var timezoneComponent='';
- if(globalSettings.rewritetimezonecomponent.value || !vCalendar.tplM['unprocessedVTIMEZONE'])
- {
- if(tzArray.indexOf(sel_option)==-1)
- timezoneComponent=buildTimezoneComponent(sel_option);
- }
- else
- timezoneComponent=vCalendar.tplM['unprocessedVTIMEZONE'];
- if(vCalendarText.lastIndexOf('\r\n')!=(vCalendarText.length-2))
- vCalendarText+='\r\n';
- vCalendarText+=timezoneComponent;
- }
- // ---------------------------------- EVENT ---------------------------------- //
- if(vCalendar.tplM['beginVEVENT']!=null && (process_elem=vCalendar.tplM['beginVEVENT'][0])!=undefined)
- {
- if(vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2))
- vCalendarText+=vCalendar.tplM['beginVEVENT'][0];
- else
- vCalendarText+='\r\n'+vCalendar.tplM['beginVEVENT'][0];
- vevent=true;
- }
- else
- {
- process_elem=vCalendar.tplC['beginVEVENT'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- if(vCalendarText.lastIndexOf('\r\n')==(vCalendarText.length-2))
- vCalendarText+=process_elem;
- else
- vCalendarText+='\r\n'+process_elem;
- vevent=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($('#recurrenceID').val()=='')
- var checkVal='orig';
- else
- var checkVal=$('#recurrenceID').val();
- var created='';
- for(vev in vCalendar.tplM['contentline_CREATED'])
- {
- if(vev==checkVal)
- created=vCalendar.tplM['contentline_CREATED'][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['contentline_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['contentline_LM']!=null && (process_elem=vCalendar.tplM['contentline_LM'][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['contentline_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['contentline_DTSTAMP']!=null && (process_elem=vCalendar.tplM['contentline_DTSTAMP'][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['contentline_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($('#futureStart').val()=='' && (operation!='MOVE_IN'&& operation!='MOVE_OTHER') && (vCalendar.tplM['contentline_UID']!=null && (process_elem=vCalendar.tplM['contentline_UID'][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['contentline_UID'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- // it is VERY small probability, that for 2 newly created vevents/vtodos the same UID is generated (but not impossible :( ...)
- var newUID=globalEventList.getNewUID();
- process_elem=process_elem.replace('##:::##uid##:::##', newUID);
- }
- vCalendarText+=process_elem;
- if(vCalendar.tplM['contentline_SUMMARY']!=null && (process_elem=vCalendar.tplM['contentline_SUMMARY'][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['contentline_SUMMARY'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- }
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#name').val()));
- //process_elem=process_elem.replace('##:::##value##:::##',vcalendarEscapeValue('zmena'));
- vCalendarText+=process_elem;
- if($('#priority').val()!='0')
- {
- if(vCalendar.tplM['contentline_PRIORITY']!=null && (process_elem=vCalendar.tplM['contentline_PRIORITY'][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['contentline_PRIORITY'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- }
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#priority').val()));
- vCalendarText+=process_elem;
- }
- if(vevent)
- {
- if($('#repeat').val()!='no-repeat')
- {
- var interval=$("#repeat_interval_detail").val();
- var byDay='';
- var monthDay='';
- var bymonth='';
- var wkst='';
- var isCustom=false;
- if(interval==1 || interval=='')
- interval='';
- else interval=";INTERVAL="+$("#repeat_interval_detail").val();
- var frequency=$('#repeat').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 .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(realEvent!='')
- {
- if(realEvent.wkst!='')
- wkst=';WKST='+realEvent.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').val();
- if(monthCustomOption!='custom' && $('#repeat_month_custom_select2').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').val();
- }
- else if(monthCustomOption!='custom' && $('#repeat_month_custom_select2').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 .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').val();
- var monthArray = $('#year_custom3 .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').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_year_custom_select2').val();
- }
- else if(monthCustomOption!='custom' && $('#repeat_year_custom_select2').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 .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 option:selected').attr('data-type')=="custom_repeat")
- isCustom=true;
- if(vCalendar.tplM['contentline_RRULE']!=null && (process_elem=vCalendar.tplM['contentline_RRULE'][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['contentline_RRULE'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- }
- if(!isCustom)
- {
- if($('#repeat_end_details').val()=="on_date")
- {
- var dateUntil=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#repeat_end_date').val());
- var datetime_until='';
- if(!$('#allday').prop('checked'))
- {
- var tForR=new Date(Date.parse("01/02/1990, "+$('#time_from').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'");
- }
- else
- datetime_until=$.fullCalendar.formatDate(dateUntil, 'yyyyMMdd')+'T000000Z';
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue("FREQ="+frequency)+interval+";UNTIL="+datetime_until+bymonth+monthDay+byDay+wkst);
- }
- else if($('#repeat_end_details').val()=="after")
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue("FREQ="+frequency)+interval+";COUNT="+(parseInt($('#repeat_end_after').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').val());
- vCalendarText+=process_elem;
- if(realEvent.repeatStart)
- {
- var a=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_from').val());
- var repeatStart=realEvent.repeatStart;
- var b=new Date(1970,1,1,0,0,0);
- if(!$('#allday').prop('checked'))
- {
- b=new Date(Date.parse("01/02/1990, "+$('#time_from').val() ));
- a.setHours(b.getHours());
- a.setMinutes(b.getMinutes());
- a.setSeconds(b.getSeconds());
- }
- var offsetDate=a-repeatStart;
- for(var iter in vCalendar.tplM['contentline_EXDATE'])
- {
- if(isNaN(iter))
- continue;
- var exStr=('\r\n'+vCalendar.tplM['contentline_EXDATE'][iter]).match(vCalendar.pre['contentline_parse']);
- var exVal=exStr[4].parseComnpactISO8601();
- if(exVal)
- {
- if(exStr[4].indexOf('T')==-1 && !$('#allday').prop('checked'))
- {
- //HERE
- var timePart = new Date(Date.parse("01/02/1990, "+$('#time_from').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 && !$('#allday').prop('checked'))
- {
- if(sel_option!='local')
- {
- var valOffsetFrom=getOffsetByTZ(sel_option, exVal);
- var origValOffset = getOffsetByTZ(realEvent.timeZone, exVal);
- var intOffset = (valOffsetFrom.getSecondsFromOffset() - origValOffset.getSecondsFromOffset())*-1;
- exVal = new Date(exVal.setSeconds(intOffset));
- }
- else
- {
- var origValOffset = getOffsetByTZ(realEvent.timeZone, exVal);
- exVal = new Date(exVal.setSeconds(origValOffset.getSecondsFromOffset()));
- }
- }
- var value=new Date(exVal.getTime()+offsetDate);
- process_elem=vCalendar.tplC['contentline_EXDATE'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- if(!$('#allday').prop('checked'))
- {
- //if(exStr[4].indexOf('T')==-1)
- // var newValue=new Date(value.setMinutes(new Date().getTimezoneOffset()));
- 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));
- }
- else
- {
- var newValue=$.fullCalendar.formatDate(value, "yyyyMMdd");
- process_elem=process_elem.replace('##:::##AllDay##:::##', ';'+vcalendarEscapeValue('VALUE=DATE'));
- process_elem=process_elem.replace('##:::##TZID##:::##', vcalendarEscapeValue(''));
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(newValue));
- }
- vCalendarText+=process_elem;
- }
- }
- }
- }
- var a=$('#eventDetailsTable').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($(".alert[data-id="+(t+1)+"]").length>0)
- {
- var alarmText = '';
- if($(".alert[data-id="+(t+1)+"]").val()!='none')
- {
- if(vCalendar.tplM['beginVALARM']!=null && (process_elem=vCalendar.tplM['beginVALARM'][0])!=undefined)
- alarmText+=vCalendar.tplM['beginVALARM'][0];
- else
- {
- process_elem=vCalendar.tplC['beginVALARM'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- alarmText+=process_elem;
- vevent=true;
- }
- if($(".alert[data-id="+(t+1)+"]").val()=='message')
- {
- if($(".alert_message_details[data-id="+(t+1)+"]").val()=='on_date')
- {
- if(vCalendar.tplM['contentline_TRIGGER']!=null && (process_elem=vCalendar.tplM['contentline_TRIGGER'][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['contentline_TRIGGER'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- }
- var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value, $(".message_date_input[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_input[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=$('#timezone').val();
- if($('.timezone_row').css('display')=='none')
- sel_option='local';
- if(sel_option!='local')
- {
- var origValOffset=getOffsetByTZ(sel_option, alarmDT);
- var origIntOffset = origValOffset.getSecondsFromOffset()*-1;
- alarmDT = new Date(alarmDT.setSeconds(origIntOffset));
- }
- var newValue=$.fullCalendar.formatDate(alarmDT, "yyyyMMdd'T'HHmmss")+(sel_option!='local' ? '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_input[data-id="+(t+1)+"]").val();
- if($(".alert_message_details[data-id="+(t+1)+"]").val()=='minutes_before')
- duration="-PT"+before_after+"M";
- if($(".alert_message_details[data-id="+(t+1)+"]").val()=='hours_before')
- duration="-PT"+before_after+"H";
- if($(".alert_message_details[data-id="+(t+1)+"]").val()=='days_before')
- duration="-P"+before_after+"D";
- if($(".alert_message_details[data-id="+(t+1)+"]").val()=='weeks_before')
- duration="-P"+before_after+"W";
- if($(".alert_message_details[data-id="+(t+1)+"]").val()=='seconds_before')
- duration="-PT"+before_after+"S";
- if($(".alert_message_details[data-id="+(t+1)+"]").val()=='minutes_after')
- duration="PT"+before_after+"M";
- if($(".alert_message_details[data-id="+(t+1)+"]").val()=='hours_after')
- duration="PT"+before_after+"H";
- if($(".alert_message_details[data-id="+(t+1)+"]").val()=='days_after')
- duration="P"+before_after+"D";
- if($(".alert_message_details[data-id="+(t+1)+"]").val()=='weeks_after')
- duration="P"+before_after+"W";
- if($(".alert_message_details[data-id="+(t+1)+"]").val()=='seconds_after')
- duration="PT"+before_after+"S";
- if(vCalendar.tplM['contentline_TRIGGER']!=null && (process_elem=vCalendar.tplM['contentline_TRIGGER'][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['contentline_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['contentline_ACTION']!=null && (process_elem=vCalendar.tplM['contentline_ACTION'][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['contentline_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;
- var a=new Date();
- if(vCalendar.tplM['contentline_DESCRIPTION']!=null && (process_elem=vCalendar.tplM['contentline_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['contentline_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['unprocessedVALARM']!='undefined' && typeof vCalendar.tplM['unprocessedVALARM'][t]!='undefined') && (vCalendar.tplM['unprocessedVALARM'][t]!='') && (vCalendar.tplM['unprocessedVALARM'][t]!=null))
- {
- tmp=vCalendar.tplM['unprocessedVALARM'][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['endVALARM']!=null && (process_elem=vCalendar.tplM['endVALARM'][0])!=undefined)
- alarmText+=vCalendar.tplM['endVALARM'][0];
- else
- {
- process_elem=vCalendar.tplC['endVALARM'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- alarmText+=process_elem;
- }
- if(alarmUniqueArray.indexOf(alarmText)==-1)
- {
- alarmUniqueArray.push(alarmText);
- vCalendarText+=alarmText;
- }
- }
- }
- }
- vCalendar.tplM['unprocessedVALARM']=new Array();
- if($('#avail').val()!='none')
- {
- if(vCalendar.tplM['contentline_TRANSP']!=null && (process_elem=vCalendar.tplM['contentline_TRANSP'][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['contentline_TRANSP'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- }
- if($('#avail').val()=='busy')
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue('OPAQUE'));
- else
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue('TRANSPARENT'));
- vCalendarText+=process_elem;
- }
- if($('#url_EVENT').val()!='')
- {
- if(vCalendar.tplM['contentline_URL']!=null && (process_elem=vCalendar.tplM['contentline_URL'][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['contentline_URL'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- }
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#url_EVENT').val()));
- vCalendarText+=process_elem;
- }
- }
- //DESCRIPTION
- if($('#note').val()!='')
- {
- // NOTE
- if(vCalendar.tplM['contentline_NOTE']!=null && (process_elem=vCalendar.tplM['contentline_NOTE'][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['contentline_NOTE'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- }
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#note').val()));
- vCalendarText+=process_elem;
- }
- if($('#status').val()!='NONE')
- {
- //if((value=$('[id="vcalendar_editor"] [data-type="\\%note"]').find('textarea').val())!='')
- //{
- if(vCalendar.tplM['contentline_STATUS']!=null && (process_elem=vCalendar.tplM['contentline_STATUS'][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['contentline_STATUS'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- }
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#status').val()));
- vCalendarText+=process_elem;
- }
- //CLASS
- if($('#type').val()!='')
- {
- // CLASS
- if(vCalendar.tplM['contentline_CLASS']!=null && (process_elem=vCalendar.tplM['contentline_CLASS'][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['contentline_CLASS'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- if(typeof vCalendar.tplM['contentline_CLASS'] =='undefined' || vCalendar.tplM['contentline_CLASS']==null || vCalendar.tplM['contentline_CLASS'].length==0)
- process_elem='';
- }
- if($('.row_type').css('display')!='none')
- {
- process_elem=vCalendar.tplC['contentline_CLASS'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue($('#type').val().toUpperCase()));
- }
- vCalendarText+=process_elem;
- }
- //RECURRENCE-ID
- if($('#recurrenceID').val())
- {
- if(vCalendar.tplM['contentline_REC_ID']!=null && (process_elem=vCalendar.tplM['contentline_REC_ID'][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['contentline_REC_ID'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- }
- var rec_id=$('#recurrenceID').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(''));
- /*if((typeof vCalendar.tplM['unprocessed']!='undefined') && (vCalendar.tplM['unprocessed']!='') && (vCalendar.tplM['unprocessed']!=null))
- {
- var checkTZID=vCalendar.tplM['unprocessed'].match(vCalendar.pre['contentline_TZID']);
- if(checkTZID!=null)
- {
- parsed=checkTZID[0].match(vCalendar.pre['contentline_parse']);
- process_elem=process_elem.replace('##:::##TZID##:::##', ';'+vcalendarEscapeValue("TZID="+parsed[4]));
- }
- else
- process_elem=process_elem.replace('##:::##TZID##:::##', ';'+vcalendarEscapeValue("TZID="+ sel_option));
- }
- else*/
- 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;
- }
- if(vCalendar.tplM['contentline_E_DTSTART']!=null && (process_elem=vCalendar.tplM['contentline_E_DTSTART'][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['contentline_E_DTSTART'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- }
- var datetime_from='', datetime_to='';
- var a=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_from').val());
- var a2=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_to').val());
- var b=new Date(1970, 1, 1, 0, 0, 0);
- if(datetime_from=='')
- datetime_from=$.fullCalendar.formatDate(a, 'yyyyMMdd');
- if(datetime_to=='')
- datetime_to=$.fullCalendar.formatDate(a2, 'yyyyMMdd');
- var dateTo=$.datepicker.parseDate('yymmdd',datetime_to);
- if($('#allday').prop('checked'))
- {
- process_elem=process_elem.replace('##:::##AllDay##:::##', ';'+vcalendarEscapeValue('VALUE=DATE'));
- process_elem=process_elem.replace('##:::##TZID##:::##', vcalendarEscapeValue(''));
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(datetime_from));
- }
- else
- {
- b=new Date(Date.parse("01/02/1990, "+$('#time_from').val() ));
- var time_from=$.fullCalendar.formatDate(b, 'HHmmss');
- process_elem=process_elem.replace('##:::##AllDay##:::##', vcalendarEscapeValue(''));
- /*if((typeof vCalendar.tplM['unprocessed']!='undefined') && (vCalendar.tplM['unprocessed']!='') && (vCalendar.tplM['unprocessed']!=null))
- {
- var checkTZID=vCalendar.tplM['unprocessed'].match(vCalendar.pre['contentline_TZID']);
- if(checkTZID!=null)
- {
- parsed=checkTZID[0].match(vCalendar.pre['contentline_parse']);
- process_elem=process_elem.replace('##:::##TZID##:::##', ';'+vcalendarEscapeValue("TZID="+parsed[4]));
- }
- else
- process_elem=process_elem.replace('##:::##TZID##:::##', ';'+vcalendarEscapeValue("TZID="+ sel_option));
- }
- else*/
- process_elem=process_elem.replace('##:::##TZID##:::##', timeZoneAttr);
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(datetime_from+'T'+time_from+(isUTC ? 'Z' : '')));
- }
- vCalendarText+=process_elem;
- if(realEvent!='')
- {
- if(realEvent.type!='')
- {
- var repeatStart=realEvent.repeatStart;
- a.setHours(b.getHours());
- a.setMinutes(b.getMinutes());
- a.setSeconds(b.getSeconds());
- var changeDate=a;
- var offsetDate=changeDate-repeatStart;
- var realEventUID=realEvent.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['vevent'])!=null)
- {
- if(vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:VEVENT')-2, vcalendarOrig.indexOf('BEGIN:VEVENT'))=='\r\n')
- {
- var partEvent=vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:VEVENT')-2,vcalendarOrig.indexOf('END:VEVENT')+'END:VEVENT'.length);
- vcalendarOrig=vcalendarOrig.replace(partEvent, '');
- }
- else
- {
- var partEvent=vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:VEVENT'),vcalendarOrig.indexOf('END:VEVENT')+'END:VEVENT'.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 vEvent");
- 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['contentline_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';
- if($('#allday').prop('checked'))
- {
- newValue=$.fullCalendar.formatDate(value, "yyyyMMdd");
- process_elem=process_elem.replace('##:::##AllDay##:::##', ';'+vcalendarEscapeValue('VALUE=DATE'));
- process_elem=process_elem.replace('##:::##TZID##:::##', vcalendarEscapeValue(''));
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(newValue));
- }
- else
- {
- process_elem=process_elem.replace('##:::##AllDay##:::##', vcalendarEscapeValue(''));
- /*if((typeof vCalendar.tplM['unprocessed']!='undefined') && (vCalendar.tplM['unprocessed']!='') && (vCalendar.tplM['unprocessed']!=null))
- {
- var checkTZID=vCalendar.tplM['unprocessed'].match(vCalendar.pre['contentline_TZID']);
- if(checkTZID!=null)
- {
- parsed=checkTZID[0].match(vCalendar.pre['contentline_parse']);
- process_elem=process_elem.replace('##:::##TZID##:::##', ';'+vcalendarEscapeValue("TZID="+parsed[4]));
- }
- else
- process_elem=process_elem.replace('##:::##TZID##:::##', ';'+vcalendarEscapeValue("TZID="+ sel_option));
- }
- else*/
- 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(vCalendar.tplM['contentline_E_DTEND']!=null && (process_elem=vCalendar.tplM['contentline_E_DTEND'][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['contentline_E_DTEND'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- process_elem=process_elem.replace('##:::##params_wsc##:::##', '');
- }
- if($('#allday').prop('checked'))
- {
- var dateAfter=new Date(dateTo.getFullYear(), dateTo.getMonth(), dateTo.getDate()+1);
- dateAfter=dateAfter.getFullYear()+''+((dateAfter.getMonth()+1)<10 ? '0'+(dateAfter.getMonth()+1) : (dateAfter.getMonth()+1))+''+ ((dateAfter.getDate())<10 ? '0'+(dateAfter.getDate()) : (dateAfter.getDate()));
- process_elem=process_elem.replace('##:::##AllDay##:::##', ';'+vcalendarEscapeValue('VALUE=DATE'));
- process_elem=process_elem.replace('##:::##TZID##:::##', vcalendarEscapeValue(""));
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(dateAfter));
- }
- else
- {
- var b2=new Date(Date.parse("01/02/1990, "+$('#time_to').val() ));
- var time_to=$.fullCalendar.formatDate(b2, 'HHmmss');
- process_elem=process_elem.replace('##:::##AllDay##:::##', vcalendarEscapeValue(''));
- /*if((typeof vCalendar.tplM['unprocessed']!='undefined') && (vCalendar.tplM['unprocessed']!='') && (vCalendar.tplM['unprocessed']!=null))
- {
- var checkTZID=vCalendar.tplM['unprocessed'].match(vCalendar.pre['contentline_TZID']);
- if(checkTZID!=null)
- {
- parsed=checkTZID[0].match(vCalendar.pre['contentline_parse']);
- process_elem=process_elem.replace('##:::##TZID##:::##', ';'+vcalendarEscapeValue("TZID="+parsed[4]));
- }
- else
- process_elem=process_elem.replace('##:::##TZID##:::##', ';'+vcalendarEscapeValue("TZID="+sel_option));
- }
- else*/
- process_elem=process_elem.replace('##:::##TZID##:::##', timeZoneAttr);
- process_elem=process_elem.replace('##:::##value##:::##', vcalendarEscapeValue(datetime_to+'T'+time_to+(isUTC ? 'Z' : '')));
- }
- vCalendarText+=process_elem;
- //RFC OPTIONAL
- if(vCalendar.tplM['contentline_LOCATION']!=null && (process_elem=vCalendar.tplM['contentline_LOCATION'][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['contentline_LOCATION'];
- process_elem=process_elem.replace('##:::##group_wd##:::##','');
- process_elem=process_elem.replace('##:::##params_wsc##:::##','');
- }
- if($('#location').val()!='')
- {
- process_elem=process_elem.replace('##:::##value##:::##',vcalendarEscapeValue($('#location').val()));
- vCalendarText+=process_elem;
- }
- if($('#recurrenceID').val()=='')
- var checkVal='orig';
- else
- var checkVal=$('#recurrenceID').val();
- if(typeof vCalendar.tplM['unprocessedVEVENT']!='undefined' && vCalendar.tplM['unprocessedVEVENT']!=null)
- {
- for(vev in vCalendar.tplM['unprocessedVEVENT'])
- if(vev==checkVal)
- vCalendarText+=vCalendar.tplM['unprocessedVEVENT'][vev].replace(RegExp('^\r\n'), '');
- }
- //vCalendar.tplM['unprocessedVEVENT']=new Array();
- if(vCalendar.tplM['endVEVENT']!=null && (process_elem=vCalendar.tplM['endVEVENT'][0])!=undefined)
- vCalendarText+=vCalendar.tplM['endVEVENT'][0];
- else
- {
- process_elem=vCalendar.tplC['endVEVENT'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- vCalendarText+=process_elem;
- }
- // PRODID
- if(vCalendar.tplM['contentline_PRODID']!=null && (process_elem=vCalendar.tplM['contentline_PRODID'][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['contentline_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['unprocessed']!='undefined' && vCalendar.tplM['unprocessed']!='' && vCalendar.tplM['unprocessed']!=null)
- vCalendarText+=vCalendar.tplM['unprocessed'].replace(RegExp('^\r\n'), '');
- vCalendar.tplM['unprocessed']=new Array();
- // vCalendar END (required by RFC)
- if(vCalendar.tplM['end']!=null && (process_elem=vCalendar.tplM['end'][0])!=undefined)
- vCalendarText+=vCalendar.tplM['end'][0];
- else
- {
- process_elem=vCalendar.tplC['end'];
- process_elem=process_elem.replace('##:::##group_wd##:::##', '');
- vCalendarText+=process_elem;
- }
- var nextVcalendars = new Array();
- if(futureMode && origEvent!='')
- {
- var fixed = checkAndFixMultipleUID(origEvent,true);
- if(fixed.length==1)
- nextVcalendars[nextVcalendars.length]=origEvent;
- else
- nextVcalendars=fixed;
- }
- // replace unsupported XML characters
- vCalendarText=vCalendarText.replace(/[^\u0009\u000A\u000D\u0020-\uD7FF\uE000-\uFFFD]/g, ' ');
- var fixedArr = checkAndFixMultipleUID(vCalendarText,true);
- fixedArr = $.merge(nextVcalendars,fixedArr);
- var inputS = fixedArr[0];
- fixedArr.splice(0,1);
- if(operation=='MOVE_IN')
- return moveVcalendarToCollection(accountUID, inputUID, inputEtag, inputS, delUID, 'vevent', isFormHidden, deleteMode, fixedArr);
- else
- return putVcalendarToCollection(accountUID, inputUID, inputEtag, inputS, delUID, 'vevent', isFormHidden, deleteMode, fixedArr);
- }
- function fullVcalendarToData(inputEvent)
- {
- CalDAVeditor_cleanup();
- var vcalendar='';
- var rid=inputEvent.id.substring(0, inputEvent.id.lastIndexOf('/')+1);
- if(globalEventList.events[rid][inputEvent.id].uid!=undefined)
- vcalendar=globalEventList.events[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['begin'][0]=vCalendar.tplC['begin'].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['end'][0]=vCalendar.tplC['end'].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';
- /*
- vcalendar_element=vcalendar.match(vCalendar.pre['tzone']);
- if(vcalendar_element!=null)
- vcalendar=vcalendar.replace(vcalendar_element[0],'');
- */
- //FIX TIMEZONE
- var beginTimeZone=vcalendar.indexOf('BEGIN:VTIMEZONE');
- var startEndTimeZone=vcalendar.lastIndexOf('END:VTIMEZONE');
- var endTimeZone=0;
- var vTimeZone='';
- if(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);
- }
- vcalendar_element=vcalendar.match(RegExp('\r\n'+vCalendar.re['contentline_CALSCALE'], 'mi'));
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- //note=String(vcalendar_element).split(':')[1];
- version=vcalendarUnescapeValue(parsed[4]);
- vCalendar.tplM['contentline_CALSCALE'][0]=vCalendar.tplC['contentline_CALSCALE'];
- vCalendar.tplM['contentline_CALSCALE'][0]=vCalendar.tplM['contentline_CALSCALE'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_CALSCALE'][0]=vCalendar.tplM['contentline_CALSCALE'][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['contentline_CALSCALE'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vcalendar=vcalendar.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- vcalendar_element=vcalendar.match(RegExp('\r\n'+vCalendar.re['contentline_VERSION'], 'mi'));
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- //note=String(vcalendar_element).split(':')[1];
- version=vcalendarUnescapeValue(parsed[4]);
- vCalendar.tplM['contentline_VERSION'][0]=vCalendar.tplC['contentline_VERSION'];
- vCalendar.tplM['contentline_VERSION'][0]=vCalendar.tplM['contentline_VERSION'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_VERSION'][0]=vCalendar.tplM['contentline_VERSION'][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['contentline_VERSION'][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['contentline_PRODID'][0]=vCalendar.tplC['contentline_PRODID'];
- vCalendar.tplM['contentline_PRODID'][0]=vCalendar.tplM['contentline_PRODID'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_PRODID'][0]=vCalendar.tplM['contentline_PRODID'][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['contentline_PRODID'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vcalendar=vcalendar.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- var eventArray=new Array();
- while(vcalendar.match(vCalendar.pre['vevent'])!=null)
- {
- var partEvent=vcalendar.substring(vcalendar.indexOf('BEGIN:VEVENT')-2,vcalendar.indexOf('END:VEVENT')+'END:VEVENT'.length);
- eventArray[eventArray.length]=partEvent;
- vcalendar=vcalendar.replace(partEvent, '');
- }
- if(eventArray.length==0)
- console.log("Error: '"+inputEvent.id+"': unable to parse vEvent");
- for(var it=0;it<eventArray.length;it++)
- {
- // ------------------------------ VEVENT ------------------------------ //
- var vevent=eventArray[it];
- var vevent_full=vevent.split('\r\n');
- if(vevent==null)
- return false;
- //vcalendar=vcalendar.replace(vevent[0], '\r\n');
- //BEGIN
- if((parsed=('\r\nBEGIN:VEVENT\r\n').match(vCalendar.pre['contentline_parse']))==null)
- return false;
- //BEGIN, END VCALENDAR
- vCalendar.tplM['beginVEVENT'][0]=vCalendar.tplC['beginVEVENT'].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[vevent_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['endVEVENT'][0]=vCalendar.tplC['endVEVENT'].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
- vevent='\r\n'+vevent_full.slice(2, vevent_full.length-1).join('\r\n')+'\r\n';
- //SUMMARY
- vcalendar_element=vevent.match(RegExp('\r\n'+vCalendar.re['contentline_SUMMARY'], '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['contentline_SUMMARY'][0]=vCalendar.tplC['contentline_SUMMARY'];
- vCalendar.tplM['contentline_SUMMARY'][0]=vCalendar.tplM['contentline_SUMMARY'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_SUMMARY'][0]=vCalendar.tplM['contentline_SUMMARY'][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_SUMMARY'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- vcalendar_element=vevent.match(RegExp('\r\n'+vCalendar.re['contentline_TRANSP'], '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['contentline_TRANSP'][0]=vCalendar.tplC['contentline_TRANSP'];
- vCalendar.tplM['contentline_TRANSP'][0]=vCalendar.tplM['contentline_TRANSP'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_TRANSP'][0]=vCalendar.tplM['contentline_TRANSP'][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_TRANSP'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- vcalendar_element=vevent.match(RegExp('\r\n'+vCalendar.re['contentline_PRIORITY'], '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['contentline_PRIORITY'][0]=vCalendar.tplC['contentline_PRIORITY'];
- vCalendar.tplM['contentline_PRIORITY'][0]=vCalendar.tplM['contentline_PRIORITY'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_PRIORITY'][0]=vCalendar.tplM['contentline_PRIORITY'][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_PRIORITY'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- //LOCATION
- vcalendar_element=vevent.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['contentline_LOCATION'][0]=vCalendar.tplC['contentline_LOCATION'];
- vCalendar.tplM['contentline_LOCATION'][0]=vCalendar.tplM['contentline_LOCATION'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_LOCATION'][0]=vCalendar.tplM['contentline_LOCATION'][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_LOCATION'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- //URL
- vcalendar_element=vevent.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['contentline_URL'][0]=vCalendar.tplC['contentline_URL'];
- vCalendar.tplM['contentline_URL'][0]=vCalendar.tplM['contentline_URL'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_URL'][0]=vCalendar.tplM['contentline_URL'][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_URL'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- // ------------------------------ VALARM ------------------------------ //
- var valarm=vevent.match(vCalendar.pre['valarm']);
- if(valarm!=null)
- {
- vevent=vevent.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++)
- {
- 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['beginVALARM'][j]=vCalendar.tplC['beginVALARM'].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['endVALARM'][j]=vCalendar.tplC['endVALARM'].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['contentline_TRIGGER'][j]=vCalendar.tplC['contentline_TRIGGER'];
- vCalendar.tplM['contentline_TRIGGER'][j]=vCalendar.tplM['contentline_TRIGGER'][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['contentline_TRIGGER'][j]=vCalendar.tplM['contentline_TRIGGER'][j].replace(/##:::##params_wsc##:::##/g, parString);
- alarmArray[j]=alarmArray[j].replace(trigger[0], '');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_TRIGGER'][j]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '');
- }
- }
- }
- note=alarmArray[j].match(vCalendar.pre['contentline_NOTE']);
- if(note!=null)
- {
- parsed=note[0].match(vCalendar.pre['contentline_parse']);
- vCalendar.tplM['contentline_VANOTE'][j]=vCalendar.tplC['contentline_VANOTE'];
- vCalendar.tplM['contentline_VANOTE'][j]=vCalendar.tplM['contentline_VANOTE'][j].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_VANOTE'][j]=vCalendar.tplM['contentline_VANOTE'][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=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_VANOTE'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.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['contentline_ACTION'][j]=vCalendar.tplC['contentline_ACTION'];
- vCalendar.tplM['contentline_ACTION'][j]=vCalendar.tplM['contentline_ACTION'][j].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_ACTION'][j]=vCalendar.tplM['contentline_ACTION'][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=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_ACTION'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- var checkUnprocess=$.trim(alarmArray[j]);
- if(checkUnprocess!='')
- vCalendar.tplM['unprocessedVALARM'][j]=alarmArray[j];
- }
- }
- }
- // NOTE
- vcalendar_element=vevent.match(vCalendar.pre['contentline_NOTE']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- vCalendar.tplM['contentline_NOTE'][0]=vCalendar.tplC['contentline_NOTE'];
- vCalendar.tplM['contentline_NOTE'][0]=vCalendar.tplM['contentline_NOTE'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_NOTE'][0]=vCalendar.tplM['contentline_NOTE'][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_NOTE'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- //CLASS
- vcalendar_element=vevent.match(vCalendar.pre['contentline_CLASS']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- vCalendar.tplM['contentline_CLASS'][0]=vCalendar.tplC['contentline_CLASS'];
- vCalendar.tplM['contentline_CLASS'][0]=vCalendar.tplM['contentline_CLASS'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_CLASS'][0]=vCalendar.tplM['contentline_CLASS'][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vCalendar.tplM['contentline_CLASS'][0]=vCalendar.tplM['contentline_CLASS'][0].replace(/##:::##value##:::##/g, parsed[4]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_CLASS'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- vcalendar_element=vevent.match(vCalendar.pre['contentline_STATUS']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- title=vcalendarUnescapeValue(parsed[4]);
- vCalendar.tplM['contentline_STATUS'][0]=vCalendar.tplC['contentline_STATUS'];
- vCalendar.tplM['contentline_STATUS'][0]=vCalendar.tplM['contentline_STATUS'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_STATUS'][0]=vCalendar.tplM['contentline_STATUS'][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_STATUS'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- //RECURRENCE-ID
- var rec='';
- vcalendar_element=vevent.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['contentline_REC_ID'][0]=vCalendar.tplC['contentline_REC_ID'];
- vCalendar.tplM['contentline_REC_ID'][0]=vCalendar.tplM['contentline_REC_ID'][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['contentline_REC_ID'][0]=vCalendar.tplM['contentline_REC_ID'][0].replace(/##:::##params_wsc##:::##/g, parString);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_REC_ID'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- if(rec=='')
- rec='orig';
- //EXDATE
- var i=-1;
- while(vevent.match(vCalendar.pre['contentline_EXDATE'])!= null)
- {
- i++;
- vcalendar_element=vevent.match(vCalendar.pre['contentline_EXDATE']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- vCalendar.tplM['contentline_EXDATE'][i]=vCalendar.tplC['contentline_EXDATE'];
- vCalendar.tplM['contentline_EXDATE'][i]=vCalendar.tplM['contentline_EXDATE'][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['contentline_EXDATE'][i]=vCalendar.tplM['contentline_EXDATE'][i].replace(/##:::##AllDay##:::##/g, ';VALUE=DATE');
- else
- vCalendar.tplM['contentline_EXDATE'][i]=vCalendar.tplM['contentline_EXDATE'][i].replace(/##:::##AllDay##:::##/g, '');
- vCalendar.tplM['contentline_EXDATE'][i]=vCalendar.tplM['contentline_EXDATE'][i].replace(/##:::##TZID##:::##/g, '');
- vCalendar.tplM['contentline_EXDATE'][i]=vCalendar.tplM['contentline_EXDATE'][i].replace(/##:::##params_wsc##:::##/g, parString);
- vCalendar.tplM['contentline_EXDATE'][i]=vCalendar.tplM['contentline_EXDATE'][i].replace(/##:::##value##:::##/g,parsed[4]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_EXDATE'][i]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- }
- //END
- vcalendar_element=vevent.match(vCalendar.pre['contentline_DTEND']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- vCalendar.tplM['contentline_E_DTEND'][0]=vCalendar.tplC['contentline_E_DTEND'];
- vCalendar.tplM['contentline_E_DTEND'][0]=vCalendar.tplM['contentline_E_DTEND'][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['contentline_E_DTEND'][0]=vCalendar.tplM['contentline_E_DTEND'][0].replace(/##:::##params_wsc##:::##/g, parString);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_E_DTEND'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- //START
- vcalendar_element=vevent.match(vCalendar.pre['contentline_DTSTART']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- vCalendar.tplM['contentline_E_DTSTART'][0]=vCalendar.tplC['contentline_E_DTSTART'];
- vCalendar.tplM['contentline_E_DTSTART'][0]=vCalendar.tplM['contentline_E_DTSTART'][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['contentline_E_DTSTART'][0]=vCalendar.tplM['contentline_E_DTSTART'][0].replace(/##:::##params_wsc##:::##/g, parString);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_E_DTSTART'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- //RRULE
- vcalendar_element=vevent.match(vCalendar.pre['contentline_RRULE2']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- vCalendar.tplM['contentline_RRULE'][0]=vCalendar.tplC['contentline_RRULE'];
- vCalendar.tplM['contentline_RRULE'][0]=vCalendar.tplM['contentline_RRULE'][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];
- }
- vCalendar.tplM['contentline_RRULE'][0]=vCalendar.tplM['contentline_RRULE'][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vCalendar.tplM['contentline_RRULE'][0]=vCalendar.tplM['contentline_RRULE'][0].replace(/##:::##value##:::##/g, '##:::##value##:::##'+parString);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_RRULE'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- //UID
- vcalendar_element=inputEvent.vcalendar.match(RegExp('\r\n'+vCalendar.re['contentline_UID'], 'mi'));
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- vCalendar.tplM['contentline_UID'][0]=vCalendar.tplC['contentline_UID'];
- vCalendar.tplM['contentline_UID'][0]=vCalendar.tplM['contentline_UID'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_UID'][0]=vCalendar.tplM['contentline_UID'][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vCalendar.tplM['contentline_UID'][0]=vCalendar.tplM['contentline_UID'][0].replace(/##:::##uid##:::##/g,parsed[4]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_UID'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- //CREATED
- vcalendar_element=vevent.match(RegExp('\r\n'+vCalendar.re['contentline_CREATED'], 'mi'));
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- vCalendar.tplM['contentline_CREATED'][rec]=vCalendar.tplC['contentline_CREATED'];
- vCalendar.tplM['contentline_CREATED'][rec]=vCalendar.tplM['contentline_CREATED'][rec].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_CREATED'][rec]=vCalendar.tplM['contentline_CREATED'][rec].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vCalendar.tplM['contentline_CREATED'][rec]=vCalendar.tplM['contentline_CREATED'][rec].replace(/##:::##value##:::##/g,parsed[4]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_CREATED'][rec]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- //LAST-MODIFIED
- vcalendar_element=vevent.match(RegExp('\r\n'+vCalendar.re['contentline_LM'], 'mi'));
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- vCalendar.tplM['contentline_LM'][0]=vCalendar.tplC['contentline_LM'];
- vCalendar.tplM['contentline_LM'][0]=vCalendar.tplM['contentline_LM'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_LM'][0]=vCalendar.tplM['contentline_LM'][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_LM'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- //DTSTAMP
- vcalendar_element=vevent.match(RegExp('\r\n'+vCalendar.re['contentline_DTSTAMP'], 'mi'));
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- vCalendar.tplM['contentline_DTSTAMP'][0]=vCalendar.tplC['contentline_DTSTAMP'];
- vCalendar.tplM['contentline_DTSTAMP'][0]=vCalendar.tplM['contentline_DTSTAMP'][0].replace(/##:::##group_wd##:::##/g, parsed[1]);
- vCalendar.tplM['contentline_DTSTAMP'][0]=vCalendar.tplM['contentline_DTSTAMP'][0].replace(/##:::##params_wsc##:::##/g, parsed[3]);
- vevent=vevent.replace(vcalendar_element[0], '\r\n');
- if(parsed[1]!='')
- {
- var re=RegExp('\r\n'+parsed[1].replace('.','\\..*')+'\r\n', 'im');
- while ((vcalendar_element_related=vevent.match(re))!=null)
- {
- // append the parameter to its parent
- vCalendar.tplM['contentline_DTSTAMP'][0]+=vcalendar_element_related[0].substr(2);
- // remove the processed parameter
- vevent=vevent.replace(vcalendar_element_related[0], '\r\n');
- }
- }
- }
- if(vevent.indexOf('\r\n')==0)
- vevent=vevent.substring(2, vevent.length-2);
- if(vevent.lastIndexOf('\r\n')!=(vevent.length-2))
- vevent+='\r\n';
- vCalendar.tplM['unprocessedVEVENT'][rec]=vevent;
- }
- if(vcalendar.indexOf('\r\n')==0)
- vcalendar=vcalendar.substring(2, vcalendar.length-2);
- if(vcalendar.lastIndexOf('\r\n')!=(vcalendar.length-2))
- vcalendar+='\r\n';
- //if(vTimeZone!='')
- // vcalendar+=vTimeZone;
- vCalendar.tplM['unprocessedVTIMEZONE']=vTimeZone;
- vCalendar.tplM['unprocessed']=vcalendar;
- }
- function parseAlarmWeek(value)
- {
- var durValue='';
- var durChar='W';
- var toSecondsValue=60*60*24*7;
- value=value.substring(value.indexOf('P')+1);
- durValue=value.substring(0, value.indexOf(durChar));
- return durValue*toSecondsValue*1000+durChar;
- }
- function parseAlarmDay(value)
- {
- var durValue='';
- var durChar='D';
- var toSecondsValue=60*60*24;
- var returnValue=0;
- value=value.substring(value.indexOf('P')+1);
- durValue=value.substring(0, value.indexOf(durChar));
- returnValue=durValue*toSecondsValue*1000;
- value=value.substring(value.indexOf(durChar+1));
- if(value.indexOf('T')!=-1)
- {
- durValue=parseAlarmTime(value);
- if(durValue)
- {
- durChar=durValue.substring(durValue.length-1);
- durValue=durValue.substring(0, durValue.length-1);
- returnValue+=durValue;
- }
- }
- return returnValue+durChar;
- }
- function parseAlarmTime(value)
- {
- var durValue='';
- var durChar='';
- var toSecondsValue=0;
- var returnValue=0;
- value=value.substring(value.indexOf('T')+1);
- while(value!='')
- {
- if(value.indexOf('H')!=-1)
- {
- durChar='H';
- toSecondsValue=60*60;
- }
- else if(value.indexOf('M')!=-1)
- {
- durChar='M';
- toSecondsValue=60;
- }
- else if(value.indexOf('S')!=-1)
- {
- durChar='S';
- toSecondsValue=1;
- }
- durValue=value.substring(0, value.indexOf(durChar))
- value=value.substring(value.indexOf(durChar)+1);
- returnValue+=durValue*toSecondsValue;
- }
- if(durChar!='')
- return returnValue*1000+durChar;
- else
- return false;
- }
- function getDateFromDay(objComponent, t, disableRecursion,uid)
- {
- var daylightStartsMonth=objComponent.startMonth-1,
- daylightStartsDay=objComponent.startDay,
- daylightStartCount=objComponent.startCount,
- daylightStartsHours=objComponent.dtStart.parseComnpactISO8601(uid).getHours(),
- daylightStartsMinutes=objComponent.dtStart.parseComnpactISO8601().getMinutes();
- //daylightStartsDay++;
- if(daylightStartsDay==7)
- daylightStartsDay=0;
- var checkDate=new Date(t.getFullYear(), daylightStartsMonth,1,23,59,0);
- if(disableRecursion)
- checkDate.setFullYear(checkDate.getFullYear()-1);
- var firstOfMonthDayOfWeek=checkDate.getDay();
- if(firstOfMonthDayOfWeek!=daylightStartsDay)
- {
- var daysUntilFirst=(1+daylightStartsDay-firstOfMonthDayOfWeek)%7;
- if(daysUntilFirst<=0)
- checkDate.setDate(daysUntilFirst+7);
- else
- checkDate.setDate(daysUntilFirst);
- }
- if(daylightStartCount>0)
- {
- var daysUntilDaylight=(parseInt(daylightStartCount)-1)*7;
- var dayLightStartDate=new Date(checkDate.getFullYear(), checkDate.getMonth(), checkDate.getDate()+daysUntilDaylight, daylightStartsHours, daylightStartsMinutes);
- }
- else
- {
- var tmpLastDay=21+checkDate.getDate();
- var checkTmpDay=new Date(t.getFullYear(),daylightStartsMonth,tmpLastDay+7,23,59,0);
- if(checkTmpDay.getMonth()!=daylightStartsMonth)
- var lastDay=tmpLastDay;
- else
- var lastDay=tmpLastDay+7;
- var daysUntilDaylight=(daylightStartCount+1)*7;
- var dayLightStartDate=new Date(checkDate.getFullYear(), checkDate.getMonth(), lastDay+daysUntilDaylight, daylightStartsHours, daylightStartsMinutes);
- }
- if(dayLightStartDate>t && !disableRecursion)
- dayLightStartDate=getDateFromDay(objComponent, t, true).startDate;
- return {offsetFrom:objComponent.tzOffsetFROM, offsetTo: objComponent.tzOffsetTO, startDate: dayLightStartDate};
- }
- function vcalendarToData(inputCollection, inputEvent, isNew)
- {
- var vcalendarOrig=inputEvent.vcalendar;
- var eventArray=new Array();
- //CHECK CALSCALE
- var elem=vcalendarOrig.match(vCalendar.pre['contentline_CALSCALE']);
- if(elem!=null)
- {
- 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.lastIndexOf('END:VTIMEZONE');
- var endTimeZone=0;
- var rid=inputEvent.uid.substring(0, inputEvent.uid.lastIndexOf('/')+1);
- var evid=inputEvent.uid.substring(inputEvent.uid.lastIndexOf('/')+1, inputEvent.uid.length);
- var isChange=false,
- needReload=false;
- if(!isNew)
- {
- var events=findEventInArray(inputEvent.uid, true);
- if(events!='')
- {
- if(events.etag!=inputEvent.etag)
- {
- for(var i=0; i<events.alertTimeOut.length; i++)
- clearTimeout(events.alertTimeOut[i]);
- deleteEventFromArray(inputEvent.uid);
- if($('#show').val()!='')
- {
- if($('#show').val()==inputEvent.uid)
- {
- if($('#repeatEvent').val()=="true" || $('#recurrenceID').val()!='')
- {
- var name=globalCalEvent.title;
- showEventForm(null, null, {title: name, id:inputEvent.uid}, globalJsEvent, 'show','', true);
- $('#editAll').css('visibility','hidden');
- $('#editFuture').css('visibility','hidden');
- $('#editOnlyOne').css('visibility','hidden');
- $('#repeatConfirmBoxContent').html('<b>'+name+"</b> "+localization[globalInterfaceLanguage].repeatChangeTxt);
- $('#repeatConfirmBoxQuestion').html(localization[globalInterfaceLanguage].repeatChangeTxtClose);
- }
- else
- needReload=true;
- }
- }
- isChange=true;
- }
- }
- }
- 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);
- vcalendar=vcalendarOrig.substring(0, beginTimeZone)+vcalendarOrig.substring(endTimeZone, vcalendarOrig.length);
- }
- /*
- vcalendar_element=vcalendar.match(vCalendar.pre['tzone']);
- if(vcalendar_element!=null)
- vcalendar=vcalendar.replace(vcalendar_element[0],'');
- */
- var recurrence_id_array=new Array();
- while(vcalendarOrig.match(vCalendar.pre['vevent'])!=null)
- {
- if(vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:VEVENT')-2, vcalendarOrig.indexOf('BEGIN:VEVENT'))=='\r\n')
- {
- var partEvent=vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:VEVENT')-2,vcalendarOrig.indexOf('END:VEVENT')+'END:VEVENT'.length);
- vcalendarOrig=vcalendarOrig.replace(partEvent, '');
- }
- else
- {
- var partEvent=vcalendarOrig.substring(vcalendarOrig.indexOf('BEGIN:VEVENT'),vcalendarOrig.indexOf('END:VEVENT')+'END:VEVENT'.length);
- vcalendarOrig=vcalendarOrig.replace(partEvent, '');
- partEvent+='\r\n';
- }
- var rec_array=partEvent.match(vCalendar.pre['contentline_RECURRENCE_ID']);
- var uidString=partEvent.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];
- }
- eventArray[eventArray.length]=partEvent;
- }
- if(eventArray.length==0)
- console.log("Error: '"+inputEvent.uid+"': unable to parse vEvent");
- for(var evIt=0; evIt<eventArray.length; evIt++)
- {
- var oo='',
- note='',
- start='',
- end='',
- title='',
- location='',
- all=false,
- frequency='',
- interval='',
- byMonthDay='',
- byDay='',
- until='',
- isUntilDate=false,
- isRepeat=false,
- alertTime=new Array(),
- alertNote=new Array(),
- alertTimeOut=new Array(),
- valOffsetFrom='',
- valOffsetTo='',
- intOffset=0,
- tzName='local',
- realStart='',
- realEnd='',
- rec_id='',
- wkst='',
- classType='',
- avail='',
- hrefUrl='',
- returnForValue = true,
- stringUID='',
- priority="0",
- status='',
- pars=new Array();
- var dtStartTimezone='';
- var dates = new Array();
- var vcalendar=eventArray[evIt];
- 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']);
- // || ((parsed[4].indexOf('FREQ=MONTHLY')!=-1||parsed[4].indexOf('FREQ=YEARLY')!=-1)&&parsed[4].indexOf('BYDAY')!=-1)&&parsed[4].search('[0-9]')==-1)
- // if(parsed[4].indexOf('BYSETPOS')!=-1 || parsed[4].indexOf('BYWEEKNO')!=-1)
- // {
- // console.log("Error:'"+inputEvent.uid+"': Unsupported recurrence rule in event:"+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];
- //if(until.indexOf('T')==-1)
- // until+='T000000Z';
- }
- 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 event:"+vcalendar);
- return false;
- }
- }
- }
- if(!returnForValue)
- {
- continue;
- }
- if(!interval)
- interval=1;
- }
- var dayLightStartDate, dayLightEndDate, tzObject;
- vcalendar_element=vcalendar.match(vCalendar.pre['contentline_DTSTART']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- start=parsed[4];
- var 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);
- if(t==null)
- return false;
- if(t.toString()=='Invalid Date')
- return false;
- if(!all)
- {
- parsed_value=vcalendarSplitParam(parsed[3]);
- for(h=1;h<parsed_value.length;h++)
- if(parsed_value[h]!='')
- dtStartTimezone=parsed_value[h];
- dtStartTimezone=dtStartTimezone.split('=')
- if(start.charAt(start.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);
- }
- }
- else
- tzName = globalSessionTimeZone;
- realStart=$.fullCalendar.parseDate(help1);
- inputEvent.start=$.fullCalendar.parseDate(help1);
- start=$.fullCalendar.parseDate(help1);
- if(intOffset)
- {
- inputEvent.start.setTime(inputEvent.start.getTime()+intOffset);
- start.setTime(start.getTime()+intOffset);
- }
- 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(help1.indexOf('T')!=-1)
- exString += 'T' + $.fullCalendar.formatDate(start,'HHmmss');
- var utcTime=exString.parseComnpactISO8601();
- }
- exDates[exDates.length]=new Date(utcTime).toString();
- }
- 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++)
- {
- 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);
- intOffsetA=getOffsetByTZ(tzName, alarmTimeA).getSecondsFromOffset()*1000-valOffsetFromA.getSecondsFromOffset()*1000;
- }
- }
- else if(processedTimezones.indexOf(tzName)==-1)
- {
- if(timeZonesEnabled.indexOf(tzName)==-1)
- timeZonesEnabled.push('local');
- processedTimezones.push('local');
- }
- if(tzNameA!='' && tzNameA != '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;
- noteA=alarmArray[j].match(vCalendar.pre['contentline_NOTE']);
- if(noteA!=null)
- {
- parsed=noteA[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_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_PRIORITY']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- priority=vcalendarUnescapeValue(parsed[4]);
- }
- var index=0;
- for(var p=0;p<globalResourceCalDAVList.collections.length;p++)
- if(typeof globalResourceCalDAVList.collections[p].uid !='undefined' && globalResourceCalDAVList.collections[p].uid==inputCollection.uid)
- {
- index=p;
- break;
- }
- var firstPart=index.pad(String(globalResourceCalDAVList.collections.length).length);
- var compareString=(firstPart + title).toLowerCase();
- 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_STATUS']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- status=vcalendarUnescapeValue(parsed[4]);
- }
- vcalendar_element=vcalendar.match(vCalendar.pre['contentline_TRANSP']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- avail=vcalendarUnescapeValue(parsed[4]);
- }
- vcalendar_element=vcalendar.match(vCalendar.pre['contentline_URL']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- hrefUrl=vcalendarUnescapeValue(parsed[4]);
- }
- 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;
- }
- var isDuration = false;
- var dur = 0;
- vcalendar_element=vcalendar.match(vCalendar.pre['contentline_DTEND']);
- if(vcalendar_element!=null)
- {
- parsed=vcalendar_element[0].match(vCalendar.pre['contentline_parse']);
- end=parsed[4];
- var help=end;
- 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;
- 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);
- all=false;
- }
- }
- else
- {
- var checkDur=vcalendar.match(vCalendar.pre['dur-value']);
- if(checkDur!=null)
- {
- var checkP = (checkDur[0]+'\r\n').match(vCalendar.pre['contentline_parse']);
- if(checkP != null)
- {
- var value=checkP[4];
- var number = 0;
- if(value.indexOf('W')!=-1)
- number=parseAlarmWeek(value);
- else if(value.indexOf('D')!=-1)
- number=parseAlarmDay(value);
- else if(value.indexOf('T')!=-1)
- number=parseAlarmTime(value);
- if(parsed[4].charAt(0)=="-")
- number="-"+number;
- else
- number="+"+number;
- dur=parseInt(number.substring(1, number.length-1),10);
- isDuration = true;
- }
- }
- }
- if(isDuration)
- {
- var st='';
- if(!all)
- st = $.fullCalendar.parseDate(help1);
- else
- {
- st = $.fullCalendar.parseDate(help1+'T00:00:00');
- //date object mindfuck problem
- st.setMilliseconds(-1);
- }
- var durDate = new Date(st.getTime() + dur);
- help = $.fullCalendar.formatDate(durDate,"yyyy-MM-dd'T'HH:mm:ss");
- }
- if(typeof help=='undefined' || help=='' || help==null)
- help=help1;
- var t1=$.fullCalendar.parseDate(help);
- if(t1==null)
- return false;
- else if(t1.toString()=='Invalid Date')
- return false;
- if(!all)
- {
- if(end.charAt(end.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, t1);
- intOffset=(getLocalOffset(t1)*-1*1000)-valOffsetFrom.getSecondsFromOffset()*1000;
- }
- }
- else if(processedTimezones.indexOf(tzName)==-1)
- {
- if(timeZonesEnabled.indexOf(tzName)==-1)
- timeZonesEnabled.push('local');
- processedTimezones.push('local');
- }
- //realEnd=$.fullCalendar.parseDate(help);
- //help1+=valOffsetFrom;
- if(tzName!='' && tzName != 'local')
- if(processedTimezones.indexOf(tzName)==-1)
- {
- if(timeZonesEnabled.indexOf(tzName)==-1)
- timeZonesEnabled.push(tzName);
- processedTimezones.push(tzName);
- }
- }
- else
- tzName = globalSessionTimeZone;
- realEnd=$.fullCalendar.parseDate(help);
- inputEvent.end=$.fullCalendar.parseDate(help);
- end=$.fullCalendar.parseDate(help);
- if(intOffset)
- {
- inputEvent.end.setTime(inputEvent.end.getTime()+intOffset);
- end.setTime(end.getTime()+intOffset);
- }
- }
- else
- return false;
- if(globalVisibleCalDAVCollections.indexOf(rid)!=-1 || isChange || isNew)
- {
- if(isRepeat)
- {
- var futureRLimit = new Date(globalToLoadedLimit.getTime())
- futureRLimit.setDate(futureRLimit.getDate()+14);
- var ruleString=vcalendar.match(vCalendar.pre['contentline_RRULE2'])[0].match(vCalendar.pre['contentline_parse'])[4];
- inputEvent.isRepeat=true;
- if(realStart)
- var varDate=new Date(realStart.getTime());
- else
- var varDate=new Date(start.getTime());
- if(realEnd)
- var varEndDate=new Date(realEnd.getTime());
- else
- var varEndDate=new Date(end.getTime());
- var lastGenDate='';
- var repeatStart=new Date(varDate.getTime());
- var 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(!all)
- {
- 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));
- untilDate.setHours(realStart.getHours());
- untilDate.setMinutes(realStart.getMinutes());
- untilDate.setSeconds(realStart.getSeconds());
- }
- realUntil='';
- }
- else
- {
- untilDate='';
- realUntil=until;
- }
- realUntilDate=untilDate;
- inputEvent.untilDate=untilDate;
- }
- else
- {
- untilDate=new Date(futureRLimit.getTime());
- realUntilDate='';
- inputEvent.untilDate='never';
- }
- var repeatCount=0, realRepeatCount=0;
- if(!inputEvent.isDrawn)
- {
- if(alertTime.length>0)
- {
- var aTime='';
- var now=new Date();
- if(!inputCollection.ignoreAlarms)
- alertTimeOut=setAlertTimeouts(false,alertTime, start, end, {allDay:all, title:title}, true, inputEvent.uid);
- }
- realRepeatCount++;
- var checkRec=isInRecurrenceArray(varDate,stringUID,recurrence_id_array, tzName);
- if(exDates.length>0)
- if(exDates.indexOf(varDate.toString())!=-1)
- checkRec=true;
- if(!checkRec)
- {
- repeatCount++;
- var tmpObj=new items(inputEvent.etag, start, end, title, all, inputEvent.uid, rid, evid, note, inputEvent.displayValue, alertTime, alertNote, realUntilDate, frequency, interval, realUntil, repeatStart, repeatEnd, byMonthDay,repeatCount, realRepeatCount, vcalendar, location, alertTimeOut,tzName, realStart, realEnd, byDay, rec_id,wkst,classType, avail,hrefUrl, compareString,priority,status,ruleString);
- globalEventList.displayEventsArray[rid].splice(globalEventList.displayEventsArray[rid].length, 0, tmpObj);
- }
- }
- var lastGenDate=generateRepeatInstances({
- untilDate:realUntilDate,
- repeatStart:varDate,
- futureRLimit:futureRLimit,
- stringUID:stringUID,
- recurrence_id_array:recurrence_id_array,
- exDates:exDates,
- alertTime:alertTime,
- ignoreAlarms:inputCollection.ignoreAlarms,
- items:new items(inputEvent.etag, varDate, varEndDate, title, all, inputEvent.uid, rid, evid, note, inputEvent.displayValue, alertTime, alertNote, realUntilDate, frequency, interval, realUntil, repeatStart, repeatEnd, byMonthDay, repeatCount, realRepeatCount, vcalendar, location, alertTimeOut, tzName, realStart, realEnd, byDay, rec_id,wkst,classType, avail,hrefUrl,compareString,priority,status,ruleString)
- });
- }
- else
- {
- if(!inputCollection.ignoreAlarms)
- alertTimeOut=setAlertTimeouts(false,alertTime, start, end, {allDay:all, title:title},true,inputEvent.uid);
- var tmpObj=new items(inputEvent.etag, start, end, title, all, inputEvent.uid, rid, evid, note, inputEvent.displayValue, alertTime, alertNote, '', '', '', '', '', '', '', '', '', vcalendar, location, alertTimeOut, tzName, realStart, realEnd, byDay, rec_id,wkst,classType, avail,hrefUrl,compareString,priority,status,ruleString);
- if(isChange)
- {
- if(needReload)
- showEventForm(null, null, tmpObj, globalJsEvent, 'show', '');
- }
- globalEventList.displayEventsArray[rid].splice(globalEventList.displayEventsArray[rid].length, 0, tmpObj);
- }
- }
- }
- inputEvent.isDrawn=true;
- }
- function notRFCDataToRFCData(vcalendarString)
- {
- // If vCalendar contains only '\n' instead of '\r\n' we correct this
- if(vcalendarString.match(RegExp('\r', 'm'))==null)
- vcalendarString=vcalendarString.replace(RegExp('\n', 'gm'), '\r\n');
- // remove multiple empty lines
- vcalendarString=vcalendarString.replace(RegExp('(\r\n)+','gm'),'\r\n');
- // remove line folding
- vcalendarString=vcalendarString.replace(RegExp('\r\n'+vCalendar.re['WSP'], 'gm'), '');
- // append '\r\n' to the end of the vCalendar if missing
- if(vcalendarString[vcalendarString.length-1]!='\n')
- vcalendarString+='\r\n';
- return vcalendarString;
- }
- function vCalendarCleanup(vcalendarString)
- {
- vcalendarString=notRFCDataToRFCData(vcalendarString);
- return vcalendarString;
- }
|