forms.js 120KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342
  1. /*
  2. CalDavZAP - the open source CalDAV Web Client
  3. Copyright (C) 2011-2015
  4. Jan Mate <jan.mate@inf-it.com>
  5. Andrej Lezo <andrej.lezo@inf-it.com>
  6. Matej Mihalik <matej.mihalik@inf-it.com>
  7. This program is free software: you can redistribute it and/or modify
  8. it under the terms of the GNU Affero General Public License as
  9. published by the Free Software Foundation, either version 3 of the
  10. License, or (at your option) any later version.
  11. This program is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14. GNU Affero General Public License for more details.
  15. You should have received a copy of the GNU Affero General Public License
  16. along with this program. If not, see <http://www.gnu.org/licenses/>.
  17. */
  18. function updateTodoFormDimensions(setHeight)
  19. {
  20. $('#CATodo').css('width','');
  21. $('#CATodo').css('width',$('#todo_details_template').css('width'));
  22. if(setHeight)
  23. {
  24. $('#CATodo').css('height','');
  25. $('#CATodo').css('height',$('#todo_details_template').css('height'));
  26. }
  27. }
  28. function updateEventFormDimensions(setHeight)
  29. {
  30. $('#CAEvent').css('width','');
  31. $('#CAEvent').css('width',$('#event_details_template').css('width'));
  32. if(setHeight)
  33. {
  34. $('#CAEvent').css('height','');
  35. $('#CAEvent').css('height',$('#event_details_template').css('height'));
  36. }
  37. }
  38. function setFormPosition(jsEvent, confirmRepeat)
  39. {
  40. var position_x,
  41. position_y,
  42. dist_x,
  43. dist_y;
  44. $('#event_details_template').css('max-height','');
  45. if(jsEvent)
  46. {
  47. if(jsEvent.pageX<=($('#main').width()/2))
  48. {
  49. position_v='left';
  50. dist_x=jsEvent.pageX;
  51. }
  52. else
  53. {
  54. position_v='right';
  55. dist_x=$('body').width()-jsEvent.pageX;
  56. }
  57. /*if(jsEvent.pageY<=($('#main').height()/2))
  58. {
  59. position_h='top';
  60. dist_y=jsEvent.pageY;
  61. }
  62. else
  63. {
  64. position_h='top';
  65. dist_y=jsEvent.pageY-$('#event_details_template').height();
  66. }*/
  67. position_h='top';
  68. dist_y=Math.max(29, jsEvent.pageY-(confirmRepeat ? $('#CAEvent').height() : $('#event_details_template').height()));
  69. }
  70. else
  71. {
  72. position_v='right';
  73. position_h='top';
  74. dist_x=25;
  75. dist_y=29;
  76. }
  77. $('#CAEvent').css('left','');
  78. $('#CAEvent').css('right','');
  79. $('#CAEvent').css('top','');
  80. $('#CAEvent').css('bottom','');
  81. $('#CAEvent').css(position_v, dist_x);
  82. $('#CAEvent').css(position_h, dist_y);
  83. $('#event_details_template').css('max-height', $('#main').height()-dist_y+20+'px');
  84. $('#CAEvent').css('max-height', $('#main').height()-dist_y+20+'px');
  85. }
  86. function setTodoPosition(jsEvent)
  87. {
  88. var dist,
  89. pointY=0;
  90. $('#todo_details_template').css('max-height','');
  91. $('#CATodo').css('max-height','');
  92. if(jsEvent!=undefined)
  93. {
  94. if(jsEvent.pageY!=undefined)
  95. pointY=jsEvent.pageY;
  96. else
  97. pointY=jsEvent.clientY;
  98. }
  99. if(jsEvent)
  100. {
  101. /*if((pointY)+$('#todo_details_template').height()<$(window).height())
  102. dist=jsEvent.pageY;
  103. else
  104. dist=pointY-$('#todo_details_template').height();*/
  105. dist=Math.max(25, jsEvent.pageY-$('#todo_details_template').height());
  106. }
  107. else
  108. dist=25;
  109. $('#CATodo').css('left','');
  110. $('#CATodo').css('right','');
  111. $('#CATodo').css('top','');
  112. $('#CATodo').css('bottom','');
  113. $('#CATodo').css('top', dist);
  114. $('#todo_details_template').css('right', 0);
  115. $('#CATodo').css('right', 25);
  116. $('#todo_details_template').css('max-height', $('#main').height()-dist+20+'px');
  117. $('#CATodo').css('max-height', $('#main').height()-dist+20+'px');
  118. }
  119. function showTimezones(selTimezone, todoSelector)
  120. {
  121. if(!globalSettings.timezonesupport.value)
  122. return false;
  123. var select=$('#timezone'+todoSelector);
  124. select.empty();
  125. var isFirst=false;
  126. for(var izone in timezoneKeys)
  127. {
  128. if(timeZonesEnabled.indexOf(timezoneKeys[izone])==-1)
  129. continue;
  130. if(!isNaN(izone))
  131. {
  132. var tmp=null;
  133. if(!isFirst)
  134. {
  135. tmp=$('<option>');
  136. tmp.attr('data-type','local');
  137. isFirst=true;
  138. if(!(selTimezone in timezones) && selTimezone!= '' && selTimezone!= 'local' && (globalSettings.removeunknowntimezone.value == null || !globalSettings.removeunknowntimezone.value))
  139. {
  140. tmp.text(localization[globalInterfaceLanguage].customTimezone);
  141. tmp.attr('value','custom');
  142. if((todoSelector=='PickerTODO' || todoSelector=='Picker') && globalSettings.timezone.value != null)
  143. tmp.attr('value',globalSettings.timezone.value);
  144. select.append(tmp);
  145. }
  146. }
  147. tmp=$('<option>');
  148. tmp.attr('data-type',timezoneKeys[izone]);
  149. if(izone==0)
  150. {
  151. tmp.text(localization[globalInterfaceLanguage].localTime);
  152. tmp.attr('value','local');
  153. select.append(tmp);
  154. }
  155. else
  156. {
  157. tmp.text(timezoneKeys[izone]);
  158. tmp.attr('value',timezoneKeys[izone]);
  159. select.append(tmp);
  160. }
  161. }
  162. }
  163. if(!selTimezone && typeof globalSessionTimeZone!='undefined' && globalSessionTimeZone)
  164. selTimezone=globalSessionTimeZone;
  165. if(selTimezone in timezones)
  166. select.val(selTimezone);
  167. else
  168. {
  169. if((globalSettings.removeunknowntimezone.value != null && globalSettings.removeunknowntimezone.value) || selTimezone == 'local')
  170. select.val('local');
  171. else
  172. select.val('custom');
  173. }
  174. }
  175. function showTodoForm(todo, mod, repeatOne, confirmRepeat)
  176. {
  177. $('#CATodo').css('display','none');
  178. $('#todo_details_template').remove();
  179. $('#CATodo').html(cleanVtodoTemplate);
  180. setFirstDayTodo();
  181. bindTodoForm();
  182. $('#noteTODO').autosize({defaultStyles: {height: '64', overflow: '', 'overflow-y': '', 'word-wrap': '', resize: 'none'}, callback: function(){checkTodoFormScrollBar();}});
  183. $("#showTODO").val('');
  184. $("#uidTODO").val('');
  185. $("#etagTODO").val('');
  186. $("#vcalendarUIDTODO").val('');
  187. globalPrevDate='';
  188. globalObjectLoading=true;
  189. var color='';
  190. if(todo==null)
  191. {
  192. var activeCollection = $('#ResourceCalDAVTODOList').find('.resourceCalDAVTODO_item.resourceCalDAV_item_selected');
  193. if(activeCollection.length>0 && !globalResourceCalDAVList.getTodoCollectionByUID(activeCollection.attr('data-id')).permissions.read_only)
  194. color=rgbToHex(activeCollection.children('.resourceCalDAVColor').css('background-color'));
  195. }
  196. else
  197. color=globalResourceCalDAVList.getTodoCollectionByUID(todo.res_id).ecolor;
  198. if(confirmRepeat)
  199. {
  200. $('#showTODO').val(todo.id);
  201. $('#repeatTodo').val(true);
  202. $('#CATodo').show();
  203. $('#repeatConfirmBoxTODO').css('visibility', 'visible');
  204. if(todo.repeatCount!='' && todo.repeatCount == 1 || globalSettings.appleremindersmode.value)
  205. {
  206. $('#editFutureTODO').css('display','none');
  207. if($('#editFutureTODO').next('br').length>0)
  208. $('#editFutureTODO').next().remove();
  209. }
  210. else if($('#editFutureTODO').css('display')=='none')
  211. {
  212. $('#editFutureTODO').css('display','block');
  213. if($('#editFutureTODO').next('br').length==0)
  214. $('#editFutureTODO').after('<br/>')
  215. }
  216. $('#editAllTODO, #editOnlyOneTODO, #editFutureTODO').click(function(){
  217. if(globalCalTodo)
  218. {
  219. if($(this).attr('id')=='editOnlyOneTODO')
  220. showTodoForm(globalCalTodo, 'show', 'editOnly');
  221. else if($(this).attr('id')=='editAllTODO')
  222. showTodoForm(globalCalTodo, 'show', '');
  223. else if($(this).attr('id')=='editFutureTODO')
  224. showTodoForm(globalCalTodo, 'show', 'futureOnly');
  225. $('#repeatConfirmBoxContentTODO').html('');
  226. $('#repeatConfirmBoxTODO').css('visibility', 'hidden');
  227. $('#todo_details_template').css('visibility', 'visible');
  228. $('#AlertDisabler').fadeOut(globalEditorFadeAnimation);
  229. }
  230. });
  231. $('#repeatConfirmBoxContentTODO').html('<b>'+todo.title+"</b> "+localization[globalInterfaceLanguage].repeatBoxContentTODO);
  232. $('#repeatConfirmBoxQuestionTODO').html(localization[globalInterfaceLanguage].repeatBoxQuestionTODO);
  233. $('#todo_details_template').css('visibility', 'hidden');
  234. globalObjectLoading=false;
  235. $('#CATodo').show(200, function(){
  236. $('#todoColor').css('background-color',color);
  237. checkTodoFormScrollBar();
  238. $('#todoForm').scrollTop(0);
  239. });
  240. return true;
  241. }
  242. if(mod=='show' && repeatOne=='futureOnly')
  243. {
  244. if(todo.start!=null)
  245. $('#futureStartTODO').val(todo.realRepeatCount+';'+todo.start);
  246. else if(todo.end!=null)
  247. $('#futureStartTODO').val(todo.realRepeatCount+';'+todo.end);
  248. }
  249. if(mod=='show')
  250. {
  251. var checkDataStart='';
  252. if(todo.start)
  253. checkDataStart=$.fullCalendar.formatDate(todo.start, "yyyyMMdd'T'HHmmss'Z'");
  254. if($('.fc-event-selected').length>0 && $('.fc-event-selected').attr("data-start")!=checkDataStart)
  255. $('.fc-view-todo').addClass('fc-view-trans');
  256. else
  257. $('.fc-view-todo').removeClass('fc-view-trans');
  258. }
  259. if(repeatOne=='editOnly')
  260. if(todo!=null && (todo.type || todo.rec_id))
  261. {
  262. var eventsSorted=jQuery.grep(globalEventList.displayTodosArray[todo.res_id],function(e){if(e.id==todo.id)return true}).sort(repeatStartCompare);
  263. if(eventsSorted.indexOf(todo)!=-1)
  264. {
  265. if(eventsSorted.indexOf(todo)<(eventsSorted.length-1))
  266. showTodoNextNav();
  267. if(eventsSorted.indexOf(todo)!=0)
  268. showTodoPrevNav();
  269. var uncomplete=0;
  270. for(var ij=(eventsSorted.indexOf(todo)+1); ij<eventsSorted.length; ij++)
  271. if(eventsSorted[ij].status!='COMPLETED')
  272. uncomplete++;
  273. if(uncomplete>0 && eventsSorted.indexOf(todo)<(eventsSorted.length-1))
  274. showTodoNextNav(true);
  275. var uncomplete=0;
  276. for(var ij=(eventsSorted.indexOf(todo)-1); ij>=0; ij--)
  277. if(eventsSorted[ij].status!='COMPLETED')
  278. uncomplete++;
  279. if(uncomplete>0 && eventsSorted.indexOf(todo)!=0)
  280. showTodoPrevNav(true);
  281. }
  282. }
  283. if(todo!=null)
  284. {
  285. var prior=parseInt(todo.priority,10);
  286. if(prior==5)
  287. $('#priority_TODO').val(5);
  288. else if(prior>5 && prior<10)
  289. {
  290. $('#priority_TODO [data-type="priority_TODO_low"]').attr('value',prior)
  291. $('#priority_TODO').val(prior);
  292. }
  293. else if(prior<5 && prior>0)
  294. {
  295. $('#priority_TODO [data-type="priority_TODO_high"]').attr('value',prior)
  296. $('#priority_TODO').val(prior);
  297. }
  298. else
  299. $('#priority_TODO').val(0);
  300. }
  301. if(todo!=null)
  302. var sliderValue=todo.percent;
  303. else
  304. sliderValue=0;
  305. var cals=globalResourceCalDAVList.sortedTodoCollections;
  306. var todoCalendarObj = $('#todo_calendar');
  307. var calSelected = $('.resourceCalDAVTODO_item.resourceCalDAV_item_selected').attr('data-id');
  308. for(var i=0;i<cals.length;i++)
  309. {
  310. if( cals[i].uid!=undefined && ((todo!=null && todo.res_id==cals[i].uid) || (cals[i].makeLoaded && !cals[i].permissions_read_only)))
  311. {
  312. todoCalendarObj.append(new Option(cals[i].displayValue,cals[i].uid));
  313. }
  314. }
  315. if(mod!='new')
  316. fullVcalendarToTodoData(todo,true);
  317. else
  318. CalDAVeditor_cleanup('form');
  319. if(mod=='new')
  320. {
  321. $('#todoInEdit').val('true');
  322. $('#deleteTODO').hide();
  323. $('#resetTODO').hide();
  324. $('#editTODO').hide();
  325. $('#duplicateTODO').hide();
  326. $('#editOptionsButtonTODO').hide();
  327. $('#showTODO').val('');
  328. if($('#ResourceCalDAVTODOList').find('.resourceCalDAVTODO_item.resourceCalDAV_item_selected').length>0 && $('#todo_calendar').find('option[value="'+$('#ResourceCalDAVTODOList').find('.resourceCalDAVTODO_item.resourceCalDAV_item_selected').attr("data-id")+'"]').length>0)
  329. $('#todo_calendar').val($('#ResourceCalDAVTODOList').find('.resourceCalDAVTODO_item.resourceCalDAV_item_selected').attr("data-id"));
  330. else
  331. $('#todo_calendar').val('choose');
  332. //$('[data-type="name_TODO"]').attr('placeholder', localization[globalInterfaceLanguage].pholderNewTODO);
  333. showTimezones('', 'TODO');
  334. $('.timezone_rowTODO').css('display','none')
  335. }
  336. $('#CATodo').show();
  337. $('#todo_details_template').show();
  338. if(globalSettings.appleremindersmode.value)
  339. {
  340. $('[data-type="todo_type_start"], [data-type="todo_type_both"]').remove();
  341. if(typeof globalSettings.appleremindersmode.value == 'string' && globalSettings.appleremindersmode.value.toLowerCase()=='ios6')
  342. {
  343. $('#url_trTODO').hide();
  344. $('#location_row_TODO').hide();
  345. }
  346. $('[data-type="STATUS_CANCELLED_TODO"],[data-type="STATUS_IN-PROCESS_TODO"]').remove();
  347. }
  348. if(mod=='show')
  349. {
  350. $('#showTODO').val(todo.id);
  351. $('#todoDetailsTable :input[type!="button"]').prop('disabled', true);
  352. if(todo.timeZone)
  353. showTimezones(todo.timeZone,'TODO');
  354. else
  355. showTimezones('local','TODO');
  356. if(todo.etag!='')
  357. $('#todo_calendar').val(todo.res_id);
  358. $('#nameTODO').val(todo.title);
  359. if(todo.status=='CANCELLED')
  360. $('#nameTODO').addClass('title_cancelled');
  361. if(todo.start!=null || todo.end!=null)
  362. {
  363. if((!globalSettings.appleremindersmode.value) && ((todo.start!=null && todo.end!=null && repeatOne!='') || (!todo.type && todo.realStart!='' && todo.realEnd!='' && repeatOne=='') || (todo.type && todo.repeatStart!='' && todo.repeatEnd!='' && repeatOne=='')))
  364. $('#todo_type').val('both');
  365. else if((!globalSettings.appleremindersmode.value) && ((todo.start!=null && todo.end==null && repeatOne!='') || (!todo.type && todo.realStart!='' && todo.realEnd=='' && repeatOne=='') || (todo.type && todo.repeatStart!='' && todo.repeatEnd=='' && repeatOne=='')))
  366. $('#todo_type').val('start');
  367. else
  368. $('#todo_type').val('due');
  369. if(globalSettings.timezonesupport.value)
  370. $('.timezone_rowTODO').show();
  371. }
  372. else
  373. {
  374. $('#todo_type').val('none');
  375. $('.timezone_rowTODO').css('display','none');
  376. }
  377. if(todo.start!='' && todo.start!=null)
  378. {
  379. var date,
  380. year,
  381. month,
  382. day,
  383. hour,
  384. minute;
  385. if(todo.realStart)
  386. date=$.fullCalendar.parseDate(todo.realStart);
  387. else
  388. date=$.fullCalendar.parseDate(todo.start);
  389. if($('#showTODO').val()!='' && todo.repeatStart!='' && repeatOne=='')
  390. date=todo.repeatStart;
  391. else if($('#showTODO').val()!='' && todo.repeatStart=='' && repeatOne=='' && todo.type)
  392. date='';
  393. if(date)
  394. {
  395. (date.getHours())<10 ? (hour='0'+(date.getHours())) : (hour=date.getHours());
  396. (date.getMinutes())<10 ? (minute='0'+(date.getMinutes())) : (minute=date.getMinutes());
  397. var formattedDate=$.datepicker.formatDate(globalSettings.datepickerformat.value, date);
  398. $('#date_fromTODO').val(formattedDate);
  399. if($('#todo_type').val=='both')
  400. globalPrevDate = new Date(date.getTime());
  401. $('#time_fromTODO').val($.fullCalendar.formatDate(date, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  402. }
  403. }
  404. if(todo.end!='' && todo.end!=null)
  405. {
  406. if(todo.realEnd)
  407. date=$.fullCalendar.parseDate(todo.realEnd);
  408. else
  409. date=$.fullCalendar.parseDate(todo.end);
  410. if($('#showTODO').val()!='' && todo.repeatEnd!='' && repeatOne=='')
  411. date=todo.repeatEnd;
  412. else if($('#showTODO').val()!='' && todo.repeatEnd=='' && repeatOne=='' && todo.type)
  413. date='';
  414. if(date)
  415. {
  416. (date.getHours())<10 ? (hour='0'+(date.getHours())) : (hour=date.getHours());
  417. (date.getMinutes())<10 ? (minute='0'+(date.getMinutes())) : (minute=date.getMinutes());
  418. var formattedDate_to=$.datepicker.formatDate(globalSettings.datepickerformat.value, date);
  419. $('#date_toTODO').val(formattedDate_to);
  420. $('#time_toTODO').val($.fullCalendar.formatDate(date, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  421. }
  422. }
  423. if(repeatOne=='editOnly' && todo.rec_id=='')
  424. {
  425. if(todo.repeatStart!='' && todo.start)
  426. {
  427. if(typeof todo.realStart=='object')
  428. $('#recurrenceIDTODO').val($.fullCalendar.formatDate(todo.realStart, "yyyyMMdd'T'HHmmss"));
  429. else if(typeof todo.realStart =='string')
  430. $('#recurrenceIDTODO').val($.fullCalendar.formatDate($.fullCalendar.parseDate(todo.realStart), "yyyyMMdd'T'HHmmss"));
  431. }
  432. else if(todo.repeatEnd!='' && todo.end)
  433. {
  434. if(typeof todo.realEnd =='object')
  435. $('#recurrenceIDTODO').val($.fullCalendar.formatDate(todo.realEnd, "yyyyMMdd'T'HHmmss"));
  436. else if(typeof todo.realEnd =='string')
  437. $('#recurrenceIDTODO').val($.fullCalendar.formatDate($.fullCalendar.parseDate(todo.realEnd), "yyyyMMdd'T'HHmmss"));
  438. }
  439. }
  440. else
  441. $('#recurrenceIDTODO').val(todo.rec_id);
  442. if(todo.rec_id || repeatOne=='editOnly' || repeatOne=='futureOnly')
  443. {
  444. var savedEvs=jQuery.grep(globalEventList.displayTodosArray[todo.res_id],function(e){if(e.id==todo.id && (e.repeatCount<2 || !e.repeatCount))return true});
  445. if(savedEvs.length>1 || (repeatOne=='futureOnly' && todo.repeatCount>1) || (repeatOne=='editOnly' && todo.type!=''))
  446. {
  447. $('#deleteTODO').attr('onclick',"$('#todoInEdit').val('false');updateEventFormDimensions(true);$('#todoLoader').show();saveTodo(true);");
  448. }
  449. }
  450. if(todo.completedOn!='' && todo.completedOn!=null)
  451. {
  452. var date,
  453. year,
  454. month,
  455. day,
  456. hour,
  457. minute;
  458. // (todo.completedOn.getHours())<10 ? (hour='0'+(todo.completedOn.getHours())) : (hour=todo.completedOn.getHours());
  459. // (todo.completedOn.getMinutes())<10 ? (minute='0'+(todo.completedOn.getMinutes())) : (minute=todo.completedOn.getMinutes());
  460. if(typeof todo.completedOn=='string')
  461. date = $.fullCalendar.parseDate(todo.completedOn);
  462. else if(typeof todo.completedOn=='object')
  463. date=new Date(todo.completedOn.getTime());
  464. var formattedDate=$.datepicker.formatDate(globalSettings.datepickerformat.value, date);
  465. $('#completedOnDate').val(formattedDate);
  466. $('#completedOnTime').val($.fullCalendar.formatDate(date, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  467. $('.completedOnTr').show();
  468. }
  469. var alarmDate='';
  470. var alarmIterator=0;
  471. for(alarmIterator=0;alarmIterator<todo.alertTime.length;alarmIterator++)
  472. {
  473. if(alarmIterator>0)
  474. todo_alert_add(alarmIterator);
  475. $(".alertTODO[data-id="+(alarmIterator+1)+"]").val("message");
  476. if(todo.alertTime[alarmIterator].charAt(0)=='-' || todo.alertTime[alarmIterator].charAt(0)=='+')
  477. {
  478. var alVal=parseInt(todo.alertTime[alarmIterator].substring(1, todo.alertTime[alarmIterator].length-1));
  479. var alString='';
  480. if(todo.alertTime[alarmIterator].charAt(todo.alertTime[alarmIterator].length-1)=="W")
  481. {
  482. alVal=alVal/1000/60/60/24/7;
  483. alString='weeks';
  484. }
  485. else if(todo.alertTime[alarmIterator].charAt(todo.alertTime[alarmIterator].length-1)=="D")
  486. {
  487. alVal=alVal/1000/60/60/24;
  488. alString='days';
  489. }
  490. else if(todo.alertTime[alarmIterator].charAt(todo.alertTime[alarmIterator].length-1)=="H")
  491. {
  492. alVal=alVal/1000/60/60;
  493. alString='hours';
  494. }
  495. else if(todo.alertTime[alarmIterator].charAt(todo.alertTime[alarmIterator].length-1)=="M")
  496. {
  497. alVal=alVal/1000/60;
  498. alString='minutes';
  499. }
  500. else if(todo.alertTime[alarmIterator].charAt(todo.alertTime[alarmIterator].length-1)=="S")
  501. {
  502. alVal=alVal/1000;
  503. alString='seconds';
  504. }
  505. if(todo.alertTime[alarmIterator].charAt(0)=='-')
  506. alString+="_before";
  507. else
  508. alString+="_after"
  509. $(".alert_message_detailsTODO[data-id="+(alarmIterator+1)+"]").val(alString);
  510. $(".before_after_inputTODO[data-id="+(alarmIterator+1)+"]").val(alVal);
  511. $('.alert_detailsTODO[data-id="'+(alarmIterator+1)+'"]').show();
  512. $('.alert_message_dateTODO[data-id="'+(alarmIterator+1)+'"]').show();
  513. $('.before_after_inputTODO[data-id="'+(alarmIterator+1)+'"]').show();
  514. $(".message_date_inputTODO[data-id="+(alarmIterator+1)+"]").hide();
  515. $(".message_time_inputTODO[data-id="+(alarmIterator+1)+"]").hide();
  516. }
  517. else
  518. {
  519. alarmDate=$.fullCalendar.parseDate(todo.alertTime[alarmIterator]);
  520. (alarmDate.getHours())<10 ? (hour='0'+(alarmDate.getHours())) : (hour=alarmDate.getHours());
  521. (alarmDate.getMinutes())<10 ? (minute='0'+(alarmDate.getMinutes())) : (minute=alarmDate.getMinutes());
  522. $(".alert_message_detailsTODO[data-id="+(alarmIterator+1)+"]").val('on_date');
  523. var formattedAlarmDate=$.datepicker.formatDate(globalSettings.datepickerformat.value, alarmDate);
  524. $(".message_date_inputTODO[data-id="+(alarmIterator+1)+"]").val(formattedAlarmDate);
  525. $(".message_time_inputTODO[data-id="+(alarmIterator+1)+"]").val($.fullCalendar.formatDate(alarmDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  526. $('.alert_detailsTODO[data-id="'+(alarmIterator+1)+'"]').show();
  527. $('.alert_message_dateTODO[data-id="'+(alarmIterator+1)+'"]').show();
  528. }
  529. }
  530. if(alarmIterator>0)
  531. todo_alert_add(alarmIterator);
  532. if(todo.type!='' && repeatOne!='editOnly' && todo.ruleString.match(vCalendar.re['recurCaldav'])!=null)
  533. {
  534. var ruleString=todo.vcalendar.match(vCalendar.pre['contentline_RRULE2'])[0].match(vCalendar.pre['contentline_parse'])[4];
  535. if(ruleString.indexOf('BYMONTH=')!=-1 || ruleString.indexOf('BYMONTHDAY=')!=-1 || ruleString.indexOf('BYDAY=')!=-1)
  536. {
  537. var pars=ruleString.split(';');
  538. if(pars.indexElementOf('BYMONTH=')!=-1 && pars.indexElementOf('BYMONTHDAY=')==-1 && pars.indexElementOf('BYDAY=')==-1)
  539. pars[pars.length] = "BYMONTHDAY="+todo.start.getDate();
  540. if(todo.type=="DAILY")
  541. {
  542. $("#repeat_TODO option[value='DAILY']").prop('selected', true);
  543. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatDays);
  544. }
  545. else if(todo.type=="WEEKLY")
  546. {
  547. $("#repeat_TODO option[value='CUSTOM_WEEKLY']").prop('selected', true);
  548. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatWeeks);
  549. for(var ri=0;ri<pars.length;ri++)
  550. {
  551. if(pars[ri].indexOf("BYDAY=")!=-1)
  552. {
  553. var byDay=pars[ri].split('=')[1];
  554. 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(',');
  555. for(var rj=0;rj<byDay.length;rj++)
  556. {
  557. if(!isNaN(parseInt(byDay[rj],10)))
  558. $('#week_custom_TODO .customTable td[data-type="'+byDay[rj]+'"]').addClass('selected');
  559. }
  560. }
  561. }
  562. $('#week_custom_TODO').show();
  563. }
  564. else if(todo.type=="MONTHLY")
  565. {
  566. $("#repeat_TODO option[value='CUSTOM_MONTHLY']").prop('selected', true).change();
  567. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatMonths);
  568. for(var ri=0;ri<pars.length;ri++)
  569. {
  570. if(pars[ri].indexOf("BYDAY=")!=-1)
  571. {
  572. var byDay=pars[ri].split('=')[1];
  573. byDay=byDay.split(',');
  574. for(var rj=0;rj<byDay.length;rj++)
  575. {
  576. var checkString = byDay[rj].match(vCalendar.pre['+/-number']);
  577. byDay[rj] = byDay[rj].replace(checkString[0],'');
  578. if(!isNaN(parseInt(checkString[0],10)))
  579. {
  580. switch(parseInt(checkString[0],10))
  581. {
  582. case 1:
  583. $('#repeat_month_custom_select_TODO').val('first');
  584. break;
  585. case 2:
  586. $('#repeat_month_custom_select_TODO').val('second');
  587. break;
  588. case 3:
  589. $('#repeat_month_custom_select_TODO').val('third');
  590. break;
  591. case 4:
  592. $('#repeat_month_custom_select_TODO').val('fourth');
  593. break;
  594. case 5:
  595. $('#repeat_month_custom_select_TODO').val('fifth');
  596. break;
  597. case -1:
  598. $('#repeat_month_custom_select_TODO').val('last');
  599. break;
  600. default:
  601. $('#repeat_month_custom_select_TODO').val('every');
  602. break;
  603. }
  604. $('#repeat_month_custom_select2_TODO').val(byDay[rj]);
  605. }
  606. }
  607. }
  608. else if(pars[ri].indexOf("BYMONTHDAY=")!=-1)
  609. {
  610. $('#repeat_month_custom_select_TODO').val('custom').change();
  611. var byMonthDay=pars[ri].split('=')[1];
  612. byMonthDay=byMonthDay.split(',');
  613. for(var rj=0; rj<byMonthDay.length;rj++)
  614. {
  615. if(parseInt(byMonthDay[rj],10)==-1)
  616. {
  617. $('#repeat_month_custom_select_TODO').val('last').change();
  618. $('#repeat_month_custom_select2_TODO').val("DAY");
  619. }
  620. else
  621. $('#month_custom2_TODO .customTable td[data-type="'+(parseInt(byMonthDay[rj],10))+'"]').addClass('selected');
  622. }
  623. }
  624. }
  625. }
  626. else if(todo.type=="YEARLY")
  627. {
  628. $("#repeat_TODO option[value='CUSTOM_YEARLY']").prop('selected', true).change();
  629. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatYears);
  630. var isMonthDay=false;
  631. for(var ri=0;ri<pars.length;ri++)
  632. {
  633. if(pars[ri].indexOf("BYDAY=")!=-1)
  634. {
  635. var byDay=pars[ri].split('=')[1];
  636. byDay=byDay.split(',');
  637. for(var rj=0;rj<byDay.length;rj++)
  638. {
  639. var checkString = byDay[rj].match(vCalendar.pre['+/-number']);
  640. byDay[rj] = byDay[rj].replace(checkString[0],'');
  641. if(!isNaN(parseInt(checkString[0],10)))
  642. {
  643. switch(parseInt(checkString[0],10))
  644. {
  645. case 1:
  646. $('#repeat_year_custom_select1_TODO').val('first');
  647. break;
  648. case 2:
  649. $('#repeat_year_custom_select1_TODO').val('second');
  650. break;
  651. case 3:
  652. $('#repeat_year_custom_select1_TODO').val('third');
  653. break;
  654. case 4:
  655. $('#repeat_year_custom_select1_TODO').val('fourth');
  656. break;
  657. case 5:
  658. $('#repeat_year_custom_select1_TODO').val('fifth');
  659. break;
  660. case -1:
  661. $('#repeat_year_custom_select1_TODO').val('last');
  662. break;
  663. default:
  664. $('#repeat_year_custom_select1_TODO').val('every');
  665. break;
  666. }
  667. $('#repeat_year_custom_select2_TODO').val(byDay[rj]);
  668. }
  669. }
  670. }
  671. else if(pars[ri].indexOf("BYMONTHDAY=")!=-1)
  672. {
  673. $('#repeat_year_custom_select1_TODO').val('custom').change()
  674. var byMonthDay=pars[ri].split('=')[1];
  675. byMonthDay=byMonthDay.split(',');
  676. for(var rj=0; rj<byMonthDay.length;rj++)
  677. {
  678. if(parseInt(byMonthDay[rj],10)==-1)
  679. {
  680. $('#repeat_year_custom_select1_TODO').val('last').change();
  681. $('#repeat_year_custom_select2_TODO').val("DAY");
  682. }
  683. else
  684. $('#year_custom1_TODO .customTable td[data-type="'+(parseInt(byMonthDay[rj],10))+'"]').addClass('selected');
  685. }
  686. isMonthDay=true;
  687. }
  688. else if(pars[ri].indexOf("BYMONTH=")!=-1)
  689. {
  690. var byMonth=pars[ri].split('=')[1];
  691. byMonth=byMonth.split(',');
  692. for(var rj=0; rj<byMonth.length;rj++)
  693. $('#year_custom3_TODO .customTable td[data-type="'+(parseInt(byMonth[rj],10)-1)+'"]').addClass('selected');
  694. }
  695. }
  696. }
  697. if(todo.after=='' && todo.untilDate=='')
  698. $("#repeat_end_details_TODO option[value='never']").prop('selected', true);
  699. else if(todo.after!='')
  700. {
  701. $("#repeat_end_details_TODO option[value='after']").prop('selected', true);
  702. $('#repeat_end_after_TODO').val(todo.after);
  703. }
  704. else if(todo.untilDate!='')
  705. {
  706. date=$.fullCalendar.parseDate(todo.untilDate);
  707. $("#repeat_end_details_TODO option[value='on_date']").prop('selected', true);
  708. var formattedRepeatDate=$.datepicker.formatDate(globalSettings.datepickerformat.value, date);
  709. $('#repeat_end_date_TODO').val(formattedRepeatDate);
  710. }
  711. $('#repeat_interval_detail_TODO').val(todo.interval);
  712. $('#repeat_interval_TODO').show();
  713. if(todo.byDay.length>0)
  714. {
  715. var businessArray=new Array();
  716. if(globalSettings.weekenddays.value.length>0)
  717. for(var i=0;i<7;i++)
  718. if(globalSettings.weekenddays.value.indexOf(i)==-1)
  719. businessArray[businessArray.length]=i+'';
  720. var businessCount=0;
  721. var weekendCount=0;
  722. for(var i=0;i<byDay.length;i++)
  723. {
  724. if(businessArray.indexOf(byDay[i])!=-1)
  725. businessCount++;
  726. if(globalSettings.weekenddays.value.indexOf(parseInt(byDay[i],10))!=-1)
  727. weekendCount++;
  728. }
  729. if(businessArray.length>0 && businessArray.length==businessCount)
  730. {
  731. $("#repeat_TODO option[value='BUSINESS']").prop('selected', true);
  732. $('#repeat_interval_TODO').hide();
  733. $('#week_custom_TODO').hide();
  734. }
  735. else if(globalSettings.weekenddays.value.length>0 && globalSettings.weekenddays.value.length==weekendCount)
  736. {
  737. $("#repeat_TODO option[value='WEEKEND']").prop('selected', true);
  738. $('#repeat_interval_TODO').hide();
  739. $('#week_custom_TODO').hide();
  740. }
  741. }
  742. }
  743. else
  744. {
  745. if(todo.type=="DAILY")
  746. {
  747. $("#repeat_TODO option[value='DAILY']").prop('selected', true);
  748. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatDays);
  749. }
  750. else if(todo.type=="WEEKLY")
  751. {
  752. $("#repeat_TODO option[value='WEEKLY']").prop('selected', true);
  753. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatWeeks);
  754. }
  755. else if(todo.type=="MONTHLY")
  756. {
  757. $("#repeat_TODO option[value='MONTHLY']").prop('selected', true);
  758. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatMonths);
  759. }
  760. else if(todo.type=="YEARLY")
  761. {
  762. $("#repeat_TODO option[value='YEARLY']").prop('selected', true);
  763. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatYears);
  764. }
  765. if(todo.after=='' && todo.untilDate=='')
  766. $("#repeat_end_details_TODO option[value='never']").prop('selected', true);
  767. else if(todo.after!='')
  768. {
  769. $("#repeat_end_details_TODO option[value='after']").prop('selected', true);
  770. $('#repeat_end_after_TODO').val(todo.after);
  771. }
  772. else if(todo.untilDate!='')
  773. {
  774. date=$.fullCalendar.parseDate(todo.untilDate);
  775. $("#repeat_end_details_TODO option[value='on_date']").prop('selected', true);
  776. var formattedRepeatDate=$.datepicker.formatDate(globalSettings.datepickerformat.value, date);
  777. $('#repeat_end_date_TODO').val(formattedRepeatDate);
  778. }
  779. $('#repeat_interval_detail_TODO').val(todo.interval);
  780. $('#repeat_interval_TODO').show();
  781. $('#repeatTodo').val(true);
  782. }
  783. }
  784. else if(todo.type!='' && repeatOne!='editOnly')
  785. {
  786. var cu_opt = new Option(localization[globalInterfaceLanguage].customRepeat, todo.ruleString, false, true);
  787. cu_opt.attr('data-type','custom_repeat');
  788. $('#repeat_TODO').append(cu_opt);
  789. }
  790. else
  791. $('#repeatTodo').val(false);
  792. if(todo.start!=null || todo.end!=null)
  793. {
  794. if(globalSettings.timezonesupport.value)
  795. $('.timezone_rowTODO').show()
  796. }
  797. else
  798. $('.timezone_rowTODO').css('display', 'none');
  799. if(todo.status!='')
  800. $('#statusTODO').find('option[value='+todo.status+']').prop('selected', true);
  801. $('#noteTODO').val(todo.note).trigger('autosize.resize');
  802. if(todo.classType!='')
  803. $('#typeTODO').val(todo.classType.toLowerCase());
  804. else
  805. $('#typeTODO').val('public');
  806. if(todo!=null && mod!='new')
  807. {
  808. var uidArray = todo.id.match(vCalendar.pre['uidParts']);
  809. if(decodeURIComponent(uidArray[4]).indexOf(uidArray[2])==-1)
  810. $('.row_typeTODO').css('display','none');
  811. }
  812. $('#uidTODO').val(todo.id);
  813. $('#url_TODO').val(todo.url);
  814. $('#location_TODO').val(todo.location);
  815. $('#etagTODO').val(todo.etag);
  816. $('#vcalendarHashTODO').val(hex_sha256(todo.vcalendar));
  817. var stringUIDcurrent=todo.vcalendar.match(vCalendar.pre['contentline_UID']);
  818. if(stringUIDcurrent!=null)
  819. stringUIDcurrent=stringUIDcurrent[0].match(vCalendar.pre['contentline_parse'])[4];
  820. if(stringUIDcurrent)
  821. $('#vcalendarUIDTODO').val(stringUIDcurrent);
  822. }
  823. if($('#todo_type').val()=='start')
  824. {
  825. $('.dateTrFromTODO').show();
  826. $('.dateTrToTODO').hide();
  827. }
  828. else if($('#todo_type').val()=='due')
  829. {
  830. $('.dateTrToTODO').show();
  831. $('.dateTrFromTODO').hide();
  832. }
  833. else if($('#todo_type').val()=='both')
  834. {
  835. $('.dateTrToTODO').show();
  836. $('.dateTrFromTODO').show();
  837. }
  838. else
  839. {
  840. $('.dateTrToTODO').hide();
  841. $('.dateTrFromTODO').hide();
  842. $('#repeat_row_TODO').hide();
  843. }
  844. if($('#repeat_TODO option:selected').attr('data-type')!="repeat_no-repeat" && $('#repeat_TODO option:selected').attr('data-type')!="custom_repeat")
  845. $('#repeat_details_TODO').show();
  846. if($('#repeat_end_details_TODO option:selected').attr('data-type')=="repeat_details_on_date")
  847. {
  848. $('#repeat_end_after_TODO').hide();
  849. $('#repeat_end_date_TODO').show();
  850. }
  851. if($('#repeat_end_details_TODO option:selected').attr('data-type')=="repeat_details_after")
  852. {
  853. $('#repeat_end_after_TODO').show();
  854. $('#repeat_end_date_TODO').hide();
  855. }
  856. if($('#repeat_end_details_TODO option:selected').attr('data-type')=="repeat_details_never")
  857. {
  858. $('#repeat_end_after_TODO').hide();
  859. $('#repeat_end_date_TODO').hide();
  860. }
  861. if(mod=='show')
  862. {
  863. if($('#ResourceCalDAVTODOList').find('[data-id="'+todo.res_id+'"]').hasClass("resourceCalDAV_item_ro"))
  864. {
  865. $('#editTODO').hide();
  866. $('#duplicateTODO').hide();
  867. $('#editOptionsButtonTODO').hide();
  868. }
  869. $('#saveTODO').hide();
  870. $('#resetTODO').hide();
  871. $('#deleteTODO').hide();
  872. $('#todoDetailsTable :input[type!="button"]').prop('disabled', true);
  873. $('#todoDetailsTable :input[type="text"]').prop('readonly', true);
  874. $('#todoDetailsTable textarea').prop('readonly', true);
  875. $('#percentageSlider').slider({disabled: true});
  876. /*************************** BAD HACKS SECTION ***************************/
  877. // here we fix the cross OS/cross broser problems (unfixable in pure CSS)
  878. if($.browser.webkit && !!window.chrome) /* Chrome */
  879. {
  880. if(navigator.platform.toLowerCase().indexOf('win')==0) /* Windows version */
  881. {
  882. $('#todo_details_template').find('input').css('text-indent', '2px');
  883. $('#todo_details_template').find('select').css({'padding-left': '0px', 'padding-right': '13px'});
  884. }
  885. else /* non-Windows version */
  886. $('#todo_details_template').find('input').css('text-indent', '1px');
  887. }
  888. else if($.browser.safari)
  889. {
  890. $('#todo_details_template').find('textarea').addClass('safari_hack');
  891. $('#todo_details_template').find('input').addClass('safari_hack');
  892. }
  893. else if($.browser.msie) /* IE */
  894. {
  895. if(parseInt($.browser.version, 10)==10) /* IE 10 (because there are no more conditional comments) */
  896. {
  897. $('#todo_details_template').find('select').css({'padding-top': '1px', 'padding-left': '0px', 'padding-right': '0px'});
  898. $('#todo_details_template').find('textarea').css('padding-top', '3px');
  899. $('#todo_details_template').find('input[type=button]').css('padding-top', '2px');
  900. }
  901. }
  902. if($.browser.msie || $.browser.mozilla)
  903. {
  904. var newSVG=$(SVG_select_dis).attr('data-type', 'select_icon').css({'pointer-events': 'none', 'z-index': '1', 'display': 'inline', 'margin-left': '-22px', 'vertical-align': 'top', 'background-color': '#ffffff'}); // background-color = stupid IE9 bug
  905. $('#todo_details_template').find('svg[data-type="select_icon"]').replaceWith($('<div>').append($(newSVG).clone()).html());
  906. }
  907. /*************************** END OF BAD HACKS SECTION ***************************/
  908. }
  909. if(repeatOne=='editOnly' || $('#recurrenceIDTODO').val()!='')
  910. {
  911. $('#repeat_TODO').parent().parent().css('display', 'none');
  912. $('#week_custom_TODO').css('display', 'none');
  913. $('#month_custom1_TODO').css('display', 'none');
  914. $('#month_custom2_TODO').css('display', 'none');
  915. $('#year_custom1_TODO').css('display', 'none');
  916. $('#year_custom2_TODO').css('display', 'none');
  917. $('#year_custom3_TODO').css('display', 'none');
  918. $('#repeat_details_TODO').css('display', 'none');
  919. }
  920. if(todo==null || todo.type=='' || (globalSettings.appleremindersmode.value && (todo.status=='COMPLETED' || todo.status== 'CANCELLED')) ||
  921. (globalSettings.appleremindersmode.value && typeof globalAppleSupport.nextDates[todo.id] == 'undefined'))
  922. $('#editOptionsButtonTODO').hide();
  923. else
  924. $('#editOptionsButtonTODO').click(function(){
  925. showTodoForm(globalCalTodo, 'show', '', true);
  926. });
  927. if(repeatOne=='editOnly' || repeatOne=='futureOnly' || $('#recurrenceIDTODO').val())
  928. $('#calendarLineTODO').hide();
  929. if(todo && todo.after && repeatOne=='futureOnly')
  930. $('#repeat_end_after_TODO').val(todo.after - todo.realRepeatCount + 1);
  931. $('#percenteCompleteValue').val(sliderValue);
  932. $('#percentageSlider').slider({
  933. animate: true,
  934. range: "min",
  935. value: sliderValue,
  936. min: 0,
  937. max: 100,
  938. step: 1,
  939. //this gets a live reading of the value and prints it on the page
  940. slide: function(event, ui)
  941. {
  942. $("#percenteCompleteValue").val(ui.value);
  943. $(this).parent().parent().find('img').css('display', 'none');
  944. },
  945. //this updates the hidden form field so we can submit the data using a form
  946. change: function(event, ui) {
  947. var status;
  948. if (ui.value>99 && $('#statusTODO').val()==='CANCELLED')
  949. status='CANCELLED';
  950. else if(ui.value>99)
  951. status='COMPLETED';
  952. else if(ui.value>0 && !globalSettings.appleremindersmode.value)
  953. status='IN-PROCESS';
  954. else
  955. status='NEEDS-ACTION';
  956. $('#statusTODO').val(status);
  957. todoStatusChanged(status);
  958. }
  959. });
  960. if(!globalSettings.timezonesupport.value)
  961. $('.timezone_rowTODO').css('display', 'none');
  962. //updateTodoFormDimensions();
  963. //if(window.event!=undefined)
  964. // setTodoPosition(window.event);
  965. //else
  966. // setTodoPosition(event);
  967. if($('#todo_type').val()=='none')
  968. stripTodoAlerts();
  969. if(mod!='new')
  970. $('#closeTODO').hide();
  971. globalObjectLoading=false;
  972. $('#CATodo').show(200, function(){
  973. $('#todoColor').css('background-color',color);
  974. checkTodoFormScrollBar();
  975. $('#todoForm').scrollTop(0);
  976. });
  977. }
  978. function bindTodoForm()
  979. {
  980. initCalDavDatepicker($('#todo_details_template'));
  981. initCalDavTimepicker($('#todo_details_template'));
  982. $('#todo_details_template .alert_message_detailsTODO').change(function(){
  983. var data_id=$(this).attr("data-id");
  984. $('.before_after_inputTODO[data-id="'+data_id+'"]').parent().parent().find('img').css('display','none');
  985. if($('.alert_message_detailsTODO[data-id="'+data_id+'"] option:selected').attr('data-type')=="on_dateTODO")
  986. {
  987. var myDate=new Date();
  988. myDate.setDate(myDate.getDate()+7);
  989. if($('.dateTrToTODO').is(':visible') && $('.dateTrToTODO img:visible').length==0) {
  990. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_toTODO").val());
  991. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  992. myDate=new Date(Date.parse(datetime_to +$("#time_toTODO").val()));
  993. myDate.setHours(myDate.getHours()-1);
  994. }
  995. else if($('.dateTrFromTODO').is(':visible') && $('.dateTrFromTODO img:visible').length==0) {
  996. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_fromTODO").val());
  997. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  998. myDate=new Date(Date.parse(datetime_to +$("#time_fromTODO").val()));
  999. myDate.setHours(myDate.getHours()-1);
  1000. }
  1001. $('.message_date_inputTODO[data-id="'+data_id+'"]').val($.datepicker.formatDate(globalSettings.datepickerformat.value, myDate));
  1002. $('.message_date_inputTODO[data-id="'+data_id+'"]').show();
  1003. $('.message_time_inputTODO[data-id="'+data_id+'"]').val($.fullCalendar.formatDate(myDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  1004. $('.message_time_inputTODO[data-id="'+data_id+'"]').show();
  1005. $('.before_after_inputTODO[data-id="'+data_id+'"]').hide();
  1006. }
  1007. else
  1008. {
  1009. $('.message_date_inputTODO[data-id="'+data_id+'"]').hide();
  1010. $('.message_time_inputTODO[data-id="'+data_id+'"]').hide();
  1011. $('.before_after_inputTODO[data-id="'+data_id+'"]').show();
  1012. $('.before_after_inputTODO[data-id="'+data_id+'"]').val('15');
  1013. }
  1014. });
  1015. $('#todo_details_template .before_after_inputTODO').bind('keyup change', function(){
  1016. if($(this).val()=='')
  1017. {
  1018. $(this).parent().find('img').css('display', 'inline');
  1019. //$(this).parent().find('img').css('visibility','visible');
  1020. }
  1021. else
  1022. {
  1023. if($(this).val().match("^[0-9]+$")==null)
  1024. {
  1025. $(this).parent().find('img').css('display', 'inline');
  1026. //$(this).parent().find('img').css('visibility','visible');
  1027. }
  1028. else
  1029. $(this).parent().find('img').css('display', 'none');
  1030. }
  1031. });
  1032. $('#todo_details_template .alertTODO').change(function(){
  1033. var data_id=$(this).attr("data-id");
  1034. if($(this).val()!='none')
  1035. {
  1036. $('.alert_detailsTODO[data-id="'+data_id+'"]').show();
  1037. $('.alert_message_dateTODO[data-id="'+data_id+'"]').show();
  1038. if($('#todo_type').val()!='none')
  1039. expandTodoAlerts();
  1040. var myDate=new Date();
  1041. myDate.setDate(myDate.getDate()+7);
  1042. if($('.dateTrToTODO').is(':visible') && $('.dateTrToTODO img:visible').length==0) {
  1043. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_toTODO").val());
  1044. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  1045. myDate=new Date(Date.parse(datetime_to +$("#time_toTODO").val()));
  1046. myDate.setHours(myDate.getHours()-1);
  1047. }
  1048. else if($('.dateTrFromTODO').is(':visible') && $('.dateTrFromTODO img:visible').length==0) {
  1049. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_fromTODO").val());
  1050. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  1051. myDate=new Date(Date.parse(datetime_to +$("#time_fromTODO").val()));
  1052. myDate.setHours(myDate.getHours()-1);
  1053. }
  1054. $('.message_date_inputTODO[data-id="'+data_id+'"]').val($.datepicker.formatDate(globalSettings.datepickerformat.value, myDate));
  1055. $('.message_time_inputTODO[data-id="'+data_id+'"]').val($.fullCalendar.formatDate(myDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  1056. todo_alert_add(data_id);
  1057. }
  1058. else
  1059. {
  1060. $('.alert_detailsTODO[data-id="'+data_id+'"]').hide();
  1061. $('.alert_message_dateTODO[data-id="'+data_id+'"]').hide();
  1062. checkForTodo(data_id);
  1063. var data_id=$(this).attr("data-id");
  1064. $('#todo_details_template tr[data-id="'+data_id+'"]').remove();
  1065. }
  1066. checkTodoFormScrollBar();
  1067. });
  1068. $('#repeat_end_after_TODO, #repeat_interval_detail_TODO').bind('keyup change',function(){
  1069. if($(this).val()=='')
  1070. {
  1071. $(this).parent().find('img').css('display', 'inline');
  1072. //$(this).parent().find('img').css('visibility','visible');
  1073. }
  1074. else
  1075. {
  1076. if($(this).val().match("^[0-9]+$")==null || parseInt($(this).val(),10)<1)
  1077. {
  1078. $(this).parent().find('img').css('display', 'inline');
  1079. //$(this).parent().find('img').css('visibility','visible');
  1080. }
  1081. else
  1082. $(this).parent().find('img').css('display', 'none');
  1083. }
  1084. });
  1085. $('#repeat_month_custom_select_TODO').change(function(){
  1086. if($(this).val()=="custom")
  1087. {
  1088. $('#month_custom2_TODO').show();
  1089. $('#repeat_month_custom_select2_TODO').parent().hide();
  1090. }
  1091. else
  1092. {
  1093. $('#month_custom2_TODO').hide();
  1094. $('#repeat_month_custom_select2_TODO').parent().show();
  1095. }
  1096. checkTodoFormScrollBar();
  1097. });
  1098. $('#repeat_year_custom_select1_TODO').change(function(){
  1099. if($(this).val()=="custom")
  1100. {
  1101. $('#year_custom1_TODO').show();
  1102. $('#repeat_year_custom_select2_TODO').parent().hide();
  1103. }
  1104. else
  1105. {
  1106. $('#year_custom1_TODO').hide();
  1107. $('#repeat_year_custom_select2_TODO').parent().show();
  1108. }
  1109. checkTodoFormScrollBar();
  1110. });
  1111. $('#repeat_end_details_TODO').change(function(){
  1112. $('#repeat_end_date_TODO').parent().find('img').css('display', 'none');
  1113. if($('#repeat_end_details_TODO option:selected').attr('data-type')=="repeat_details_on_date")
  1114. {
  1115. $('#repeat_end_after_TODO').hide();
  1116. $('#repeat_end_date_TODO').show();
  1117. var today;
  1118. if($('#date_fromTODO').val()!='')
  1119. {
  1120. today=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_fromTODO').val());
  1121. if(today==null)
  1122. today=new Date();
  1123. }
  1124. else
  1125. today=new Date();
  1126. var date=new Date(today.getFullYear(), today.getMonth(), today.getDate()+2);
  1127. $('#repeat_end_date_TODO').val($.datepicker.formatDate(globalSettings.datepickerformat.value, date));
  1128. }
  1129. if($('#repeat_end_details_TODO option:selected').attr('data-type')=="repeat_details_after")
  1130. {
  1131. $('#repeat_end_after_TODO').show();
  1132. $('#repeat_end_after_TODO').val('2');
  1133. $('#repeat_end_date_TODO').hide();
  1134. }
  1135. if($('#repeat_end_details_TODO option:selected').attr('data-type')=="repeat_details_never")
  1136. {
  1137. $('#repeat_end_after_TODO').hide();
  1138. $('#repeat_end_date_TODO').hide();
  1139. }
  1140. checkTodoFormScrollBar();
  1141. });
  1142. $('#todo_details_template .customTable td').click(function(){
  1143. if($(this).hasClass('disabled'))
  1144. return true;
  1145. else if($(this).hasClass('selected'))
  1146. $(this).removeClass('selected');
  1147. else
  1148. $(this).addClass('selected');
  1149. });
  1150. $('#closeTODO').click(function()
  1151. {
  1152. $('#todoInEdit').val('false');
  1153. if($('#uidTODO').val()!='')
  1154. {
  1155. var uid=$('#uidTODO').val();
  1156. var calUID=uid.substring(0, uid.lastIndexOf('/')+1);
  1157. var color=$('#ResourceCalDAVTODOList').find("[data-id='"+calUID+"']").find('.resourceCalDAVColor').css('background-color');
  1158. $('.event_item[data-id="'+uid+'"]').children('.fc-event-handle').css({'background-color': rgbToRgba(color,0.9), 'border-color': color});
  1159. }
  1160. $('#TodoDisabler').fadeOut(globalEditorFadeAnimation, function(){
  1161. $('#timezonePickerTODO').prop('disabled', false);
  1162. });
  1163. if(typeof globalCalTodo!= 'undefined' && globalCalTodo!=null && globalVisibleCalDAVTODOCollections.indexOf(globalCalTodo.res_id)!=-1)
  1164. {
  1165. $('#todoList').fullCalendar('selectEvent');
  1166. }
  1167. else
  1168. $('#CATodo').attr('style','display:none');
  1169. });
  1170. $('#resetTODO').click(function(){
  1171. $('#todo_details_template').find('img[data-type=invalidSlider],img[data-type=invalidSmall]').css('display','none');
  1172. if($('#uidTODO').val()!='')
  1173. {
  1174. var uid=$('#uidTODO').val();
  1175. var calUID=uid.substring(0, uid.lastIndexOf('/')+1);
  1176. var color=$('#ResourceCalDAVTODOList').find("[data-id='"+calUID+"']").find('.resourceCalDAVColor').css('background-color');
  1177. $('.event_item[data-id="'+uid+'"]').children('.fc-event-handle').css({'background-color': rgbToRgba(color,0.9), 'border-color': color});
  1178. if($('#recurrenceIDTODO').val()!='')
  1179. showTodoForm(globalCalTodo, 'show','editOnly');
  1180. else
  1181. showTodoForm(globalCalTodo, 'show');
  1182. startEditModeTodo();
  1183. }
  1184. });
  1185. $('#todo_calendar').change(function(){
  1186. var color = '';
  1187. if($(this).val()=='choose')
  1188. color = 'rgb(240,240,240)';
  1189. else
  1190. color=$('#ResourceCalDAVTODOList').find("[data-id='"+$(this).val()+"']").find('.resourceCalDAVColor').css('background-color');
  1191. var uid='fooUID';
  1192. if($('#uidTODO').val()!='')
  1193. uid=$('#uidTODO').val();
  1194. $('#todoColor').css('background-color',color);
  1195. $('.event_item[data-id="'+uid+'"]').find('.fc-event-handle').css({'background-color': rgbToRgba(color,0.9), 'border-color': color});
  1196. });
  1197. $('#repeat_TODO').change(function(){
  1198. if($('#repeat_TODO option:selected').attr('data-type')=='repeat_no-repeat' || $('#repeat_TODO option:selected').attr('data-type')=="custom_repeat")
  1199. {
  1200. $('#repeat_details_TODO').hide();
  1201. $('#repeat_interval_TODO').hide();
  1202. $('#week_custom_TODO').hide();
  1203. $('#month_custom1_TODO').hide();
  1204. $('#month_custom2_TODO').hide();
  1205. $('#year_custom1_TODO').hide();
  1206. $('#year_custom2_TODO').hide();
  1207. $('#year_custom3_TODO').hide();
  1208. }
  1209. else
  1210. {
  1211. $('#repeat_details_TODO').show();
  1212. if($(this).val()!='BUSINESS' && $(this).val()!='TWO_WEEKLY' && $(this).val()!='WEEKEND')
  1213. {
  1214. $('#repeat_interval_TODO').show();
  1215. $("#repeat_interval_detail_TODO").val('1');
  1216. $('#repeat_interval_TODO').find('img').css('display','none');
  1217. }
  1218. else
  1219. $('#repeat_interval_TODO').hide();
  1220. if($(this).val()=='DAILY')
  1221. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatDays);
  1222. if($(this).val()=='WEEKLY')
  1223. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatWeeks);
  1224. if($(this).val()=='MONTHLY')
  1225. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatMonths);
  1226. if($(this).val()=='YEARLY')
  1227. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatYears);
  1228. if($(this).val()=='CUSTOM_WEEKLY')
  1229. {
  1230. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatWeeks);
  1231. $('#week_custom_TODO').show();
  1232. }
  1233. else
  1234. $('#week_custom_TODO').hide();
  1235. if($(this).val()=='CUSTOM_MONTHLY')
  1236. {
  1237. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatMonths);
  1238. $('#month_custom1_TODO').show();
  1239. if($('#repeat_month_custom_select_TODO').val() == "custom")
  1240. $('#repeat_month_custom_select_TODO').trigger('change');
  1241. }
  1242. else
  1243. {
  1244. $('#month_custom1_TODO').hide();
  1245. $('#month_custom2_TODO').hide();
  1246. }
  1247. if($(this).val()=='CUSTOM_YEARLY')
  1248. {
  1249. $('#repeat_interval_TODO [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatYears);
  1250. $('#year_custom2_TODO').show();
  1251. $('#year_custom3_TODO').show();
  1252. if($('#repeat_year_custom_select1_TODO').val() == "custom")
  1253. $('#repeat_year_custom_select1_TODO').trigger('change');
  1254. }
  1255. else
  1256. {
  1257. $('#year_custom1_TODO').hide();
  1258. $('#year_custom2_TODO').hide();
  1259. $('#year_custom3_TODO').hide();
  1260. }
  1261. var today;
  1262. if($('#date_fromTODO').val()!='')
  1263. {
  1264. today=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_fromTODO').val());
  1265. if(today==null)
  1266. today=new Date();
  1267. }
  1268. else
  1269. today=new Date();
  1270. var date=new Date(today.getFullYear(),today.getMonth(),today.getDate()+2);
  1271. $('#repeat_end_date_TODO').val($.datepicker.formatDate(globalSettings.datepickerformat.value, date));
  1272. }
  1273. checkTodoFormScrollBar();
  1274. });
  1275. $('#statusTODO').change(function(){
  1276. var status = $(this).val();
  1277. switch(status) {
  1278. case 'NEEDS-ACTION':
  1279. $('#percenteCompleteValue').val(0);
  1280. $('#percentageSlider').slider({value: 0});
  1281. $('#nameTODO').removeClass('title_cancelled');
  1282. break;
  1283. case 'IN-PROCESS':
  1284. var value = 50;
  1285. var id = $('.fc-event-selected').attr('data-repeat-hash');
  1286. if(typeof globalTodolistStatusArray[id]!='undefined' && typeof globalTodolistStatusArray[id].percent!='undefined')
  1287. value=globalTodolistStatusArray[id].percent;
  1288. $('#percenteCompleteValue').val(value);
  1289. $('#percentageSlider').slider({value: value});
  1290. $('#nameTODO').removeClass('title_cancelled');
  1291. break;
  1292. case 'CANCELLED':
  1293. $('#percenteCompleteValue').val(100);
  1294. $('#percentageSlider').slider({value: 100});
  1295. $('#nameTODO').addClass('title_cancelled');
  1296. break;
  1297. case 'COMPLETED':
  1298. $('#percenteCompleteValue').val(100);
  1299. $('#percentageSlider').slider({value: 100});
  1300. $('#nameTODO').removeClass('title_cancelled');
  1301. break;
  1302. default:
  1303. break;
  1304. }
  1305. todoStatusChanged(status);
  1306. });
  1307. $('#todo_type').change(function(){
  1308. if($(this).val()=='none')
  1309. {
  1310. $('#timezoneTODO').val('local');
  1311. $('#repeat_row_TODO').hide();
  1312. $('#date_fromTODO, #time_fromTODO, #date_toTODO, #time_toTODO').parent().find('img').css('display','none');
  1313. $('.dateTrFromTODO, .dateTrToTODO, .timezone_rowTODO').hide();
  1314. stripTodoAlerts();
  1315. }
  1316. else if($(this).val()=='start')
  1317. {
  1318. var myDate=new Date();
  1319. $('#date_fromTODO').val($.datepicker.formatDate(globalSettings.datepickerformat.value, myDate));
  1320. $('#time_fromTODO').val($.fullCalendar.formatDate(myDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  1321. $('#repeat_row_TODO').show();
  1322. $('#date_toTODO, #time_toTODO').parent().find('img').css('display','none');
  1323. $('.dateTrToTODO').hide();
  1324. $('.dateTrFromTODO').show();
  1325. if(globalSettings.timezonesupport.value)
  1326. {
  1327. $('.timezone_rowTODO').show();
  1328. $('#timezoneTODO').val(globalSessionTimeZone);
  1329. }
  1330. $('#date_fromTODO, #time_fromTODO').trigger('change');
  1331. }
  1332. else if($(this).val()=='due')
  1333. {
  1334. var myDate=new Date($('#todoList').fullCalendar('getView').start.getTime());
  1335. myDate.setHours(globalSettings.calendarendofbusiness.value);
  1336. myDate.setMinutes((globalSettings.calendarendofbusiness.value%1)*60);
  1337. $('#date_toTODO').val($.datepicker.formatDate(globalSettings.datepickerformat.value, myDate));
  1338. $('#time_toTODO').val($.fullCalendar.formatDate(myDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  1339. $('#repeat_row_TODO').show();
  1340. $('#date_fromTODO, #time_fromTODO').parent().find('img').css('display','none');
  1341. $('.dateTrFromTODO').hide();
  1342. $('.dateTrToTODO').show();
  1343. if(globalSettings.timezonesupport.value)
  1344. {
  1345. $('.timezone_rowTODO').show();
  1346. $('#timezoneTODO').val(globalSessionTimeZone);
  1347. }
  1348. $('#date_toTODO, #time_toTODO').trigger('change');
  1349. }
  1350. else if($(this).val()=='both')
  1351. {
  1352. var myDate='';
  1353. var myDateStart= new Date();
  1354. if($('#date_toTODO').val()!='')
  1355. {
  1356. var dateFrom=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_toTODO').val());
  1357. var datetime_to=$.fullCalendar.formatDate(dateFrom, 'yyyy-MM-dd');
  1358. var aDate=new Date(Date.parse("01/02/1990, "+$('#time_toTODO').val()));
  1359. var time_from=$.fullCalendar.formatDate(aDate, 'HH:mm:ss');
  1360. var myDate=$.fullCalendar.parseDate(datetime_to+'T'+time_from);
  1361. }
  1362. else
  1363. {
  1364. myDate=new Date($('#todoList').fullCalendar('getView').start.getTime());
  1365. $('#repeat_row_TODO').show();
  1366. myDate.setHours(globalSettings.calendarendofbusiness.value);
  1367. myDate.setMinutes((globalSettings.calendarendofbusiness.value%1)*60);
  1368. if($('#date_toTODO').val()=='')
  1369. $('#date_toTODO').val($.datepicker.formatDate(globalSettings.datepickerformat.value, myDate));
  1370. if($('#time_toTODO').val()=='')
  1371. $('#time_toTODO').val($.fullCalendar.formatDate(myDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  1372. }
  1373. if(myDateStart>myDate)
  1374. myDateStart= new Date(myDate.getTime());
  1375. globalPrevDate = new Date(myDateStart.getTime());
  1376. if($('#date_fromTODO').val()=='')
  1377. $('#date_fromTODO').val($.datepicker.formatDate(globalSettings.datepickerformat.value, myDateStart));
  1378. if($('#time_fromTODO').val()=='')
  1379. $('#time_fromTODO').val($.fullCalendar.formatDate(myDateStart, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  1380. $('.dateTrFromTODO, .dateTrToTODO').show();
  1381. if(globalSettings.timezonesupport.value)
  1382. {
  1383. $('.timezone_rowTODO').show();
  1384. $('#timezoneTODO').val(globalSessionTimeZone);
  1385. }
  1386. $('#date_fromTODO, #time_fromTODO, #date_toTODO, #time_toTODO').trigger('change');
  1387. }
  1388. if($('#todo_type').val()!='none')
  1389. expandTodoAlerts();
  1390. checkTodoFormScrollBar();
  1391. });
  1392. $('#percenteCompleteValue').bind('keyup change',function(){
  1393. if($(this).val()=='')
  1394. {
  1395. $(this).parent().find('img').css('display', 'inline');
  1396. }
  1397. else
  1398. {
  1399. if($(this).val().match('^(([0-9])|([1-9][0-9])|(100))$')==null)
  1400. $(this).parent().find('img').css('display', 'inline');
  1401. else
  1402. {
  1403. $(this).parent().find('img').css('display', 'none');
  1404. $( "#percentageSlider" ).slider({value: $(this).val()});
  1405. }
  1406. }
  1407. });
  1408. }
  1409. function showEventForm(date, allDay, calEvent, jsEvent, mod, repeatOne, confirmRepeat)
  1410. {
  1411. $('#event_details_template').remove();
  1412. $('#CAEvent').html(cleanVcalendarTemplate);
  1413. setFirstDayEvent();
  1414. bindEventForm();
  1415. $('#note').autosize({defaultStyles: {height: '64', overflow: '', 'overflow-y': '', 'word-wrap': '', resize: 'none'}, callback: function(){checkEventFormScrollBar();}});
  1416. $("#show").val('');
  1417. $("#uid").val('');
  1418. $("#etag").val('');
  1419. $("#repeatCount").val('');
  1420. $("#repeatEvent").val('');
  1421. $("#recurrenceID").val('');
  1422. $("#futureStart").val('');
  1423. $("#vcalendarHash").val('');
  1424. $("#vcalendarUID").val('');
  1425. globalPrevDate='';
  1426. var color='';
  1427. if(mod=='new')
  1428. {
  1429. var activeCollection = $('#ResourceCalDAVList').find('.resourceCalDAV_item.resourceCalDAV_item_selected');
  1430. if(activeCollection.length>0 && !globalResourceCalDAVList.getEventCollectionByUID(activeCollection.attr('data-id')).permissions.read_only)
  1431. color=rgbToHex(activeCollection.children('.resourceCalDAVColor').css('background-color'));
  1432. }
  1433. else
  1434. color=globalResourceCalDAVList.getEventCollectionByUID(calEvent.res_id).ecolor;
  1435. if(confirmRepeat)
  1436. {
  1437. $('#show').val(calEvent.id);
  1438. $('#repeatEvent').val(true);
  1439. $('#CAEvent').show();
  1440. $('#repeatConfirmBox').css('visibility', 'visible');
  1441. if(calEvent.repeatCount!='' && calEvent.repeatCount == 1)
  1442. {
  1443. $('#editFuture').css('display','none');
  1444. if($('#editFuture').next('br').length>0)
  1445. $('#editFuture').next().remove();
  1446. }
  1447. else if($('#editFuture').css('display')=='none')
  1448. {
  1449. $('#editFuture').css('display','block');
  1450. if($('#editFuture').next('br').length==0)
  1451. $('#editFuture').after('<br/>')
  1452. }
  1453. $('#repeatConfirmBoxContent').html('<b>'+calEvent.title+"</b> "+localization[globalInterfaceLanguage].repeatBoxContent);
  1454. $('#repeatConfirmBoxQuestion').html(localization[globalInterfaceLanguage].repeatBoxQuestion);
  1455. $('#editAll, #editOnlyOne, #editFuture').click(function(){
  1456. if(globalCalEvent)
  1457. {
  1458. if($(this).attr('id')=='editOnlyOne')
  1459. showEventForm(null, globalCalEvent.allDay, globalCalEvent, globalJsEvent, 'show', 'editOnly');
  1460. else if($(this).attr('id')=='editAll')
  1461. showEventForm(null, globalCalEvent.allDay, globalCalEvent, globalJsEvent, 'show', '');
  1462. else if($(this).attr('id')=='editFuture')
  1463. showEventForm(null, globalCalEvent.allDay, globalCalEvent, globalJsEvent, 'show', 'futureOnly');
  1464. $('#repeatConfirmBoxContent').html('');
  1465. $('#repeatConfirmBox').css('visibility', 'hidden');
  1466. $('#AlertDisabler').fadeOut(globalEditorFadeAnimation);
  1467. }
  1468. });
  1469. $('#CAEvent').height($('#repeatConfirmBox').height());
  1470. $('#eventColor').css('background-color',color);
  1471. updateEventFormDimensions();
  1472. setFormPosition(jsEvent, true);
  1473. $('#event_details_template').scrollTop(0);
  1474. return true;
  1475. }
  1476. if(mod=='show' && repeatOne=='futureOnly')
  1477. {
  1478. $('#futureStart').val(calEvent.realRepeatCount+';'+calEvent.start);
  1479. }
  1480. if(mod!='new')
  1481. fullVcalendarToData(calEvent);
  1482. else
  1483. CalDAVeditor_cleanup();
  1484. if(calEvent!=null && ((repeatOne=='editOnly'&&calEvent.type) || calEvent.rec_id))
  1485. {
  1486. var eventsSorted=jQuery.grep(globalEventList.displayEventsArray[calEvent.res_id],function(e){if(e.id==calEvent.id)return true}).sort(repeatStartCompare);
  1487. if(eventsSorted.indexOf(calEvent)!=-1)
  1488. {
  1489. if(eventsSorted.indexOf(calEvent)<(eventsSorted.length-1))
  1490. showEventNextNav();
  1491. if(eventsSorted.indexOf(calEvent)!=0)
  1492. showEventPrevNav();
  1493. }
  1494. }
  1495. var cals=globalResourceCalDAVList.sortedCollections;
  1496. var calendarObj = $('#event_calendar');
  1497. var calSelected = $('.resourceCalDAV_item.resourceCalDAV_item_selected').attr('data-id');
  1498. // begin custom code
  1499. $.ajax({
  1500. url: '/api/calendars/',
  1501. method: 'GET',
  1502. contentType: 'application/json'
  1503. }).done(function (data) {
  1504. var regExpUser = new RegExp('\/user\/')
  1505. var regExpWorkspace = new RegExp('\/workspace\/')
  1506. var user_or_workspace
  1507. for(var i=0;i<cals.length;i++)
  1508. {
  1509. if(cals[i].uid!=undefined && ((calEvent!=null && calEvent.res_id==cals[i].uid) || (cals[i].makeLoaded && !cals[i].permissions_read_only )))
  1510. {
  1511. var currentICS = parseInt(cals[i].displayValue.replace('.ics', ''))
  1512. if (regExpUser.test(cals[i].uid))
  1513. user_or_workspace = 'user'
  1514. else if (regExpWorkspace.test(cals[i].uid))
  1515. user_or_workspace = 'workspace'
  1516. else
  1517. user_or_workspace = 'fail'
  1518. var calName = ''
  1519. var calList_length = data.value_list.length
  1520. for (var j = 0; j < calList_length; j++) {
  1521. if (data.value_list[j].id === currentICS && data.value_list[j].type === user_or_workspace) {
  1522. calName = data.value_list[j].label
  1523. }
  1524. }
  1525. calendarObj.append(new Option(calName, cals[i].uid));
  1526. }
  1527. }
  1528. })
  1529. if(mod=='new')
  1530. {
  1531. $('#show').val('');
  1532. $('#editButton').hide();
  1533. $('#duplicateButton').hide();
  1534. $('#editOptionsButton').hide();
  1535. $('#resetButton').hide();
  1536. $('#deleteButton').hide();
  1537. if($('#ResourceCalDAVList').find('.resourceCalDAV_item.resourceCalDAV_item_selected').length>0 && $('#event_calendar').find('option[value="'+$('#ResourceCalDAVList').find('.resourceCalDAV_item.resourceCalDAV_item_selected').attr("data-id")+'"]').length>0)
  1538. $('.R_calendar').val($('#ResourceCalDAVList').find('.resourceCalDAV_item.resourceCalDAV_item_selected').attr("data-id"));
  1539. else
  1540. $('#event_calendar').val('choose');
  1541. }
  1542. if(mod=='drop')
  1543. {
  1544. if(calEvent.etag!='')
  1545. $('#event_calendar').val(calEvent.res_id);
  1546. }
  1547. if(mod=='new')
  1548. {
  1549. //$('[data-type="name"]').attr('placeholder', localization[globalInterfaceLanguage].pholderNewEvent);
  1550. var date_to = null;
  1551. if(calEvent!==null)
  1552. {
  1553. if(calEvent.realStart)
  1554. date=calEvent.realStart;
  1555. else
  1556. date=calEvent.start;
  1557. if(calEvent.realEnd)
  1558. date_to=new Date(calEvent.realEnd.getTime());
  1559. else
  1560. date_to=new Date(calEvent.end.getTime());
  1561. }
  1562. if(!allDay && ((date_to==null) || ((date_to-date)==0))) {
  1563. date_to = new Date(date.getTime());
  1564. if(globalSettings.defaulteventduration.value!==null)
  1565. date_to.setMinutes(date_to.getMinutes()+globalSettings.defaulteventduration.value);
  1566. else {
  1567. date_to.setHours(globalSettings.calendarendofbusiness.value);
  1568. date_to.setMinutes((globalSettings.calendarendofbusiness.value%1)*60);
  1569. }
  1570. if(date_to.getTime()<date.getTime())
  1571. date_to.setDate(date_to.getDate()+1);
  1572. }
  1573. var beforeScroll = $('#main').width()-$('#calendar').width();
  1574. $('#calendar').fullCalendar('renderEvent', $.extend(new items('',date,date_to,localization[globalInterfaceLanguage].pholderNewEvent, allDay, 'fooUID', '', '', '', '', '', '', '', '', '', '', '', '', '','', '', '', '', '', '', '', '', '','', '', '', '', '', '', '', ''),{backgroundColor:hexToRgba(color,0.9),borderColor:color,textColor:checkFontColor(color)}));
  1575. var afterScroll = $('#main').width()-$('#calendar').width();
  1576. rerenderCalendar(beforeScroll!=afterScroll);
  1577. if(allDay)
  1578. {
  1579. $('#allday').prop('checked', true);
  1580. $('#time_from_cell').css('visibility', 'hidden');
  1581. $('#time_to_cell').css('visibility', 'hidden');
  1582. $('.timezone_row').css('display', 'none');
  1583. }
  1584. showTimezones('', '');
  1585. }
  1586. if(mod=='show' || mod=='drop')
  1587. {
  1588. if(calEvent.status=='CANCELLED')
  1589. $('#name').addClass('title_cancelled');
  1590. $('#name').val(calEvent.title);
  1591. $('#location').val(calEvent.location);
  1592. if(calEvent.allDay==true)
  1593. {
  1594. $('#allday').prop('checked', true);
  1595. $('#time_from_cell').css('visibility', 'hidden');
  1596. $('#time_to_cell').css('visibility', 'hidden');
  1597. $('.timezone_row').css('display', 'none');
  1598. }
  1599. if(calEvent.end)
  1600. if(calEvent.realEnd && (mod!='drop' || repeatOne!='editOnly'))
  1601. date_to=new Date(calEvent.realEnd.getTime());
  1602. else
  1603. date_to=new Date(calEvent.end.getTime());
  1604. $('#note').val(calEvent.note).trigger('autosize.resize');
  1605. if(typeof calEvent.classType!='undefined' && calEvent.classType!=null && calEvent.classType!='')
  1606. $('#type').val(calEvent.classType.toLowerCase());
  1607. else
  1608. $('#type').val('public');
  1609. if(calEvent.status!='')
  1610. $('#status').val(calEvent.status);
  1611. else
  1612. $('#status').val('NONE');
  1613. if(calEvent!=null && mod!='new')
  1614. {
  1615. var uidArray = calEvent.id.match(vCalendar.pre['uidParts']);
  1616. if(decodeURIComponent(uidArray[4]).indexOf(uidArray[2])==-1)
  1617. $('.row_type').css('display','none');
  1618. }
  1619. if(calEvent.avail == 'OPAQUE')
  1620. $('#avail').val('busy');
  1621. else
  1622. $('#avail').val('free');
  1623. if(calEvent!=null)
  1624. {
  1625. var prior=parseInt(calEvent.priority,10);
  1626. if(prior==5)
  1627. $('#priority').val(5);
  1628. else if(prior>5 && prior<10)
  1629. {
  1630. $('#priority [data-type="priority_low"]').attr('value',prior)
  1631. $('#priority').val(prior);
  1632. }
  1633. else if(prior<5 && prior>0)
  1634. {
  1635. $('#priority [data-type="priority_high"]').attr('value',prior)
  1636. $('#priority').val(prior);
  1637. }
  1638. else
  1639. $('#priority').val(0);
  1640. }
  1641. $('#uid').val(calEvent.id);
  1642. $('#url_EVENT').val(calEvent.hrefUrl+'');
  1643. $('#vcalendarHash').val(hex_sha256(calEvent.vcalendar));
  1644. $('#etag').val(calEvent.etag);
  1645. var stringUIDcurrent=calEvent.vcalendar.match(vCalendar.pre['contentline_UID']);
  1646. if(stringUIDcurrent!=null)
  1647. stringUIDcurrent=stringUIDcurrent[0].match(vCalendar.pre['contentline_parse'])[4];
  1648. if(stringUIDcurrent)
  1649. $('#vcalendarUID').val(stringUIDcurrent);
  1650. var alarmDate='';
  1651. for(var alarmIterator=0;alarmIterator<calEvent.alertTime.length;alarmIterator++)
  1652. {
  1653. if(alarmIterator>0)
  1654. event_alert_add(alarmIterator);
  1655. $(".alert[data-id="+(alarmIterator+1)+"]").val("message");
  1656. if(calEvent.alertTime[alarmIterator].charAt(0)=='-' || calEvent.alertTime[alarmIterator].charAt(0)=='+')
  1657. {
  1658. var alVal=parseInt(calEvent.alertTime[alarmIterator].substring(1, calEvent.alertTime[alarmIterator].length-1));
  1659. var alString='';
  1660. if(calEvent.alertTime[alarmIterator].charAt(calEvent.alertTime[alarmIterator].length-1)=="W")
  1661. {
  1662. alVal=alVal/1000/60/60/24/7;
  1663. alString='weeks';
  1664. }
  1665. else if(calEvent.alertTime[alarmIterator].charAt(calEvent.alertTime[alarmIterator].length-1)=="D")
  1666. {
  1667. alVal=alVal/1000/60/60/24;
  1668. alString='days';
  1669. }
  1670. else if(calEvent.alertTime[alarmIterator].charAt(calEvent.alertTime[alarmIterator].length-1)=="H")
  1671. {
  1672. alVal=alVal/1000/60/60;
  1673. alString='hours';
  1674. }
  1675. else if(calEvent.alertTime[alarmIterator].charAt(calEvent.alertTime[alarmIterator].length-1)=="M")
  1676. {
  1677. alVal=alVal/1000/60;
  1678. alString='minutes';
  1679. }
  1680. else if(calEvent.alertTime[alarmIterator].charAt(calEvent.alertTime[alarmIterator].length-1)=="S")
  1681. {
  1682. alVal=alVal/1000;
  1683. alString='seconds';
  1684. }
  1685. if(calEvent.alertTime[alarmIterator].charAt(0)=='-')
  1686. alString+="_before";
  1687. else
  1688. alString+="_after"
  1689. $(".alert_message_details[data-id="+(alarmIterator+1)+"]").val(alString);
  1690. $(".before_after_input[data-id="+(alarmIterator+1)+"]").val(alVal);
  1691. $('.alert_details[data-id="'+(alarmIterator+1)+'"]').show();
  1692. $('.alert_message_date[data-id="'+(alarmIterator+1)+'"]').show();
  1693. $('.before_after_input[data-id="'+(alarmIterator+1)+'"]').show();
  1694. $(".message_date_input[data-id="+(alarmIterator+1)+"]").hide();
  1695. $(".message_time_input[data-id="+(alarmIterator+1)+"]").hide();
  1696. }
  1697. else
  1698. {
  1699. alarmDate=$.fullCalendar.parseDate(calEvent.alertTime[alarmIterator]);
  1700. (alarmDate.getHours())<10 ? (hour='0'+(alarmDate.getHours())) : (hour=alarmDate.getHours());
  1701. (alarmDate.getMinutes())<10 ? (minute='0'+(alarmDate.getMinutes())) : (minute=alarmDate.getMinutes());
  1702. $(".alert_message_details[data-id="+(alarmIterator+1)+"]").val('on_date');
  1703. var formattedAlarmDate=$.datepicker.formatDate(globalSettings.datepickerformat.value, alarmDate);
  1704. $(".message_date_input[data-id="+(alarmIterator+1)+"]").val(formattedAlarmDate);
  1705. $(".message_time_input[data-id="+(alarmIterator+1)+"]").val($.fullCalendar.formatDate(alarmDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  1706. $('.alert_details[data-id="'+(alarmIterator+1)+'"]').show();
  1707. $('.alert_message_date[data-id="'+(alarmIterator+1)+'"]').show();
  1708. }
  1709. }
  1710. if(alarmIterator>0)
  1711. event_alert_add(alarmIterator+2);
  1712. if(calEvent.type!='' && repeatOne!='editOnly' && calEvent.ruleString.match(vCalendar.re['recurCaldav'])!=null)
  1713. {
  1714. var ruleString=calEvent.vcalendar.match(vCalendar.pre['contentline_RRULE2'])[0].match(vCalendar.pre['contentline_parse'])[4];
  1715. if(ruleString.indexOf('BYMONTH=')!=-1 || ruleString.indexOf('BYMONTHDAY=')!=-1 || ruleString.indexOf('BYDAY=')!=-1)
  1716. {
  1717. var pars=ruleString.split(';');
  1718. if(pars.indexElementOf('BYMONTH=')!=-1 && pars.indexElementOf('BYMONTHDAY=')==-1 && pars.indexElementOf('BYDAY=')==-1)
  1719. pars[pars.length] = "BYMONTHDAY="+calEvent.start.getDate();
  1720. if(calEvent.type=="DAILY")
  1721. {
  1722. $("#repeat option[value='DAILY']").prop('selected', true);
  1723. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatDays);
  1724. }
  1725. else if(calEvent.type=="WEEKLY")
  1726. {
  1727. $("#repeat option[value='CUSTOM_WEEKLY']").prop('selected', true);
  1728. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatWeeks);
  1729. for(var ri=0;ri<pars.length;ri++)
  1730. {
  1731. if(pars[ri].indexOf("BYDAY=")!=-1)
  1732. {
  1733. var byDay=pars[ri].split('=')[1];
  1734. 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(',');
  1735. for(var rj=0;rj<byDay.length;rj++)
  1736. {
  1737. if(!isNaN(parseInt(byDay[rj],10)))
  1738. $('#week_custom .customTable td[data-type="'+byDay[rj]+'"]').addClass('selected');
  1739. }
  1740. }
  1741. }
  1742. $('#week_custom').show();
  1743. }
  1744. else if(calEvent.type=="MONTHLY")
  1745. {
  1746. $("#repeat option[value='CUSTOM_MONTHLY']").prop('selected', true).change();
  1747. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatMonths);
  1748. for(var ri=0;ri<pars.length;ri++)
  1749. {
  1750. if(pars[ri].indexOf("BYDAY=")!=-1)
  1751. {
  1752. var byDay=pars[ri].split('=')[1];
  1753. byDay=byDay.split(',');
  1754. for(var rj=0;rj<byDay.length;rj++)
  1755. {
  1756. var checkString = byDay[rj].match(vCalendar.pre['+/-number']);
  1757. byDay[rj] = byDay[rj].replace(checkString[0],'');
  1758. if(!isNaN(parseInt(checkString[0],10)))
  1759. {
  1760. switch(parseInt(checkString[0],10))
  1761. {
  1762. case 1:
  1763. $('#repeat_month_custom_select').val('first');
  1764. break;
  1765. case 2:
  1766. $('#repeat_month_custom_select').val('second');
  1767. break;
  1768. case 3:
  1769. $('#repeat_month_custom_select').val('third');
  1770. break;
  1771. case 4:
  1772. $('#repeat_month_custom_select').val('fourth');
  1773. break;
  1774. case 5:
  1775. $('#repeat_month_custom_select').val('fifth');
  1776. break;
  1777. case -1:
  1778. $('#repeat_month_custom_select').val('last');
  1779. break;
  1780. default:
  1781. $('#repeat_month_custom_select').val('every');
  1782. break;
  1783. }
  1784. $('#repeat_month_custom_select2').val(byDay[rj]);
  1785. }
  1786. }
  1787. }
  1788. else if(pars[ri].indexOf("BYMONTHDAY=")!=-1)
  1789. {
  1790. $('#repeat_month_custom_select').val('custom').change();
  1791. var byMonthDay=pars[ri].split('=')[1];
  1792. byMonthDay=byMonthDay.split(',');
  1793. for(var rj=0; rj<byMonthDay.length;rj++)
  1794. {
  1795. if(parseInt(byMonthDay[rj],10)==-1)
  1796. {
  1797. $('#repeat_month_custom_select').val('last').change();
  1798. $('#repeat_month_custom_select2').val("DAY");
  1799. }
  1800. else
  1801. $('#month_custom2 .customTable td[data-type="'+(parseInt(byMonthDay[rj],10))+'"]').addClass('selected');
  1802. }
  1803. }
  1804. }
  1805. }
  1806. else if(calEvent.type=="YEARLY")
  1807. {
  1808. $("#repeat option[value='CUSTOM_YEARLY']").prop('selected', true).change();
  1809. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatYears);
  1810. var isMonthDay=false;
  1811. for(var ri=0;ri<pars.length;ri++)
  1812. {
  1813. if(pars[ri].indexOf("BYDAY=")!=-1)
  1814. {
  1815. var byDay=pars[ri].split('=')[1];
  1816. byDay=byDay.split(',');
  1817. for(var rj=0;rj<byDay.length;rj++)
  1818. {
  1819. var checkString = byDay[rj].match(vCalendar.pre['+/-number']);
  1820. byDay[rj] = byDay[rj].replace(checkString[0],'');
  1821. if(!isNaN(parseInt(checkString[0],10)))
  1822. {
  1823. switch(parseInt(checkString[0],10))
  1824. {
  1825. case 1:
  1826. $('#repeat_year_custom_select1').val('first');
  1827. break;
  1828. case 2:
  1829. $('#repeat_year_custom_select1').val('second');
  1830. break;
  1831. case 3:
  1832. $('#repeat_year_custom_select1').val('third');
  1833. break;
  1834. case 4:
  1835. $('#repeat_year_custom_select1').val('fourth');
  1836. break;
  1837. case 5:
  1838. $('#repeat_year_custom_select1').val('fifth');
  1839. break;
  1840. case -1:
  1841. $('#repeat_year_custom_select1').val('last');
  1842. break;
  1843. default:
  1844. $('#repeat_year_custom_select1').val('every');
  1845. break;
  1846. }
  1847. $('#repeat_year_custom_select2').val(byDay[rj]);
  1848. }
  1849. }
  1850. }
  1851. else if(pars[ri].indexOf("BYMONTHDAY=")!=-1)
  1852. {
  1853. $('#repeat_year_custom_select1').val('custom').change()
  1854. var byMonthDay=pars[ri].split('=')[1];
  1855. byMonthDay=byMonthDay.split(',');
  1856. for(var rj=0; rj<byMonthDay.length;rj++)
  1857. {
  1858. if(parseInt(byMonthDay[rj],10)==-1)
  1859. {
  1860. $('#repeat_year_custom_select1').val('last').change();
  1861. $('#repeat_year_custom_select2').val("DAY");
  1862. }
  1863. else
  1864. $('#year_custom1 .customTable td[data-type="'+(parseInt(byMonthDay[rj],10))+'"]').addClass('selected');
  1865. }
  1866. isMonthDay=true;
  1867. }
  1868. else if(pars[ri].indexOf("BYMONTH=")!=-1)
  1869. {
  1870. var byMonth=pars[ri].split('=')[1];
  1871. byMonth=byMonth.split(',');
  1872. for(var rj=0; rj<byMonth.length;rj++)
  1873. $('#year_custom3 .customTable td[data-type="'+(parseInt(byMonth[rj],10)-1)+'"]').addClass('selected');
  1874. }
  1875. }
  1876. }
  1877. if(calEvent.after=='' && calEvent.untilDate=='')
  1878. $("#repeat_end_details option[value='never']").prop('selected', true);
  1879. else if(calEvent.after!='')
  1880. {
  1881. $("#repeat_end_details option[value='after']").prop('selected', true);
  1882. $('#repeat_end_after').val(calEvent.after);
  1883. }
  1884. else if(calEvent.untilDate!='')
  1885. {
  1886. date=$.fullCalendar.parseDate(calEvent.untilDate);
  1887. $("#repeat_end_details option[value='on_date']").prop('selected', true);
  1888. var formattedRepeatDate=$.datepicker.formatDate(globalSettings.datepickerformat.value, date);
  1889. $('#repeat_end_date').val(formattedRepeatDate);
  1890. }
  1891. $('#repeat_interval_detail').val(calEvent.interval);
  1892. $('#repeat_interval').show();
  1893. if(calEvent.byDay.length>0)
  1894. {
  1895. var businessArray=new Array();
  1896. if(globalSettings.weekenddays.value.length>0)
  1897. for(var i=0;i<7;i++)
  1898. if(globalSettings.weekenddays.value.indexOf(i)==-1)
  1899. businessArray[businessArray.length]=i+'';
  1900. var businessCount=0;
  1901. var weekendCount=0;
  1902. for(var i=0;i<byDay.length;i++)
  1903. {
  1904. if(businessArray.indexOf(byDay[i])!=-1)
  1905. businessCount++;
  1906. if(globalSettings.weekenddays.value.indexOf(parseInt(byDay[i],10))!=-1)
  1907. weekendCount++;
  1908. }
  1909. if(businessArray.length>0 && businessArray.length==businessCount)
  1910. {
  1911. $("#repeat option[value='BUSINESS']").prop('selected', true);
  1912. $('#repeat_interval').hide();
  1913. $('#week_custom').hide();
  1914. }
  1915. else if(globalSettings.weekenddays.value.length>0 && globalSettings.weekenddays.value.length==weekendCount)
  1916. {
  1917. $("#repeat option[value='WEEKEND']").prop('selected', true);
  1918. $('#repeat_interval').hide();
  1919. $('#week_custom').hide();
  1920. }
  1921. }
  1922. }
  1923. else
  1924. {
  1925. if(calEvent.type=="DAILY")
  1926. {
  1927. $("#repeat option[value='DAILY']").prop('selected', true);
  1928. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatDays);
  1929. }
  1930. else if(calEvent.type=="WEEKLY")
  1931. {
  1932. $("#repeat option[value='WEEKLY']").prop('selected', true);
  1933. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatWeeks);
  1934. }
  1935. else if(calEvent.type=="MONTHLY")
  1936. {
  1937. $("#repeat option[value='MONTHLY']").prop('selected', true);
  1938. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatMonths);
  1939. }
  1940. else if(calEvent.type=="YEARLY")
  1941. {
  1942. $("#repeat option[value='YEARLY']").prop('selected', true);
  1943. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatYears);
  1944. }
  1945. if(calEvent.after=='' && calEvent.untilDate=='')
  1946. $("#repeat_end_details option[value='never']").prop('selected', true);
  1947. else if(calEvent.after!='')
  1948. {
  1949. $("#repeat_end_details option[value='after']").prop('selected', true);
  1950. $('#repeat_end_after').val(calEvent.after);
  1951. }
  1952. else if(calEvent.untilDate!='')
  1953. {
  1954. date=$.fullCalendar.parseDate(calEvent.untilDate);
  1955. $("#repeat_end_details option[value='on_date']").prop('selected', true);
  1956. var formattedRepeatDate=$.datepicker.formatDate(globalSettings.datepickerformat.value, date);
  1957. $('#repeat_end_date').val(formattedRepeatDate);
  1958. }
  1959. $('#repeat_interval_detail').val(calEvent.interval);
  1960. $('#repeat_interval').show();
  1961. if(calEvent.byDay.length>0)
  1962. {
  1963. if(calEvent.byDay.indexOf('1')!=-1 && calEvent.byDay.indexOf('2')!=-1 && calEvent.byDay.indexOf('3')!=-1 && calEvent.byDay.indexOf('4')!=-1 && calEvent.byDay.indexOf('5')!=-1 && calEvent.byDay.indexOf('6')==-1 && calEvent.byDay.indexOf('0')==-1)
  1964. {
  1965. $("#repeat option[value='BUSINESS']").prop('selected', true);
  1966. $('#repeat_interval').hide();
  1967. }
  1968. else if(calEvent.byDay.indexOf('1')==-1 && calEvent.byDay.indexOf('2')==-1 && calEvent.byDay.indexOf('3')==-1 && calEvent.byDay.indexOf('4')==-1 && calEvent.byDay.indexOf('5')==-1 && calEvent.byDay.indexOf('6')!=-1 && calEvent.byDay.indexOf('0')!=-1)
  1969. {
  1970. $("#repeat option[value='WEEKEND']").prop('selected', true);
  1971. $('#repeat_interval').hide();
  1972. }
  1973. }
  1974. $('#repeatEvent').val(true);
  1975. }
  1976. }
  1977. else if(calEvent.type!='' && repeatOne!='editOnly')
  1978. {
  1979. var cu_opt = new Option(localization[globalInterfaceLanguage].customRepeat, calEvent.ruleString, false, true);
  1980. $(cu_opt).attr('data-type','custom_repeat');
  1981. $('#repeat').append(cu_opt);
  1982. }
  1983. else
  1984. $('#repeatEvent').val(false);
  1985. if(calEvent.timeZone)
  1986. showTimezones(calEvent.timeZone,'');
  1987. else
  1988. showTimezones('local','');
  1989. }
  1990. var year,
  1991. month,
  1992. day,
  1993. hour,
  1994. minute;
  1995. if(mod=='show')
  1996. $('#show').val(calEvent.id);
  1997. if(mod=='show' || mod=='drop')
  1998. {
  1999. $('#repeatCount').val(calEvent.repeatCount);
  2000. if(calEvent.realStart && (mod!='drop' || repeatOne!='editOnly'))
  2001. date=calEvent.realStart;
  2002. else
  2003. date=calEvent.start;
  2004. if($('#show').val())
  2005. {
  2006. if(calEvent.repeatStart && repeatOne=='')
  2007. date=new Date(calEvent.repeatStart.getTime());
  2008. if(calEvent.repeatEnd && repeatOne=='')
  2009. date_to=new Date(calEvent.repeatEnd.getTime());
  2010. }
  2011. if(repeatOne=='editOnly')
  2012. {
  2013. if((mod=='drop' && globalPrevDragEventAllDay) || (mod!='drop' && calEvent.allDay))
  2014. {
  2015. if(calEvent.realStart)
  2016. $('#recurrenceID').val($.fullCalendar.formatDate($.fullCalendar.parseDate(calEvent.realStart), "yyyyMMdd"));
  2017. else
  2018. $('#recurrenceID').val($.fullCalendar.formatDate(date, "yyyyMMdd"));
  2019. }
  2020. else
  2021. {
  2022. if(calEvent.realStart)
  2023. $('#recurrenceID').val($.fullCalendar.formatDate(calEvent.realStart, "yyyyMMdd'T'HHmmss"));
  2024. else
  2025. $('#recurrenceID').val($.fullCalendar.formatDate(date, "yyyyMMdd'T'HHmmss"));
  2026. }
  2027. }
  2028. else
  2029. $('#recurrenceID').val(calEvent.rec_id);
  2030. if(calEvent.rec_id || repeatOne=='editOnly' || repeatOne=='futureOnly')
  2031. {
  2032. var savedEvs=jQuery.grep(globalEventList.displayEventsArray[calEvent.res_id],function(e){if(e.id==calEvent.id && (e.repeatCount<2 || !e.repeatCount))return true});
  2033. if(savedEvs.length>1 || (repeatOne=='futureOnly' && calEvent.repeatCount>1) || (repeatOne=='editOnly' && calEvent.type!=''))
  2034. $('#deleteButton').attr('onclick',"updateEventFormDimensions(true);$('#CAEvent .saveLoader').show();save(false, true);");
  2035. }
  2036. }
  2037. var today = new Date();
  2038. var todayClear = new Date(today.getTime());
  2039. todayClear.setHours(0);
  2040. todayClear.setMinutes(0);
  2041. todayClear.setSeconds(0);
  2042. todayClear.setMilliseconds(0);
  2043. var dateClear = new Date(date.getTime());
  2044. dateClear.setHours(0);
  2045. dateClear.setMinutes(0);
  2046. dateClear.setSeconds(0);
  2047. dateClear.setMilliseconds(0);
  2048. if(allDay)
  2049. {
  2050. if(globalSettings.defaulteventduration.value!==null && todayClear.getTime()===dateClear.getTime())
  2051. {
  2052. if(today.getMinutes()>0) {
  2053. date.setHours(today.getHours()+1);
  2054. date.setMinutes(0);
  2055. }
  2056. else {
  2057. date.setHours(today.getHours());
  2058. date.setMinutes(today.setMinutes());
  2059. }
  2060. }
  2061. else {
  2062. date.setHours(globalSettings.calendarstartofbusiness.value);
  2063. date.setMinutes((globalSettings.calendarstartofbusiness.value%1)*60);
  2064. }
  2065. }
  2066. $('#date_from').val($.datepicker.formatDate(globalSettings.datepickerformat.value, date));
  2067. $('#time_from').val($.fullCalendar.formatDate(date, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  2068. globalPrevDate=new Date(date.getTime());
  2069. if(typeof date_to==='undefined' || date_to===null)
  2070. date_to = new Date(date.getTime());
  2071. if(allDay) {
  2072. if(globalSettings.defaulteventduration.value!==null)
  2073. {
  2074. date_to.setHours(date.getHours());
  2075. date_to.setMinutes(date.getMinutes()+globalSettings.defaulteventduration.value);
  2076. }
  2077. else {
  2078. date_to.setHours(globalSettings.calendarendofbusiness.value);
  2079. date_to.setMinutes((globalSettings.calendarendofbusiness.value%1)*60);
  2080. }
  2081. }
  2082. if(date_to.getTime()<date.getTime())
  2083. date_to.setDate(date_to.getDate()+1);
  2084. $('#date_to').val($.datepicker.formatDate(globalSettings.datepickerformat.value, date_to));
  2085. $('#time_to').val($.fullCalendar.formatDate(date_to, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  2086. if($('#repeat option:selected').attr('data-type')!="repeat_no-repeat" && $('#repeat option:selected').attr('data-type')!="custom_repeat")
  2087. $('#repeat_details').show();
  2088. if($('#repeat_end_details option:selected').attr('data-type')=="repeat_details_on_date")
  2089. {
  2090. $('#repeat_end_after').hide();
  2091. $('#repeat_end_date').show();
  2092. }
  2093. if($('#repeat_end_details option:selected').attr('data-type')=="repeat_details_after")
  2094. {
  2095. $('#repeat_end_after').show();
  2096. $('#repeat_end_date').hide();
  2097. }
  2098. if($('#repeat_end_details option:selected').attr('data-type')=="repeat_details_never")
  2099. {
  2100. $('#repeat_end_after').hide();
  2101. $('#repeat_end_date').hide();
  2102. }
  2103. if(mod=='show')
  2104. {
  2105. $('#saveButton').hide();
  2106. $('#resetButton').hide();
  2107. $('#deleteButton').hide();
  2108. if($('#ResourceCalDAVList').find('[data-id="'+calEvent.res_id+'"]').hasClass("resourceCalDAV_item_ro"))
  2109. {
  2110. $('#editButton').hide();
  2111. $('#duplicateButton').hide();
  2112. $('#editOptionsButton').hide();
  2113. }
  2114. $('#eventDetailsTable :input[type!="button"]').prop('disabled', true);
  2115. $('#eventDetailsTable :input[type="text"]').prop('readonly', true);
  2116. $('#eventDetailsTable .customTable td').addClass('disabled');
  2117. $('#eventDetailsTable textarea').prop('readonly', true);
  2118. /*************************** BAD HACKS SECTION ***************************/
  2119. // here we fix the cross OS/cross broser problems (unfixable in pure CSS)
  2120. if($.browser.webkit && !!window.chrome) /* Chrome */
  2121. {
  2122. if(navigator.platform.toLowerCase().indexOf('win')==0) /* Windows version */
  2123. {
  2124. $('#event_details_template').find('input').css('text-indent', '2px');
  2125. $('#event_details_template').find('select').css({'padding-left': '0px', 'padding-right': '13px'});
  2126. }
  2127. else /* non-Windows version */
  2128. $('#event_details_template').find('input').css('text-indent', '1px');
  2129. }
  2130. else if($.browser.safari)
  2131. {
  2132. $('#event_details_template').find('textarea').addClass('safari_hack');
  2133. $('#event_details_template').find('input').addClass('safari_hack');
  2134. }
  2135. else if($.browser.msie) /* IE */
  2136. {
  2137. if(parseInt($.browser.version, 10)==10) /* IE 10 (because there are no more conditional comments) */
  2138. {
  2139. $('#event_details_template').find('select').css({'padding-top': '1px', 'padding-left': '0px', 'padding-right': '0px'});
  2140. $('#event_details_template').find('textarea').css('padding-top', '3px');
  2141. $('#event_details_template').find('input[type=button]').css('padding-top', '2px');
  2142. }
  2143. }
  2144. if($.browser.msie || $.browser.mozilla)
  2145. {
  2146. var newSVG=$(SVG_select_dis).attr('data-type', 'select_icon').css({'pointer-events': 'none', 'z-index': '1', 'display': 'inline', 'margin-left': '-22px', 'vertical-align': 'top', 'background-color': '#ffffff'}); // background-color = stupid IE9 bug
  2147. $('#event_details_template').find('svg[data-type="select_icon"]').replaceWith($('<div>').append($(newSVG).clone()).html());
  2148. }
  2149. /*************************** END OF BAD HACKS SECTION ***************************/
  2150. if(calEvent.etag!='') {
  2151. window.setTimeout(function () {
  2152. $('#event_calendar').val(calEvent.res_id);
  2153. }, 1)
  2154. }
  2155. }
  2156. if(repeatOne=='editOnly' || $('#recurrenceID').val()!='')
  2157. {
  2158. $('#repeat').parent().parent().css('display', 'none');
  2159. $('#week_custom').css('display', 'none');
  2160. $('#month_custom1').css('display', 'none');
  2161. $('#month_custom2').css('display', 'none');
  2162. $('#year_custom1').css('display', 'none');
  2163. $('#year_custom2').css('display', 'none');
  2164. $('#year_custom3').css('display', 'none');
  2165. $('#repeat_details').css('display', 'none');
  2166. }
  2167. if(repeatOne=='editOnly' || repeatOne=='futureOnly' || $('#recurrenceID').val())
  2168. $('#calendarLine').hide();
  2169. if(calEvent==null || calEvent.type=='')
  2170. $('#editOptionsButton').hide();
  2171. else
  2172. $('#editOptionsButton').click(function(){
  2173. showEventForm(null, globalCalEvent.allDay, globalCalEvent, globalJsEvent, 'show', '', true);
  2174. });
  2175. if(calEvent && calEvent.after && repeatOne=='futureOnly')
  2176. $('#repeat_end_after').val(calEvent.after - calEvent.realRepeatCount + 1);
  2177. if(!globalSettings.timezonesupport.value)
  2178. $('.timezone_row').css('display', 'none');
  2179. if($('#allday').prop('checked'))
  2180. stripEventAlerts();
  2181. if(mod!='drop')
  2182. {
  2183. $('#CAEvent').show();
  2184. $('#event_details_template').show();
  2185. $('#eventColor').css('background-color',color);
  2186. updateEventFormDimensions();
  2187. setFormPosition(jsEvent);
  2188. }
  2189. checkEventFormScrollBar();
  2190. $('#event_details_template').scrollTop(0);
  2191. }
  2192. function bindEventForm()
  2193. {
  2194. initCalDavDatepicker($('#event_details_template'));
  2195. initCalDavTimepicker($('#event_details_template'));
  2196. $('#event_details_template .alert_message_details').change(function(){
  2197. var data_id=$(this).attr("data-id");
  2198. $('.before_after_input[data-id="'+data_id+'"]').parent().parent().find('img').css('display','none');
  2199. if($('.alert_message_details[data-id="'+data_id+'"] option:selected').attr('data-type')=="on_date")
  2200. {
  2201. var myDate=new Date();
  2202. myDate.setDate(myDate.getDate()+7);
  2203. if($('#date_from').parent().parent().find('img:visible').length==0) {
  2204. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_from").val());
  2205. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  2206. myDate=new Date(Date.parse(datetime_to + (!$("#allday").prop('checked')?$("#time_from").val():'')));
  2207. myDate.setHours(myDate.getHours()-1);
  2208. }
  2209. else if($('#date_to').parent().parent().find('img:visible').length==0) {
  2210. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_to").val());
  2211. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  2212. myDate=new Date(Date.parse(datetime_to + (!$("#allday").prop('checked')?$("#time_to").val():'')));
  2213. myDate.setHours(myDate.getHours()-1);
  2214. }
  2215. $('.message_date_input[data-id="'+data_id+'"]').val($.datepicker.formatDate(globalSettings.datepickerformat.value, myDate));
  2216. $('.message_date_input[data-id="'+data_id+'"]').show();
  2217. $('.message_time_input[data-id="'+data_id+'"]').val($.fullCalendar.formatDate(myDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  2218. $('.message_time_input[data-id="'+data_id+'"]').show();
  2219. $('.before_after_input[data-id="'+data_id+'"]').hide();
  2220. }
  2221. else
  2222. {
  2223. $('.message_date_input[data-id="'+data_id+'"]').hide();
  2224. $('.message_time_input[data-id="'+data_id+'"]').hide();
  2225. $('.before_after_input[data-id="'+data_id+'"]').show();
  2226. $('.before_after_input[data-id="'+data_id+'"]').val('15');
  2227. }
  2228. });
  2229. $('#event_details_template .before_after_input').bind('keyup change', function(){
  2230. if($(this).val()=='')
  2231. {
  2232. $(this).parent().find('img').css('display', 'inline');
  2233. //$(this).parent().find('img').css('visibility','visible');
  2234. }
  2235. else
  2236. {
  2237. if($(this).val().match("^(\d*[0-9])*$")==null)
  2238. {
  2239. $(this).parent().find('img').css('display', 'inline');
  2240. //$(this).parent().find('img').css('visibility','visible');
  2241. }
  2242. else
  2243. $(this).parent().find('img').css('display', 'none');
  2244. }
  2245. });
  2246. $('#event_details_template .alert').change(function(){
  2247. var data_id=$(this).attr("data-id");
  2248. if($(this).val()!='none')
  2249. {
  2250. $('.alert_details[data-id="'+data_id+'"]').show();
  2251. $('.alert_message_date[data-id="'+data_id+'"]').show();
  2252. var myDate=new Date();
  2253. myDate.setDate(myDate.getDate()+7);
  2254. if($('#date_from').parent().parent().find('img:visible').length==0) {
  2255. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_from").val());
  2256. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  2257. myDate=new Date(Date.parse(datetime_to + (!$("#allday").prop('checked')?$("#time_from").val():'')));
  2258. myDate.setHours(myDate.getHours()-1);
  2259. }
  2260. else if($('#date_to').parent().parent().find('img:visible').length==0) {
  2261. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_to").val());
  2262. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  2263. myDate=new Date(Date.parse(datetime_to + (!$("#allday").prop('checked')?$("#time_to").val():'')));
  2264. myDate.setHours(myDate.getHours()-1);
  2265. }
  2266. $('.message_date_input[data-id="'+data_id+'"]').val($.datepicker.formatDate(globalSettings.datepickerformat.value, myDate));
  2267. $('.message_time_input[data-id="'+data_id+'"]').val($.fullCalendar.formatDate(myDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  2268. event_alert_add(data_id);
  2269. }
  2270. else
  2271. {
  2272. $('.alert_details[data-id="'+data_id+'"]').hide();
  2273. $('.alert_message_date[data-id="'+data_id+'"]').hide();
  2274. checkFor(data_id);
  2275. var data_id=$(this).attr("data-id");
  2276. $('#event_details_template tr[data-id="'+data_id+'"]').remove();
  2277. }
  2278. checkEventFormScrollBar();
  2279. });
  2280. $('#repeat_end_after, #repeat_interval_detail').bind('keyup change',function(){
  2281. if($(this).val()=='')
  2282. {
  2283. $(this).parent().find('img').css('display', 'inline');
  2284. //$(this).parent().find('img').css('visibility','visible');
  2285. }
  2286. else
  2287. {
  2288. if($(this).val().match("^[0-9]+$")==null || parseInt($(this).val(),10)<1)
  2289. {
  2290. $(this).parent().find('img').css('display', 'inline');
  2291. //$(this).parent().find('img').css('visibility','visible');
  2292. }
  2293. else
  2294. $(this).parent().find('img').css('display', 'none');
  2295. }
  2296. });
  2297. $('#repeat_month_custom_select').change(function(){
  2298. if($(this).val()=="custom")
  2299. {
  2300. $('#month_custom2').show();
  2301. $('#repeat_month_custom_select2').parent().hide();
  2302. }
  2303. else
  2304. {
  2305. $('#month_custom2').hide();
  2306. $('#repeat_month_custom_select2').parent().show();
  2307. }
  2308. checkEventFormScrollBar();
  2309. });
  2310. $('#repeat_year_custom_select1').change(function(){
  2311. if($(this).val()=="custom")
  2312. {
  2313. $('#year_custom1').show();
  2314. $('#repeat_year_custom_select2').parent().hide();
  2315. }
  2316. else
  2317. {
  2318. $('#year_custom1').hide();
  2319. $('#repeat_year_custom_select2').parent().show();
  2320. }
  2321. checkEventFormScrollBar();
  2322. });
  2323. $('#repeat_end_details').change(function(){
  2324. $('#repeat_end_date').parent().find('img').css('display', 'none');
  2325. if($('#repeat_end_details option:selected').attr('data-type')=="repeat_details_on_date")
  2326. {
  2327. $('#repeat_end_after').hide();
  2328. $('#repeat_end_date').show();
  2329. var today;
  2330. if($('#date_from').val()!='')
  2331. {
  2332. today=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_from').val());
  2333. if(today==null)
  2334. today=new Date();
  2335. }
  2336. else
  2337. today=new Date();
  2338. var date=new Date(today.getFullYear(), today.getMonth(), today.getDate()+2);
  2339. $('#repeat_end_date').val($.datepicker.formatDate(globalSettings.datepickerformat.value, date));
  2340. }
  2341. if($('#repeat_end_details option:selected').attr('data-type')=="repeat_details_after")
  2342. {
  2343. $('#repeat_end_after').show();
  2344. $('#repeat_end_after').val('2');
  2345. $('#repeat_end_date').hide();
  2346. }
  2347. if($('#repeat_end_details option:selected').attr('data-type')=="repeat_details_never")
  2348. {
  2349. $('#repeat_end_after').hide();
  2350. $('#repeat_end_date').hide();
  2351. }
  2352. checkEventFormScrollBar();
  2353. });
  2354. $('#closeButton').click(function(){
  2355. if($('#uid').val()!='')
  2356. {
  2357. var uid=$('#uid').val();
  2358. var calUID=uid.substring(0, uid.lastIndexOf('/')+1);
  2359. var events=$('.event_item[data-id="'+uid+'"]');
  2360. var color=$('#ResourceCalDAVList').find("[data-id='"+calUID+"']").find('.resourceCalDAVColor').css('background-color');
  2361. $.each(events, function(index, event){
  2362. if(event.nodeName.toLowerCase()!='tr')
  2363. {
  2364. $(event).find('.fc-event-inner, .fc-event-head').addBack().css({'background-color': rgbToRgba(color,0.9), 'border-color': color});
  2365. $(event).find('.fc-event-title, .fc-event-title-strict, .fc-event-time').css('color',checkFontColor(rgbToHex(color)));
  2366. }
  2367. else
  2368. {
  2369. $(event).children('.fc-event-handle').css({'background-color': rgbToRgba(color,0.9), 'border-color': color});
  2370. }
  2371. });
  2372. }
  2373. else
  2374. {
  2375. var beforeScroll = $('#main').width()-$('#calendar').width();
  2376. $('#calendar').fullCalendar('unselect');
  2377. $('#calendar').fullCalendar('removeEvents', 'fooUID');
  2378. var afterScroll = $('#main').width()-$('#calendar').width();
  2379. rerenderCalendar(beforeScroll!=afterScroll);
  2380. }
  2381. $('#show').val('');
  2382. $('#CAEvent').hide();
  2383. $('#EventDisabler').fadeOut(globalEditorFadeAnimation, function(){
  2384. $('#timezonePicker').prop('disabled', false);
  2385. });
  2386. });
  2387. $('#resetButton').click(function(){
  2388. $('#event_details_template').find('img[data-type=invalidSmall]').css('display','none');
  2389. var uid=$('#uid').val();
  2390. if(uid!='')
  2391. {
  2392. var calUID=uid.substring(0, uid.lastIndexOf('/')+1);
  2393. var events=$('.event_item[data-id="'+uid+'"]');
  2394. var color=$('#ResourceCalDAVList').find("[data-id='"+calUID+"']").find('.resourceCalDAVColor').css('background-color');
  2395. $.each(events, function(index, event){
  2396. if(event.nodeName.toLowerCase()!='tr')
  2397. {
  2398. $(event).find('.fc-event-inner, .fc-event-head').addBack().css({'background-color': rgbToRgba(color,0.9), 'border-color': color});
  2399. $(event).find('.fc-event-title, .fc-event-title-strict, .fc-event-time').css('color',checkFontColor(rgbToHex(color)));
  2400. }
  2401. else
  2402. {
  2403. $(event).children('.fc-event-handle').css({'background-color': rgbToRgba(color,0.9), 'border-color': color})
  2404. }
  2405. });
  2406. if($('#recurrenceID').val()!='' && $('#repeatCount').val()!='')
  2407. showEventForm(null, globalCalEvent.allDay, globalCalEvent, globalJsEvent, 'show', 'editOnly');
  2408. else if($('#futureStart').val()!='')
  2409. showEventForm(null, globalCalEvent.allDay, globalCalEvent, globalJsEvent, 'show', 'futureOnly');
  2410. else
  2411. showEventForm(null, globalCalEvent.allDay, globalCalEvent, globalJsEvent, 'show', '');
  2412. startEditModeEvent();
  2413. }
  2414. });
  2415. $('#allday').click(function(){
  2416. if($('#allday').prop('checked'))
  2417. {
  2418. $('#timezone').val('local');
  2419. $('#time_from_cell').css('visibility','hidden');
  2420. $('#time_to_cell').css('visibility','hidden');
  2421. $('#time_to_cell').find('img').css('display','none');
  2422. $('#time_from_cell').find('img').css('display','none');
  2423. $('.timezone_row').css('display', 'none');
  2424. stripEventAlerts();
  2425. }
  2426. else
  2427. {
  2428. $('#time_from_cell').css('visibility','visible');
  2429. $('#time_to_cell').css('visibility','visible');
  2430. $('#time_from').trigger('change');
  2431. $('#time_to').trigger('change');
  2432. if(globalSettings.timezonesupport.value)
  2433. {
  2434. $('.timezone_row').show();
  2435. $('#timezone').val(globalSessionTimeZone);
  2436. }
  2437. expandEventAlerts();
  2438. }
  2439. checkEventFormScrollBar();
  2440. });
  2441. $('#event_details_template .customTable td').click(function(){
  2442. if($(this).hasClass('disabled'))
  2443. return true;
  2444. else if($(this).hasClass('selected'))
  2445. $(this).removeClass('selected');
  2446. else
  2447. $(this).addClass('selected');
  2448. });
  2449. $('#event_calendar').change(function(){
  2450. var color = '';
  2451. if($(this).val()=='choose')
  2452. color = 'rgb(240,240,240)';
  2453. else
  2454. color=$('#ResourceCalDAVList').find("[data-id='"+$(this).val()+"']").find('.resourceCalDAVColor').css('background-color');
  2455. var uid='fooUID';
  2456. if($('#uid').val()!='')
  2457. uid=$('#uid').val();
  2458. var events=$('.event_item[data-id="'+uid+'"]');
  2459. $('#eventColor').css('background-color',color);
  2460. $.each(events, function(index, event){
  2461. if(event.nodeName.toLowerCase()!='tr')
  2462. {
  2463. $(event).find('.fc-event-inner, .fc-event-head').addBack().css({'background-color': rgbToRgba(color,0.9), 'border-color': color});
  2464. $(event).find('.fc-event-title, .fc-event-title-strict, .fc-event-time').css('color', checkFontColor(rgbToHex(color)));
  2465. }
  2466. else
  2467. {
  2468. $(event).find('.fc-event-handle').css({'background-color': rgbToRgba(color,0.9), 'border-color': color});
  2469. }
  2470. });
  2471. });
  2472. $('#repeat').change(function(){
  2473. if($('#repeat option:selected').attr('data-type')=='repeat_no-repeat' || $('#repeat option:selected').attr('data-type')=="custom_repeat")
  2474. {
  2475. $('#repeat_details').hide();
  2476. $('#repeat_interval').hide();
  2477. $('#week_custom').hide();
  2478. $('#month_custom1').hide();
  2479. $('#month_custom2').hide();
  2480. $('#year_custom1').hide();
  2481. $('#year_custom2').hide();
  2482. $('#year_custom3').hide();
  2483. }
  2484. else
  2485. {
  2486. $('#repeat_details').show();
  2487. if($(this).val()!='BUSINESS' && $(this).val()!='TWO_WEEKLY' && $(this).val()!='WEEKEND')
  2488. {
  2489. $('#repeat_interval').show();
  2490. $("#repeat_interval_detail").val('1');
  2491. $('#repeat_interval').find('img').css('display','none');
  2492. }
  2493. else
  2494. $('#repeat_interval').hide();
  2495. if($(this).val()=='DAILY')
  2496. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatDays);
  2497. if($(this).val()=='WEEKLY')
  2498. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatWeeks);
  2499. if($(this).val()=='MONTHLY')
  2500. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatMonths);
  2501. if($(this).val()=='YEARLY')
  2502. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatYears);
  2503. if($(this).val()=='CUSTOM_WEEKLY')
  2504. {
  2505. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatWeeks);
  2506. $('#week_custom').show();
  2507. }
  2508. else
  2509. $('#week_custom').hide();
  2510. if($(this).val()=='CUSTOM_MONTHLY')
  2511. {
  2512. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatMonths);
  2513. $('#month_custom1').show();
  2514. if($('#repeat_month_custom_select').val() == "custom")
  2515. $('#repeat_month_custom_select').trigger('change');
  2516. }
  2517. else
  2518. {
  2519. $('#month_custom1').hide();
  2520. $('#month_custom2').hide();
  2521. }
  2522. if($(this).val()=='CUSTOM_YEARLY')
  2523. {
  2524. $('#repeat_interval [data-type="txt_interval"]').text(localization[globalInterfaceLanguage].repeatYears);
  2525. $('#year_custom2').show();
  2526. $('#year_custom3').show();
  2527. if($('#repeat_year_custom_select1').val() == "custom")
  2528. $('#repeat_year_custom_select1').trigger('change');
  2529. }
  2530. else
  2531. {
  2532. $('#year_custom1').hide();
  2533. $('#year_custom2').hide();
  2534. $('#year_custom3').hide();
  2535. }
  2536. var today;
  2537. if($('#date_from').val()!='')
  2538. {
  2539. today=$.datepicker.parseDate(globalSettings.datepickerformat.value, $('#date_from').val());
  2540. if(today==null)
  2541. today=new Date();
  2542. }
  2543. else
  2544. today=new Date();
  2545. var date=new Date(today.getFullYear(),today.getMonth(),today.getDate()+2);
  2546. $('#repeat_end_date').val($.datepicker.formatDate(globalSettings.datepickerformat.value, date));
  2547. }
  2548. checkEventFormScrollBar();
  2549. });
  2550. $('#status').change(function(){
  2551. var status = $(this).val();
  2552. if(status=='CANCELLED')
  2553. $('#name').addClass('title_cancelled');
  2554. else
  2555. $('#name').removeClass('title_cancelled');
  2556. todoStatusChanged(status);
  2557. });
  2558. }
  2559. function startEditModeEvent()
  2560. {
  2561. $('#timezonePicker').prop('disabled', true);
  2562. $('#EventDisabler').fadeIn(globalEditorFadeAnimation);
  2563. $('#CAEvent .formNav').css('display', 'none');
  2564. $('#CAEvent textarea.header').removeClass('leftspace rightspace');
  2565. $('#editButton').hide();
  2566. $('#duplicateButton').hide();
  2567. $('#editOptionsButton').hide();
  2568. $('#saveButton').show();
  2569. $('#resetButton').show();
  2570. $('#deleteButton').show();
  2571. $('#show').val('');
  2572. $('#eventDetailsTable :input[disabled]').prop('disabled', false);
  2573. $('#eventDetailsTable :input[type="text"]').prop('readonly', false);
  2574. $('#eventDetailsTable .customTable td').removeClass('disabled');
  2575. $('#eventDetailsTable textarea').prop('readonly', false);
  2576. /*************************** BAD HACKS SECTION ***************************/
  2577. if($.browser.msie || $.browser.mozilla)
  2578. {
  2579. var newSVG=$(SVG_select).attr('data-type', 'select_icon').css({'pointer-events': 'none', 'z-index': '1', 'display': 'inline', 'margin-left': '-19px', 'vertical-align': 'top', 'background-color': '#ffffff'}); // background-color = stupid IE9 bug
  2580. $('#event_details_template').find('svg[data-type="select_icon"]').replaceWith($('<div>').append($(newSVG).clone()).html());
  2581. }
  2582. /*************************** END OF BAD HACKS SECTION ***************************/
  2583. $('#name').focus();
  2584. }
  2585. function startEditModeTodo()
  2586. {
  2587. $('#todoInEdit').val('true');
  2588. $('#timezonePickerTODO').prop('disabled', true);
  2589. $('#TodoDisabler').fadeIn(globalEditorFadeAnimation);
  2590. $('#CATodo .formNav').css('display', 'none');
  2591. $('#CATodo textarea.header').removeClass('leftspace rightspace');
  2592. $('#editTODO').hide();
  2593. $('#duplicateTODO').hide();
  2594. $('#editOptionsButtonTODO').hide();
  2595. $('#closeTODO').show();
  2596. $('#saveTODO').show();
  2597. $('#resetTODO').show();
  2598. $('#deleteTODO').show();
  2599. $('#showTODO').val('');
  2600. $('#todoDetailsTable :input[disabled]').prop('disabled', false);
  2601. $('#todoDetailsTable :input[type="text"]').prop('readonly', false);
  2602. $('#todoDetailsTable textarea').prop('readonly', false);
  2603. /*************************** BAD HACKS SECTION ***************************/
  2604. if($.browser.msie || $.browser.mozilla)
  2605. {
  2606. var newSVG=$(SVG_select).attr('data-type', 'select_icon').css({'pointer-events': 'none', 'z-index': '1', 'display': 'inline', 'margin-left': '-19px', 'vertical-align': 'top', 'background-color': '#ffffff'}); // background-color = stupid IE9 bug
  2607. $('#todo_details_template').find('svg[data-type="select_icon"]').replaceWith($('<div>').append($(newSVG).clone()).html());
  2608. }
  2609. /*************************** END OF BAD HACKS SECTION ***************************/
  2610. $('#percentageSlider').slider({
  2611. disabled: false
  2612. });
  2613. $('#nameTODO').focus();
  2614. }
  2615. function todo_alert_add(data_id)
  2616. {
  2617. data_id++;
  2618. var newTr1,
  2619. newTr2,
  2620. newTr3;
  2621. newTr1='<tr data-id="'+data_id+'">'+
  2622. '<td><label data-type="alert_TODO" for="alertTODO">alert: </label></td>'+
  2623. '<td data-size="full" colspan="2">'+
  2624. '<select class="long alertTODO" name="alert_typeTODO" data-id="'+data_id+'">'+
  2625. '<option data-type="alert_none_TODO" value="none">none</option>'+
  2626. '<option data-type="alert_message_TODO" value="message">message</option>'+
  2627. '</select>'+
  2628. '</td>'+
  2629. '</tr>';
  2630. newTr2='<tr class="alert_detailsTODO" style="display:none;" data-id="'+data_id+'">'+
  2631. '<td></td>'+
  2632. '<td data-size="full" colspan="2">'+
  2633. '<select class="long alert_message_detailsTODO" name="alert_detailsTODO" data-id="'+data_id+'">'+
  2634. '<option data-type="on_dateTODO" class="todoTimeOptions" value="on_date">On date</option>'+
  2635. ($('#todo_type').val()=='none' ? '' : '<option data-type="weeks_beforeTODO" value="weeks_before">weeks before</option>'+
  2636. '<option data-type="days_beforeTODO" value="days_before">days before</option>'+
  2637. '<option data-type="hours_beforeTODO" value="hours_before">hours before</option>'+
  2638. '<option data-type="minutes_beforeTODO" value="minutes_before">minutes before</option>'+
  2639. '<option data-type="seconds_beforeTODO" value="seconds_before">seconds before</option>'+
  2640. '<option data-type="weeks_afterTODO" value="weeks_after">weeks after</option>'+
  2641. '<option data-type="days_afterTODO" value="days_after">days after</option>'+
  2642. '<option data-type="hours_afterTODO" value="hours_after">hours after</option>'+
  2643. '<option data-type="minutes_afterTODO" value="minutes_after">minutes after</option>'+
  2644. '<option data-type="seconds_afterTODO" value="seconds_after">seconds after</option>')+
  2645. '</select>'+
  2646. '</td>'+
  2647. '</tr>';
  2648. newTr3='<tr data-id="'+data_id+'" class="alert_message_dateTODO" style="display:none;">'+
  2649. '<td></td>'+
  2650. '<td><input data-id="'+data_id+'" data-type="PH_before_after_alert_TODO" class="small before_after_inputTODO" type="text" style="display:none;" />'+
  2651. '<input data-id="'+data_id+'" class="date small message_date_inputTODO" data-type="PH_alarm_date_TODO" type="text" name="message_dateTODO" /><div class="invalidWrapper"><img data-type="invalidSmall" data-id="'+data_id+'" style="display: none;" src="images/error_b.svg" alt="invalid" /></div></td>'+
  2652. '<td><input data-id="'+data_id+'" data-type="PH_alarm_time_TODO" class="time small message_time_inputTODO" type="text" name="message_timeTODO" /><div class="invalidWrapper"><img data-type="invalidSmall" data-id="'+data_id+'" style="display: none;" src="images/error_b.svg" alt="invalid" /></div></td>'+
  2653. '<tr>';
  2654. $('#url_trTODO').before(newTr1);
  2655. $('#url_trTODO').before(newTr2);
  2656. $('#url_trTODO').before(newTr3);
  2657. translateTodoAlerts();
  2658. $('#todo_details_template').find('input[placeholder],textarea[placeholder]').placeholder();
  2659. $('#todo_details_template .alert_message_detailsTODO[data-id="'+data_id+'"]').change(function(){
  2660. var data_id=$(this).attr("data-id");
  2661. $('.before_after_inputTODO[data-id="'+data_id+'"]').parent().parent().find('img').css('display','none');
  2662. if($('.alert_message_detailsTODO[data-id="'+data_id+'"] option:selected').attr('data-type')=="on_dateTODO")
  2663. {
  2664. var myDate=new Date();
  2665. myDate.setDate(myDate.getDate()+7);
  2666. if($('.dateTrToTODO').is(':visible') && $('.dateTrToTODO img:visible').length==0) {
  2667. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_toTODO").val());
  2668. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  2669. myDate=new Date(Date.parse(datetime_to +$("#time_toTODO").val()));
  2670. myDate.setHours(myDate.getHours()-1);
  2671. }
  2672. else if($('.dateTrFromTODO').is(':visible') && $('.dateTrFromTODO img:visible').length==0) {
  2673. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_fromTODO").val());
  2674. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  2675. myDate=new Date(Date.parse(datetime_to +$("#time_fromTODO").val()));
  2676. myDate.setHours(myDate.getHours()-1);
  2677. }
  2678. $('.message_date_inputTODO[data-id="'+data_id+'"]').val($.datepicker.formatDate(globalSettings.datepickerformat.value, myDate));
  2679. $('.message_date_inputTODO[data-id="'+data_id+'"]').show();
  2680. $('.message_time_inputTODO[data-id="'+data_id+'"]').val($.fullCalendar.formatDate(myDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  2681. $('.message_time_inputTODO[data-id="'+data_id+'"]').show();
  2682. $('.before_after_inputTODO[data-id="'+data_id+'"]').hide();
  2683. }
  2684. else
  2685. {
  2686. $('.message_date_inputTODO[data-id="'+data_id+'"]').hide();
  2687. $('.message_time_inputTODO[data-id="'+data_id+'"]').hide();
  2688. $('.before_after_inputTODO[data-id="'+data_id+'"]').show();
  2689. $('.before_after_inputTODO[data-id="'+data_id+'"]').val('15');
  2690. }
  2691. });
  2692. $('#todo_details_template .before_after_inputTODO[data-id="'+data_id+'"]').bind('keyup change', function(){
  2693. if($(this).val()=='')
  2694. {
  2695. $(this).parent().find('img').css('display', 'inline');
  2696. //$(this).parent().find('img').css('visibility','visible');
  2697. }
  2698. else
  2699. {
  2700. if($(this).val().match("^[0-9]+$")==null)
  2701. {
  2702. $(this).parent().find('img').css('display', 'inline');
  2703. //$(this).parent().find('img').css('visibility','visible');
  2704. }
  2705. else
  2706. $(this).parent().find('img').css('display', 'none');
  2707. }
  2708. });
  2709. $('#todo_details_template .alertTODO[data-id="'+data_id+'"]').change(function(){
  2710. var data_id=$(this).attr("data-id");
  2711. if($(this).val()!='none')
  2712. {
  2713. $('.alert_detailsTODO[data-id="'+data_id+'"]').show();
  2714. $('.alert_message_dateTODO[data-id="'+data_id+'"]').show();
  2715. if($('#todo_type').val()!='none')
  2716. expandTodoAlerts();
  2717. var myDate=new Date();
  2718. myDate.setDate(myDate.getDate()+7);
  2719. if($('.dateTrToTODO').is(':visible') && $('.dateTrToTODO img:visible').length==0) {
  2720. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_toTODO").val());
  2721. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  2722. myDate=new Date(Date.parse(datetime_to +$("#time_toTODO").val()));
  2723. myDate.setHours(myDate.getHours()-1);
  2724. }
  2725. else if($('.dateTrFromTODO').is(':visible') && $('.dateTrFromTODO img:visible').length==0) {
  2726. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_fromTODO").val());
  2727. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  2728. myDate=new Date(Date.parse(datetime_to +$("#time_fromTODO").val()));
  2729. myDate.setHours(myDate.getHours()-1);
  2730. }
  2731. $('.message_date_inputTODO[data-id="'+data_id+'"]').val($.datepicker.formatDate(globalSettings.datepickerformat.value, myDate));
  2732. $('.message_time_inputTODO[data-id="'+data_id+'"]').val($.fullCalendar.formatDate(myDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  2733. todo_alert_add(data_id);
  2734. }
  2735. else
  2736. {
  2737. $('.alert_detailsTODO[data-id="'+data_id+'"]').hide();
  2738. $('.alert_message_dateTODO[data-id="'+data_id+'"]').hide();
  2739. checkForTodo(data_id);
  2740. var data_id=$(this).attr("data-id");
  2741. $('#todo_details_template tr[data-id="'+data_id+'"]').remove();
  2742. }
  2743. checkTodoFormScrollBar();
  2744. });
  2745. initCalDavDatepicker($('#todo_details_template .alert_message_dateTODO[data-id="'+data_id+'"]'));
  2746. initCalDavTimepicker($('#todo_details_template .alert_message_dateTODO[data-id="'+data_id+'"]'));
  2747. /*************************** BAD HACKS SECTION ***************************/
  2748. // here we fix the cross OS/cross broser problems (unfixable in pure CSS)
  2749. if($.browser.webkit && !!window.chrome) /* Chrome */
  2750. {
  2751. if(navigator.platform.toLowerCase().indexOf('win')==0) /* Windows version */
  2752. {
  2753. $('#todo_details_template').find('input').css('text-indent', '2px');
  2754. $('#todo_details_template').find('select').css({'padding-left': '0px', 'padding-right': '13px'});
  2755. }
  2756. else /* non-Windows version */
  2757. $('#todo_details_template').find('input').css('text-indent', '1px');
  2758. }
  2759. else if($.browser.safari)
  2760. {
  2761. $('#todo_details_template').find('textarea').addClass('safari_hack');
  2762. $('#todo_details_template').find('input').addClass('safari_hack');
  2763. }
  2764. else if($.browser.msie) /* IE */
  2765. {
  2766. if(parseInt($.browser.version, 10)==10) /* IE 10 (because there are no more conditional comments) */
  2767. {
  2768. $('#todo_details_template').find('select').css({'padding-top': '1px', 'padding-left': '0px', 'padding-right': '0px'});
  2769. $('#todo_details_template').find('textarea').css('padding-top', '3px');
  2770. $('#todo_details_template').find('input[type=button]').css('padding-top', '2px');
  2771. }
  2772. }
  2773. /* IE or FF */
  2774. if($.browser.msie || $.browser.mozilla)
  2775. {
  2776. // ADD empty SVG to interface (we will replace it later)
  2777. $('<svg data-type="select_icon"></svg>').css('display', 'none').insertAfter($('#todo_details_template tr[data-id="'+data_id+'"]').find('select'));
  2778. }
  2779. if($.browser.msie || $.browser.mozilla)
  2780. {
  2781. var newSVG=$(SVG_select).attr('data-type', 'select_icon').css({'pointer-events': 'none', 'z-index': '1', 'display': 'inline', 'margin-left': '-19px', 'vertical-align': 'top', 'background-color': '#ffffff'}); // background-color = stupid IE9 bug
  2782. $('#todo_details_template tr[data-id="'+data_id+'"]').find('svg[data-type="select_icon"]').replaceWith($('<div>').append($(newSVG).clone()).html());
  2783. }
  2784. /*************************** END OF BAD HACKS SECTION ***************************/
  2785. }
  2786. function event_alert_add(data_id)
  2787. {
  2788. data_id++;
  2789. var newTr1,
  2790. newTr2,
  2791. newTr3;
  2792. newTr1='<tr data-id="'+data_id+'">'+
  2793. '<td><label data-type="alert" for="alert">alert: </label></td>'+
  2794. '<td data-size="full" colspan="2">'+
  2795. '<select class="long alert" name="alert_type" data-id="'+data_id+'">'+
  2796. '<option data-type="alert_none" value="none">none</option>'+
  2797. '<option data-type="alert_message" value="message">message</option>'+
  2798. '</select>'+
  2799. '</td>'+
  2800. '</tr>';
  2801. newTr2='<tr data-id="'+data_id+'" class="alert_details" style="display:none;">'+
  2802. '<td></td>'+
  2803. '<td data-size="full" colspan="2">'+
  2804. '<select class="long alert_message_details" name="alert_details" data-id="'+data_id+'">'+
  2805. '<option data-type="on_date" value="on_date">On date</option>'+
  2806. ($('#allday').prop('checked') ? '' : '<option data-type="weeks_before" value="weeks_before">weeks before</option>'+
  2807. '<option data-type="days_before" value="days_before">days before</option>'+
  2808. '<option data-type="hours_before" value="hours_before">hours before</option>'+
  2809. '<option data-type="minutes_before" value="minutes_before">minutes before</option>'+
  2810. '<option data-type="seconds_before" value="seconds_before">seconds before</option>'+
  2811. '<option data-type="weeks_after" value="weeks_after">weeks after</option>'+
  2812. '<option data-type="days_after" value="days_after">days after</option>'+
  2813. '<option data-type="hours_after" value="hours_after">hours after</option>'+
  2814. '<option data-type="minutes_after" value="minutes_after">minutes after</option>'+
  2815. '<option data-type="seconds_after" value="seconds_after">seconds after</option>')
  2816. +
  2817. '</select>'+
  2818. '</td>'+
  2819. '</tr>';
  2820. newTr3='<tr data-id="'+data_id+'" class="alert_message_date" style="display:none;">'+
  2821. '<td></td>'+
  2822. '<td><input class="small before_after_input" data-type="PH_before_after_alert" type="text" data-id="'+data_id+'" style="display:none;" />'+
  2823. '<input class="date small message_date_input" data-type="PH_alarm_date" type="text" data-id="'+data_id+'" /><div class="invalidWrapper"><img data-type="invalidSmall" data-id="'+data_id+'" style="display: none;" src="images/error_b.svg" alt="invalid" /></div></td>'+
  2824. '<td><input class="time small message_time_input" data-type="PH_alarm_time" type="text" data-id="'+data_id+'" /><div class="invalidWrapper"><img data-type="invalidSmall" data-id="'+data_id+'" style="display: none;" src="images/error_b.svg" alt="invalid" /></div></td>'+
  2825. '<tr>';
  2826. $('#url_tr').before(newTr1);
  2827. $('#url_tr').before(newTr2);
  2828. $('#url_tr').before(newTr3);
  2829. translateEventAlerts();
  2830. $('#event_details_template').find('input[placeholder],textarea[placeholder]').placeholder();
  2831. $('#event_details_template .before_after_input[data-id="'+data_id+'"]').bind('keyup change', function(){
  2832. if($(this).val()=='')
  2833. {
  2834. $(this).parent().find('img').css('display', 'inline');
  2835. //$(this).parent().find('img').css('visibility','visible');
  2836. }
  2837. else
  2838. {
  2839. if($(this).val().match("^(\d*[0-9])*$")==null)
  2840. {
  2841. $(this).parent().find('img').css('display', 'inline');
  2842. //$(this).parent().find('img').css('visibility','visible');
  2843. }
  2844. else
  2845. $(this).parent().find('img').css('display', 'none');
  2846. }
  2847. });
  2848. $('#event_details_template .alert[data-id="'+data_id+'"]').change(function(){
  2849. var data_id=$(this).attr("data-id");
  2850. if($(this).val()!='none')
  2851. {
  2852. $('.alert_details[data-id="'+data_id+'"]').show();
  2853. $('.alert_message_date[data-id="'+data_id+'"]').show();
  2854. if(!$('#allday').prop('checked'))
  2855. expandEventAlerts();
  2856. var myDate=new Date();
  2857. myDate.setDate(myDate.getDate()+7);
  2858. if($('#date_from').parent().parent().find('img:visible').length==0) {
  2859. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_from").val());
  2860. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  2861. myDate=new Date(Date.parse(datetime_to + (!$("#allday").prop('checked')?$("#time_from").val():'')));
  2862. myDate.setHours(myDate.getHours()-1);
  2863. }
  2864. else if($('#date_to').parent().parent().find('img:visible').length==0) {
  2865. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_to").val());
  2866. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  2867. myDate=new Date(Date.parse(datetime_to + (!$("#allday").prop('checked')?$("#time_to").val():'')));
  2868. myDate.setHours(myDate.getHours()-1);
  2869. }
  2870. $('.message_date_input[data-id="'+data_id+'"]').val($.datepicker.formatDate(globalSettings.datepickerformat.value, myDate));
  2871. $('.message_time_input[data-id="'+data_id+'"]').val($.fullCalendar.formatDate(myDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  2872. event_alert_add(data_id);
  2873. }
  2874. else
  2875. {
  2876. $('.alert_details[data-id="'+data_id+'"]').hide();
  2877. $('.alert_message_date[data-id="'+data_id+'"]').hide();
  2878. checkFor(data_id);
  2879. var data_id=$(this).attr("data-id");
  2880. $('#event_details_template tr[data-id="'+data_id+'"]').remove();
  2881. }
  2882. checkEventFormScrollBar();
  2883. });
  2884. $('#event_details_template .alert_message_details[data-id="'+data_id+'"]').change(function(){
  2885. var data_id=$(this).attr("data-id");
  2886. $('.before_after_input[data-id="'+data_id+'"]').parent().parent().find('img').css('display','none');
  2887. if($('.alert_message_details[data-id="'+data_id+'"] option:selected').attr('data-type')=="on_date")
  2888. {
  2889. var myDate=new Date();
  2890. myDate.setDate(myDate.getDate()+7);
  2891. if($('#date_from').parent().parent().find('img:visible').length==0) {
  2892. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_from").val());
  2893. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  2894. myDate=new Date(Date.parse(datetime_to + (!$("#allday").prop('checked')?$("#time_from").val():'')));
  2895. myDate.setHours(myDate.getHours()-1);
  2896. }
  2897. else if($('#date_to').parent().parent().find('img:visible').length==0) {
  2898. var dateTo=$.datepicker.parseDate(globalSettings.datepickerformat.value,$("#date_to").val());
  2899. var datetime_to=$.fullCalendar.formatDate(dateTo, 'MM/dd/yyyy, ');
  2900. myDate=new Date(Date.parse(datetime_to + (!$("#allday").prop('checked')?$("#time_to").val():'')));
  2901. myDate.setHours(myDate.getHours()-1);
  2902. }
  2903. $('.message_date_input[data-id="'+data_id+'"]').val($.datepicker.formatDate(globalSettings.datepickerformat.value, myDate));
  2904. $('.message_date_input[data-id="'+data_id+'"]').show();
  2905. $('.message_time_input[data-id="'+data_id+'"]').val($.fullCalendar.formatDate(myDate, (globalSettings.ampmformat.value ? 'hh:mm TT' : 'HH:mm')));
  2906. $('.message_time_input[data-id="'+data_id+'"]').show();
  2907. $('.before_after_input[data-id="'+data_id+'"]').hide();
  2908. }
  2909. else
  2910. {
  2911. $('.message_date_input[data-id="'+data_id+'"]').hide();
  2912. $('.message_time_input[data-id="'+data_id+'"]').hide();
  2913. $('.before_after_input[data-id="'+data_id+'"]').show();
  2914. $('.before_after_input[data-id="'+data_id+'"]').val('15');
  2915. }
  2916. });
  2917. initCalDavDatepicker($('#event_details_template .alert_message_date[data-id="'+data_id+'"]'));
  2918. initCalDavTimepicker($('#event_details_template .alert_message_date[data-id="'+data_id+'"]'));
  2919. /*************************** BAD HACKS SECTION ***************************/
  2920. // here we fix the cross OS/cross broser problems (unfixable in pure CSS)
  2921. if($.browser.webkit && !!window.chrome) /* Chrome */
  2922. {
  2923. if(navigator.platform.toLowerCase().indexOf('win')==0) /* Windows version */
  2924. {
  2925. $('#event_details_template').find('input').css('text-indent', '2px');
  2926. $('#event_details_template').find('select').css({'padding-left': '0px', 'padding-right': '13px'});
  2927. }
  2928. else /* non-Windows version */
  2929. $('#event_details_template').find('input').css('text-indent', '1px');
  2930. }
  2931. else if($.browser.safari)
  2932. {
  2933. $('#event_details_template').find('textarea').addClass('safari_hack');
  2934. $('#event_details_template').find('input').addClass('safari_hack');
  2935. }
  2936. else if($.browser.msie) /* IE */
  2937. {
  2938. if(parseInt($.browser.version, 10)==10) /* IE 10 (because there are no more conditional comments) */
  2939. {
  2940. $('#event_details_template').find('select').css({'padding-top': '1px', 'padding-left': '0px', 'padding-right': '0px'});
  2941. $('#event_details_template').find('textarea').css('padding-top', '3px');
  2942. $('#event_details_template').find('input[type=button]').css('padding-top', '2px');
  2943. }
  2944. }
  2945. /* IE or FF */
  2946. if($.browser.msie || $.browser.mozilla)
  2947. {
  2948. // ADD empty SVG to interface (we will replace it later)
  2949. $('<svg data-type="select_icon"></svg>').css('display', 'none').insertAfter($('#event_details_template tr[data-id="'+data_id+'"]').find('select'));
  2950. }
  2951. if($.browser.msie || $.browser.mozilla)
  2952. {
  2953. var newSVG=$(SVG_select).attr('data-type', 'select_icon').css({'pointer-events': 'none', 'z-index': '1', 'display': 'inline', 'margin-left': '-19px', 'vertical-align': 'top', 'background-color': '#ffffff'}); // background-color = stupid IE9 bug
  2954. $('#event_details_template tr[data-id="'+data_id+'"]').find('svg[data-type="select_icon"]').replaceWith($('<div>').append($(newSVG).clone()).html());
  2955. }
  2956. /*************************** END OF BAD HACKS SECTION ***************************/
  2957. }
  2958. function stripEventAlerts()
  2959. {
  2960. $('.alert_message_details').each(function(){
  2961. if($(this).val()=='on_date')
  2962. $(this).find('option').not(':selected').remove();
  2963. else
  2964. {
  2965. var dataID=$(this).parent().parent().attr('data-id');
  2966. $('#event_details_template').find('tr[data-id="'+dataID+'"]').remove();
  2967. }
  2968. });
  2969. }
  2970. function expandEventAlerts()
  2971. {
  2972. $('.alert_message_details').each(function(){
  2973. var value=$(this).val();
  2974. $(this).html('<option data-type="on_date" value="on_date">on date</option>'+
  2975. '<option data-type="weeks_before" value="weeks_before">weeks before</option>'+
  2976. '<option data-type="days_before" value="days_before">days before</option>'+
  2977. '<option data-type="hours_before" value="hours_before">hours before</option>'+
  2978. '<option data-type="minutes_before" value="minutes_before">minutes before</option>'+
  2979. '<option data-type="seconds_before" value="seconds_before">seconds before</option>'+
  2980. '<option data-type="weeks_after" value="weeks_after">weeks after</option>'+
  2981. '<option data-type="days_after" value="days_after">days after</option>'+
  2982. '<option data-type="hours_after" value="hours_after">hours after</option>'+
  2983. '<option data-type="minutes_after" value="minutes_after">minutes after</option>'+
  2984. '<option data-type="seconds_after" value="seconds_after">seconds after</option>');
  2985. $(this).val(value);
  2986. });
  2987. translateEventAlerts();
  2988. }
  2989. function stripTodoAlerts()
  2990. {
  2991. $('.alert_message_detailsTODO').each(function(){
  2992. if($(this).val()=='on_date')
  2993. $(this).find('option').not(':selected').remove();
  2994. else
  2995. {
  2996. var dataID=$(this).parent().parent().attr('data-id');
  2997. $('#todo_details_template').find('tr[data-id="'+dataID+'"]').remove();
  2998. }
  2999. });
  3000. }
  3001. function expandTodoAlerts()
  3002. {
  3003. $('.alert_message_detailsTODO').each(function(){
  3004. var value=$(this).val();
  3005. $(this).html('<option data-type="on_dateTODO" value="on_date">On date</option>'+
  3006. '<option data-type="weeks_beforeTODO" value="weeks_before">weeks before</option>'+
  3007. '<option data-type="days_beforeTODO" value="days_before">days before</option>'+
  3008. '<option data-type="hours_beforeTODO" value="hours_before">hours before</option>'+
  3009. '<option data-type="minutes_beforeTODO" value="minutes_before">minutes before</option>'+
  3010. '<option data-type="seconds_beforeTODO" value="seconds_before">seconds before</option>'+
  3011. '<option data-type="weeks_afterTODO" value="weeks_after">weeks after</option>'+
  3012. '<option data-type="days_afterTODO" value="days_after">days after</option>'+
  3013. '<option data-type="hours_afterTODO" value="hours_after">hours after</option>'+
  3014. '<option data-type="minutes_afterTODO" value="minutes_after">minutes after</option>'+
  3015. '<option data-type="seconds_afterTODO" value="seconds_after">seconds after</option>');
  3016. $(this).val(value);
  3017. });
  3018. translateTodoAlerts();
  3019. }